2 #include <gsl/gsl_errno.h>
3 #include <gsl/gsl_math.h>
4 #include <gsl/gsl_roots.h>
13 int iter = 0, max_iter = 100;
14 const gsl_root_fsolver_type *T;
16 double r = 0, r_expected = sqrt (5.0);
17 double x_lo = 0.0, x_hi = 5.0;
19 struct quadratic_params params = {1.0, 0.0, -5.0};
21 F.function = &quadratic;
24 T = gsl_root_fsolver_brent;
25 s = gsl_root_fsolver_alloc (T);
26 gsl_root_fsolver_set (s, &F, x_lo, x_hi);
28 printf ("using %s method\n",
29 gsl_root_fsolver_name (s));
31 printf ("%5s [%9s, %9s] %9s %10s %9s\n",
32 "iter", "lower", "upper", "root",
38 status = gsl_root_fsolver_iterate (s);
39 r = gsl_root_fsolver_root (s);
40 x_lo = gsl_root_fsolver_x_lower (s);
41 x_hi = gsl_root_fsolver_x_upper (s);
42 status = gsl_root_test_interval (x_lo, x_hi,
45 if (status == GSL_SUCCESS)
46 printf ("Converged:\n");
48 printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
53 while (status == GSL_CONTINUE && iter < max_iter);
55 gsl_root_fsolver_free (s);