Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / examples / roots.c
1 #include <stdio.h>
2 #include <gsl/gsl_errno.h>
3 #include <gsl/gsl_math.h>
4 #include <gsl/gsl_roots.h>
5
6 #include "demo_fn.h"
7 #include "demo_fn.c"
8
9 int
10 main (void)
11 {
12   int status;
13   int iter = 0, max_iter = 100;
14   const gsl_root_fsolver_type *T;
15   gsl_root_fsolver *s;
16   double r = 0, r_expected = sqrt (5.0);
17   double x_lo = 0.0, x_hi = 5.0;
18   gsl_function F;
19   struct quadratic_params params = {1.0, 0.0, -5.0};
20
21   F.function = &quadratic;
22   F.params = &params;
23
24   T = gsl_root_fsolver_brent;
25   s = gsl_root_fsolver_alloc (T);
26   gsl_root_fsolver_set (s, &F, x_lo, x_hi);
27
28   printf ("using %s method\n", 
29           gsl_root_fsolver_name (s));
30
31   printf ("%5s [%9s, %9s] %9s %10s %9s\n",
32           "iter", "lower", "upper", "root", 
33           "err", "err(est)");
34
35   do
36     {
37       iter++;
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,
43                                        0, 0.001);
44
45       if (status == GSL_SUCCESS)
46         printf ("Converged:\n");
47
48       printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
49               iter, x_lo, x_hi,
50               r, r - r_expected, 
51               x_hi - x_lo);
52     }
53   while (status == GSL_CONTINUE && iter < max_iter);
54
55   gsl_root_fsolver_free (s);
56
57   return status;
58 }