45 _function(function.clone()),
46 _f_expression(f_expression.clone()),
47 _parameterFetchMethod(parameterFetchMethod),
48 _p_expression(p_expression->clone())
51 _parameterFetchMethod(*_function).setLowerLimit(-DBL_MAX);
52 _parameterFetchMethod(*_function).setUpperLimit(+DBL_MAX);
53 assert(f_expression.dimensionality()==p_expression->dimensionality());
67 _function(right._function->
clone()),
68 _f_expression(right._f_expression->
clone()),
69 _parameterFetchMethod(right._parameterFetchMethod),
70 _p_expression(right._p_expression->
clone())
72 _parameterFetchMethod(*_function).setLowerLimit(-DBL_MAX);
73 _parameterFetchMethod(*_function).setUpperLimit(+DBL_MAX);
82 <<
"Warning. SymToArgAdaptor called with scalar argument"
91 return _f_expression->dimensionality();
99 <<
"Warning: SymToArgAdaptor function/argument dimension mismatch"
106 double pVal= (*_p_expression)(a);
109 (_parameterFetchMethod(*_function)).setValue(pVal);
112 return (*_function)((*_f_expression) (a));
virtual AbsFunction * clone() const =0
virtual double operator()(double argument) const =0
unsigned int dimension() const
virtual ~SymToArgAdaptor()
virtual unsigned int dimensionality() const override
virtual double operator()(double argument) const override
Parameter &(F::* ScopedMethodPtr)()
SymToArgAdaptor(F &function, const AbsFunction &f_expression, ScopedMethodPtr parameterFetchMethod, const AbsFunction *p_expression)