30#define GSL_SQRT_DBL_EPSILON 1.e-4
31#define GSL_DBL_EPSILON 1.e-8
60 const double v =
state->v;
61 const double w =
state->w;
62 const double f_v =
state->f_v;
63 const double f_w =
state->f_w;
66 const double golden = 0.3819660;
73 double p = 0, q = 0,
r = 0;
77 if (
fabs(e) > tolerance) {
80 r = (z - w) * (
f_z - f_v);
81 q = (z - v) * (
f_z - f_w);
82 p = (z - v) * q - (z - w) *
r;
97 double t2 = 2 * tolerance;
103 d = (z <
midpoint) ? tolerance : -tolerance;
111 if (
fabs(d) >= tolerance) {
115 u = z + ((d > 0) ? tolerance : -tolerance);
154 else if (
f_u <= f_w || w == z) {
161 else if (
f_u <= f_v || v == z || v == w) {
184 const double golden = 0.3819660;
206 for (i = 0; i <
maxiter; i++) {
#define GSL_SQRT_DBL_EPSILON
double brent_iterate(double(*f)(double), double x_lower, double x_upper, int maxiter)