Class root_bkt_cern (o2scl)¶
-
template<class
func_t
= funct>
classo2scl
::
root_bkt_cern
: public o2scl::root_bkt<funct>¶ One-dimensional root-finding routine (CERNLIB)
This class attempts to find \( x_1 \) and \( x_2 \) in \( [a,b] \) such that:
\( f(x_1) f(x_2) \leq 0 \),
\( |f(x_1)| \leq|f(x_2)| \), and
\( | x_1-x_2| \leq 2~\mathrm{tol\_abs}~(1+|x_0|) \).
The function solve_bkt() requires inputs
x1
andx2
such that the first condition, \( f(x_1) f(x_2) \leq 0 \), already holds.The variable root::tol_abs defaults to \( 10^{-8} \) and root::ntrial defaults to 200.
The function solve_bkt() will call the error handler if the root is not initially bracketed. If root::err_nonconv is true (as it is by default), then the error handler will also be called if the number function evaluations is greater than root::ntrial.
After a call to solve_bkt(), root::last_ntrial contains the total number of iterations which were used
See the onedsolve_subsect section of the User’s guide for general information about solvers.
Based on the CERNLIB routines RZEROX and DZEROX, which was based on [Bus75] and is documented at http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/c200/top.html
Public Functions
-
root_bkt_cern
()¶
-
int
set_mode
(int m)¶ Set mode of solution (1 or 2)
1
should be used for simple functions where the cost is inexpensive in comparison to one iteration of solve_bkt(), or functions which have a pole near the root (this is the default).2
should be used for more time-consuming functions.
If an integer other than
1
or2
is specified, the error handler is called.
-
const char *
type
()¶ Return the type,
"root_bkt_cern"
.
Protected Functions
-
double
sign
(double a, double b)¶ FORTRAN-like function for sign.
Protected Attributes
-
int
mode
¶ Internal storage for the mode.
This internal variable is actually defined to be smaller by 1 than the “mode” as it is defined in the CERNLIB documentation in order to avoid needless subtraction in solve_bkt().