21 return (ParamToArgAdaptor<F> *) _clone();
25AbsFunction *ParamToArgAdaptor<F>::_clone ()
const {
26 return new ParamToArgAdaptor<F>(*
this);
34 _scaleFactor(
"Sigma", 1.0, 0, 10),
35 _function(function.clone()),
36 _parameterFetchMethod(parameterFetchMethod)
38 _parameterFetchMethod(*_function).setLowerLimit(-DBL_MAX);
39 _parameterFetchMethod(*_function).setUpperLimit(+DBL_MAX);
49 _scaleFactor(right._scaleFactor),
50 _parameterFetchMethod(right._parameterFetchMethod),
51 _function(right._function->clone())
53 _parameterFetchMethod(*_function).setLowerLimit(-DBL_MAX);
54 _parameterFetchMethod(*_function).setUpperLimit(+DBL_MAX);
62 <<
"Warning. ParamToArgAdaptor called with scalar argument"
80 return _function->dimensionality()+1;
87 <<
"Warning: ParamToArgAdaptor function/argument dimension mismatch"
94 for (
int i=0;i<dMinus;i++) aPrime[i]=a[i];
95 (_parameterFetchMethod(*_function)).setValue(_scaleFactor.getValue()*a[dMinus]);
96 return (*_function)(a);
virtual AbsFunction * clone() const =0
virtual double operator()(double argument) const =0
unsigned int dimension() const
virtual double operator()(double argument) const override
virtual unsigned int dimensionality() const override
ParamToArgAdaptor(const F &function, ScopedMethodPtr parameterFetchMethod)
Parameter & scaleFactor()
Parameter &(F::*) ScopedMethodPtr()