GradFunctor class for Multidimensional gradient functions.
It is used to wrap in a very C++ callable object to make gradient functions. It can be constructed in three different way:
-
from an object implementing both double operator()( const double * ) for the function evaluation and double Derivative(const double *, int icoord) for the partial derivatives
-
from an object implementing any member function like Foo::XXX(const double *) for the function evaluation and any member function like Foo::XXX(const double *, int icoord) for the partial derivatives
-
from two function objects implementing double operator()( const double * ) for the function evaluation and another function object implementing double operator() (const double *, int icoord) for the partial derivatives
-
from two function objects
The function dimension is required when constructing the functor.
Definition at line 677 of file Functor.h.
|
| GradFunctor () |
| Default constructor.
|
|
template<typename Func , typename GradFunc > |
| GradFunctor (const Func &f, const GradFunc &g, int dim) |
| construct for Gradient Functions of multi-dimension Func gives the function evaluation, GradFunc the partial derivatives The function dimension is required
|
|
template<typename Func > |
| GradFunctor (const Func &f, unsigned int dim) |
| construct from a callable object of multi-dimension implementing operator()(const double *x) and Derivative(const double * x,icoord)
|
|
| GradFunctor (const GradFunctor &rhs) |
| Copy constructor for functor based on ROOT::Math::IMultiGradFunction.
|
|
template<class PtrObj , typename MemFn , typename GradMemFn > |
| GradFunctor (const PtrObj &p, MemFn memFn, GradMemFn gradFn, unsigned int dim) |
| construct from a pointer to member function and member function types for function and derivative evaluations
|
|
| GradFunctor (const std::function< double(double const *)> &f, const std::function< double(double const *, unsigned int)> &g, unsigned int dim) |
| specialized constructor from 2 std::functions with the right signature (the first one implementing double operator()(double const *x) for the function evaluation and the second one implementing double operator()(double const *x, unsigned int icoord) for the function partial derivatives.
|
|
| GradFunctor (const std::function< double(double const *)> &f, int dim, const std::function< void(double const *, double *)> &g) |
| Construct a new GradFunctor object using 2 std::function, one for the function evaluation and one for the Gradient Note the difference with the constructor above where partial derivative function is used as input.
|
|
virtual | ~GradFunctor () |
| Destructor (no operations)
|
|
ImplBase * | Clone () const |
| Clone a function.
|
|
void | Gradient (const double *x, double *g) const |
|
unsigned int | NDim () const |
| Retrieve the dimension of the function.
|
|
GradFunctor & | operator= (const GradFunctor &rhs) |
| Assignment operator.
|
|
virtual | ~IGradientFunctionMultiDimTempl () |
| Virtual Destructor (no operations)
|
|
virtual void | FdF (const T *x, T &f, T *df) const |
| Optimized method to evaluate at the same time the function value and derivative at a point x.
|
|
virtual void | Gradient (const T *x, T *grad) const |
| Evaluate all the vector of function derivatives (gradient) at a point x.
|
|
virtual void | GradientWithPrevResult (const T *x, T *grad, T *previous_grad, T *previous_g2, T *previous_gstep) const |
| In some cases, the gradient algorithm will use information from the previous step, these can be passed in with this overload.
|
|
virtual unsigned int | NDim () const=0 |
| Retrieve the dimension of the function.
|
|
virtual bool | returnsInMinuit2ParameterSpace () const |
|
| IBaseFunctionMultiDimTempl () |
|
virtual | ~IBaseFunctionMultiDimTempl () |
| virtual destructor
|
|
T | operator() (const T *x) const |
| Evaluate the function at a point x[].
|
|
virtual | ~IGradientMultiDimTempl () |
| virtual destructor
|
|
T | Derivative (const T *x, unsigned int icoord, T *previous_grad, T *previous_g2, T *previous_gstep) const |
| In some cases, the derivative algorithm will use information from the previous step, these can be passed in with this overload.
|
|
T | Derivative (const T *x, unsigned int icoord=0) const |
| Return the partial derivative with respect to the passed coordinate.
|
|