summaryrefslogtreecommitdiff
path: root/gsl-1.9/multifit/test_kirby2.c
diff options
context:
space:
mode:
Diffstat (limited to 'gsl-1.9/multifit/test_kirby2.c')
-rw-r--r--gsl-1.9/multifit/test_kirby2.c392
1 files changed, 392 insertions, 0 deletions
diff --git a/gsl-1.9/multifit/test_kirby2.c b/gsl-1.9/multifit/test_kirby2.c
new file mode 100644
index 0000000..623a488
--- /dev/null
+++ b/gsl-1.9/multifit/test_kirby2.c
@@ -0,0 +1,392 @@
+const size_t kirby2_N = 151;
+const size_t kirby2_P = 5;
+
+/* double kirby2_x0[5] = { 2, -0.1, 0.003, -0.001, 0.00001 }; */
+
+double kirby2_x0[5] = { 1.5, -0.15, 0.0025, -0.0015, 0.00002 };
+
+double kirby2_x[5] = {
+ 1.6745063063E+00,
+ -1.3927397867E-01,
+ 2.5961181191E-03,
+ -1.7241811870E-03,
+ 2.1664802578E-05
+};
+
+double kirby2_sumsq = 3.9050739624E+00;
+
+double kirby2_sigma[5] = {
+ 8.7989634338E-02,
+ 4.1182041386E-03,
+ 4.1856520458E-05,
+ 5.8931897355E-05,
+ 2.0129761919E-07
+};
+
+double kirby2_F1[151] = {
+ 0.0082E0,
+ 0.0112E0,
+ 0.0149E0,
+ 0.0198E0,
+ 0.0248E0,
+ 0.0324E0,
+ 0.0420E0,
+ 0.0549E0,
+ 0.0719E0,
+ 0.0963E0,
+ 0.1291E0,
+ 0.1710E0,
+ 0.2314E0,
+ 0.3227E0,
+ 0.4809E0,
+ 0.7084E0,
+ 1.0220E0,
+ 1.4580E0,
+ 1.9520E0,
+ 2.5410E0,
+ 3.2230E0,
+ 3.9990E0,
+ 4.8520E0,
+ 5.7320E0,
+ 6.7270E0,
+ 7.8350E0,
+ 9.0250E0,
+ 10.2670E0,
+ 11.5780E0,
+ 12.9440E0,
+ 14.3770E0,
+ 15.8560E0,
+ 17.3310E0,
+ 18.8850E0,
+ 20.5750E0,
+ 22.3200E0,
+ 22.3030E0,
+ 23.4600E0,
+ 24.0600E0,
+ 25.2720E0,
+ 25.8530E0,
+ 27.1100E0,
+ 27.6580E0,
+ 28.9240E0,
+ 29.5110E0,
+ 30.7100E0,
+ 31.3500E0,
+ 32.5200E0,
+ 33.2300E0,
+ 34.3300E0,
+ 35.0600E0,
+ 36.1700E0,
+ 36.8400E0,
+ 38.0100E0,
+ 38.6700E0,
+ 39.8700E0,
+ 40.0300E0,
+ 40.5000E0,
+ 41.3700E0,
+ 41.6700E0,
+ 42.3100E0,
+ 42.7300E0,
+ 43.4600E0,
+ 44.1400E0,
+ 44.5500E0,
+ 45.2200E0,
+ 45.9200E0,
+ 46.3000E0,
+ 47.0000E0,
+ 47.6800E0,
+ 48.0600E0,
+ 48.7400E0,
+ 49.4100E0,
+ 49.7600E0,
+ 50.4300E0,
+ 51.1100E0,
+ 51.5000E0,
+ 52.1200E0,
+ 52.7600E0,
+ 53.1800E0,
+ 53.7800E0,
+ 54.4600E0,
+ 54.8300E0,
+ 55.4000E0,
+ 56.4300E0,
+ 57.0300E0,
+ 58.0000E0,
+ 58.6100E0,
+ 59.5800E0,
+ 60.1100E0,
+ 61.1000E0,
+ 61.6500E0,
+ 62.5900E0,
+ 63.1200E0,
+ 64.0300E0,
+ 64.6200E0,
+ 65.4900E0,
+ 66.0300E0,
+ 66.8900E0,
+ 67.4200E0,
+ 68.2300E0,
+ 68.7700E0,
+ 69.5900E0,
+ 70.1100E0,
+ 70.8600E0,
+ 71.4300E0,
+ 72.1600E0,
+ 72.7000E0,
+ 73.4000E0,
+ 73.9300E0,
+ 74.6000E0,
+ 75.1600E0,
+ 75.8200E0,
+ 76.3400E0,
+ 76.9800E0,
+ 77.4800E0,
+ 78.0800E0,
+ 78.6000E0,
+ 79.1700E0,
+ 79.6200E0,
+ 79.8800E0,
+ 80.1900E0,
+ 80.6600E0,
+ 81.2200E0,
+ 81.6600E0,
+ 82.1600E0,
+ 82.5900E0,
+ 83.1400E0,
+ 83.5000E0,
+ 84.0000E0,
+ 84.4000E0,
+ 84.8900E0,
+ 85.2600E0,
+ 85.7400E0,
+ 86.0700E0,
+ 86.5400E0,
+ 86.8900E0,
+ 87.3200E0,
+ 87.6500E0,
+ 88.1000E0,
+ 88.4300E0,
+ 88.8300E0,
+ 89.1200E0,
+ 89.5400E0,
+ 89.8500E0,
+ 90.2500E0,
+ 90.5500E0,
+ 90.9300E0,
+ 91.2000E0,
+ 91.5500E0,
+ 92.2000E0
+};
+
+
+double kirby2_F0[151] = {
+ 9.65E0,
+ 10.74E0,
+ 11.81E0,
+ 12.88E0,
+ 14.06E0,
+ 15.28E0,
+ 16.63E0,
+ 18.19E0,
+ 19.88E0,
+ 21.84E0,
+ 24.00E0,
+ 26.25E0,
+ 28.86E0,
+ 31.85E0,
+ 35.79E0,
+ 40.18E0,
+ 44.74E0,
+ 49.53E0,
+ 53.94E0,
+ 58.29E0,
+ 62.63E0,
+ 67.03E0,
+ 71.25E0,
+ 75.22E0,
+ 79.33E0,
+ 83.56E0,
+ 87.75E0,
+ 91.93E0,
+ 96.10E0,
+ 100.28E0,
+ 104.46E0,
+ 108.66E0,
+ 112.71E0,
+ 116.88E0,
+ 121.33E0,
+ 125.79E0,
+ 125.79E0,
+ 128.74E0,
+ 130.27E0,
+ 133.33E0,
+ 134.79E0,
+ 137.93E0,
+ 139.33E0,
+ 142.46E0,
+ 143.90E0,
+ 146.91E0,
+ 148.51E0,
+ 151.41E0,
+ 153.17E0,
+ 155.97E0,
+ 157.76E0,
+ 160.56E0,
+ 162.30E0,
+ 165.21E0,
+ 166.90E0,
+ 169.92E0,
+ 170.32E0,
+ 171.54E0,
+ 173.79E0,
+ 174.57E0,
+ 176.25E0,
+ 177.34E0,
+ 179.19E0,
+ 181.02E0,
+ 182.08E0,
+ 183.88E0,
+ 185.75E0,
+ 186.80E0,
+ 188.63E0,
+ 190.45E0,
+ 191.48E0,
+ 193.35E0,
+ 195.22E0,
+ 196.23E0,
+ 198.05E0,
+ 199.97E0,
+ 201.06E0,
+ 202.83E0,
+ 204.69E0,
+ 205.86E0,
+ 207.58E0,
+ 209.50E0,
+ 210.65E0,
+ 212.33E0,
+ 215.43E0,
+ 217.16E0,
+ 220.21E0,
+ 221.98E0,
+ 225.06E0,
+ 226.79E0,
+ 229.92E0,
+ 231.69E0,
+ 234.77E0,
+ 236.60E0,
+ 239.63E0,
+ 241.50E0,
+ 244.48E0,
+ 246.40E0,
+ 249.35E0,
+ 251.32E0,
+ 254.22E0,
+ 256.24E0,
+ 259.11E0,
+ 261.18E0,
+ 264.02E0,
+ 266.13E0,
+ 268.94E0,
+ 271.09E0,
+ 273.87E0,
+ 276.08E0,
+ 278.83E0,
+ 281.08E0,
+ 283.81E0,
+ 286.11E0,
+ 288.81E0,
+ 291.08E0,
+ 293.75E0,
+ 295.99E0,
+ 298.64E0,
+ 300.84E0,
+ 302.02E0,
+ 303.48E0,
+ 305.65E0,
+ 308.27E0,
+ 310.41E0,
+ 313.01E0,
+ 315.12E0,
+ 317.71E0,
+ 319.79E0,
+ 322.36E0,
+ 324.42E0,
+ 326.98E0,
+ 329.01E0,
+ 331.56E0,
+ 333.56E0,
+ 336.10E0,
+ 338.08E0,
+ 340.60E0,
+ 342.57E0,
+ 345.08E0,
+ 347.02E0,
+ 349.52E0,
+ 351.44E0,
+ 353.93E0,
+ 355.83E0,
+ 358.32E0,
+ 360.20E0,
+ 362.67E0,
+ 364.53E0,
+ 367.00E0,
+ 371.30E0
+};
+
+
+int
+kirby2_f (const gsl_vector * x, void *params, gsl_vector * f)
+{
+ double b[5];
+ size_t i;
+
+ for (i = 0; i < 5; i++)
+ {
+ b[i] = gsl_vector_get(x, i);
+ }
+
+ for (i = 0; i < 151; i++)
+ {
+ double x = kirby2_F0[i];
+ double y = ((b[0] + x* (b[1] + x * b[2]))
+ / (1 + x*(b[3] + x *b[4])));
+ gsl_vector_set (f, i, kirby2_F1[i] - y);
+ }
+
+ return GSL_SUCCESS;
+}
+
+int
+kirby2_df (const gsl_vector * x, void *params, gsl_matrix * df)
+{
+ double b[5];
+ size_t i;
+
+ for (i = 0; i < 5; i++)
+ {
+ b[i] = gsl_vector_get(x, i);
+ }
+
+ for (i = 0; i < 151; i++)
+ {
+ double x = kirby2_F0[i];
+ double u = (b[0] + x*(b[1] + x*b[2]));
+ double v = (1 + x*(b[3] + x*b[4]));
+ gsl_matrix_set (df, i, 0, -1/v);
+ gsl_matrix_set (df, i, 1, -x/v);
+ gsl_matrix_set (df, i, 2, -x*x/v);
+ gsl_matrix_set (df, i, 3, x*u/(v*v));
+ gsl_matrix_set (df, i, 4, x*x*u/(v*v));
+ }
+
+ return GSL_SUCCESS;
+}
+
+int
+kirby2_fdf (const gsl_vector * x, void *params,
+ gsl_vector * f, gsl_matrix * df)
+{
+ kirby2_f (x, params, f);
+ kirby2_df (x, params, df);
+
+ return GSL_SUCCESS;
+}