Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / examples / nmsimplex.c
1 int 
2 main(void)
3 {
4   double par[5] = {1.0, 2.0, 10.0, 20.0, 30.0};
5
6   const gsl_multimin_fminimizer_type *T = 
7     gsl_multimin_fminimizer_nmsimplex;
8   gsl_multimin_fminimizer *s = NULL;
9   gsl_vector *ss, *x;
10   gsl_multimin_function minex_func;
11
12   size_t iter = 0;
13   int status;
14   double size;
15
16   /* Starting point */
17   x = gsl_vector_alloc (2);
18   gsl_vector_set (x, 0, 5.0);
19   gsl_vector_set (x, 1, 7.0);
20
21   /* Set initial step sizes to 1 */
22   ss = gsl_vector_alloc (2);
23   gsl_vector_set_all (ss, 1.0);
24
25   /* Initialize method and iterate */
26   minex_func.n = 2;
27   minex_func.f = &my_f;
28   minex_func.params = (void *)∥
29
30   s = gsl_multimin_fminimizer_alloc (T, 2);
31   gsl_multimin_fminimizer_set (s, &minex_func, x, ss);
32
33   do
34     {
35       iter++;
36       status = gsl_multimin_fminimizer_iterate(s);
37       
38       if (status) 
39         break;
40
41       size = gsl_multimin_fminimizer_size (s);
42       status = gsl_multimin_test_size (size, 1e-2);
43
44       if (status == GSL_SUCCESS)
45         {
46           printf ("converged to minimum at\n");
47         }
48
49       printf ("%5d %10.3e %10.3ef f() = %7.3f size = %.3f\n", 
50               iter,
51               gsl_vector_get (s->x, 0), 
52               gsl_vector_get (s->x, 1), 
53               s->fval, size);
54     }
55   while (status == GSL_CONTINUE && iter < 100);
56   
57   gsl_vector_free(x);
58   gsl_vector_free(ss);
59   gsl_multimin_fminimizer_free (s);
60
61   return status;
62 }