Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / examples / multimin.c
1 int
2 main (void)
3 {
4   size_t iter = 0;
5   int status;
6
7   const gsl_multimin_fdfminimizer_type *T;
8   gsl_multimin_fdfminimizer *s;
9
10   /* Position of the minimum (1,2), scale factors 
11      10,20, height 30. */
12   double par[5] = { 1.0, 2.0, 10.0, 20.0, 30.0 };
13
14   gsl_vector *x;
15   gsl_multimin_function_fdf my_func;
16
17   my_func.n = 2;
18   my_func.f = &my_f;
19   my_func.df = &my_df;
20   my_func.fdf = &my_fdf;
21   my_func.params = ∥
22
23   /* Starting point, x = (5,7) */
24   x = gsl_vector_alloc (2);
25   gsl_vector_set (x, 0, 5.0);
26   gsl_vector_set (x, 1, 7.0);
27
28   T = gsl_multimin_fdfminimizer_conjugate_fr;
29   s = gsl_multimin_fdfminimizer_alloc (T, 2);
30
31   gsl_multimin_fdfminimizer_set (s, &my_func, x, 0.01, 1e-4);
32
33   do
34     {
35       iter++;
36       status = gsl_multimin_fdfminimizer_iterate (s);
37
38       if (status)
39         break;
40
41       status = gsl_multimin_test_gradient (s->gradient, 1e-3);
42
43       if (status == GSL_SUCCESS)
44         printf ("Minimum found at:\n");
45
46       printf ("%5d %.5f %.5f %10.5f\n", iter,
47               gsl_vector_get (s->x, 0), 
48               gsl_vector_get (s->x, 1), 
49               s->f);
50
51     }
52   while (status == GSL_CONTINUE && iter < 100);
53
54   gsl_multimin_fdfminimizer_free (s);
55   gsl_vector_free (x);
56
57   return 0;
58 }