11#define AbsFunction_h 1
23 class FunctionProduct;
25 class FunctionDifference;
26 class FunctionQuotient;
27 class FunctionNegation;
28 class FunctionConvolution;
29 class FunctionDirectProduct;
30 class FunctionComposition;
31 class ConstPlusFunction;
32 class ConstTimesFunction;
33 class ConstMinusFunction;
34 class ConstOverFunction;
35 class FunctionPlusParameter;
36 class FunctionTimesParameter;
37 class FunctionNumDeriv;
40 class ParameterComposition;
96FunctionProduct
operator * (
const AbsFunction &op1,
const AbsFunction &op2);
97FunctionSum
operator + (
const AbsFunction &op1,
const AbsFunction &op2);
98FunctionDifference
operator - (
const AbsFunction &op1,
const AbsFunction &op2);
99FunctionQuotient
operator / (
const AbsFunction &op1,
const AbsFunction &op2);
100FunctionNegation
operator - (
const AbsFunction &op1);
102ConstTimesFunction
operator * (
double c,
const AbsFunction &op2);
103ConstPlusFunction
operator + (
double c,
const AbsFunction &op2);
104ConstMinusFunction
operator - (
double c,
const AbsFunction &op2);
105ConstOverFunction
operator / (
double c,
const AbsFunction &op2);
107ConstTimesFunction
operator * (
const AbsFunction &op2,
double c);
108ConstPlusFunction
operator + (
const AbsFunction &op2,
double c);
109ConstPlusFunction
operator - (
const AbsFunction &op2,
double c);
110ConstTimesFunction
operator / (
const AbsFunction &op2,
double c);
112FunctionTimesParameter
operator * (
const AbsFunction &op1,
const AbsParameter &op2);
113FunctionPlusParameter
operator + (
const AbsFunction &op1,
const AbsParameter &op2);
114FunctionPlusParameter
operator - (
const AbsFunction &op1,
const AbsParameter &op2);
115FunctionTimesParameter
operator / (
const AbsFunction &op1,
const AbsParameter &op2);
117FunctionTimesParameter
operator * (
const AbsParameter &op1,
const AbsFunction &op2);
118FunctionPlusParameter
operator + (
const AbsParameter &op1,
const AbsFunction &op2);
119FunctionPlusParameter
operator - (
const AbsParameter &op1,
const AbsFunction &op2);
120FunctionTimesParameter
operator / (
const AbsParameter &op1,
const AbsFunction &op2);
122FunctionConvolution
convolve (
const AbsFunction &op1,
const AbsFunction &op2,
double x0,
double x1);
123FunctionDirectProduct
operator % (
const AbsFunction &op1,
const AbsFunction &op2);
144#define FUNCTION_OBJECT_DEF(classname) \
146 virtual FunctionComposition operator()(const AbsFunction &function) const; \
147 virtual ParameterComposition operator()(const AbsParameter &p) const; \
148 virtual classname *clone() const; \
156#define FUNCTION_OBJECT_IMP(classname) \
157inline FunctionComposition classname::operator()(const AbsFunction & function) const\
159 return AbsFunction::operator() (function); \
161inline ParameterComposition classname::operator()(const AbsParameter & p) const\
163 return AbsFunction::operator() (p); \
165inline classname *classname::clone() const \
167 return new classname(*this); \
virtual Derivative partial(unsigned int) const
virtual unsigned int dimensionality() const
virtual bool hasAnalyticDerivative() const
virtual AbsFunction * clone() const =0
Derivative derivative(const Variable &v) const
virtual double operator()(double argument) const =0
FunctionQuotient operator/(const AbsFunction &op1, const AbsFunction &op2)
FunctionDirectProduct operator%(const AbsFunction &op1, const AbsFunction &op2)
FunctionSum operator+(const AbsFunction &op1, const AbsFunction &op2)
FunctionProduct operator*(const AbsFunction &op1, const AbsFunction &op2)
const AbsFunction & GENFUNCTION
FunctionConvolution convolve(const AbsFunction &op1, const AbsFunction &op2, double x0, double x1)
FunctionDifference operator-(const AbsFunction &op1, const AbsFunction &op2)