ADOL-C: Automatic Differentiation in C/C++ 2.7.3
Loading...
Searching...
No Matches
ADOLC::AbsNormalFormType Concept Reference

Structural concept for abs-normal form objects. More...

#include <absnormalformconcept.h>

Concept definition

template<typename T>
concept ADOLC::AbsNormalFormType = requires(T &t) {
t.Y;
t.J;
t.Z;
t.L;
t.y;
t.z;
t.cy;
t.cz;
{ t.empty() } -> std::convertible_to<bool>;
{ t.clear() } -> std::same_as<void>;
{ t.dims() } -> DerivedFromANFShape;
{ t.resize(t.dims()) } -> std::same_as<void>;
{ t.updateCy() } -> std::same_as<void>;
{ t.updateCz() } -> std::same_as<void>;
}
Structural concept for abs-normal form objects.
Definition absnormalformconcept.h:48

Detailed Description

Structural concept for abs-normal form objects.

A type models AbsNormalFormType when it exposes the six components of the output-first abs-normal form

\[ \left[\begin{array}{c} y\\ z \end{array}\right] = \left[\begin{array}{c} cy\\ cz \end{array}\right] + \left[\begin{array}{cc} Y & J\\ Z & L \end{array}\right] \left[\begin{array}{c} x\\ |z| \end{array}\right]. \]

In addition to the eight components, the concept requires the operations (empty, clear, dims, resize) and the two helper routines that recompute the constant terms from the current matrices (updateCy, updateCz).

The concept does not prescribe a concrete storage layout, so both dense and sparse representations may satisfy it as long as they provide this public interface.