#include <alfunction.h>
Public Member Functions | |
virtual void | setLimits (DT lo, DT hi)=0 |
virtual DT | limitHi () const =0 |
virtual DT | limitLo () const =0 |
virtual CT | f (DT x) const =0 |
virtual ALFunction< DT, CT > * | clone ()=0 |
virtual ALFunction< DT, CT > * | create_derivative ()=0 |
virtual void | bound (const DT &xmin, const DT &xmax, CT &ymin, CT &ymax)=0 |
virtual | ~ALFunction () |
ALFunction () | |
const CT | operator() (DT x) const |
bool | isInDomain (DT x) |
CT | f_bounded (DT x) |
virtual void | f (DT *xvec, CT *yvec, unsigned int count) const |
void | bound (CT &ymin, CT &ymax) |
void | invalidateCachedBounds () |
Private Attributes | |
CT | cached_ymin |
CT | cached_ymax |
bool | cached_bounds_valid |
An abstract function with limits. f:DT->CT
|
inlinevirtual |
|
inline |
|
pure virtual |
bound function values in the x-range defined by the hypercube between corner points lower left xmin and upper right xmax
Implemented in adore::mad::Curvature2d< d1, d2, T, nd >, adore::mad::PartialCurvatureDerivative2d< d1, d2, T, nd >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::LLinearPiecewiseFunctionS< T >, adore::mad::IntegratorChain< T, depth >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, adore::mad::LConstFun< DT, CT >, adore::mad::LHeading< T >, and adore::mad::FunctionModification_ReciprocalScalar< T >.
|
inline |
bound function value on interval [ymin,ymax], using caching for bound computation
|
pure virtual |
create a copy of child class object - is used for function operations
Implemented in adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LSpiralFunction< T, M >, adore::mad::LPolynomialM< T, N, M >::OneDimension, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >::OneDimension, adore::mad::LLinearPiecewiseFunctionM< T, n >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::LLinearPiecewiseFunctionM< double, 1 >, adore::mad::LLinearPiecewiseFunctionM< double, N+R >, adore::mad::LLinearPiecewiseFunctionM< double, 4 >, adore::mad::LLinearPiecewiseFunctionM< double, 3 >, adore::mad::LLinearPiecewiseFunctionM< double, 2 >, adore::mad::IntegratorChain< T, depth >, adore::mad::LHeading< T >, adore::mad::FunctionCombination_StackScalar< T >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, adore::mad::LConstFun< DT, CT >, adore::mad::LLinearPiecewiseFunctionM< T, n >::OneDimension, adore::mad::LLinearPiecewiseFunctionS< T >, adore::mad::Curvature2d< d1, d2, T, nd >, adore::mad::PartialCurvatureDerivative2d< d1, d2, T, nd >, and adore::mad::FunctionModification_ReciprocalScalar< T >.
|
pure virtual |
create a new function object, which is the derivative function
Implemented in adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LSpiralFunction< T, M >, adore::mad::LPolynomialM< T, N, M >::OneDimension, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >::OneDimension, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionM< T, n >::OneDimension, adore::mad::LLinearPiecewiseFunctionM< T, n >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::LLinearPiecewiseFunctionM< double, 1 >, adore::mad::LLinearPiecewiseFunctionM< double, N+R >, adore::mad::LLinearPiecewiseFunctionM< double, 4 >, adore::mad::LLinearPiecewiseFunctionM< double, 3 >, adore::mad::LLinearPiecewiseFunctionM< double, 2 >, adore::mad::LLinearPiecewiseFunctionS< T >, adore::mad::IntegratorChain< T, depth >, adore::mad::LHeading< T >, adore::mad::FunctionCombination_StackScalar< T >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, adore::mad::LConstFun< DT, CT >, adore::mad::Curvature2d< d1, d2, T, nd >, adore::mad::PartialCurvatureDerivative2d< d1, d2, T, nd >, and adore::mad::FunctionModification_ReciprocalScalar< T >.
|
inlinevirtual |
evaluate function at multiple points provided by array xvec
xvec | points in domain, which are evaluated, xvec length>= count |
yvec | array for values of codomain, filled by function, length>= count |
|
pure virtual |
function evaluation returns y of codomain type CT for a value x of domain type DT
Implemented in adore::mad::LSpiralFunction< T, M >, adore::mad::FunctionCombination_StackScalar< T >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::Curvature2d< d1, d2, T, nd >, adore::mad::PartialCurvatureDerivative2d< d1, d2, T, nd >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::LLinearPiecewiseFunctionS< T >, adore::mad::IntegratorChain< T, depth >, adore::mad::LHeading< T >, adore::mad::FunctionModification_ReciprocalScalar< T >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, and adore::mad::LConstFun< DT, CT >.
|
inline |
a safe to use version of f(x), which enforces function bounds
|
inline |
clear the cache used in bound computation
|
inline |
|
pure virtual |
query upper limit of the domain
Implemented in adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LSpiralFunction< T, M >, adore::mad::LPolynomialM< T, N, M >::OneDimension, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >::OneDimension, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionM< T, n >::OneDimension, adore::mad::LLinearPiecewiseFunctionM< T, n >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::LLinearPiecewiseFunctionM< double, 1 >, adore::mad::LLinearPiecewiseFunctionM< double, N+R >, adore::mad::LLinearPiecewiseFunctionM< double, 4 >, adore::mad::LLinearPiecewiseFunctionM< double, 3 >, adore::mad::LLinearPiecewiseFunctionM< double, 2 >, adore::mad::LLinearPiecewiseFunctionS< T >, adore::mad::IntegratorChain< T, depth >, adore::mad::LHeading< T >, adore::mad::FunctionModification_ReciprocalScalar< T >, adore::mad::FunctionCombination_StackScalar< T >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, and adore::mad::LConstFun< DT, CT >.
|
pure virtual |
lower limit of the domain
Implemented in adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LSpiralFunction< T, M >, adore::mad::LPolynomialM< T, N, M >::OneDimension, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >::OneDimension, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionM< T, n >::OneDimension, adore::mad::LLinearPiecewiseFunctionM< T, n >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::LLinearPiecewiseFunctionM< double, 1 >, adore::mad::LLinearPiecewiseFunctionM< double, N+R >, adore::mad::LLinearPiecewiseFunctionM< double, 4 >, adore::mad::LLinearPiecewiseFunctionM< double, 3 >, adore::mad::LLinearPiecewiseFunctionM< double, 2 >, adore::mad::LLinearPiecewiseFunctionS< T >, adore::mad::IntegratorChain< T, depth >, adore::mad::LHeading< T >, adore::mad::FunctionModification_ReciprocalScalar< T >, adore::mad::FunctionCombination_StackScalar< T >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, and adore::mad::LConstFun< DT, CT >.
|
inline |
|
pure virtual |
reduce or increase the limit of the function, without changing y
Implemented in adore::mad::LSpiralFunction< T, M >, adore::mad::Curvature2d< d1, d2, T, nd >, adore::mad::PartialCurvatureDerivative2d< d1, d2, T, nd >, adore::mad::RotationFunction< T >, adore::mad::RotationFunction< T >::RotationFunctionPD, adore::mad::LPolynomialM< T, N, M >, adore::mad::LPolynomialS< T, M >, adore::mad::LPiecewiseFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionA< T, N, k >, adore::mad::LLinearPiecewiseFunctionM< T, 3+M+1 >, adore::mad::IntegratorChain< T, depth >, adore::mad::LHeading< T >, adore::mad::FunctionModification_ReciprocalScalar< T >, adore::mad::FunctionCombination_Stack< T, Na, Nb >, adore::mad::FunctionCombination_Chain< DTa, CTa, DTb >, adore::mad::FunctionCombination_MultiplicationConst< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Multiplication_Matrix< T, N, M, K >, adore::mad::FunctionCombination_Multiplication< DT, CT, CTa, CTb >, adore::mad::FunctionCombination_Addition< DT, CT >, adore::mad::LLinearFunction< DT, CT >, adore::mad::LLinearPiecewiseFunctionS< T >, and adore::mad::LConstFun< DT, CT >.
|
private |
|
private |
|
private |