7 #include "GeoGenericFunctions/FunctionProduct.h" 11 FUNCTION_OBJECT_IMP(FunctionProduct)
13 FunctionProduct::FunctionProduct(const AbsFunction *arg1, const AbsFunction *arg2):
17 if (arg1->dimensionality()!=arg2->dimensionality()) {
18 throw std::runtime_error (
"FunctionProduct: dimension mismatch");
22 FunctionProduct::FunctionProduct(
const FunctionProduct & right) :
24 _arg1(right._arg1->clone()),
25 _arg2(right._arg2->clone())
29 FunctionProduct::~FunctionProduct()
36 unsigned int FunctionProduct::dimensionality()
const {
37 return _arg1->dimensionality();
40 double FunctionProduct::operator ()(
double x)
const 42 return (*_arg1)(x)*(*_arg2)(x);
45 double FunctionProduct::operator ()(
const Argument & x)
const 47 return (*_arg1)(x)*(*_arg2)(x);
50 Derivative FunctionProduct::partial(
unsigned int index)
const {
51 const Derivative & d1=_arg1->partial(index);
52 const Derivative & d2=_arg2->partial(index);
53 const AbsFunction & fPrime = (*_arg1)*d2 + d1*(*_arg2);
54 return Derivative(&fPrime);