13template <
typename _Scalar>
struct BaseFunctionTpl : math_types<_Scalar> {
30 virtual VectorXs
operator()(
const ConstVectorRef &x)
const = 0;
44template <
typename _Scalar>
45struct C1FunctionTpl :
public BaseFunctionTpl<_Scalar> {
60 MatrixRef Jout)
const = 0;
67 MatrixXs Jout(this->
nr(), this->
ndx());
76template <
typename _Scalar>
77struct C2FunctionTpl :
public C1FunctionTpl<_Scalar> {
92 const ConstVectorRef &,
93 MatrixRef Hout)
const {
101#ifdef PROXSUITE_NLP_ENABLE_TEMPLATE_INSTANTIATION
102#include "proxsuite-nlp/function-base.txx"
Forward declarations and configuration macros.
#define PROXSUITE_NLP_DYNAMIC_TYPEDEFS(Scalar)
virtual VectorXs operator()(const ConstVectorRef &x) const =0
Evaluate the residual at a given point x.
BaseFunctionTpl(const ManifoldAbstractTpl< Scalar > &manifold, const int nr)
BaseFunctionTpl(const int nx, const int ndx, const int nr)
int ndx() const
Get input manifold's tangent space dimension.
int nr() const
Get function codimension.
int nx() const
Get function input vector size (representation of manifold).
virtual ~BaseFunctionTpl()=default
Differentiable function, with method for the Jacobian.
virtual void computeJacobian(const ConstVectorRef &x, MatrixRef Jout) const =0
Jacobian matrix of the constraint function.
C1FunctionTpl(const ManifoldAbstractTpl< Scalar > &manifold, const int nr)
C1FunctionTpl(const int nx, const int ndx, const int nr)
MatrixXs computeJacobian(const ConstVectorRef &x) const
Jacobian matrix of the constraint function.
Twice-differentiable function, with method Jacobian and vector-hessian product evaluation.
C2FunctionTpl(const ManifoldAbstractTpl< Scalar > &manifold, const int nr)
C2FunctionTpl(const int nx, const int ndx, const int nr)
virtual void vectorHessianProduct(const ConstVectorRef &, const ConstVectorRef &, MatrixRef Hout) const
Vector-hessian product.