7 #include "GeoGenericFunctions/FunctionQuotient.h" 11 FUNCTION_OBJECT_IMP(FunctionQuotient)
13 FunctionQuotient::FunctionQuotient(const AbsFunction *arg1, const AbsFunction *arg2):
17 if (arg1->dimensionality()!=arg2->dimensionality()) {
18 throw std::runtime_error (
"FunctionQuotient: dimension mismatch");
22 FunctionQuotient::FunctionQuotient(
const FunctionQuotient & right) :
24 _arg1(right._arg1->clone()),
25 _arg2(right._arg2->clone())
27 FunctionQuotient::~FunctionQuotient()
33 unsigned int FunctionQuotient::dimensionality()
const {
34 return _arg1->dimensionality();
38 double FunctionQuotient::operator ()(
double x)
const 40 return (*_arg1)(x)/(*_arg2)(x);
43 double FunctionQuotient::operator ()(
const Argument & x)
const 45 return (*_arg1)(x)/(*_arg2)(x);
49 Derivative FunctionQuotient::partial(
unsigned int index)
const {
50 const Derivative & d1=_arg1->partial(index);
51 const Derivative & d2=_arg2->partial(index);
53 const AbsFunction & fPrime =
54 ((d1)*(*_arg2)-(*_arg1)*d2) /
56 return Derivative(&fPrime);