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;
65 virtual double operator() (
double argument)
const=0;
81 Derivative
prime()
const;
87 virtual Derivative
partial(
unsigned int)
const;
96 FunctionProduct
operator * (
const AbsFunction &op1,
const AbsFunction &op2);
97 FunctionSum
operator + (
const AbsFunction &op1,
const AbsFunction &op2);
98 FunctionDifference
operator - (
const AbsFunction &op1,
const AbsFunction &op2);
99 FunctionQuotient
operator / (
const AbsFunction &op1,
const AbsFunction &op2);
100 FunctionNegation
operator - (
const AbsFunction &op1);
102 ConstTimesFunction
operator * (
double c,
const AbsFunction &op2);
103 ConstPlusFunction
operator + (
double c,
const AbsFunction &op2);
104 ConstMinusFunction
operator - (
double c,
const AbsFunction &op2);
105 ConstOverFunction
operator / (
double c,
const AbsFunction &op2);
107 ConstTimesFunction
operator * (
const AbsFunction &op2,
double c);
108 ConstPlusFunction
operator + (
const AbsFunction &op2,
double c);
109 ConstPlusFunction
operator - (
const AbsFunction &op2,
double c);
110 ConstTimesFunction
operator / (
const AbsFunction &op2,
double c);
112 FunctionTimesParameter
operator * (
const AbsFunction &op1,
const AbsParameter &op2);
113 FunctionPlusParameter
operator + (
const AbsFunction &op1,
const AbsParameter &op2);
114 FunctionPlusParameter
operator - (
const AbsFunction &op1,
const AbsParameter &op2);
115 FunctionTimesParameter
operator / (
const AbsFunction &op1,
const AbsParameter &op2);
117 FunctionTimesParameter
operator * (
const AbsParameter &op1,
const AbsFunction &op2);
118 FunctionPlusParameter
operator + (
const AbsParameter &op1,
const AbsFunction &op2);
119 FunctionPlusParameter
operator - (
const AbsParameter &op1,
const AbsFunction &op2);
120 FunctionTimesParameter
operator / (
const AbsParameter &op1,
const AbsFunction &op2);
122 FunctionConvolution
convolve (
const AbsFunction &op1,
const AbsFunction &op2,
double x0,
double x1);
123 FunctionDirectProduct
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) \
157 inline FunctionComposition classname::operator()(const AbsFunction & function) const\
159 return AbsFunction::operator() (function); \
161 inline ParameterComposition classname::operator()(const AbsParameter & p) const\
163 return AbsFunction::operator() (p); \
165 inline classname *classname::clone() const \
167 return new classname(*this); \
FunctionSum operator+(const AbsFunction &op1, const AbsFunction &op2)
virtual double operator()(double argument) const =0
FunctionDifference operator-(const AbsFunction &op1, const AbsFunction &op2)
const AbsFunction & GENFUNCTION
FunctionDirectProduct operator%(const AbsFunction &op1, const AbsFunction &op2)
virtual Derivative partial(unsigned int) const
FunctionQuotient operator/(const AbsFunction &op1, const AbsFunction &op2)
virtual unsigned int dimensionality() const
virtual bool hasAnalyticDerivative() const
FunctionConvolution convolve(const AbsFunction &op1, const AbsFunction &op2, double x0, double x1)
FunctionProduct operator*(const AbsFunction &op1, const AbsFunction &op2)
virtual AbsFunction * clone() const =0
Derivative derivative(const Variable &v) const