Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / examples / min.c
1 #include <stdio.h>
2 #include <gsl/gsl_errno.h>
3 #include <gsl/gsl_math.h>
4 #include <gsl/gsl_min.h>
5
6 double fn1 (double x, void * params)
7 {
8   return cos(x) + 1.0;
9 }
10
11 int
12 main (void)
13 {
14   int status;
15   int iter = 0, max_iter = 100;
16   const gsl_min_fminimizer_type *T;
17   gsl_min_fminimizer *s;
18   double m = 2.0, m_expected = M_PI;
19   double a = 0.0, b = 6.0;
20   gsl_function F;
21
22   F.function = &fn1;
23   F.params = 0;
24
25   T = gsl_min_fminimizer_brent;
26   s = gsl_min_fminimizer_alloc (T);
27   gsl_min_fminimizer_set (s, &F, m, a, b);
28
29   printf ("using %s method\n",
30           gsl_min_fminimizer_name (s));
31
32   printf ("%5s [%9s, %9s] %9s %10s %9s\n",
33           "iter", "lower", "upper", "min",
34           "err", "err(est)");
35
36   printf ("%5d [%.7f, %.7f] %.7f %+.7f %.7f\n",
37           iter, a, b,
38           m, m - m_expected, b - a);
39
40   do
41     {
42       iter++;
43       status = gsl_min_fminimizer_iterate (s);
44
45       m = gsl_min_fminimizer_x_minimum (s);
46       a = gsl_min_fminimizer_x_lower (s);
47       b = gsl_min_fminimizer_x_upper (s);
48
49       status 
50         = gsl_min_test_interval (a, b, 0.001, 0.0);
51
52       if (status == GSL_SUCCESS)
53         printf ("Converged:\n");
54
55       printf ("%5d [%.7f, %.7f] "
56               "%.7f %+.7f %.7f\n",
57               iter, a, b,
58               m, m - m_expected, b - a);
59     }
60   while (status == GSL_CONTINUE && iter < max_iter);
61
62   gsl_min_fminimizer_free (s);
63
64   return status;
65 }