15 #ifndef ROOT_Math_Error
23 fFunctionCopied(
false),
31 fFunctionCopied(copyFunc),
62 if (&rhs ==
this)
return *
this;
86 xx = x+
h;
double f1 = (
function)(xx);
88 xx = x-
h;
double f2 = (
function)(xx);
90 xx = x+h/2;
double g1 = (
function)(xx);
91 xx = x-h/2;
double g2 = (
function)(xx);
97 double deriv = h2*(8*d2 - d0)/3.;
108 double err_trunc =
std::abs( deriv - h2*d0 );
110 double err_round =
std::abs( e2/h) + delta;
122 xx = x+h/4.0;
double f1 = (
function)(xx);
123 xx = x+h/2.0;
double f2 = (
function)(xx);
125 xx = x+(3.0/4.0)*
h;
double f3 = (
function)(xx);
126 xx = x+
h;
double f4 = (
function)(xx);
130 double r2 = 2.0*(f4 -
f2);
131 double r4 = (22.0 / 3.0) * (f4 - f3) - (62.0 / 3.0) * (f3 -
f2) +
132 (52.0 / 3.0) * (f2 -
f1);
136 double e4 = 2 * 20.67 * (
fabs (f4) +
fabs (f3) +
fabs (f2) +
fabs (f1)) * keps;
148 double abserr_trunc =
fabs ((r4 - r2) / h);
149 double abserr_round =
fabs (e4 / h) + dy;
162 xx = x+
h;
double f1 = (
function)(xx);
163 xx =
x;
double f2 = (
function)(xx);
164 xx = x-
h;
double f3 = (
function)(xx);
166 xx = x+h/2;
double g1 = (
function)(xx);
167 xx = x-h/2;
double g3 = (
function)(xx);
171 double d0 = f3 - 2*f2 +
f1;
172 double d2 = 4*g3 - 8*f2 +4*g1;
174 double deriv = hh*(4*d2 - d0)/3.;
183 xx = x+2*
h;
double f1 = (
function)(xx);
184 xx = x+
h;
double f2 = (
function)(xx);
185 xx = x-
h;
double f3 = (
function)(xx);
186 xx = x-2*
h;
double f4 = (
function)(xx);
187 xx =
x;
double fx = (
function)(xx);
188 xx = x+h/2;
double g2 = (
function)(xx);
189 xx = x-h/2;
double g3 = (
function)(xx);
192 double hhh = 1/(h*h*
h);
193 double d0 = 0.5*f1 - f2 +f3 - 0.5*f4;
194 double d2 = 4*f2 - 8*g2 +8*g3 - 4*f3;
196 double deriv = hhh*(4*d2 - d0)/3.;
double Derivative3(double x)
Returns the third derivative of the function at point x, computed by Richardson's extrapolation metho...
Interface (abstract class) for generic functions objects of one-dimension Provides a method to evalua...
Namespace for new ROOT classes and functions.
double DerivativeForward(double x)
Computation of the first derivative using a forward formula.
double Derivative2(double x)
Returns the second derivative of the function at point x, computed by Richardson's extrapolation meth...
ClassImp(TIterator) Bool_t TIterator return false
Compare two iterator objects.
void SetFunction(const IGenFunction &f)
Set function for derivative calculation (copy the function if option has been enabled in the construc...
static Vc_ALWAYS_INLINE Vector< T > abs(const Vector< T > &x)
double Derivative1(double x)
Returns the first derivative of the function at point x, computed by Richardson's extrapolation metho...
const IGenFunction * fFunction
VecExpr< UnaryOp< Fabs< T >, VecExpr< A, T, D >, T >, T, D > fabs(const VecExpr< A, T, D > &rhs)
~RichardsonDerivator()
Destructor: Removes function if needed.
RichardsonDerivator(double h=0.001)
Default Constructor.
static Vc_ALWAYS_INLINE int_v max(const int_v &x, const int_v &y)
Namespace for new Math classes and functions.
RichardsonDerivator & operator=(const RichardsonDerivator &rhs)
Assignment operator.
double f2(const double *x)
virtual IBaseFunctionOneDim * Clone() const =0
Clone a function.
User class for calculating the derivatives of a function.
unsigned int r2[N_CITIES]