Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / doc / examples / multiminfn.c
1 /* Paraboloid centered on (p[0],p[1]), with  
2    scale factors (p[2],p[3]) and minimum p[4] */
3
4 double
5 my_f (const gsl_vector *v, void *params)
6 {
7   double x, y;
8   double *p = (double *)params;
9   
10   x = gsl_vector_get(v, 0);
11   y = gsl_vector_get(v, 1);
12  
13   return p[2] * (x - p[0]) * (x - p[0]) +
14            p[3] * (y - p[1]) * (y - p[1]) + p[4]; 
15 }
16
17 /* The gradient of f, df = (df/dx, df/dy). */
18 void 
19 my_df (const gsl_vector *v, void *params, 
20        gsl_vector *df)
21 {
22   double x, y;
23   double *p = (double *)params;
24   
25   x = gsl_vector_get(v, 0);
26   y = gsl_vector_get(v, 1);
27  
28   gsl_vector_set(df, 0, 2.0 * p[2] * (x - p[0]));
29   gsl_vector_set(df, 1, 2.0 * p[3] * (y - p[1]));
30 }
31
32 /* Compute both f and df together. */
33 void 
34 my_fdf (const gsl_vector *x, void *params, 
35         double *f, gsl_vector *df) 
36 {
37   *f = my_f(x, params); 
38   my_df(x, params, df);
39 }