26#ifndef UTILS_ZEROS_dot_HH
27#define UTILS_ZEROS_dot_HH
86 template <
typename Real>
96 virtual Real
eval( Real x )
const = 0;
142 Real
D( Real x )
const {
return this->
eval_D(x); }
216 template <
typename Real>
221 Integer m_max_fun_evaluation{200};
222 Integer m_max_iteration{100};
224 bool m_converged{
false};
226 mutable Integer m_iteration_count{0};
227 mutable Integer m_fun_evaluation_count{0};
230 static Real Q( Real t ) {
return 1+2*t; }
232 static Real W( Real t, Real s ) {
234 return t2*(1-4*t)+(4*s+2)*t+s+1;
237 static Real H( Real t, Real s, Real u ) {
243 return ( (8*u+6*t2+4)*s-(6*t8+4*(s+u+1))*t1 + 2*t8 - 4*t17 + t23 + 2 )*t +
244 t1*(t8+s+u+1) + (1-3*t2+t23)*s + u - t17 + 1;
247 static Real J( Real t, Real s, Real u, Real v ) {
257 Real t76 = (-2*t22+u+4.0*v+2)*u;
258 return (2*t-1)*(2+5*t)*u*t*t2 +
260 (u*t22-2*u*v-u-v-1)*(4*t17+3*t+1)*(t-1)-
261 8.0*(t22*(t17/2.0-1.0/4.0)+u*(t17*t32-5.0/8.0*t34-3.0/4.0*t32+
262 3.0/8.0*t37+3.0/4.0*t17-t/8.0-1.0/4.0)+3.0/4.0*t46*(t+1.0/2.0)*(t-2.0/3.0))*t*t1+
263 4.0*(t22*(-3.0/2.0*t-1.0/4.0)+u*(t34-t32-3.0/2.0*t37+t17/4.0-t-1.0/4.0)-
264 t46*(t+1.0/4.0))*s*t1+(1.0+v+t65*t17-4.0*t65*t37-3.0*t65*t32+6.0*t65*t34+t76+4.0*(1.0+v+t76)*t)*s;
368 #ifndef UTILS_OS_WINDOWS
369 extern template class Zeros<float>;
370 extern template class Zeros<double>;
Abstract base class for defining mathematical functions used in root-finding algorithms.
Definition Utils_zeros.hh:87
virtual Real eval(Real x) const =0
Real solve_Halley(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:137
Real solve_Order16(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:239
virtual Real eval_D(Real x) const =0
bool converged() const
Definition Utils_zeros.hh:364
void set_max_fun_evaluation(Integer mfev)
Definition Utils_zeros.cc:65
Real DDD(Real x) const
Definition Utils_zeros.hh:164
virtual Real eval_DD(Real x) const =0
Real solve_Chebyshev(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:110
Real D(Real x) const
Definition Utils_zeros.hh:142
Real operator()(Real x) const
Definition Utils_zeros.hh:131
virtual Real eval_DDD(Real x) const =0
void set_max_iterations(Integer mit)
Definition Utils_zeros.cc:51
Integer num_fun_eval() const
Definition Utils_zeros.hh:356
void set_tolerance(Real tol)
Definition Utils_zeros.cc:75
Integer used_iter() const
Definition Utils_zeros.hh:352
Real tolerance() const
Definition Utils_zeros.hh:360
Real solve_Order32(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:281
Real DD(Real x) const
Definition Utils_zeros.hh:153
Real solve_Order8(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:200
Real solve_Newton(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:87
Real solve_Order4(Real x_guess, Zeros_base_fun< Real > *fun)
Definition Utils_zeros.cc:173
Definition SystemUtils.cc:39