Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::geometry::DifferentiableMap< F, DomainDim, CodomainDim, ValueFn, JacobianFn > Class Template Referenceexport

A finite-dimensional map paired with a user-supplied Jacobian witness. More...

Public Types

using scalar_type = F
using Domain = Vector<F, DomainDim>
using Codomain = Vector<F, CodomainDim>
using Jacobian = LinearMap<F, CodomainDim, DomainDim>

Public Member Functions

constexpr DifferentiableMap (ValueFn value, JacobianFn jacobian)
constexpr Codomain operator() (const Domain &x) const
constexpr Jacobian jacobian_at (const Domain &x) const

Static Public Attributes

static constexpr std::size_t domain_dimension = DomainDim
static constexpr std::size_t codomain_dimension = CodomainDim

Detailed Description

template<IsMatrixScalar F, std::size_t DomainDim, std::size_t CodomainDim, typename ValueFn, typename JacobianFn>
requires requires(const ValueFn& value, const JacobianFn& jacobian, const Vector<F, DomainDim>& x) { { value(x) } -> std::same_as<Vector<F, CodomainDim>>; { jacobian(x) } -> std::same_as<LinearMap<F, CodomainDim, DomainDim>>; }
class dedekind::geometry::DifferentiableMap< F, DomainDim, CodomainDim, ValueFn, JacobianFn >

A finite-dimensional map paired with a user-supplied Jacobian witness.

This is the first differentiation contract in Dedekind's finite-dimensional geometry layer. It packages:

Compile time checks only that value(x) and jacobian(x) have the prescribed result types in the existing LinearMap carrier. It does not verify that the returned linear map is the actual Fr\'echet derivative of value at x; that correctness remains a caller-side contract.


The documentation for this class was generated from the following file: