Added script front-end for primer-design code
[htsworkflow.git] / htswanalysis / MACS / lib / gsl / gsl-1.11 / multifit / test_brown.c
1 const size_t brown_N = 20;
2 const size_t brown_P = 4;
3
4 double brown_X[20][4] = {
5   {24.3485677, 4.71448798, -2.19486633, 2.69405755},
6   {22.4116222, 3.93075538, -1.42344852, 2.5233557},
7   {17.88886, 2.9290853, .125174936, -3.96823353},
8   {17.3237176, 2.99606803, 2.03285653, 2.28992327},
9   {17.0906508, 3.02485425, .296995153, .0876226126},
10   {16.578006, 3.1036312, -.18617941, .103262914},
11   {15.692993, 3.33088442, .0706406887, 1.05923955},
12   {14.3232177, 3.85604218, -2.3762839, -3.09486813},
13   {14.1279266, 3.97896121, .446109351, 1.40023753},
14   {13.6081961, 4.16435075, -1.51250057, -1.52510626},
15   {13.4295245, 4.22697223, -.196985195, .532009293},
16   {13.0176117, 4.3579261, -.353131208, .301377627},
17   {12.2713535, 4.62398535, -.00183585584, .894170703},
18   {11.0316144, 5.13967727, -2.38978772, -2.89510064},
19   {10.8807981, 5.24558004, .230495952, 1.27315117},
20   {10.4029264, 5.41141257, -1.5116632, -1.47615921},
21   {10.2574435, 5.46211045, -.299855732, .451893162},
22   {9.87863876, 5.57914292, -.368885288, .358086545},
23   {9.1894983, 5.82082741, -.230157969, .621476534},
24   {8.00589008, 6.27788753, -1.46022815, -1.33468082}
25 };
26
27 double brown_F[20] = {
28   2474.05541,
29   1924.69004,
30   1280.63194,
31   1244.81867,
32   1190.53739,
33   1159.34935,
34   1108.44426,
35   1090.11073,
36   1015.92942,
37   1002.43533,
38   971.221084,
39   949.589435,
40   911.359899,
41   906.522994,
42   840.525729,
43   833.950164,
44   807.557511,
45   791.00924,
46   761.09598,
47   726.787783,
48 };
49
50 double brown_cov[4][4] = {
51   { 1.8893186910e-01, -4.7099989571e-02,  5.2154168404e-01,  1.6608168209e-02},
52   {-4.7099989571e-02,  1.1761534388e-02, -1.2987843074e-01, -4.1615942391e-03},
53   { 5.2154168404e-01, -1.2987843074e-01,  1.4653936514e+00,  1.5738321686e-02},
54   { 1.6608168209e-02, -4.1615942391e-03,  1.5738321686e-02,  4.2348042340e-02},
55 };
56
57 double brown_x0[4] = { 25, 5, -5, -1 };
58
59 int
60 brown_f (const gsl_vector * x, void *params, gsl_vector * f)
61 {
62   double x0 = gsl_vector_get (x, 0);
63   double x1 = gsl_vector_get (x, 1);
64   double x2 = gsl_vector_get (x, 2);
65   double x3 = gsl_vector_get (x, 3);
66   size_t i;
67
68   for (i = 0; i < 20; i++)
69     {
70       double ti = 0.2 * (i + 1);
71       double ui = x0 + x1 * ti - exp (ti);
72       double vi = x2 + x3 * sin (ti) - cos (ti);
73
74       gsl_vector_set (f, i, ui * ui + vi * vi);
75     }
76
77   return GSL_SUCCESS;
78 }
79
80 int
81 brown_df (const gsl_vector * x, void *params, gsl_matrix * df)
82 {
83   double x0 = gsl_vector_get (x, 0);
84   double x1 = gsl_vector_get (x, 1);
85   double x2 = gsl_vector_get (x, 2);
86   double x3 = gsl_vector_get (x, 3);
87   size_t i;
88
89   for (i = 0; i < 20; i++)
90     {
91       double ti = 0.2 * (i + 1);
92       double ui = x0 + x1 * ti - exp (ti);
93       double vi = x2 + x3 * sin (ti) - cos (ti);
94
95       gsl_matrix_set (df, i, 0, 2 * ui);
96       gsl_matrix_set (df, i, 1, 2 * ui * ti);
97       gsl_matrix_set (df, i, 2, 2 * vi);
98       gsl_matrix_set (df, i, 3, 2 * vi * sin (ti));
99
100     }
101   return GSL_SUCCESS;
102 }
103
104 int
105 brown_fdf (const gsl_vector * x, void *params,
106            gsl_vector * f, gsl_matrix * df)
107 {
108   brown_f (x, params, f);
109   brown_df (x, params, df);
110
111   return GSL_SUCCESS;
112 }
113