diff options
Diffstat (limited to 'gsl-1.9/multifit/test_kirby2.c')
-rw-r--r-- | gsl-1.9/multifit/test_kirby2.c | 392 |
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; +} |