45 template<
typename Treal>
46 inline int sign(Treal value) {
67 template<
typename Treal,
typename Tfun>
69 int sign_min =
sign(fun.eval(min));
70 int sign_max =
sign(fun.eval(max));
71 if (sign_min == sign_max)
72 throw Failure(
"bisection(Tfun&, Treal, Treal, Treal): interval "
74 Treal middle = (max +
min) / 2;
75 int sign_middle =
sign(fun.eval(middle));
77 if (sign_middle == sign_min) {
79 sign_min = sign_middle;
83 sign_max = sign_middle;
85 middle = (max +
min) / 2;
86 sign_middle =
sign(fun.eval(middle));
Treal bisection(Tfun const &fun, Treal min, Treal max, Treal const tol)
Bisection algorithm for root finding.
Definition: bisection.h:68
Definition: allocate.cc:30
Treal template_blas_fabs(Treal x)
#define max(a, b)
Definition: integrator.cc:92
int min(int a, int b)
Definition: lin_trans.cc:61
int sign(Treal value)
Sign function returns the sign of the input.
Definition: bisection.h:46