39 #include "gsl/gsl_roots.h" 40 #include "gsl/gsl_errno.h" 50 fRoot(0), fPrevRoot(0),
51 fIter(0), fStatus(-1),
71 if (
this == &rhs)
return *
this;
88 if (status == GSL_SUCCESS)
111 MATH_ERROR_MSG(
"GSLRootFinderDeriv::Iterate",
" Function is not valid");
115 MATH_ERROR_MSG(
"GSLRootFinderDeriv::Iterate",
" Estimated point is not valid");
120 int status = gsl_root_fdfsolver_iterate(
fS->
Solver());
134 return gsl_root_fdfsolver_name(
fS->
Solver() );
147 if (status != GSL_SUCCESS) {
148 MATH_ERROR_MSG(
"GSLRootFinderDeriv::Solve",
"error returned when performing an iteration");
153 if (status == GSL_SUCCESS) {
162 while (status == GSL_CONTINUE && iter < maxIter);
164 if (status == GSL_CONTINUE) {
166 MATH_INFO_MSGVAL(
"GSLRootFinderDeriv::Solve",
"exceeded max iterations, reached tolerance is not sufficient",tol);
int Iterate()
iterate (return GSL_SUCCESS in case of successful iteration)
Namespace for new ROOT classes and functions.
bool IsValid()
check if function is valid (has been set)
bool Solve(int maxIter=100, double absTol=1E-8, double relTol=1E-10)
Find the root (return false if failed)
double Root() const
Returns the previously calculated root.
gsl_function_fdf * GetFunc()
class to wrap a gsl_function_fdf (with derivatives)
void SetFdfPointer(GSLFdfPointer f)
GSLFunctionDerivWrapper * fFunction
void SetSolver(GSLRootFdFSolver *s)
Interface for finding function roots of one-dimensional functions.
double(* GSLFuncPointer)(double, void *)
#define MATH_ERROR_MSG(loc, str)
bool SetFunction(const IGradFunction &f, double xstart)
Sets the function for algorithms using derivatives.
gsl_root_fdfsolver * Solver() const
const char * Name() const
Return name of root finder algorithm.
GSLRootFinderDeriv & operator=(const GSLRootFinderDeriv &)
void SetFuncPointer(GSLFuncPointer f)
void SetDerivPointer(GSLFuncPointer f)
Root-Finder with derivatives implementation class using GSL.
int TestDelta(double x1, double x0, double epsAbs, double epsRel)
Base class for GSL Root-Finding algorithms for one dimensional functions which use function derivativ...
Namespace for new Math classes and functions.
void(* GSLFdFPointer)(double, void *, double *, double *)
virtual ~GSLRootFinderDeriv()
#define MATH_INFO_MSGVAL(loc, str, x)