Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / examples / rootnewt.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_fdfsolver_type *T;
15   gsl_root_fdfsolver *s;
16   double x0, x = 5.0, r_expected = sqrt (5.0);
17   gsl_function_fdf FDF;
18   struct quadratic_params params = {1.0, 0.0, -5.0};
19
20   FDF.f = &quadratic;
21   FDF.df = &quadratic_deriv;
22   FDF.fdf = &quadratic_fdf;
23   FDF.params = &params;
24
25   T = gsl_root_fdfsolver_newton;
26   s = gsl_root_fdfsolver_alloc (T);
27   gsl_root_fdfsolver_set (s, &FDF, x);
28
29   printf ("using %s method\n", 
30           gsl_root_fdfsolver_name (s));
31
32   printf ("%-5s %10s %10s %10s\n",
33           "iter", "root", "err", "err(est)");
34   do
35     {
36       iter++;
37       status = gsl_root_fdfsolver_iterate (s);
38       x0 = x;
39       x = gsl_root_fdfsolver_root (s);
40       status = gsl_root_test_delta (x, x0, 0, 1e-3);
41
42       if (status == GSL_SUCCESS)
43         printf ("Converged:\n");
44
45       printf ("%5d %10.7f %+10.7f %10.7f\n",
46               iter, x, x - r_expected, x - x0);
47     }
48   while (status == GSL_CONTINUE && iter < max_iter);
49
50   gsl_root_fdfsolver_free (s);
51   return status;
52 }