16 #ifndef ROOT_Math_RichardsonDerivator
17 #define ROOT_Math_RichardsonDerivator
55 class RichardsonDerivator {
59 ~RichardsonDerivator();
65 RichardsonDerivator(
double h = 0.001);
69 RichardsonDerivator(
const ROOT::Math::IGenFunction & f,
double h = 0.001,
bool copyFunc =
false);
74 RichardsonDerivator(
const RichardsonDerivator & rhs);
79 RichardsonDerivator & operator= (
const RichardsonDerivator & rhs);
83 double Error ()
const {
return fLastError; }
116 double Derivative1 (
double x) {
return Derivative1(*fFunction,x,fStepSize); }
117 double operator() (
double x) {
return Derivative1(*fFunction,x,fStepSize); }
122 double Derivative1(
const IGenFunction & f,
double x,
double h);
125 double DerivativeForward(
double x) {
126 return DerivativeForward(*fFunction, x, fStepSize);
130 double DerivativeForward(
const IGenFunction &f,
double x,
double h);
133 double DerivativeBackward(
double x) {
134 return DerivativeBackward(*fFunction, x, fStepSize);
138 double DerivativeBackward(
const IGenFunction &f,
double x,
double h) {
139 return DerivativeForward(f, x, -h);
172 double Derivative2 (
double x) {
173 return Derivative2( *fFunction, x, fStepSize);
179 double Derivative2(
const IGenFunction & f,
double x,
double h);
211 double Derivative3 (
double x) {
212 return Derivative3(*fFunction, x, fStepSize);
218 double Derivative3(
const IGenFunction & f,
double x,
double h);
224 void SetFunction (
const IGenFunction & f);
230 void SetStepSize (
double h) { fStepSize = h; }
234 bool fFunctionCopied;
237 const IGenFunction* fFunction;