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