27 #ifndef ROOT_Math_MultiNumGradFunction
28 #define ROOT_Math_MultiNumGradFunction
49 class MultiNumGradFunction :
public IMultiGradFunction {
57 MultiNumGradFunction (
const IMultiGenFunction & f) :
69 template<
class FuncType>
70 MultiNumGradFunction (FuncType f,
int n) :
76 fFunc =
new ROOT::Math::WrappedMultiFunction<FuncType> (f, n);
82 ~MultiNumGradFunction () {
83 if (fOwner)
delete fFunc;
89 unsigned int NDim()
const {
return fDim; }
91 unsigned int NCalls()
const {
return fNCalls; }
93 IMultiGenFunction * Clone()
const {
95 return new MultiNumGradFunction(*fFunc);
98 MultiNumGradFunction * f =
new MultiNumGradFunction(*(fFunc->Clone()) );
105 void SetOwnership(
bool on =
true) { fOwner = on; }
109 static void SetDerivPrecision(
double eps);
112 static double GetDerivPrecision();
118 double DoEval(
const double * x)
const {
124 double DoDerivative (
const double * x,
unsigned int icoord )
const;
127 const IMultiGenFunction * fFunc;
129 mutable unsigned int fNCalls;