]>
git.ipfire.org Git - thirdparty/gcc.git/blob - libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
1 // 2007-02-04 Edward Smith-Rowland <3dw4rd@verizon.net>
3 // Copyright (C) 2007-2016 Free Software Foundation, Inc.
5 // This file is part of the GNU ISO C++ Library. This library is free
6 // software; you can redistribute it and/or modify it under the
7 // terms of the GNU General Public License as published by the
8 // Free Software Foundation; either version 3, or (at your option)
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with this library; see the file COPYING3. If not see
18 // <http://www.gnu.org/licenses/>.
23 // Compare against values generated by the GNU Scientific Library.
24 // The GSL can be found on the web: http://www.gnu.org/software/gsl/
27 #if defined(__TEST_DEBUG)
32 std::cout << "line " << __LINE__ \
33 << " max_abs_frac = " << max_abs_frac \
37 #include <testsuite_hooks.h>
39 #include "../testcase.h"
42 // Test data for a=0.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
43 testcase_hyperg
<double> data001
[] = {
44 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
45 2.0000000000000000, -0.90000000000000002 },
46 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
47 2.0000000000000000, -0.80000000000000004 },
48 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
49 2.0000000000000000, -0.69999999999999996 },
50 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
51 2.0000000000000000, -0.59999999999999998 },
52 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
53 2.0000000000000000, -0.50000000000000000 },
54 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
55 2.0000000000000000, -0.40000000000000002 },
56 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
57 2.0000000000000000, -0.30000000000000004 },
58 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
59 2.0000000000000000, -0.19999999999999996 },
60 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
61 2.0000000000000000, -0.099999999999999978 },
62 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
63 2.0000000000000000, 0.0000000000000000 },
64 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
65 2.0000000000000000, 0.10000000000000009 },
66 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
67 2.0000000000000000, 0.19999999999999996 },
68 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
69 2.0000000000000000, 0.30000000000000004 },
70 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
71 2.0000000000000000, 0.39999999999999991 },
72 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
73 2.0000000000000000, 0.50000000000000000 },
74 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
75 2.0000000000000000, 0.60000000000000009 },
76 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
77 2.0000000000000000, 0.69999999999999996 },
78 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
79 2.0000000000000000, 0.80000000000000004 },
80 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
81 2.0000000000000000, 0.89999999999999991 },
84 // Test function for a=0.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
85 template <typename Tp
>
88 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
89 Tp max_abs_diff
= -Tp(1);
90 Tp max_abs_frac
= -Tp(1);
91 unsigned int num_datum
= sizeof(data001
)
92 / sizeof(testcase_hyperg
<double>);
93 for (unsigned int i
= 0; i
< num_datum
; ++i
)
95 const Tp f
= std::tr1::hyperg(Tp(data001
[i
].a
), Tp(data001
[i
].b
),
96 Tp(data001
[i
].c
), Tp(data001
[i
].x
));
97 const Tp f0
= data001
[i
].f0
;
98 const Tp diff
= f
- f0
;
99 if (std::abs(diff
) > max_abs_diff
)
100 max_abs_diff
= std::abs(diff
);
101 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
103 const Tp frac
= diff
/ f0
;
104 if (std::abs(frac
) > max_abs_frac
)
105 max_abs_frac
= std::abs(frac
);
108 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
111 // Test data for a=0.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
112 testcase_hyperg
<double> data002
[] = {
113 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
114 4.0000000000000000, -0.90000000000000002 },
115 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
116 4.0000000000000000, -0.80000000000000004 },
117 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
118 4.0000000000000000, -0.69999999999999996 },
119 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
120 4.0000000000000000, -0.59999999999999998 },
121 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
122 4.0000000000000000, -0.50000000000000000 },
123 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
124 4.0000000000000000, -0.40000000000000002 },
125 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
126 4.0000000000000000, -0.30000000000000004 },
127 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
128 4.0000000000000000, -0.19999999999999996 },
129 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
130 4.0000000000000000, -0.099999999999999978 },
131 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
132 4.0000000000000000, 0.0000000000000000 },
133 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
134 4.0000000000000000, 0.10000000000000009 },
135 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
136 4.0000000000000000, 0.19999999999999996 },
137 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
138 4.0000000000000000, 0.30000000000000004 },
139 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
140 4.0000000000000000, 0.39999999999999991 },
141 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
142 4.0000000000000000, 0.50000000000000000 },
143 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
144 4.0000000000000000, 0.60000000000000009 },
145 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
146 4.0000000000000000, 0.69999999999999996 },
147 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
148 4.0000000000000000, 0.80000000000000004 },
149 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
150 4.0000000000000000, 0.89999999999999991 },
153 // Test function for a=0.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
154 template <typename Tp
>
157 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
158 Tp max_abs_diff
= -Tp(1);
159 Tp max_abs_frac
= -Tp(1);
160 unsigned int num_datum
= sizeof(data002
)
161 / sizeof(testcase_hyperg
<double>);
162 for (unsigned int i
= 0; i
< num_datum
; ++i
)
164 const Tp f
= std::tr1::hyperg(Tp(data002
[i
].a
), Tp(data002
[i
].b
),
165 Tp(data002
[i
].c
), Tp(data002
[i
].x
));
166 const Tp f0
= data002
[i
].f0
;
167 const Tp diff
= f
- f0
;
168 if (std::abs(diff
) > max_abs_diff
)
169 max_abs_diff
= std::abs(diff
);
170 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
172 const Tp frac
= diff
/ f0
;
173 if (std::abs(frac
) > max_abs_frac
)
174 max_abs_frac
= std::abs(frac
);
177 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
180 // Test data for a=0.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
181 testcase_hyperg
<double> data003
[] = {
182 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
183 6.0000000000000000, -0.90000000000000002 },
184 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
185 6.0000000000000000, -0.80000000000000004 },
186 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
187 6.0000000000000000, -0.69999999999999996 },
188 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
189 6.0000000000000000, -0.59999999999999998 },
190 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
191 6.0000000000000000, -0.50000000000000000 },
192 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
193 6.0000000000000000, -0.40000000000000002 },
194 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
195 6.0000000000000000, -0.30000000000000004 },
196 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
197 6.0000000000000000, -0.19999999999999996 },
198 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
199 6.0000000000000000, -0.099999999999999978 },
200 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
201 6.0000000000000000, 0.0000000000000000 },
202 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
203 6.0000000000000000, 0.10000000000000009 },
204 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
205 6.0000000000000000, 0.19999999999999996 },
206 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
207 6.0000000000000000, 0.30000000000000004 },
208 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
209 6.0000000000000000, 0.39999999999999991 },
210 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
211 6.0000000000000000, 0.50000000000000000 },
212 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
213 6.0000000000000000, 0.60000000000000009 },
214 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
215 6.0000000000000000, 0.69999999999999996 },
216 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
217 6.0000000000000000, 0.80000000000000004 },
218 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
219 6.0000000000000000, 0.89999999999999991 },
222 // Test function for a=0.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
223 template <typename Tp
>
226 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
227 Tp max_abs_diff
= -Tp(1);
228 Tp max_abs_frac
= -Tp(1);
229 unsigned int num_datum
= sizeof(data003
)
230 / sizeof(testcase_hyperg
<double>);
231 for (unsigned int i
= 0; i
< num_datum
; ++i
)
233 const Tp f
= std::tr1::hyperg(Tp(data003
[i
].a
), Tp(data003
[i
].b
),
234 Tp(data003
[i
].c
), Tp(data003
[i
].x
));
235 const Tp f0
= data003
[i
].f0
;
236 const Tp diff
= f
- f0
;
237 if (std::abs(diff
) > max_abs_diff
)
238 max_abs_diff
= std::abs(diff
);
239 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
241 const Tp frac
= diff
/ f0
;
242 if (std::abs(frac
) > max_abs_frac
)
243 max_abs_frac
= std::abs(frac
);
246 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
249 // Test data for a=0.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
250 testcase_hyperg
<double> data004
[] = {
251 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
252 8.0000000000000000, -0.90000000000000002 },
253 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
254 8.0000000000000000, -0.80000000000000004 },
255 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
256 8.0000000000000000, -0.69999999999999996 },
257 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
258 8.0000000000000000, -0.59999999999999998 },
259 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
260 8.0000000000000000, -0.50000000000000000 },
261 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
262 8.0000000000000000, -0.40000000000000002 },
263 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
264 8.0000000000000000, -0.30000000000000004 },
265 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
266 8.0000000000000000, -0.19999999999999996 },
267 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
268 8.0000000000000000, -0.099999999999999978 },
269 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
270 8.0000000000000000, 0.0000000000000000 },
271 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
272 8.0000000000000000, 0.10000000000000009 },
273 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
274 8.0000000000000000, 0.19999999999999996 },
275 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
276 8.0000000000000000, 0.30000000000000004 },
277 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
278 8.0000000000000000, 0.39999999999999991 },
279 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
280 8.0000000000000000, 0.50000000000000000 },
281 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
282 8.0000000000000000, 0.60000000000000009 },
283 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
284 8.0000000000000000, 0.69999999999999996 },
285 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
286 8.0000000000000000, 0.80000000000000004 },
287 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
288 8.0000000000000000, 0.89999999999999991 },
291 // Test function for a=0.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
292 template <typename Tp
>
295 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
296 Tp max_abs_diff
= -Tp(1);
297 Tp max_abs_frac
= -Tp(1);
298 unsigned int num_datum
= sizeof(data004
)
299 / sizeof(testcase_hyperg
<double>);
300 for (unsigned int i
= 0; i
< num_datum
; ++i
)
302 const Tp f
= std::tr1::hyperg(Tp(data004
[i
].a
), Tp(data004
[i
].b
),
303 Tp(data004
[i
].c
), Tp(data004
[i
].x
));
304 const Tp f0
= data004
[i
].f0
;
305 const Tp diff
= f
- f0
;
306 if (std::abs(diff
) > max_abs_diff
)
307 max_abs_diff
= std::abs(diff
);
308 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
310 const Tp frac
= diff
/ f0
;
311 if (std::abs(frac
) > max_abs_frac
)
312 max_abs_frac
= std::abs(frac
);
315 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
318 // Test data for a=0.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
319 testcase_hyperg
<double> data005
[] = {
320 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
321 10.000000000000000, -0.90000000000000002 },
322 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
323 10.000000000000000, -0.80000000000000004 },
324 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
325 10.000000000000000, -0.69999999999999996 },
326 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
327 10.000000000000000, -0.59999999999999998 },
328 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
329 10.000000000000000, -0.50000000000000000 },
330 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
331 10.000000000000000, -0.40000000000000002 },
332 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
333 10.000000000000000, -0.30000000000000004 },
334 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
335 10.000000000000000, -0.19999999999999996 },
336 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
337 10.000000000000000, -0.099999999999999978 },
338 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
339 10.000000000000000, 0.0000000000000000 },
340 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
341 10.000000000000000, 0.10000000000000009 },
342 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
343 10.000000000000000, 0.19999999999999996 },
344 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
345 10.000000000000000, 0.30000000000000004 },
346 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
347 10.000000000000000, 0.39999999999999991 },
348 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
349 10.000000000000000, 0.50000000000000000 },
350 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
351 10.000000000000000, 0.60000000000000009 },
352 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
353 10.000000000000000, 0.69999999999999996 },
354 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
355 10.000000000000000, 0.80000000000000004 },
356 { 1.0000000000000000, 0.0000000000000000, 0.0000000000000000,
357 10.000000000000000, 0.89999999999999991 },
360 // Test function for a=0.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
361 template <typename Tp
>
364 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
365 Tp max_abs_diff
= -Tp(1);
366 Tp max_abs_frac
= -Tp(1);
367 unsigned int num_datum
= sizeof(data005
)
368 / sizeof(testcase_hyperg
<double>);
369 for (unsigned int i
= 0; i
< num_datum
; ++i
)
371 const Tp f
= std::tr1::hyperg(Tp(data005
[i
].a
), Tp(data005
[i
].b
),
372 Tp(data005
[i
].c
), Tp(data005
[i
].x
));
373 const Tp f0
= data005
[i
].f0
;
374 const Tp diff
= f
- f0
;
375 if (std::abs(diff
) > max_abs_diff
)
376 max_abs_diff
= std::abs(diff
);
377 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
379 const Tp frac
= diff
/ f0
;
380 if (std::abs(frac
) > max_abs_frac
)
381 max_abs_frac
= std::abs(frac
);
384 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
387 // Test data for a=0.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
388 testcase_hyperg
<double> data006
[] = {
389 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
390 2.0000000000000000, -0.90000000000000002 },
391 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
392 2.0000000000000000, -0.80000000000000004 },
393 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
394 2.0000000000000000, -0.69999999999999996 },
395 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
396 2.0000000000000000, -0.59999999999999998 },
397 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
398 2.0000000000000000, -0.50000000000000000 },
399 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
400 2.0000000000000000, -0.40000000000000002 },
401 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
402 2.0000000000000000, -0.30000000000000004 },
403 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
404 2.0000000000000000, -0.19999999999999996 },
405 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
406 2.0000000000000000, -0.099999999999999978 },
407 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
408 2.0000000000000000, 0.0000000000000000 },
409 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
410 2.0000000000000000, 0.10000000000000009 },
411 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
412 2.0000000000000000, 0.19999999999999996 },
413 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
414 2.0000000000000000, 0.30000000000000004 },
415 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
416 2.0000000000000000, 0.39999999999999991 },
417 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
418 2.0000000000000000, 0.50000000000000000 },
419 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
420 2.0000000000000000, 0.60000000000000009 },
421 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
422 2.0000000000000000, 0.69999999999999996 },
423 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
424 2.0000000000000000, 0.80000000000000004 },
425 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
426 2.0000000000000000, 0.89999999999999991 },
429 // Test function for a=0.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
430 template <typename Tp
>
433 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
434 Tp max_abs_diff
= -Tp(1);
435 Tp max_abs_frac
= -Tp(1);
436 unsigned int num_datum
= sizeof(data006
)
437 / sizeof(testcase_hyperg
<double>);
438 for (unsigned int i
= 0; i
< num_datum
; ++i
)
440 const Tp f
= std::tr1::hyperg(Tp(data006
[i
].a
), Tp(data006
[i
].b
),
441 Tp(data006
[i
].c
), Tp(data006
[i
].x
));
442 const Tp f0
= data006
[i
].f0
;
443 const Tp diff
= f
- f0
;
444 if (std::abs(diff
) > max_abs_diff
)
445 max_abs_diff
= std::abs(diff
);
446 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
448 const Tp frac
= diff
/ f0
;
449 if (std::abs(frac
) > max_abs_frac
)
450 max_abs_frac
= std::abs(frac
);
453 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
456 // Test data for a=0.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
457 testcase_hyperg
<double> data007
[] = {
458 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
459 4.0000000000000000, -0.90000000000000002 },
460 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
461 4.0000000000000000, -0.80000000000000004 },
462 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
463 4.0000000000000000, -0.69999999999999996 },
464 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
465 4.0000000000000000, -0.59999999999999998 },
466 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
467 4.0000000000000000, -0.50000000000000000 },
468 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
469 4.0000000000000000, -0.40000000000000002 },
470 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
471 4.0000000000000000, -0.30000000000000004 },
472 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
473 4.0000000000000000, -0.19999999999999996 },
474 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
475 4.0000000000000000, -0.099999999999999978 },
476 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
477 4.0000000000000000, 0.0000000000000000 },
478 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
479 4.0000000000000000, 0.10000000000000009 },
480 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
481 4.0000000000000000, 0.19999999999999996 },
482 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
483 4.0000000000000000, 0.30000000000000004 },
484 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
485 4.0000000000000000, 0.39999999999999991 },
486 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
487 4.0000000000000000, 0.50000000000000000 },
488 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
489 4.0000000000000000, 0.60000000000000009 },
490 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
491 4.0000000000000000, 0.69999999999999996 },
492 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
493 4.0000000000000000, 0.80000000000000004 },
494 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
495 4.0000000000000000, 0.89999999999999991 },
498 // Test function for a=0.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
499 template <typename Tp
>
502 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
503 Tp max_abs_diff
= -Tp(1);
504 Tp max_abs_frac
= -Tp(1);
505 unsigned int num_datum
= sizeof(data007
)
506 / sizeof(testcase_hyperg
<double>);
507 for (unsigned int i
= 0; i
< num_datum
; ++i
)
509 const Tp f
= std::tr1::hyperg(Tp(data007
[i
].a
), Tp(data007
[i
].b
),
510 Tp(data007
[i
].c
), Tp(data007
[i
].x
));
511 const Tp f0
= data007
[i
].f0
;
512 const Tp diff
= f
- f0
;
513 if (std::abs(diff
) > max_abs_diff
)
514 max_abs_diff
= std::abs(diff
);
515 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
517 const Tp frac
= diff
/ f0
;
518 if (std::abs(frac
) > max_abs_frac
)
519 max_abs_frac
= std::abs(frac
);
522 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
525 // Test data for a=0.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
526 testcase_hyperg
<double> data008
[] = {
527 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
528 6.0000000000000000, -0.90000000000000002 },
529 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
530 6.0000000000000000, -0.80000000000000004 },
531 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
532 6.0000000000000000, -0.69999999999999996 },
533 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
534 6.0000000000000000, -0.59999999999999998 },
535 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
536 6.0000000000000000, -0.50000000000000000 },
537 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
538 6.0000000000000000, -0.40000000000000002 },
539 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
540 6.0000000000000000, -0.30000000000000004 },
541 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
542 6.0000000000000000, -0.19999999999999996 },
543 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
544 6.0000000000000000, -0.099999999999999978 },
545 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
546 6.0000000000000000, 0.0000000000000000 },
547 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
548 6.0000000000000000, 0.10000000000000009 },
549 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
550 6.0000000000000000, 0.19999999999999996 },
551 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
552 6.0000000000000000, 0.30000000000000004 },
553 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
554 6.0000000000000000, 0.39999999999999991 },
555 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
556 6.0000000000000000, 0.50000000000000000 },
557 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
558 6.0000000000000000, 0.60000000000000009 },
559 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
560 6.0000000000000000, 0.69999999999999996 },
561 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
562 6.0000000000000000, 0.80000000000000004 },
563 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
564 6.0000000000000000, 0.89999999999999991 },
567 // Test function for a=0.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
568 template <typename Tp
>
571 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
572 Tp max_abs_diff
= -Tp(1);
573 Tp max_abs_frac
= -Tp(1);
574 unsigned int num_datum
= sizeof(data008
)
575 / sizeof(testcase_hyperg
<double>);
576 for (unsigned int i
= 0; i
< num_datum
; ++i
)
578 const Tp f
= std::tr1::hyperg(Tp(data008
[i
].a
), Tp(data008
[i
].b
),
579 Tp(data008
[i
].c
), Tp(data008
[i
].x
));
580 const Tp f0
= data008
[i
].f0
;
581 const Tp diff
= f
- f0
;
582 if (std::abs(diff
) > max_abs_diff
)
583 max_abs_diff
= std::abs(diff
);
584 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
586 const Tp frac
= diff
/ f0
;
587 if (std::abs(frac
) > max_abs_frac
)
588 max_abs_frac
= std::abs(frac
);
591 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
594 // Test data for a=0.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
595 testcase_hyperg
<double> data009
[] = {
596 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
597 8.0000000000000000, -0.90000000000000002 },
598 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
599 8.0000000000000000, -0.80000000000000004 },
600 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
601 8.0000000000000000, -0.69999999999999996 },
602 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
603 8.0000000000000000, -0.59999999999999998 },
604 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
605 8.0000000000000000, -0.50000000000000000 },
606 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
607 8.0000000000000000, -0.40000000000000002 },
608 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
609 8.0000000000000000, -0.30000000000000004 },
610 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
611 8.0000000000000000, -0.19999999999999996 },
612 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
613 8.0000000000000000, -0.099999999999999978 },
614 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
615 8.0000000000000000, 0.0000000000000000 },
616 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
617 8.0000000000000000, 0.10000000000000009 },
618 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
619 8.0000000000000000, 0.19999999999999996 },
620 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
621 8.0000000000000000, 0.30000000000000004 },
622 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
623 8.0000000000000000, 0.39999999999999991 },
624 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
625 8.0000000000000000, 0.50000000000000000 },
626 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
627 8.0000000000000000, 0.60000000000000009 },
628 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
629 8.0000000000000000, 0.69999999999999996 },
630 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
631 8.0000000000000000, 0.80000000000000004 },
632 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
633 8.0000000000000000, 0.89999999999999991 },
636 // Test function for a=0.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
637 template <typename Tp
>
640 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
641 Tp max_abs_diff
= -Tp(1);
642 Tp max_abs_frac
= -Tp(1);
643 unsigned int num_datum
= sizeof(data009
)
644 / sizeof(testcase_hyperg
<double>);
645 for (unsigned int i
= 0; i
< num_datum
; ++i
)
647 const Tp f
= std::tr1::hyperg(Tp(data009
[i
].a
), Tp(data009
[i
].b
),
648 Tp(data009
[i
].c
), Tp(data009
[i
].x
));
649 const Tp f0
= data009
[i
].f0
;
650 const Tp diff
= f
- f0
;
651 if (std::abs(diff
) > max_abs_diff
)
652 max_abs_diff
= std::abs(diff
);
653 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
655 const Tp frac
= diff
/ f0
;
656 if (std::abs(frac
) > max_abs_frac
)
657 max_abs_frac
= std::abs(frac
);
660 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
663 // Test data for a=0.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
664 testcase_hyperg
<double> data010
[] = {
665 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
666 10.000000000000000, -0.90000000000000002 },
667 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
668 10.000000000000000, -0.80000000000000004 },
669 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
670 10.000000000000000, -0.69999999999999996 },
671 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
672 10.000000000000000, -0.59999999999999998 },
673 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
674 10.000000000000000, -0.50000000000000000 },
675 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
676 10.000000000000000, -0.40000000000000002 },
677 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
678 10.000000000000000, -0.30000000000000004 },
679 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
680 10.000000000000000, -0.19999999999999996 },
681 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
682 10.000000000000000, -0.099999999999999978 },
683 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
684 10.000000000000000, 0.0000000000000000 },
685 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
686 10.000000000000000, 0.10000000000000009 },
687 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
688 10.000000000000000, 0.19999999999999996 },
689 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
690 10.000000000000000, 0.30000000000000004 },
691 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
692 10.000000000000000, 0.39999999999999991 },
693 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
694 10.000000000000000, 0.50000000000000000 },
695 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
696 10.000000000000000, 0.60000000000000009 },
697 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
698 10.000000000000000, 0.69999999999999996 },
699 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
700 10.000000000000000, 0.80000000000000004 },
701 { 1.0000000000000000, 0.0000000000000000, 0.50000000000000000,
702 10.000000000000000, 0.89999999999999991 },
705 // Test function for a=0.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
706 template <typename Tp
>
709 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
710 Tp max_abs_diff
= -Tp(1);
711 Tp max_abs_frac
= -Tp(1);
712 unsigned int num_datum
= sizeof(data010
)
713 / sizeof(testcase_hyperg
<double>);
714 for (unsigned int i
= 0; i
< num_datum
; ++i
)
716 const Tp f
= std::tr1::hyperg(Tp(data010
[i
].a
), Tp(data010
[i
].b
),
717 Tp(data010
[i
].c
), Tp(data010
[i
].x
));
718 const Tp f0
= data010
[i
].f0
;
719 const Tp diff
= f
- f0
;
720 if (std::abs(diff
) > max_abs_diff
)
721 max_abs_diff
= std::abs(diff
);
722 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
724 const Tp frac
= diff
/ f0
;
725 if (std::abs(frac
) > max_abs_frac
)
726 max_abs_frac
= std::abs(frac
);
729 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
732 // Test data for a=0.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
733 testcase_hyperg
<double> data011
[] = {
734 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
735 2.0000000000000000, -0.90000000000000002 },
736 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
737 2.0000000000000000, -0.80000000000000004 },
738 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
739 2.0000000000000000, -0.69999999999999996 },
740 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
741 2.0000000000000000, -0.59999999999999998 },
742 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
743 2.0000000000000000, -0.50000000000000000 },
744 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
745 2.0000000000000000, -0.40000000000000002 },
746 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
747 2.0000000000000000, -0.30000000000000004 },
748 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
749 2.0000000000000000, -0.19999999999999996 },
750 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
751 2.0000000000000000, -0.099999999999999978 },
752 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
753 2.0000000000000000, 0.0000000000000000 },
754 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
755 2.0000000000000000, 0.10000000000000009 },
756 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
757 2.0000000000000000, 0.19999999999999996 },
758 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
759 2.0000000000000000, 0.30000000000000004 },
760 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
761 2.0000000000000000, 0.39999999999999991 },
762 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
763 2.0000000000000000, 0.50000000000000000 },
764 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
765 2.0000000000000000, 0.60000000000000009 },
766 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
767 2.0000000000000000, 0.69999999999999996 },
768 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
769 2.0000000000000000, 0.80000000000000004 },
770 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
771 2.0000000000000000, 0.89999999999999991 },
774 // Test function for a=0.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
775 template <typename Tp
>
778 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
779 Tp max_abs_diff
= -Tp(1);
780 Tp max_abs_frac
= -Tp(1);
781 unsigned int num_datum
= sizeof(data011
)
782 / sizeof(testcase_hyperg
<double>);
783 for (unsigned int i
= 0; i
< num_datum
; ++i
)
785 const Tp f
= std::tr1::hyperg(Tp(data011
[i
].a
), Tp(data011
[i
].b
),
786 Tp(data011
[i
].c
), Tp(data011
[i
].x
));
787 const Tp f0
= data011
[i
].f0
;
788 const Tp diff
= f
- f0
;
789 if (std::abs(diff
) > max_abs_diff
)
790 max_abs_diff
= std::abs(diff
);
791 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
793 const Tp frac
= diff
/ f0
;
794 if (std::abs(frac
) > max_abs_frac
)
795 max_abs_frac
= std::abs(frac
);
798 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
801 // Test data for a=0.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
802 testcase_hyperg
<double> data012
[] = {
803 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
804 4.0000000000000000, -0.90000000000000002 },
805 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
806 4.0000000000000000, -0.80000000000000004 },
807 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
808 4.0000000000000000, -0.69999999999999996 },
809 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
810 4.0000000000000000, -0.59999999999999998 },
811 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
812 4.0000000000000000, -0.50000000000000000 },
813 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
814 4.0000000000000000, -0.40000000000000002 },
815 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
816 4.0000000000000000, -0.30000000000000004 },
817 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
818 4.0000000000000000, -0.19999999999999996 },
819 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
820 4.0000000000000000, -0.099999999999999978 },
821 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
822 4.0000000000000000, 0.0000000000000000 },
823 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
824 4.0000000000000000, 0.10000000000000009 },
825 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
826 4.0000000000000000, 0.19999999999999996 },
827 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
828 4.0000000000000000, 0.30000000000000004 },
829 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
830 4.0000000000000000, 0.39999999999999991 },
831 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
832 4.0000000000000000, 0.50000000000000000 },
833 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
834 4.0000000000000000, 0.60000000000000009 },
835 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
836 4.0000000000000000, 0.69999999999999996 },
837 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
838 4.0000000000000000, 0.80000000000000004 },
839 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
840 4.0000000000000000, 0.89999999999999991 },
843 // Test function for a=0.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
844 template <typename Tp
>
847 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
848 Tp max_abs_diff
= -Tp(1);
849 Tp max_abs_frac
= -Tp(1);
850 unsigned int num_datum
= sizeof(data012
)
851 / sizeof(testcase_hyperg
<double>);
852 for (unsigned int i
= 0; i
< num_datum
; ++i
)
854 const Tp f
= std::tr1::hyperg(Tp(data012
[i
].a
), Tp(data012
[i
].b
),
855 Tp(data012
[i
].c
), Tp(data012
[i
].x
));
856 const Tp f0
= data012
[i
].f0
;
857 const Tp diff
= f
- f0
;
858 if (std::abs(diff
) > max_abs_diff
)
859 max_abs_diff
= std::abs(diff
);
860 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
862 const Tp frac
= diff
/ f0
;
863 if (std::abs(frac
) > max_abs_frac
)
864 max_abs_frac
= std::abs(frac
);
867 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
870 // Test data for a=0.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
871 testcase_hyperg
<double> data013
[] = {
872 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
873 6.0000000000000000, -0.90000000000000002 },
874 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
875 6.0000000000000000, -0.80000000000000004 },
876 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
877 6.0000000000000000, -0.69999999999999996 },
878 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
879 6.0000000000000000, -0.59999999999999998 },
880 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
881 6.0000000000000000, -0.50000000000000000 },
882 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
883 6.0000000000000000, -0.40000000000000002 },
884 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
885 6.0000000000000000, -0.30000000000000004 },
886 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
887 6.0000000000000000, -0.19999999999999996 },
888 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
889 6.0000000000000000, -0.099999999999999978 },
890 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
891 6.0000000000000000, 0.0000000000000000 },
892 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
893 6.0000000000000000, 0.10000000000000009 },
894 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
895 6.0000000000000000, 0.19999999999999996 },
896 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
897 6.0000000000000000, 0.30000000000000004 },
898 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
899 6.0000000000000000, 0.39999999999999991 },
900 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
901 6.0000000000000000, 0.50000000000000000 },
902 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
903 6.0000000000000000, 0.60000000000000009 },
904 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
905 6.0000000000000000, 0.69999999999999996 },
906 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
907 6.0000000000000000, 0.80000000000000004 },
908 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
909 6.0000000000000000, 0.89999999999999991 },
912 // Test function for a=0.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
913 template <typename Tp
>
916 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
917 Tp max_abs_diff
= -Tp(1);
918 Tp max_abs_frac
= -Tp(1);
919 unsigned int num_datum
= sizeof(data013
)
920 / sizeof(testcase_hyperg
<double>);
921 for (unsigned int i
= 0; i
< num_datum
; ++i
)
923 const Tp f
= std::tr1::hyperg(Tp(data013
[i
].a
), Tp(data013
[i
].b
),
924 Tp(data013
[i
].c
), Tp(data013
[i
].x
));
925 const Tp f0
= data013
[i
].f0
;
926 const Tp diff
= f
- f0
;
927 if (std::abs(diff
) > max_abs_diff
)
928 max_abs_diff
= std::abs(diff
);
929 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
931 const Tp frac
= diff
/ f0
;
932 if (std::abs(frac
) > max_abs_frac
)
933 max_abs_frac
= std::abs(frac
);
936 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
939 // Test data for a=0.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
940 testcase_hyperg
<double> data014
[] = {
941 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
942 8.0000000000000000, -0.90000000000000002 },
943 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
944 8.0000000000000000, -0.80000000000000004 },
945 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
946 8.0000000000000000, -0.69999999999999996 },
947 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
948 8.0000000000000000, -0.59999999999999998 },
949 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
950 8.0000000000000000, -0.50000000000000000 },
951 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
952 8.0000000000000000, -0.40000000000000002 },
953 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
954 8.0000000000000000, -0.30000000000000004 },
955 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
956 8.0000000000000000, -0.19999999999999996 },
957 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
958 8.0000000000000000, -0.099999999999999978 },
959 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
960 8.0000000000000000, 0.0000000000000000 },
961 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
962 8.0000000000000000, 0.10000000000000009 },
963 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
964 8.0000000000000000, 0.19999999999999996 },
965 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
966 8.0000000000000000, 0.30000000000000004 },
967 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
968 8.0000000000000000, 0.39999999999999991 },
969 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
970 8.0000000000000000, 0.50000000000000000 },
971 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
972 8.0000000000000000, 0.60000000000000009 },
973 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
974 8.0000000000000000, 0.69999999999999996 },
975 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
976 8.0000000000000000, 0.80000000000000004 },
977 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
978 8.0000000000000000, 0.89999999999999991 },
981 // Test function for a=0.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
982 template <typename Tp
>
985 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
986 Tp max_abs_diff
= -Tp(1);
987 Tp max_abs_frac
= -Tp(1);
988 unsigned int num_datum
= sizeof(data014
)
989 / sizeof(testcase_hyperg
<double>);
990 for (unsigned int i
= 0; i
< num_datum
; ++i
)
992 const Tp f
= std::tr1::hyperg(Tp(data014
[i
].a
), Tp(data014
[i
].b
),
993 Tp(data014
[i
].c
), Tp(data014
[i
].x
));
994 const Tp f0
= data014
[i
].f0
;
995 const Tp diff
= f
- f0
;
996 if (std::abs(diff
) > max_abs_diff
)
997 max_abs_diff
= std::abs(diff
);
998 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1000 const Tp frac
= diff
/ f0
;
1001 if (std::abs(frac
) > max_abs_frac
)
1002 max_abs_frac
= std::abs(frac
);
1005 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1008 // Test data for a=0.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
1009 testcase_hyperg
<double> data015
[] = {
1010 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1011 10.000000000000000, -0.90000000000000002 },
1012 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1013 10.000000000000000, -0.80000000000000004 },
1014 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1015 10.000000000000000, -0.69999999999999996 },
1016 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1017 10.000000000000000, -0.59999999999999998 },
1018 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1019 10.000000000000000, -0.50000000000000000 },
1020 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1021 10.000000000000000, -0.40000000000000002 },
1022 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1023 10.000000000000000, -0.30000000000000004 },
1024 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1025 10.000000000000000, -0.19999999999999996 },
1026 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1027 10.000000000000000, -0.099999999999999978 },
1028 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1029 10.000000000000000, 0.0000000000000000 },
1030 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1031 10.000000000000000, 0.10000000000000009 },
1032 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1033 10.000000000000000, 0.19999999999999996 },
1034 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1035 10.000000000000000, 0.30000000000000004 },
1036 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1037 10.000000000000000, 0.39999999999999991 },
1038 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1039 10.000000000000000, 0.50000000000000000 },
1040 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1041 10.000000000000000, 0.60000000000000009 },
1042 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1043 10.000000000000000, 0.69999999999999996 },
1044 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1045 10.000000000000000, 0.80000000000000004 },
1046 { 1.0000000000000000, 0.0000000000000000, 1.0000000000000000,
1047 10.000000000000000, 0.89999999999999991 },
1050 // Test function for a=0.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
1051 template <typename Tp
>
1054 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1055 Tp max_abs_diff
= -Tp(1);
1056 Tp max_abs_frac
= -Tp(1);
1057 unsigned int num_datum
= sizeof(data015
)
1058 / sizeof(testcase_hyperg
<double>);
1059 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1061 const Tp f
= std::tr1::hyperg(Tp(data015
[i
].a
), Tp(data015
[i
].b
),
1062 Tp(data015
[i
].c
), Tp(data015
[i
].x
));
1063 const Tp f0
= data015
[i
].f0
;
1064 const Tp diff
= f
- f0
;
1065 if (std::abs(diff
) > max_abs_diff
)
1066 max_abs_diff
= std::abs(diff
);
1067 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1069 const Tp frac
= diff
/ f0
;
1070 if (std::abs(frac
) > max_abs_frac
)
1071 max_abs_frac
= std::abs(frac
);
1074 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1077 // Test data for a=0.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
1078 testcase_hyperg
<double> data016
[] = {
1079 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1080 2.0000000000000000, -0.90000000000000002 },
1081 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1082 2.0000000000000000, -0.80000000000000004 },
1083 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1084 2.0000000000000000, -0.69999999999999996 },
1085 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1086 2.0000000000000000, -0.59999999999999998 },
1087 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1088 2.0000000000000000, -0.50000000000000000 },
1089 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1090 2.0000000000000000, -0.40000000000000002 },
1091 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1092 2.0000000000000000, -0.30000000000000004 },
1093 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1094 2.0000000000000000, -0.19999999999999996 },
1095 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1096 2.0000000000000000, -0.099999999999999978 },
1097 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1098 2.0000000000000000, 0.0000000000000000 },
1099 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1100 2.0000000000000000, 0.10000000000000009 },
1101 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1102 2.0000000000000000, 0.19999999999999996 },
1103 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1104 2.0000000000000000, 0.30000000000000004 },
1105 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1106 2.0000000000000000, 0.39999999999999991 },
1107 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1108 2.0000000000000000, 0.50000000000000000 },
1109 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1110 2.0000000000000000, 0.60000000000000009 },
1111 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1112 2.0000000000000000, 0.69999999999999996 },
1113 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1114 2.0000000000000000, 0.80000000000000004 },
1115 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1116 2.0000000000000000, 0.89999999999999991 },
1119 // Test function for a=0.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
1120 template <typename Tp
>
1123 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1124 Tp max_abs_diff
= -Tp(1);
1125 Tp max_abs_frac
= -Tp(1);
1126 unsigned int num_datum
= sizeof(data016
)
1127 / sizeof(testcase_hyperg
<double>);
1128 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1130 const Tp f
= std::tr1::hyperg(Tp(data016
[i
].a
), Tp(data016
[i
].b
),
1131 Tp(data016
[i
].c
), Tp(data016
[i
].x
));
1132 const Tp f0
= data016
[i
].f0
;
1133 const Tp diff
= f
- f0
;
1134 if (std::abs(diff
) > max_abs_diff
)
1135 max_abs_diff
= std::abs(diff
);
1136 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1138 const Tp frac
= diff
/ f0
;
1139 if (std::abs(frac
) > max_abs_frac
)
1140 max_abs_frac
= std::abs(frac
);
1143 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1146 // Test data for a=0.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
1147 testcase_hyperg
<double> data017
[] = {
1148 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1149 4.0000000000000000, -0.90000000000000002 },
1150 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1151 4.0000000000000000, -0.80000000000000004 },
1152 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1153 4.0000000000000000, -0.69999999999999996 },
1154 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1155 4.0000000000000000, -0.59999999999999998 },
1156 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1157 4.0000000000000000, -0.50000000000000000 },
1158 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1159 4.0000000000000000, -0.40000000000000002 },
1160 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1161 4.0000000000000000, -0.30000000000000004 },
1162 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1163 4.0000000000000000, -0.19999999999999996 },
1164 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1165 4.0000000000000000, -0.099999999999999978 },
1166 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1167 4.0000000000000000, 0.0000000000000000 },
1168 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1169 4.0000000000000000, 0.10000000000000009 },
1170 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1171 4.0000000000000000, 0.19999999999999996 },
1172 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1173 4.0000000000000000, 0.30000000000000004 },
1174 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1175 4.0000000000000000, 0.39999999999999991 },
1176 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1177 4.0000000000000000, 0.50000000000000000 },
1178 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1179 4.0000000000000000, 0.60000000000000009 },
1180 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1181 4.0000000000000000, 0.69999999999999996 },
1182 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1183 4.0000000000000000, 0.80000000000000004 },
1184 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1185 4.0000000000000000, 0.89999999999999991 },
1188 // Test function for a=0.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
1189 template <typename Tp
>
1192 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1193 Tp max_abs_diff
= -Tp(1);
1194 Tp max_abs_frac
= -Tp(1);
1195 unsigned int num_datum
= sizeof(data017
)
1196 / sizeof(testcase_hyperg
<double>);
1197 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1199 const Tp f
= std::tr1::hyperg(Tp(data017
[i
].a
), Tp(data017
[i
].b
),
1200 Tp(data017
[i
].c
), Tp(data017
[i
].x
));
1201 const Tp f0
= data017
[i
].f0
;
1202 const Tp diff
= f
- f0
;
1203 if (std::abs(diff
) > max_abs_diff
)
1204 max_abs_diff
= std::abs(diff
);
1205 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1207 const Tp frac
= diff
/ f0
;
1208 if (std::abs(frac
) > max_abs_frac
)
1209 max_abs_frac
= std::abs(frac
);
1212 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1215 // Test data for a=0.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
1216 testcase_hyperg
<double> data018
[] = {
1217 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1218 6.0000000000000000, -0.90000000000000002 },
1219 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1220 6.0000000000000000, -0.80000000000000004 },
1221 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1222 6.0000000000000000, -0.69999999999999996 },
1223 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1224 6.0000000000000000, -0.59999999999999998 },
1225 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1226 6.0000000000000000, -0.50000000000000000 },
1227 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1228 6.0000000000000000, -0.40000000000000002 },
1229 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1230 6.0000000000000000, -0.30000000000000004 },
1231 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1232 6.0000000000000000, -0.19999999999999996 },
1233 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1234 6.0000000000000000, -0.099999999999999978 },
1235 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1236 6.0000000000000000, 0.0000000000000000 },
1237 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1238 6.0000000000000000, 0.10000000000000009 },
1239 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1240 6.0000000000000000, 0.19999999999999996 },
1241 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1242 6.0000000000000000, 0.30000000000000004 },
1243 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1244 6.0000000000000000, 0.39999999999999991 },
1245 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1246 6.0000000000000000, 0.50000000000000000 },
1247 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1248 6.0000000000000000, 0.60000000000000009 },
1249 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1250 6.0000000000000000, 0.69999999999999996 },
1251 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1252 6.0000000000000000, 0.80000000000000004 },
1253 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1254 6.0000000000000000, 0.89999999999999991 },
1257 // Test function for a=0.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
1258 template <typename Tp
>
1261 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1262 Tp max_abs_diff
= -Tp(1);
1263 Tp max_abs_frac
= -Tp(1);
1264 unsigned int num_datum
= sizeof(data018
)
1265 / sizeof(testcase_hyperg
<double>);
1266 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1268 const Tp f
= std::tr1::hyperg(Tp(data018
[i
].a
), Tp(data018
[i
].b
),
1269 Tp(data018
[i
].c
), Tp(data018
[i
].x
));
1270 const Tp f0
= data018
[i
].f0
;
1271 const Tp diff
= f
- f0
;
1272 if (std::abs(diff
) > max_abs_diff
)
1273 max_abs_diff
= std::abs(diff
);
1274 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1276 const Tp frac
= diff
/ f0
;
1277 if (std::abs(frac
) > max_abs_frac
)
1278 max_abs_frac
= std::abs(frac
);
1281 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1284 // Test data for a=0.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
1285 testcase_hyperg
<double> data019
[] = {
1286 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1287 8.0000000000000000, -0.90000000000000002 },
1288 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1289 8.0000000000000000, -0.80000000000000004 },
1290 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1291 8.0000000000000000, -0.69999999999999996 },
1292 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1293 8.0000000000000000, -0.59999999999999998 },
1294 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1295 8.0000000000000000, -0.50000000000000000 },
1296 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1297 8.0000000000000000, -0.40000000000000002 },
1298 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1299 8.0000000000000000, -0.30000000000000004 },
1300 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1301 8.0000000000000000, -0.19999999999999996 },
1302 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1303 8.0000000000000000, -0.099999999999999978 },
1304 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1305 8.0000000000000000, 0.0000000000000000 },
1306 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1307 8.0000000000000000, 0.10000000000000009 },
1308 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1309 8.0000000000000000, 0.19999999999999996 },
1310 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1311 8.0000000000000000, 0.30000000000000004 },
1312 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1313 8.0000000000000000, 0.39999999999999991 },
1314 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1315 8.0000000000000000, 0.50000000000000000 },
1316 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1317 8.0000000000000000, 0.60000000000000009 },
1318 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1319 8.0000000000000000, 0.69999999999999996 },
1320 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1321 8.0000000000000000, 0.80000000000000004 },
1322 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1323 8.0000000000000000, 0.89999999999999991 },
1326 // Test function for a=0.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
1327 template <typename Tp
>
1330 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1331 Tp max_abs_diff
= -Tp(1);
1332 Tp max_abs_frac
= -Tp(1);
1333 unsigned int num_datum
= sizeof(data019
)
1334 / sizeof(testcase_hyperg
<double>);
1335 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1337 const Tp f
= std::tr1::hyperg(Tp(data019
[i
].a
), Tp(data019
[i
].b
),
1338 Tp(data019
[i
].c
), Tp(data019
[i
].x
));
1339 const Tp f0
= data019
[i
].f0
;
1340 const Tp diff
= f
- f0
;
1341 if (std::abs(diff
) > max_abs_diff
)
1342 max_abs_diff
= std::abs(diff
);
1343 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1345 const Tp frac
= diff
/ f0
;
1346 if (std::abs(frac
) > max_abs_frac
)
1347 max_abs_frac
= std::abs(frac
);
1350 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1353 // Test data for a=0.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
1354 testcase_hyperg
<double> data020
[] = {
1355 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1356 10.000000000000000, -0.90000000000000002 },
1357 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1358 10.000000000000000, -0.80000000000000004 },
1359 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1360 10.000000000000000, -0.69999999999999996 },
1361 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1362 10.000000000000000, -0.59999999999999998 },
1363 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1364 10.000000000000000, -0.50000000000000000 },
1365 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1366 10.000000000000000, -0.40000000000000002 },
1367 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1368 10.000000000000000, -0.30000000000000004 },
1369 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1370 10.000000000000000, -0.19999999999999996 },
1371 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1372 10.000000000000000, -0.099999999999999978 },
1373 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1374 10.000000000000000, 0.0000000000000000 },
1375 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1376 10.000000000000000, 0.10000000000000009 },
1377 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1378 10.000000000000000, 0.19999999999999996 },
1379 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1380 10.000000000000000, 0.30000000000000004 },
1381 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1382 10.000000000000000, 0.39999999999999991 },
1383 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1384 10.000000000000000, 0.50000000000000000 },
1385 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1386 10.000000000000000, 0.60000000000000009 },
1387 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1388 10.000000000000000, 0.69999999999999996 },
1389 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1390 10.000000000000000, 0.80000000000000004 },
1391 { 1.0000000000000000, 0.0000000000000000, 2.0000000000000000,
1392 10.000000000000000, 0.89999999999999991 },
1395 // Test function for a=0.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
1396 template <typename Tp
>
1399 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1400 Tp max_abs_diff
= -Tp(1);
1401 Tp max_abs_frac
= -Tp(1);
1402 unsigned int num_datum
= sizeof(data020
)
1403 / sizeof(testcase_hyperg
<double>);
1404 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1406 const Tp f
= std::tr1::hyperg(Tp(data020
[i
].a
), Tp(data020
[i
].b
),
1407 Tp(data020
[i
].c
), Tp(data020
[i
].x
));
1408 const Tp f0
= data020
[i
].f0
;
1409 const Tp diff
= f
- f0
;
1410 if (std::abs(diff
) > max_abs_diff
)
1411 max_abs_diff
= std::abs(diff
);
1412 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1414 const Tp frac
= diff
/ f0
;
1415 if (std::abs(frac
) > max_abs_frac
)
1416 max_abs_frac
= std::abs(frac
);
1419 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1422 // Test data for a=0.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
1423 testcase_hyperg
<double> data021
[] = {
1424 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1425 2.0000000000000000, -0.90000000000000002 },
1426 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1427 2.0000000000000000, -0.80000000000000004 },
1428 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1429 2.0000000000000000, -0.69999999999999996 },
1430 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1431 2.0000000000000000, -0.59999999999999998 },
1432 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1433 2.0000000000000000, -0.50000000000000000 },
1434 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1435 2.0000000000000000, -0.40000000000000002 },
1436 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1437 2.0000000000000000, -0.30000000000000004 },
1438 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1439 2.0000000000000000, -0.19999999999999996 },
1440 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1441 2.0000000000000000, -0.099999999999999978 },
1442 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1443 2.0000000000000000, 0.0000000000000000 },
1444 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1445 2.0000000000000000, 0.10000000000000009 },
1446 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1447 2.0000000000000000, 0.19999999999999996 },
1448 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1449 2.0000000000000000, 0.30000000000000004 },
1450 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1451 2.0000000000000000, 0.39999999999999991 },
1452 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1453 2.0000000000000000, 0.50000000000000000 },
1454 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1455 2.0000000000000000, 0.60000000000000009 },
1456 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1457 2.0000000000000000, 0.69999999999999996 },
1458 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1459 2.0000000000000000, 0.80000000000000004 },
1460 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1461 2.0000000000000000, 0.89999999999999991 },
1464 // Test function for a=0.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
1465 template <typename Tp
>
1468 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1469 Tp max_abs_diff
= -Tp(1);
1470 Tp max_abs_frac
= -Tp(1);
1471 unsigned int num_datum
= sizeof(data021
)
1472 / sizeof(testcase_hyperg
<double>);
1473 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1475 const Tp f
= std::tr1::hyperg(Tp(data021
[i
].a
), Tp(data021
[i
].b
),
1476 Tp(data021
[i
].c
), Tp(data021
[i
].x
));
1477 const Tp f0
= data021
[i
].f0
;
1478 const Tp diff
= f
- f0
;
1479 if (std::abs(diff
) > max_abs_diff
)
1480 max_abs_diff
= std::abs(diff
);
1481 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1483 const Tp frac
= diff
/ f0
;
1484 if (std::abs(frac
) > max_abs_frac
)
1485 max_abs_frac
= std::abs(frac
);
1488 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1491 // Test data for a=0.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
1492 testcase_hyperg
<double> data022
[] = {
1493 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1494 4.0000000000000000, -0.90000000000000002 },
1495 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1496 4.0000000000000000, -0.80000000000000004 },
1497 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1498 4.0000000000000000, -0.69999999999999996 },
1499 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1500 4.0000000000000000, -0.59999999999999998 },
1501 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1502 4.0000000000000000, -0.50000000000000000 },
1503 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1504 4.0000000000000000, -0.40000000000000002 },
1505 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1506 4.0000000000000000, -0.30000000000000004 },
1507 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1508 4.0000000000000000, -0.19999999999999996 },
1509 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1510 4.0000000000000000, -0.099999999999999978 },
1511 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1512 4.0000000000000000, 0.0000000000000000 },
1513 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1514 4.0000000000000000, 0.10000000000000009 },
1515 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1516 4.0000000000000000, 0.19999999999999996 },
1517 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1518 4.0000000000000000, 0.30000000000000004 },
1519 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1520 4.0000000000000000, 0.39999999999999991 },
1521 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1522 4.0000000000000000, 0.50000000000000000 },
1523 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1524 4.0000000000000000, 0.60000000000000009 },
1525 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1526 4.0000000000000000, 0.69999999999999996 },
1527 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1528 4.0000000000000000, 0.80000000000000004 },
1529 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1530 4.0000000000000000, 0.89999999999999991 },
1533 // Test function for a=0.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
1534 template <typename Tp
>
1537 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1538 Tp max_abs_diff
= -Tp(1);
1539 Tp max_abs_frac
= -Tp(1);
1540 unsigned int num_datum
= sizeof(data022
)
1541 / sizeof(testcase_hyperg
<double>);
1542 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1544 const Tp f
= std::tr1::hyperg(Tp(data022
[i
].a
), Tp(data022
[i
].b
),
1545 Tp(data022
[i
].c
), Tp(data022
[i
].x
));
1546 const Tp f0
= data022
[i
].f0
;
1547 const Tp diff
= f
- f0
;
1548 if (std::abs(diff
) > max_abs_diff
)
1549 max_abs_diff
= std::abs(diff
);
1550 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1552 const Tp frac
= diff
/ f0
;
1553 if (std::abs(frac
) > max_abs_frac
)
1554 max_abs_frac
= std::abs(frac
);
1557 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1560 // Test data for a=0.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
1561 testcase_hyperg
<double> data023
[] = {
1562 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1563 6.0000000000000000, -0.90000000000000002 },
1564 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1565 6.0000000000000000, -0.80000000000000004 },
1566 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1567 6.0000000000000000, -0.69999999999999996 },
1568 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1569 6.0000000000000000, -0.59999999999999998 },
1570 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1571 6.0000000000000000, -0.50000000000000000 },
1572 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1573 6.0000000000000000, -0.40000000000000002 },
1574 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1575 6.0000000000000000, -0.30000000000000004 },
1576 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1577 6.0000000000000000, -0.19999999999999996 },
1578 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1579 6.0000000000000000, -0.099999999999999978 },
1580 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1581 6.0000000000000000, 0.0000000000000000 },
1582 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1583 6.0000000000000000, 0.10000000000000009 },
1584 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1585 6.0000000000000000, 0.19999999999999996 },
1586 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1587 6.0000000000000000, 0.30000000000000004 },
1588 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1589 6.0000000000000000, 0.39999999999999991 },
1590 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1591 6.0000000000000000, 0.50000000000000000 },
1592 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1593 6.0000000000000000, 0.60000000000000009 },
1594 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1595 6.0000000000000000, 0.69999999999999996 },
1596 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1597 6.0000000000000000, 0.80000000000000004 },
1598 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1599 6.0000000000000000, 0.89999999999999991 },
1602 // Test function for a=0.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
1603 template <typename Tp
>
1606 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1607 Tp max_abs_diff
= -Tp(1);
1608 Tp max_abs_frac
= -Tp(1);
1609 unsigned int num_datum
= sizeof(data023
)
1610 / sizeof(testcase_hyperg
<double>);
1611 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1613 const Tp f
= std::tr1::hyperg(Tp(data023
[i
].a
), Tp(data023
[i
].b
),
1614 Tp(data023
[i
].c
), Tp(data023
[i
].x
));
1615 const Tp f0
= data023
[i
].f0
;
1616 const Tp diff
= f
- f0
;
1617 if (std::abs(diff
) > max_abs_diff
)
1618 max_abs_diff
= std::abs(diff
);
1619 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1621 const Tp frac
= diff
/ f0
;
1622 if (std::abs(frac
) > max_abs_frac
)
1623 max_abs_frac
= std::abs(frac
);
1626 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1629 // Test data for a=0.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
1630 testcase_hyperg
<double> data024
[] = {
1631 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1632 8.0000000000000000, -0.90000000000000002 },
1633 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1634 8.0000000000000000, -0.80000000000000004 },
1635 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1636 8.0000000000000000, -0.69999999999999996 },
1637 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1638 8.0000000000000000, -0.59999999999999998 },
1639 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1640 8.0000000000000000, -0.50000000000000000 },
1641 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1642 8.0000000000000000, -0.40000000000000002 },
1643 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1644 8.0000000000000000, -0.30000000000000004 },
1645 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1646 8.0000000000000000, -0.19999999999999996 },
1647 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1648 8.0000000000000000, -0.099999999999999978 },
1649 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1650 8.0000000000000000, 0.0000000000000000 },
1651 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1652 8.0000000000000000, 0.10000000000000009 },
1653 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1654 8.0000000000000000, 0.19999999999999996 },
1655 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1656 8.0000000000000000, 0.30000000000000004 },
1657 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1658 8.0000000000000000, 0.39999999999999991 },
1659 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1660 8.0000000000000000, 0.50000000000000000 },
1661 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1662 8.0000000000000000, 0.60000000000000009 },
1663 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1664 8.0000000000000000, 0.69999999999999996 },
1665 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1666 8.0000000000000000, 0.80000000000000004 },
1667 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1668 8.0000000000000000, 0.89999999999999991 },
1671 // Test function for a=0.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
1672 template <typename Tp
>
1675 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1676 Tp max_abs_diff
= -Tp(1);
1677 Tp max_abs_frac
= -Tp(1);
1678 unsigned int num_datum
= sizeof(data024
)
1679 / sizeof(testcase_hyperg
<double>);
1680 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1682 const Tp f
= std::tr1::hyperg(Tp(data024
[i
].a
), Tp(data024
[i
].b
),
1683 Tp(data024
[i
].c
), Tp(data024
[i
].x
));
1684 const Tp f0
= data024
[i
].f0
;
1685 const Tp diff
= f
- f0
;
1686 if (std::abs(diff
) > max_abs_diff
)
1687 max_abs_diff
= std::abs(diff
);
1688 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1690 const Tp frac
= diff
/ f0
;
1691 if (std::abs(frac
) > max_abs_frac
)
1692 max_abs_frac
= std::abs(frac
);
1695 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1698 // Test data for a=0.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
1699 testcase_hyperg
<double> data025
[] = {
1700 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1701 10.000000000000000, -0.90000000000000002 },
1702 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1703 10.000000000000000, -0.80000000000000004 },
1704 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1705 10.000000000000000, -0.69999999999999996 },
1706 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1707 10.000000000000000, -0.59999999999999998 },
1708 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1709 10.000000000000000, -0.50000000000000000 },
1710 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1711 10.000000000000000, -0.40000000000000002 },
1712 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1713 10.000000000000000, -0.30000000000000004 },
1714 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1715 10.000000000000000, -0.19999999999999996 },
1716 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1717 10.000000000000000, -0.099999999999999978 },
1718 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1719 10.000000000000000, 0.0000000000000000 },
1720 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1721 10.000000000000000, 0.10000000000000009 },
1722 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1723 10.000000000000000, 0.19999999999999996 },
1724 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1725 10.000000000000000, 0.30000000000000004 },
1726 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1727 10.000000000000000, 0.39999999999999991 },
1728 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1729 10.000000000000000, 0.50000000000000000 },
1730 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1731 10.000000000000000, 0.60000000000000009 },
1732 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1733 10.000000000000000, 0.69999999999999996 },
1734 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1735 10.000000000000000, 0.80000000000000004 },
1736 { 1.0000000000000000, 0.0000000000000000, 5.0000000000000000,
1737 10.000000000000000, 0.89999999999999991 },
1740 // Test function for a=0.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
1741 template <typename Tp
>
1744 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1745 Tp max_abs_diff
= -Tp(1);
1746 Tp max_abs_frac
= -Tp(1);
1747 unsigned int num_datum
= sizeof(data025
)
1748 / sizeof(testcase_hyperg
<double>);
1749 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1751 const Tp f
= std::tr1::hyperg(Tp(data025
[i
].a
), Tp(data025
[i
].b
),
1752 Tp(data025
[i
].c
), Tp(data025
[i
].x
));
1753 const Tp f0
= data025
[i
].f0
;
1754 const Tp diff
= f
- f0
;
1755 if (std::abs(diff
) > max_abs_diff
)
1756 max_abs_diff
= std::abs(diff
);
1757 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1759 const Tp frac
= diff
/ f0
;
1760 if (std::abs(frac
) > max_abs_frac
)
1761 max_abs_frac
= std::abs(frac
);
1764 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1767 // Test data for a=0.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
1768 testcase_hyperg
<double> data026
[] = {
1769 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1770 2.0000000000000000, -0.90000000000000002 },
1771 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1772 2.0000000000000000, -0.80000000000000004 },
1773 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1774 2.0000000000000000, -0.69999999999999996 },
1775 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1776 2.0000000000000000, -0.59999999999999998 },
1777 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1778 2.0000000000000000, -0.50000000000000000 },
1779 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1780 2.0000000000000000, -0.40000000000000002 },
1781 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1782 2.0000000000000000, -0.30000000000000004 },
1783 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1784 2.0000000000000000, -0.19999999999999996 },
1785 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1786 2.0000000000000000, -0.099999999999999978 },
1787 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1788 2.0000000000000000, 0.0000000000000000 },
1789 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1790 2.0000000000000000, 0.10000000000000009 },
1791 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1792 2.0000000000000000, 0.19999999999999996 },
1793 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1794 2.0000000000000000, 0.30000000000000004 },
1795 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1796 2.0000000000000000, 0.39999999999999991 },
1797 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1798 2.0000000000000000, 0.50000000000000000 },
1799 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1800 2.0000000000000000, 0.60000000000000009 },
1801 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1802 2.0000000000000000, 0.69999999999999996 },
1803 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1804 2.0000000000000000, 0.80000000000000004 },
1805 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1806 2.0000000000000000, 0.89999999999999991 },
1809 // Test function for a=0.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
1810 template <typename Tp
>
1813 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1814 Tp max_abs_diff
= -Tp(1);
1815 Tp max_abs_frac
= -Tp(1);
1816 unsigned int num_datum
= sizeof(data026
)
1817 / sizeof(testcase_hyperg
<double>);
1818 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1820 const Tp f
= std::tr1::hyperg(Tp(data026
[i
].a
), Tp(data026
[i
].b
),
1821 Tp(data026
[i
].c
), Tp(data026
[i
].x
));
1822 const Tp f0
= data026
[i
].f0
;
1823 const Tp diff
= f
- f0
;
1824 if (std::abs(diff
) > max_abs_diff
)
1825 max_abs_diff
= std::abs(diff
);
1826 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1828 const Tp frac
= diff
/ f0
;
1829 if (std::abs(frac
) > max_abs_frac
)
1830 max_abs_frac
= std::abs(frac
);
1833 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1836 // Test data for a=0.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
1837 testcase_hyperg
<double> data027
[] = {
1838 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1839 4.0000000000000000, -0.90000000000000002 },
1840 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1841 4.0000000000000000, -0.80000000000000004 },
1842 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1843 4.0000000000000000, -0.69999999999999996 },
1844 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1845 4.0000000000000000, -0.59999999999999998 },
1846 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1847 4.0000000000000000, -0.50000000000000000 },
1848 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1849 4.0000000000000000, -0.40000000000000002 },
1850 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1851 4.0000000000000000, -0.30000000000000004 },
1852 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1853 4.0000000000000000, -0.19999999999999996 },
1854 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1855 4.0000000000000000, -0.099999999999999978 },
1856 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1857 4.0000000000000000, 0.0000000000000000 },
1858 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1859 4.0000000000000000, 0.10000000000000009 },
1860 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1861 4.0000000000000000, 0.19999999999999996 },
1862 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1863 4.0000000000000000, 0.30000000000000004 },
1864 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1865 4.0000000000000000, 0.39999999999999991 },
1866 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1867 4.0000000000000000, 0.50000000000000000 },
1868 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1869 4.0000000000000000, 0.60000000000000009 },
1870 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1871 4.0000000000000000, 0.69999999999999996 },
1872 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1873 4.0000000000000000, 0.80000000000000004 },
1874 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1875 4.0000000000000000, 0.89999999999999991 },
1878 // Test function for a=0.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
1879 template <typename Tp
>
1882 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1883 Tp max_abs_diff
= -Tp(1);
1884 Tp max_abs_frac
= -Tp(1);
1885 unsigned int num_datum
= sizeof(data027
)
1886 / sizeof(testcase_hyperg
<double>);
1887 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1889 const Tp f
= std::tr1::hyperg(Tp(data027
[i
].a
), Tp(data027
[i
].b
),
1890 Tp(data027
[i
].c
), Tp(data027
[i
].x
));
1891 const Tp f0
= data027
[i
].f0
;
1892 const Tp diff
= f
- f0
;
1893 if (std::abs(diff
) > max_abs_diff
)
1894 max_abs_diff
= std::abs(diff
);
1895 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1897 const Tp frac
= diff
/ f0
;
1898 if (std::abs(frac
) > max_abs_frac
)
1899 max_abs_frac
= std::abs(frac
);
1902 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1905 // Test data for a=0.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
1906 testcase_hyperg
<double> data028
[] = {
1907 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1908 6.0000000000000000, -0.90000000000000002 },
1909 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1910 6.0000000000000000, -0.80000000000000004 },
1911 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1912 6.0000000000000000, -0.69999999999999996 },
1913 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1914 6.0000000000000000, -0.59999999999999998 },
1915 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1916 6.0000000000000000, -0.50000000000000000 },
1917 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1918 6.0000000000000000, -0.40000000000000002 },
1919 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1920 6.0000000000000000, -0.30000000000000004 },
1921 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1922 6.0000000000000000, -0.19999999999999996 },
1923 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1924 6.0000000000000000, -0.099999999999999978 },
1925 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1926 6.0000000000000000, 0.0000000000000000 },
1927 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1928 6.0000000000000000, 0.10000000000000009 },
1929 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1930 6.0000000000000000, 0.19999999999999996 },
1931 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1932 6.0000000000000000, 0.30000000000000004 },
1933 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1934 6.0000000000000000, 0.39999999999999991 },
1935 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1936 6.0000000000000000, 0.50000000000000000 },
1937 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1938 6.0000000000000000, 0.60000000000000009 },
1939 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1940 6.0000000000000000, 0.69999999999999996 },
1941 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1942 6.0000000000000000, 0.80000000000000004 },
1943 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1944 6.0000000000000000, 0.89999999999999991 },
1947 // Test function for a=0.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
1948 template <typename Tp
>
1951 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
1952 Tp max_abs_diff
= -Tp(1);
1953 Tp max_abs_frac
= -Tp(1);
1954 unsigned int num_datum
= sizeof(data028
)
1955 / sizeof(testcase_hyperg
<double>);
1956 for (unsigned int i
= 0; i
< num_datum
; ++i
)
1958 const Tp f
= std::tr1::hyperg(Tp(data028
[i
].a
), Tp(data028
[i
].b
),
1959 Tp(data028
[i
].c
), Tp(data028
[i
].x
));
1960 const Tp f0
= data028
[i
].f0
;
1961 const Tp diff
= f
- f0
;
1962 if (std::abs(diff
) > max_abs_diff
)
1963 max_abs_diff
= std::abs(diff
);
1964 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
1966 const Tp frac
= diff
/ f0
;
1967 if (std::abs(frac
) > max_abs_frac
)
1968 max_abs_frac
= std::abs(frac
);
1971 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
1974 // Test data for a=0.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
1975 testcase_hyperg
<double> data029
[] = {
1976 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1977 8.0000000000000000, -0.90000000000000002 },
1978 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1979 8.0000000000000000, -0.80000000000000004 },
1980 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1981 8.0000000000000000, -0.69999999999999996 },
1982 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1983 8.0000000000000000, -0.59999999999999998 },
1984 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1985 8.0000000000000000, -0.50000000000000000 },
1986 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1987 8.0000000000000000, -0.40000000000000002 },
1988 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1989 8.0000000000000000, -0.30000000000000004 },
1990 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1991 8.0000000000000000, -0.19999999999999996 },
1992 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1993 8.0000000000000000, -0.099999999999999978 },
1994 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1995 8.0000000000000000, 0.0000000000000000 },
1996 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1997 8.0000000000000000, 0.10000000000000009 },
1998 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
1999 8.0000000000000000, 0.19999999999999996 },
2000 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2001 8.0000000000000000, 0.30000000000000004 },
2002 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2003 8.0000000000000000, 0.39999999999999991 },
2004 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2005 8.0000000000000000, 0.50000000000000000 },
2006 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2007 8.0000000000000000, 0.60000000000000009 },
2008 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2009 8.0000000000000000, 0.69999999999999996 },
2010 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2011 8.0000000000000000, 0.80000000000000004 },
2012 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2013 8.0000000000000000, 0.89999999999999991 },
2016 // Test function for a=0.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
2017 template <typename Tp
>
2020 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2021 Tp max_abs_diff
= -Tp(1);
2022 Tp max_abs_frac
= -Tp(1);
2023 unsigned int num_datum
= sizeof(data029
)
2024 / sizeof(testcase_hyperg
<double>);
2025 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2027 const Tp f
= std::tr1::hyperg(Tp(data029
[i
].a
), Tp(data029
[i
].b
),
2028 Tp(data029
[i
].c
), Tp(data029
[i
].x
));
2029 const Tp f0
= data029
[i
].f0
;
2030 const Tp diff
= f
- f0
;
2031 if (std::abs(diff
) > max_abs_diff
)
2032 max_abs_diff
= std::abs(diff
);
2033 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2035 const Tp frac
= diff
/ f0
;
2036 if (std::abs(frac
) > max_abs_frac
)
2037 max_abs_frac
= std::abs(frac
);
2040 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2043 // Test data for a=0.0000000000000000, b=10.000000000000000, c=10.000000000000000.
2044 testcase_hyperg
<double> data030
[] = {
2045 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2046 10.000000000000000, -0.90000000000000002 },
2047 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2048 10.000000000000000, -0.80000000000000004 },
2049 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2050 10.000000000000000, -0.69999999999999996 },
2051 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2052 10.000000000000000, -0.59999999999999998 },
2053 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2054 10.000000000000000, -0.50000000000000000 },
2055 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2056 10.000000000000000, -0.40000000000000002 },
2057 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2058 10.000000000000000, -0.30000000000000004 },
2059 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2060 10.000000000000000, -0.19999999999999996 },
2061 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2062 10.000000000000000, -0.099999999999999978 },
2063 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2064 10.000000000000000, 0.0000000000000000 },
2065 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2066 10.000000000000000, 0.10000000000000009 },
2067 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2068 10.000000000000000, 0.19999999999999996 },
2069 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2070 10.000000000000000, 0.30000000000000004 },
2071 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2072 10.000000000000000, 0.39999999999999991 },
2073 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2074 10.000000000000000, 0.50000000000000000 },
2075 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2076 10.000000000000000, 0.60000000000000009 },
2077 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2078 10.000000000000000, 0.69999999999999996 },
2079 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2080 10.000000000000000, 0.80000000000000004 },
2081 { 1.0000000000000000, 0.0000000000000000, 10.000000000000000,
2082 10.000000000000000, 0.89999999999999991 },
2085 // Test function for a=0.0000000000000000, b=10.000000000000000, c=10.000000000000000.
2086 template <typename Tp
>
2089 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2090 Tp max_abs_diff
= -Tp(1);
2091 Tp max_abs_frac
= -Tp(1);
2092 unsigned int num_datum
= sizeof(data030
)
2093 / sizeof(testcase_hyperg
<double>);
2094 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2096 const Tp f
= std::tr1::hyperg(Tp(data030
[i
].a
), Tp(data030
[i
].b
),
2097 Tp(data030
[i
].c
), Tp(data030
[i
].x
));
2098 const Tp f0
= data030
[i
].f0
;
2099 const Tp diff
= f
- f0
;
2100 if (std::abs(diff
) > max_abs_diff
)
2101 max_abs_diff
= std::abs(diff
);
2102 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2104 const Tp frac
= diff
/ f0
;
2105 if (std::abs(frac
) > max_abs_frac
)
2106 max_abs_frac
= std::abs(frac
);
2109 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2112 // Test data for a=0.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
2113 testcase_hyperg
<double> data031
[] = {
2114 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2115 2.0000000000000000, -0.90000000000000002 },
2116 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2117 2.0000000000000000, -0.80000000000000004 },
2118 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2119 2.0000000000000000, -0.69999999999999996 },
2120 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2121 2.0000000000000000, -0.59999999999999998 },
2122 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2123 2.0000000000000000, -0.50000000000000000 },
2124 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2125 2.0000000000000000, -0.40000000000000002 },
2126 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2127 2.0000000000000000, -0.30000000000000004 },
2128 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2129 2.0000000000000000, -0.19999999999999996 },
2130 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2131 2.0000000000000000, -0.099999999999999978 },
2132 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2133 2.0000000000000000, 0.0000000000000000 },
2134 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2135 2.0000000000000000, 0.10000000000000009 },
2136 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2137 2.0000000000000000, 0.19999999999999996 },
2138 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2139 2.0000000000000000, 0.30000000000000004 },
2140 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2141 2.0000000000000000, 0.39999999999999991 },
2142 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2143 2.0000000000000000, 0.50000000000000000 },
2144 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2145 2.0000000000000000, 0.60000000000000009 },
2146 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2147 2.0000000000000000, 0.69999999999999996 },
2148 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2149 2.0000000000000000, 0.80000000000000004 },
2150 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2151 2.0000000000000000, 0.89999999999999991 },
2154 // Test function for a=0.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
2155 template <typename Tp
>
2158 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2159 Tp max_abs_diff
= -Tp(1);
2160 Tp max_abs_frac
= -Tp(1);
2161 unsigned int num_datum
= sizeof(data031
)
2162 / sizeof(testcase_hyperg
<double>);
2163 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2165 const Tp f
= std::tr1::hyperg(Tp(data031
[i
].a
), Tp(data031
[i
].b
),
2166 Tp(data031
[i
].c
), Tp(data031
[i
].x
));
2167 const Tp f0
= data031
[i
].f0
;
2168 const Tp diff
= f
- f0
;
2169 if (std::abs(diff
) > max_abs_diff
)
2170 max_abs_diff
= std::abs(diff
);
2171 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2173 const Tp frac
= diff
/ f0
;
2174 if (std::abs(frac
) > max_abs_frac
)
2175 max_abs_frac
= std::abs(frac
);
2178 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2181 // Test data for a=0.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
2182 testcase_hyperg
<double> data032
[] = {
2183 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2184 4.0000000000000000, -0.90000000000000002 },
2185 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2186 4.0000000000000000, -0.80000000000000004 },
2187 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2188 4.0000000000000000, -0.69999999999999996 },
2189 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2190 4.0000000000000000, -0.59999999999999998 },
2191 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2192 4.0000000000000000, -0.50000000000000000 },
2193 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2194 4.0000000000000000, -0.40000000000000002 },
2195 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2196 4.0000000000000000, -0.30000000000000004 },
2197 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2198 4.0000000000000000, -0.19999999999999996 },
2199 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2200 4.0000000000000000, -0.099999999999999978 },
2201 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2202 4.0000000000000000, 0.0000000000000000 },
2203 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2204 4.0000000000000000, 0.10000000000000009 },
2205 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2206 4.0000000000000000, 0.19999999999999996 },
2207 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2208 4.0000000000000000, 0.30000000000000004 },
2209 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2210 4.0000000000000000, 0.39999999999999991 },
2211 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2212 4.0000000000000000, 0.50000000000000000 },
2213 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2214 4.0000000000000000, 0.60000000000000009 },
2215 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2216 4.0000000000000000, 0.69999999999999996 },
2217 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2218 4.0000000000000000, 0.80000000000000004 },
2219 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2220 4.0000000000000000, 0.89999999999999991 },
2223 // Test function for a=0.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
2224 template <typename Tp
>
2227 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2228 Tp max_abs_diff
= -Tp(1);
2229 Tp max_abs_frac
= -Tp(1);
2230 unsigned int num_datum
= sizeof(data032
)
2231 / sizeof(testcase_hyperg
<double>);
2232 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2234 const Tp f
= std::tr1::hyperg(Tp(data032
[i
].a
), Tp(data032
[i
].b
),
2235 Tp(data032
[i
].c
), Tp(data032
[i
].x
));
2236 const Tp f0
= data032
[i
].f0
;
2237 const Tp diff
= f
- f0
;
2238 if (std::abs(diff
) > max_abs_diff
)
2239 max_abs_diff
= std::abs(diff
);
2240 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2242 const Tp frac
= diff
/ f0
;
2243 if (std::abs(frac
) > max_abs_frac
)
2244 max_abs_frac
= std::abs(frac
);
2247 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2250 // Test data for a=0.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
2251 testcase_hyperg
<double> data033
[] = {
2252 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2253 6.0000000000000000, -0.90000000000000002 },
2254 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2255 6.0000000000000000, -0.80000000000000004 },
2256 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2257 6.0000000000000000, -0.69999999999999996 },
2258 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2259 6.0000000000000000, -0.59999999999999998 },
2260 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2261 6.0000000000000000, -0.50000000000000000 },
2262 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2263 6.0000000000000000, -0.40000000000000002 },
2264 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2265 6.0000000000000000, -0.30000000000000004 },
2266 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2267 6.0000000000000000, -0.19999999999999996 },
2268 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2269 6.0000000000000000, -0.099999999999999978 },
2270 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2271 6.0000000000000000, 0.0000000000000000 },
2272 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2273 6.0000000000000000, 0.10000000000000009 },
2274 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2275 6.0000000000000000, 0.19999999999999996 },
2276 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2277 6.0000000000000000, 0.30000000000000004 },
2278 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2279 6.0000000000000000, 0.39999999999999991 },
2280 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2281 6.0000000000000000, 0.50000000000000000 },
2282 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2283 6.0000000000000000, 0.60000000000000009 },
2284 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2285 6.0000000000000000, 0.69999999999999996 },
2286 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2287 6.0000000000000000, 0.80000000000000004 },
2288 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2289 6.0000000000000000, 0.89999999999999991 },
2292 // Test function for a=0.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
2293 template <typename Tp
>
2296 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2297 Tp max_abs_diff
= -Tp(1);
2298 Tp max_abs_frac
= -Tp(1);
2299 unsigned int num_datum
= sizeof(data033
)
2300 / sizeof(testcase_hyperg
<double>);
2301 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2303 const Tp f
= std::tr1::hyperg(Tp(data033
[i
].a
), Tp(data033
[i
].b
),
2304 Tp(data033
[i
].c
), Tp(data033
[i
].x
));
2305 const Tp f0
= data033
[i
].f0
;
2306 const Tp diff
= f
- f0
;
2307 if (std::abs(diff
) > max_abs_diff
)
2308 max_abs_diff
= std::abs(diff
);
2309 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2311 const Tp frac
= diff
/ f0
;
2312 if (std::abs(frac
) > max_abs_frac
)
2313 max_abs_frac
= std::abs(frac
);
2316 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2319 // Test data for a=0.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
2320 testcase_hyperg
<double> data034
[] = {
2321 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2322 8.0000000000000000, -0.90000000000000002 },
2323 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2324 8.0000000000000000, -0.80000000000000004 },
2325 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2326 8.0000000000000000, -0.69999999999999996 },
2327 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2328 8.0000000000000000, -0.59999999999999998 },
2329 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2330 8.0000000000000000, -0.50000000000000000 },
2331 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2332 8.0000000000000000, -0.40000000000000002 },
2333 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2334 8.0000000000000000, -0.30000000000000004 },
2335 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2336 8.0000000000000000, -0.19999999999999996 },
2337 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2338 8.0000000000000000, -0.099999999999999978 },
2339 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2340 8.0000000000000000, 0.0000000000000000 },
2341 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2342 8.0000000000000000, 0.10000000000000009 },
2343 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2344 8.0000000000000000, 0.19999999999999996 },
2345 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2346 8.0000000000000000, 0.30000000000000004 },
2347 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2348 8.0000000000000000, 0.39999999999999991 },
2349 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2350 8.0000000000000000, 0.50000000000000000 },
2351 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2352 8.0000000000000000, 0.60000000000000009 },
2353 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2354 8.0000000000000000, 0.69999999999999996 },
2355 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2356 8.0000000000000000, 0.80000000000000004 },
2357 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2358 8.0000000000000000, 0.89999999999999991 },
2361 // Test function for a=0.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
2362 template <typename Tp
>
2365 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2366 Tp max_abs_diff
= -Tp(1);
2367 Tp max_abs_frac
= -Tp(1);
2368 unsigned int num_datum
= sizeof(data034
)
2369 / sizeof(testcase_hyperg
<double>);
2370 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2372 const Tp f
= std::tr1::hyperg(Tp(data034
[i
].a
), Tp(data034
[i
].b
),
2373 Tp(data034
[i
].c
), Tp(data034
[i
].x
));
2374 const Tp f0
= data034
[i
].f0
;
2375 const Tp diff
= f
- f0
;
2376 if (std::abs(diff
) > max_abs_diff
)
2377 max_abs_diff
= std::abs(diff
);
2378 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2380 const Tp frac
= diff
/ f0
;
2381 if (std::abs(frac
) > max_abs_frac
)
2382 max_abs_frac
= std::abs(frac
);
2385 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2388 // Test data for a=0.0000000000000000, b=20.000000000000000, c=10.000000000000000.
2389 testcase_hyperg
<double> data035
[] = {
2390 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2391 10.000000000000000, -0.90000000000000002 },
2392 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2393 10.000000000000000, -0.80000000000000004 },
2394 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2395 10.000000000000000, -0.69999999999999996 },
2396 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2397 10.000000000000000, -0.59999999999999998 },
2398 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2399 10.000000000000000, -0.50000000000000000 },
2400 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2401 10.000000000000000, -0.40000000000000002 },
2402 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2403 10.000000000000000, -0.30000000000000004 },
2404 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2405 10.000000000000000, -0.19999999999999996 },
2406 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2407 10.000000000000000, -0.099999999999999978 },
2408 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2409 10.000000000000000, 0.0000000000000000 },
2410 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2411 10.000000000000000, 0.10000000000000009 },
2412 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2413 10.000000000000000, 0.19999999999999996 },
2414 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2415 10.000000000000000, 0.30000000000000004 },
2416 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2417 10.000000000000000, 0.39999999999999991 },
2418 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2419 10.000000000000000, 0.50000000000000000 },
2420 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2421 10.000000000000000, 0.60000000000000009 },
2422 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2423 10.000000000000000, 0.69999999999999996 },
2424 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2425 10.000000000000000, 0.80000000000000004 },
2426 { 1.0000000000000000, 0.0000000000000000, 20.000000000000000,
2427 10.000000000000000, 0.89999999999999991 },
2430 // Test function for a=0.0000000000000000, b=20.000000000000000, c=10.000000000000000.
2431 template <typename Tp
>
2434 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2435 Tp max_abs_diff
= -Tp(1);
2436 Tp max_abs_frac
= -Tp(1);
2437 unsigned int num_datum
= sizeof(data035
)
2438 / sizeof(testcase_hyperg
<double>);
2439 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2441 const Tp f
= std::tr1::hyperg(Tp(data035
[i
].a
), Tp(data035
[i
].b
),
2442 Tp(data035
[i
].c
), Tp(data035
[i
].x
));
2443 const Tp f0
= data035
[i
].f0
;
2444 const Tp diff
= f
- f0
;
2445 if (std::abs(diff
) > max_abs_diff
)
2446 max_abs_diff
= std::abs(diff
);
2447 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2449 const Tp frac
= diff
/ f0
;
2450 if (std::abs(frac
) > max_abs_frac
)
2451 max_abs_frac
= std::abs(frac
);
2454 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2457 // Test data for a=0.50000000000000000, b=0.0000000000000000, c=2.0000000000000000.
2458 testcase_hyperg
<double> data036
[] = {
2459 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2460 2.0000000000000000, -0.90000000000000002 },
2461 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2462 2.0000000000000000, -0.80000000000000004 },
2463 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2464 2.0000000000000000, -0.69999999999999996 },
2465 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2466 2.0000000000000000, -0.59999999999999998 },
2467 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2468 2.0000000000000000, -0.50000000000000000 },
2469 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2470 2.0000000000000000, -0.40000000000000002 },
2471 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2472 2.0000000000000000, -0.30000000000000004 },
2473 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2474 2.0000000000000000, -0.19999999999999996 },
2475 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2476 2.0000000000000000, -0.099999999999999978 },
2477 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2478 2.0000000000000000, 0.0000000000000000 },
2479 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2480 2.0000000000000000, 0.10000000000000009 },
2481 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2482 2.0000000000000000, 0.19999999999999996 },
2483 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2484 2.0000000000000000, 0.30000000000000004 },
2485 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2486 2.0000000000000000, 0.39999999999999991 },
2487 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2488 2.0000000000000000, 0.50000000000000000 },
2489 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2490 2.0000000000000000, 0.60000000000000009 },
2491 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2492 2.0000000000000000, 0.69999999999999996 },
2493 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2494 2.0000000000000000, 0.80000000000000004 },
2495 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2496 2.0000000000000000, 0.89999999999999991 },
2499 // Test function for a=0.50000000000000000, b=0.0000000000000000, c=2.0000000000000000.
2500 template <typename Tp
>
2503 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2504 Tp max_abs_diff
= -Tp(1);
2505 Tp max_abs_frac
= -Tp(1);
2506 unsigned int num_datum
= sizeof(data036
)
2507 / sizeof(testcase_hyperg
<double>);
2508 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2510 const Tp f
= std::tr1::hyperg(Tp(data036
[i
].a
), Tp(data036
[i
].b
),
2511 Tp(data036
[i
].c
), Tp(data036
[i
].x
));
2512 const Tp f0
= data036
[i
].f0
;
2513 const Tp diff
= f
- f0
;
2514 if (std::abs(diff
) > max_abs_diff
)
2515 max_abs_diff
= std::abs(diff
);
2516 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2518 const Tp frac
= diff
/ f0
;
2519 if (std::abs(frac
) > max_abs_frac
)
2520 max_abs_frac
= std::abs(frac
);
2523 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2526 // Test data for a=0.50000000000000000, b=0.0000000000000000, c=4.0000000000000000.
2527 testcase_hyperg
<double> data037
[] = {
2528 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2529 4.0000000000000000, -0.90000000000000002 },
2530 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2531 4.0000000000000000, -0.80000000000000004 },
2532 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2533 4.0000000000000000, -0.69999999999999996 },
2534 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2535 4.0000000000000000, -0.59999999999999998 },
2536 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2537 4.0000000000000000, -0.50000000000000000 },
2538 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2539 4.0000000000000000, -0.40000000000000002 },
2540 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2541 4.0000000000000000, -0.30000000000000004 },
2542 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2543 4.0000000000000000, -0.19999999999999996 },
2544 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2545 4.0000000000000000, -0.099999999999999978 },
2546 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2547 4.0000000000000000, 0.0000000000000000 },
2548 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2549 4.0000000000000000, 0.10000000000000009 },
2550 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2551 4.0000000000000000, 0.19999999999999996 },
2552 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2553 4.0000000000000000, 0.30000000000000004 },
2554 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2555 4.0000000000000000, 0.39999999999999991 },
2556 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2557 4.0000000000000000, 0.50000000000000000 },
2558 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2559 4.0000000000000000, 0.60000000000000009 },
2560 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2561 4.0000000000000000, 0.69999999999999996 },
2562 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2563 4.0000000000000000, 0.80000000000000004 },
2564 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2565 4.0000000000000000, 0.89999999999999991 },
2568 // Test function for a=0.50000000000000000, b=0.0000000000000000, c=4.0000000000000000.
2569 template <typename Tp
>
2572 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2573 Tp max_abs_diff
= -Tp(1);
2574 Tp max_abs_frac
= -Tp(1);
2575 unsigned int num_datum
= sizeof(data037
)
2576 / sizeof(testcase_hyperg
<double>);
2577 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2579 const Tp f
= std::tr1::hyperg(Tp(data037
[i
].a
), Tp(data037
[i
].b
),
2580 Tp(data037
[i
].c
), Tp(data037
[i
].x
));
2581 const Tp f0
= data037
[i
].f0
;
2582 const Tp diff
= f
- f0
;
2583 if (std::abs(diff
) > max_abs_diff
)
2584 max_abs_diff
= std::abs(diff
);
2585 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2587 const Tp frac
= diff
/ f0
;
2588 if (std::abs(frac
) > max_abs_frac
)
2589 max_abs_frac
= std::abs(frac
);
2592 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2595 // Test data for a=0.50000000000000000, b=0.0000000000000000, c=6.0000000000000000.
2596 testcase_hyperg
<double> data038
[] = {
2597 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2598 6.0000000000000000, -0.90000000000000002 },
2599 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2600 6.0000000000000000, -0.80000000000000004 },
2601 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2602 6.0000000000000000, -0.69999999999999996 },
2603 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2604 6.0000000000000000, -0.59999999999999998 },
2605 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2606 6.0000000000000000, -0.50000000000000000 },
2607 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2608 6.0000000000000000, -0.40000000000000002 },
2609 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2610 6.0000000000000000, -0.30000000000000004 },
2611 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2612 6.0000000000000000, -0.19999999999999996 },
2613 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2614 6.0000000000000000, -0.099999999999999978 },
2615 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2616 6.0000000000000000, 0.0000000000000000 },
2617 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2618 6.0000000000000000, 0.10000000000000009 },
2619 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2620 6.0000000000000000, 0.19999999999999996 },
2621 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2622 6.0000000000000000, 0.30000000000000004 },
2623 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2624 6.0000000000000000, 0.39999999999999991 },
2625 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2626 6.0000000000000000, 0.50000000000000000 },
2627 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2628 6.0000000000000000, 0.60000000000000009 },
2629 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2630 6.0000000000000000, 0.69999999999999996 },
2631 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2632 6.0000000000000000, 0.80000000000000004 },
2633 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2634 6.0000000000000000, 0.89999999999999991 },
2637 // Test function for a=0.50000000000000000, b=0.0000000000000000, c=6.0000000000000000.
2638 template <typename Tp
>
2641 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2642 Tp max_abs_diff
= -Tp(1);
2643 Tp max_abs_frac
= -Tp(1);
2644 unsigned int num_datum
= sizeof(data038
)
2645 / sizeof(testcase_hyperg
<double>);
2646 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2648 const Tp f
= std::tr1::hyperg(Tp(data038
[i
].a
), Tp(data038
[i
].b
),
2649 Tp(data038
[i
].c
), Tp(data038
[i
].x
));
2650 const Tp f0
= data038
[i
].f0
;
2651 const Tp diff
= f
- f0
;
2652 if (std::abs(diff
) > max_abs_diff
)
2653 max_abs_diff
= std::abs(diff
);
2654 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2656 const Tp frac
= diff
/ f0
;
2657 if (std::abs(frac
) > max_abs_frac
)
2658 max_abs_frac
= std::abs(frac
);
2661 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2664 // Test data for a=0.50000000000000000, b=0.0000000000000000, c=8.0000000000000000.
2665 testcase_hyperg
<double> data039
[] = {
2666 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2667 8.0000000000000000, -0.90000000000000002 },
2668 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2669 8.0000000000000000, -0.80000000000000004 },
2670 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2671 8.0000000000000000, -0.69999999999999996 },
2672 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2673 8.0000000000000000, -0.59999999999999998 },
2674 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2675 8.0000000000000000, -0.50000000000000000 },
2676 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2677 8.0000000000000000, -0.40000000000000002 },
2678 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2679 8.0000000000000000, -0.30000000000000004 },
2680 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2681 8.0000000000000000, -0.19999999999999996 },
2682 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2683 8.0000000000000000, -0.099999999999999978 },
2684 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2685 8.0000000000000000, 0.0000000000000000 },
2686 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2687 8.0000000000000000, 0.10000000000000009 },
2688 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2689 8.0000000000000000, 0.19999999999999996 },
2690 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2691 8.0000000000000000, 0.30000000000000004 },
2692 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2693 8.0000000000000000, 0.39999999999999991 },
2694 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2695 8.0000000000000000, 0.50000000000000000 },
2696 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2697 8.0000000000000000, 0.60000000000000009 },
2698 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2699 8.0000000000000000, 0.69999999999999996 },
2700 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2701 8.0000000000000000, 0.80000000000000004 },
2702 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2703 8.0000000000000000, 0.89999999999999991 },
2706 // Test function for a=0.50000000000000000, b=0.0000000000000000, c=8.0000000000000000.
2707 template <typename Tp
>
2710 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2711 Tp max_abs_diff
= -Tp(1);
2712 Tp max_abs_frac
= -Tp(1);
2713 unsigned int num_datum
= sizeof(data039
)
2714 / sizeof(testcase_hyperg
<double>);
2715 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2717 const Tp f
= std::tr1::hyperg(Tp(data039
[i
].a
), Tp(data039
[i
].b
),
2718 Tp(data039
[i
].c
), Tp(data039
[i
].x
));
2719 const Tp f0
= data039
[i
].f0
;
2720 const Tp diff
= f
- f0
;
2721 if (std::abs(diff
) > max_abs_diff
)
2722 max_abs_diff
= std::abs(diff
);
2723 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2725 const Tp frac
= diff
/ f0
;
2726 if (std::abs(frac
) > max_abs_frac
)
2727 max_abs_frac
= std::abs(frac
);
2730 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2733 // Test data for a=0.50000000000000000, b=0.0000000000000000, c=10.000000000000000.
2734 testcase_hyperg
<double> data040
[] = {
2735 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2736 10.000000000000000, -0.90000000000000002 },
2737 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2738 10.000000000000000, -0.80000000000000004 },
2739 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2740 10.000000000000000, -0.69999999999999996 },
2741 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2742 10.000000000000000, -0.59999999999999998 },
2743 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2744 10.000000000000000, -0.50000000000000000 },
2745 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2746 10.000000000000000, -0.40000000000000002 },
2747 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2748 10.000000000000000, -0.30000000000000004 },
2749 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2750 10.000000000000000, -0.19999999999999996 },
2751 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2752 10.000000000000000, -0.099999999999999978 },
2753 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2754 10.000000000000000, 0.0000000000000000 },
2755 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2756 10.000000000000000, 0.10000000000000009 },
2757 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2758 10.000000000000000, 0.19999999999999996 },
2759 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2760 10.000000000000000, 0.30000000000000004 },
2761 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2762 10.000000000000000, 0.39999999999999991 },
2763 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2764 10.000000000000000, 0.50000000000000000 },
2765 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2766 10.000000000000000, 0.60000000000000009 },
2767 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2768 10.000000000000000, 0.69999999999999996 },
2769 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2770 10.000000000000000, 0.80000000000000004 },
2771 { 1.0000000000000000, 0.50000000000000000, 0.0000000000000000,
2772 10.000000000000000, 0.89999999999999991 },
2775 // Test function for a=0.50000000000000000, b=0.0000000000000000, c=10.000000000000000.
2776 template <typename Tp
>
2779 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2780 Tp max_abs_diff
= -Tp(1);
2781 Tp max_abs_frac
= -Tp(1);
2782 unsigned int num_datum
= sizeof(data040
)
2783 / sizeof(testcase_hyperg
<double>);
2784 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2786 const Tp f
= std::tr1::hyperg(Tp(data040
[i
].a
), Tp(data040
[i
].b
),
2787 Tp(data040
[i
].c
), Tp(data040
[i
].x
));
2788 const Tp f0
= data040
[i
].f0
;
2789 const Tp diff
= f
- f0
;
2790 if (std::abs(diff
) > max_abs_diff
)
2791 max_abs_diff
= std::abs(diff
);
2792 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2794 const Tp frac
= diff
/ f0
;
2795 if (std::abs(frac
) > max_abs_frac
)
2796 max_abs_frac
= std::abs(frac
);
2799 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2802 // Test data for a=0.50000000000000000, b=0.50000000000000000, c=2.0000000000000000.
2803 testcase_hyperg
<double> data041
[] = {
2804 { 0.91383715388743758, 0.50000000000000000, 0.50000000000000000,
2805 2.0000000000000000, -0.90000000000000002 },
2806 { 0.92151232618202283, 0.50000000000000000, 0.50000000000000000,
2807 2.0000000000000000, -0.80000000000000004 },
2808 { 0.92955086110354823, 0.50000000000000000, 0.50000000000000000,
2809 2.0000000000000000, -0.69999999999999996 },
2810 { 0.93798900119104844, 0.50000000000000000, 0.50000000000000000,
2811 2.0000000000000000, -0.59999999999999998 },
2812 { 0.94686887307107304, 0.50000000000000000, 0.50000000000000000,
2813 2.0000000000000000, -0.50000000000000000 },
2814 { 0.95623987262143295, 0.50000000000000000, 0.50000000000000000,
2815 2.0000000000000000, -0.40000000000000002 },
2816 { 0.96616049387450154, 0.50000000000000000, 0.50000000000000000,
2817 2.0000000000000000, -0.30000000000000004 },
2818 { 0.97670078782187519, 0.50000000000000000, 0.50000000000000000,
2819 2.0000000000000000, -0.19999999999999996 },
2820 { 0.98794573712298384, 0.50000000000000000, 0.50000000000000000,
2821 2.0000000000000000, -0.099999999999999978 },
2822 { 1.0000000000000000, 0.50000000000000000, 0.50000000000000000,
2823 2.0000000000000000, 0.0000000000000000 },
2824 { 1.0129947682256604, 0.50000000000000000, 0.50000000000000000,
2825 2.0000000000000000, 0.10000000000000009 },
2826 { 1.0270980168168973, 0.50000000000000000, 0.50000000000000000,
2827 2.0000000000000000, 0.19999999999999996 },
2828 { 1.0425304520063581, 0.50000000000000000, 0.50000000000000000,
2829 2.0000000000000000, 0.30000000000000004 },
2830 { 1.0595915916161471, 0.50000000000000000, 0.50000000000000000,
2831 2.0000000000000000, 0.39999999999999991 },
2832 { 1.0787052023767585, 0.50000000000000000, 0.50000000000000000,
2833 2.0000000000000000, 0.50000000000000000 },
2834 { 1.1005053642285867, 0.50000000000000000, 0.50000000000000000,
2835 2.0000000000000000, 0.60000000000000009 },
2836 { 1.1260196351148746, 0.50000000000000000, 0.50000000000000000,
2837 2.0000000000000000, 0.69999999999999996 },
2838 { 1.1571341977338991, 0.50000000000000000, 0.50000000000000000,
2839 2.0000000000000000, 0.80000000000000004 },
2840 { 1.1982111053717450, 0.50000000000000000, 0.50000000000000000,
2841 2.0000000000000000, 0.89999999999999991 },
2844 // Test function for a=0.50000000000000000, b=0.50000000000000000, c=2.0000000000000000.
2845 template <typename Tp
>
2848 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2849 Tp max_abs_diff
= -Tp(1);
2850 Tp max_abs_frac
= -Tp(1);
2851 unsigned int num_datum
= sizeof(data041
)
2852 / sizeof(testcase_hyperg
<double>);
2853 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2855 const Tp f
= std::tr1::hyperg(Tp(data041
[i
].a
), Tp(data041
[i
].b
),
2856 Tp(data041
[i
].c
), Tp(data041
[i
].x
));
2857 const Tp f0
= data041
[i
].f0
;
2858 const Tp diff
= f
- f0
;
2859 if (std::abs(diff
) > max_abs_diff
)
2860 max_abs_diff
= std::abs(diff
);
2861 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2863 const Tp frac
= diff
/ f0
;
2864 if (std::abs(frac
) > max_abs_frac
)
2865 max_abs_frac
= std::abs(frac
);
2868 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2871 // Test data for a=0.50000000000000000, b=0.50000000000000000, c=4.0000000000000000.
2872 testcase_hyperg
<double> data042
[] = {
2873 { 0.95255425675562733, 0.50000000000000000, 0.50000000000000000,
2874 4.0000000000000000, -0.90000000000000002 },
2875 { 0.95712841850078245, 0.50000000000000000, 0.50000000000000000,
2876 4.0000000000000000, -0.80000000000000004 },
2877 { 0.96184734120034532, 0.50000000000000000, 0.50000000000000000,
2878 4.0000000000000000, -0.69999999999999996 },
2879 { 0.96672141255196242, 0.50000000000000000, 0.50000000000000000,
2880 4.0000000000000000, -0.59999999999999998 },
2881 { 0.97176228710138646, 0.50000000000000000, 0.50000000000000000,
2882 4.0000000000000000, -0.50000000000000000 },
2883 { 0.97698311668286286, 0.50000000000000000, 0.50000000000000000,
2884 4.0000000000000000, -0.40000000000000002 },
2885 { 0.98239883902556069, 0.50000000000000000, 0.50000000000000000,
2886 4.0000000000000000, -0.30000000000000004 },
2887 { 0.98802654401961032, 0.50000000000000000, 0.50000000000000000,
2888 4.0000000000000000, -0.19999999999999996 },
2889 { 0.99388594556732701, 0.50000000000000000, 0.50000000000000000,
2890 4.0000000000000000, -0.099999999999999978 },
2891 { 1.0000000000000000, 0.50000000000000000, 0.50000000000000000,
2892 4.0000000000000000, 0.0000000000000000 },
2893 { 1.0063957328951061, 0.50000000000000000, 0.50000000000000000,
2894 4.0000000000000000, 0.10000000000000009 },
2895 { 1.0131053706824598, 0.50000000000000000, 0.50000000000000000,
2896 4.0000000000000000, 0.19999999999999996 },
2897 { 1.0201679332118803, 0.50000000000000000, 0.50000000000000000,
2898 4.0000000000000000, 0.30000000000000004 },
2899 { 1.0276315524377497, 0.50000000000000000, 0.50000000000000000,
2900 4.0000000000000000, 0.39999999999999991 },
2901 { 1.0355569942816882, 0.50000000000000000, 0.50000000000000000,
2902 4.0000000000000000, 0.50000000000000000 },
2903 { 1.0440233080381554, 0.50000000000000000, 0.50000000000000000,
2904 4.0000000000000000, 0.60000000000000009 },
2905 { 1.0531375808028993, 0.50000000000000000, 0.50000000000000000,
2906 4.0000000000000000, 0.69999999999999996 },
2907 { 1.0630536689840200, 0.50000000000000000, 0.50000000000000000,
2908 4.0000000000000000, 0.80000000000000004 },
2909 { 1.0740149570414563, 0.50000000000000000, 0.50000000000000000,
2910 4.0000000000000000, 0.89999999999999991 },
2913 // Test function for a=0.50000000000000000, b=0.50000000000000000, c=4.0000000000000000.
2914 template <typename Tp
>
2917 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2918 Tp max_abs_diff
= -Tp(1);
2919 Tp max_abs_frac
= -Tp(1);
2920 unsigned int num_datum
= sizeof(data042
)
2921 / sizeof(testcase_hyperg
<double>);
2922 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2924 const Tp f
= std::tr1::hyperg(Tp(data042
[i
].a
), Tp(data042
[i
].b
),
2925 Tp(data042
[i
].c
), Tp(data042
[i
].x
));
2926 const Tp f0
= data042
[i
].f0
;
2927 const Tp diff
= f
- f0
;
2928 if (std::abs(diff
) > max_abs_diff
)
2929 max_abs_diff
= std::abs(diff
);
2930 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
2932 const Tp frac
= diff
/ f0
;
2933 if (std::abs(frac
) > max_abs_frac
)
2934 max_abs_frac
= std::abs(frac
);
2937 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
2940 // Test data for a=0.50000000000000000, b=0.50000000000000000, c=6.0000000000000000.
2941 testcase_hyperg
<double> data043
[] = {
2942 { 0.96694084713323891, 0.50000000000000000, 0.50000000000000000,
2943 6.0000000000000000, -0.90000000000000002 },
2944 { 0.97024454918852587, 0.50000000000000000, 0.50000000000000000,
2945 6.0000000000000000, -0.80000000000000004 },
2946 { 0.97362815600391461, 0.50000000000000000, 0.50000000000000000,
2947 6.0000000000000000, -0.69999999999999996 },
2948 { 0.97709622064205115, 0.50000000000000000, 0.50000000000000000,
2949 6.0000000000000000, -0.59999999999999998 },
2950 { 0.98065374770570624, 0.50000000000000000, 0.50000000000000000,
2951 6.0000000000000000, -0.50000000000000000 },
2952 { 0.98430626119885489, 0.50000000000000000, 0.50000000000000000,
2953 6.0000000000000000, -0.40000000000000002 },
2954 { 0.98805988669621037, 0.50000000000000000, 0.50000000000000000,
2955 6.0000000000000000, -0.30000000000000004 },
2956 { 0.99192145185739655, 0.50000000000000000, 0.50000000000000000,
2957 6.0000000000000000, -0.19999999999999996 },
2958 { 0.99589861079880937, 0.50000000000000000, 0.50000000000000000,
2959 6.0000000000000000, -0.099999999999999978 },
2960 { 1.0000000000000000, 0.50000000000000000, 0.50000000000000000,
2961 6.0000000000000000, 0.0000000000000000 },
2962 { 1.0042354366729904, 0.50000000000000000, 0.50000000000000000,
2963 6.0000000000000000, 0.10000000000000009 },
2964 { 1.0086161755545404, 0.50000000000000000, 0.50000000000000000,
2965 6.0000000000000000, 0.19999999999999996 },
2966 { 1.0131552481403503, 0.50000000000000000, 0.50000000000000000,
2967 6.0000000000000000, 0.30000000000000004 },
2968 { 1.0178679218284707, 0.50000000000000000, 0.50000000000000000,
2969 6.0000000000000000, 0.39999999999999991 },
2970 { 1.0227723400312978, 0.50000000000000000, 0.50000000000000000,
2971 6.0000000000000000, 0.50000000000000000 },
2972 { 1.0278904483717863, 0.50000000000000000, 0.50000000000000000,
2973 6.0000000000000000, 0.60000000000000009 },
2974 { 1.0332494012993472, 0.50000000000000000, 0.50000000000000000,
2975 6.0000000000000000, 0.69999999999999996 },
2976 { 1.0388838453357794, 0.50000000000000000, 0.50000000000000000,
2977 6.0000000000000000, 0.80000000000000004 },
2978 { 1.0448400142331342, 0.50000000000000000, 0.50000000000000000,
2979 6.0000000000000000, 0.89999999999999991 },
2982 // Test function for a=0.50000000000000000, b=0.50000000000000000, c=6.0000000000000000.
2983 template <typename Tp
>
2986 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
2987 Tp max_abs_diff
= -Tp(1);
2988 Tp max_abs_frac
= -Tp(1);
2989 unsigned int num_datum
= sizeof(data043
)
2990 / sizeof(testcase_hyperg
<double>);
2991 for (unsigned int i
= 0; i
< num_datum
; ++i
)
2993 const Tp f
= std::tr1::hyperg(Tp(data043
[i
].a
), Tp(data043
[i
].b
),
2994 Tp(data043
[i
].c
), Tp(data043
[i
].x
));
2995 const Tp f0
= data043
[i
].f0
;
2996 const Tp diff
= f
- f0
;
2997 if (std::abs(diff
) > max_abs_diff
)
2998 max_abs_diff
= std::abs(diff
);
2999 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3001 const Tp frac
= diff
/ f0
;
3002 if (std::abs(frac
) > max_abs_frac
)
3003 max_abs_frac
= std::abs(frac
);
3006 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3009 // Test data for a=0.50000000000000000, b=0.50000000000000000, c=8.0000000000000000.
3010 testcase_hyperg
<double> data044
[] = {
3011 { 0.97456073259047449, 0.50000000000000000, 0.50000000000000000,
3012 8.0000000000000000, -0.90000000000000002 },
3013 { 0.97715689327833344, 0.50000000000000000, 0.50000000000000000,
3014 8.0000000000000000, -0.80000000000000004 },
3015 { 0.97980416868943099, 0.50000000000000000, 0.50000000000000000,
3016 8.0000000000000000, -0.69999999999999996 },
3017 { 0.98250498942832509, 0.50000000000000000, 0.50000000000000000,
3018 8.0000000000000000, -0.59999999999999998 },
3019 { 0.98526199049760832, 0.50000000000000000, 0.50000000000000000,
3020 8.0000000000000000, -0.50000000000000000 },
3021 { 0.98807803762902813, 0.50000000000000000, 0.50000000000000000,
3022 8.0000000000000000, -0.40000000000000002 },
3023 { 0.99095625840920332, 0.50000000000000000, 0.50000000000000000,
3024 8.0000000000000000, -0.30000000000000004 },
3025 { 0.99390007937387959, 0.50000000000000000, 0.50000000000000000,
3026 8.0000000000000000, -0.19999999999999996 },
3027 { 0.99691327061866730, 0.50000000000000000, 0.50000000000000000,
3028 8.0000000000000000, -0.099999999999999978 },
3029 { 1.0000000000000000, 0.50000000000000000, 0.50000000000000000,
3030 8.0000000000000000, 0.0000000000000000 },
3031 { 1.0031648997547440, 0.50000000000000000, 0.50000000000000000,
3032 8.0000000000000000, 0.10000000000000009 },
3033 { 1.0064131494767281, 0.50000000000000000, 0.50000000000000000,
3034 8.0000000000000000, 0.19999999999999996 },
3035 { 1.0097505810668461, 0.50000000000000000, 0.50000000000000000,
3036 8.0000000000000000, 0.30000000000000004 },
3037 { 1.0131838138968663, 0.50000000000000000, 0.50000000000000000,
3038 8.0000000000000000, 0.39999999999999991 },
3039 { 1.0167204326938339, 0.50000000000000000, 0.50000000000000000,
3040 8.0000000000000000, 0.50000000000000000 },
3041 { 1.0203692279382193, 0.50000000000000000, 0.50000000000000000,
3042 8.0000000000000000, 0.60000000000000009 },
3043 { 1.0241405318057402, 0.50000000000000000, 0.50000000000000000,
3044 8.0000000000000000, 0.69999999999999996 },
3045 { 1.0280467087844301, 0.50000000000000000, 0.50000000000000000,
3046 8.0000000000000000, 0.80000000000000004 },
3047 { 1.0321029179180026, 0.50000000000000000, 0.50000000000000000,
3048 8.0000000000000000, 0.89999999999999991 },
3051 // Test function for a=0.50000000000000000, b=0.50000000000000000, c=8.0000000000000000.
3052 template <typename Tp
>
3055 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3056 Tp max_abs_diff
= -Tp(1);
3057 Tp max_abs_frac
= -Tp(1);
3058 unsigned int num_datum
= sizeof(data044
)
3059 / sizeof(testcase_hyperg
<double>);
3060 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3062 const Tp f
= std::tr1::hyperg(Tp(data044
[i
].a
), Tp(data044
[i
].b
),
3063 Tp(data044
[i
].c
), Tp(data044
[i
].x
));
3064 const Tp f0
= data044
[i
].f0
;
3065 const Tp diff
= f
- f0
;
3066 if (std::abs(diff
) > max_abs_diff
)
3067 max_abs_diff
= std::abs(diff
);
3068 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3070 const Tp frac
= diff
/ f0
;
3071 if (std::abs(frac
) > max_abs_frac
)
3072 max_abs_frac
= std::abs(frac
);
3075 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3078 // Test data for a=0.50000000000000000, b=0.50000000000000000, c=10.000000000000000.
3079 testcase_hyperg
<double> data045
[] = {
3080 { 0.97930223035212161, 0.50000000000000000, 0.50000000000000000,
3081 10.000000000000000, -0.90000000000000002 },
3082 { 0.98144406855076416, 0.50000000000000000, 0.50000000000000000,
3083 10.000000000000000, -0.80000000000000004 },
3084 { 0.98362155940297302, 0.50000000000000000, 0.50000000000000000,
3085 10.000000000000000, -0.69999999999999996 },
3086 { 0.98583616201745805, 0.50000000000000000, 0.50000000000000000,
3087 10.000000000000000, -0.59999999999999998 },
3088 { 0.98808944235385077, 0.50000000000000000, 0.50000000000000000,
3089 10.000000000000000, -0.50000000000000000 },
3090 { 0.99038308530635433, 0.50000000000000000, 0.50000000000000000,
3091 10.000000000000000, -0.40000000000000002 },
3092 { 0.99271890872975732, 0.50000000000000000, 0.50000000000000000,
3093 10.000000000000000, -0.30000000000000004 },
3094 { 0.99509887982916734, 0.50000000000000000, 0.50000000000000000,
3095 10.000000000000000, -0.19999999999999996 },
3096 { 0.99752513445413604, 0.50000000000000000, 0.50000000000000000,
3097 10.000000000000000, -0.099999999999999978 },
3098 { 1.0000000000000000, 0.50000000000000000, 0.50000000000000000,
3099 10.000000000000000, 0.0000000000000000 },
3100 { 1.0025260228440118, 0.50000000000000000, 0.50000000000000000,
3101 10.000000000000000, 0.10000000000000009 },
3102 { 1.0051060015613384, 0.50000000000000000, 0.50000000000000000,
3103 10.000000000000000, 0.19999999999999996 },
3104 { 1.0077430276253163, 0.50000000000000000, 0.50000000000000000,
3105 10.000000000000000, 0.30000000000000004 },
3106 { 1.0104405359789990, 0.50000000000000000, 0.50000000000000000,
3107 10.000000000000000, 0.39999999999999991 },
3108 { 1.0132023689128868, 0.50000000000000000, 0.50000000000000000,
3109 10.000000000000000, 0.50000000000000000 },
3110 { 1.0160328583559475, 0.50000000000000000, 0.50000000000000000,
3111 10.000000000000000, 0.60000000000000009 },
3112 { 1.0189369344885053, 0.50000000000000000, 0.50000000000000000,
3113 10.000000000000000, 0.69999999999999996 },
3114 { 1.0219202735809589, 0.50000000000000000, 0.50000000000000000,
3115 10.000000000000000, 0.80000000000000004 },
3116 { 1.0249895076611382, 0.50000000000000000, 0.50000000000000000,
3117 10.000000000000000, 0.89999999999999991 },
3120 // Test function for a=0.50000000000000000, b=0.50000000000000000, c=10.000000000000000.
3121 template <typename Tp
>
3124 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3125 Tp max_abs_diff
= -Tp(1);
3126 Tp max_abs_frac
= -Tp(1);
3127 unsigned int num_datum
= sizeof(data045
)
3128 / sizeof(testcase_hyperg
<double>);
3129 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3131 const Tp f
= std::tr1::hyperg(Tp(data045
[i
].a
), Tp(data045
[i
].b
),
3132 Tp(data045
[i
].c
), Tp(data045
[i
].x
));
3133 const Tp f0
= data045
[i
].f0
;
3134 const Tp diff
= f
- f0
;
3135 if (std::abs(diff
) > max_abs_diff
)
3136 max_abs_diff
= std::abs(diff
);
3137 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3139 const Tp frac
= diff
/ f0
;
3140 if (std::abs(frac
) > max_abs_frac
)
3141 max_abs_frac
= std::abs(frac
);
3144 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3147 // Test data for a=0.50000000000000000, b=1.0000000000000000, c=2.0000000000000000.
3148 testcase_hyperg
<double> data046
[] = {
3149 { 0.84089972268671609, 0.50000000000000000, 1.0000000000000000,
3150 2.0000000000000000, -0.90000000000000002 },
3151 { 0.85410196624968437, 0.50000000000000000, 1.0000000000000000,
3152 2.0000000000000000, -0.80000000000000004 },
3153 { 0.86811566011579933, 0.50000000000000000, 1.0000000000000000,
3154 2.0000000000000000, -0.69999999999999996 },
3155 { 0.88303688022450544, 0.50000000000000000, 1.0000000000000000,
3156 2.0000000000000000, -0.59999999999999998 },
3157 { 0.89897948556635565, 0.50000000000000000, 1.0000000000000000,
3158 2.0000000000000000, -0.50000000000000000 },
3159 { 0.91607978309961580, 0.50000000000000000, 1.0000000000000000,
3160 2.0000000000000000, -0.40000000000000002 },
3161 { 0.93450283399425305, 0.50000000000000000, 1.0000000000000000,
3162 2.0000000000000000, -0.30000000000000004 },
3163 { 0.95445115010332193, 0.50000000000000000, 1.0000000000000000,
3164 2.0000000000000000, -0.19999999999999996 },
3165 { 0.97617696340303095, 0.50000000000000000, 1.0000000000000000,
3166 2.0000000000000000, -0.099999999999999978 },
3167 { 1.0000000000000000, 0.50000000000000000, 1.0000000000000000,
3168 2.0000000000000000, 0.0000000000000000 },
3169 { 1.0263340389897240, 0.50000000000000000, 1.0000000000000000,
3170 2.0000000000000000, 0.10000000000000009 },
3171 { 1.0557280900008410, 0.50000000000000000, 1.0000000000000000,
3172 2.0000000000000000, 0.19999999999999996 },
3173 { 1.0889331564394962, 0.50000000000000000, 1.0000000000000000,
3174 2.0000000000000000, 0.30000000000000004 },
3175 { 1.1270166537925830, 0.50000000000000000, 1.0000000000000000,
3176 2.0000000000000000, 0.39999999999999991 },
3177 { 1.1715728752538095, 0.50000000000000000, 1.0000000000000000,
3178 2.0000000000000000, 0.50000000000000000 },
3179 { 1.2251482265544145, 0.50000000000000000, 1.0000000000000000,
3180 2.0000000000000000, 0.60000000000000009 },
3181 { 1.2922212642709541, 0.50000000000000000, 1.0000000000000000,
3182 2.0000000000000000, 0.69999999999999996 },
3183 { 1.3819660112501042, 0.50000000000000000, 1.0000000000000000,
3184 2.0000000000000000, 0.80000000000000004 },
3185 { 1.5194938532959119, 0.50000000000000000, 1.0000000000000000,
3186 2.0000000000000000, 0.89999999999999991 },
3189 // Test function for a=0.50000000000000000, b=1.0000000000000000, c=2.0000000000000000.
3190 template <typename Tp
>
3193 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3194 Tp max_abs_diff
= -Tp(1);
3195 Tp max_abs_frac
= -Tp(1);
3196 unsigned int num_datum
= sizeof(data046
)
3197 / sizeof(testcase_hyperg
<double>);
3198 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3200 const Tp f
= std::tr1::hyperg(Tp(data046
[i
].a
), Tp(data046
[i
].b
),
3201 Tp(data046
[i
].c
), Tp(data046
[i
].x
));
3202 const Tp f0
= data046
[i
].f0
;
3203 const Tp diff
= f
- f0
;
3204 if (std::abs(diff
) > max_abs_diff
)
3205 max_abs_diff
= std::abs(diff
);
3206 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3208 const Tp frac
= diff
/ f0
;
3209 if (std::abs(frac
) > max_abs_frac
)
3210 max_abs_frac
= std::abs(frac
);
3213 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3216 // Test data for a=0.50000000000000000, b=1.0000000000000000, c=4.0000000000000000.
3217 testcase_hyperg
<double> data047
[] = {
3218 { 0.90992197313391499, 0.50000000000000000, 1.0000000000000000,
3219 4.0000000000000000, -0.90000000000000002 },
3220 { 0.91822592662244507, 0.50000000000000000, 1.0000000000000000,
3221 4.0000000000000000, -0.80000000000000004 },
3222 { 0.92687104566419531, 0.50000000000000000, 1.0000000000000000,
3223 4.0000000000000000, -0.69999999999999996 },
3224 { 0.93588628166548815, 0.50000000000000000, 1.0000000000000000,
3225 4.0000000000000000, -0.59999999999999998 },
3226 { 0.94530459215552909, 0.50000000000000000, 1.0000000000000000,
3227 4.0000000000000000, -0.50000000000000000 },
3228 { 0.95516374875247467, 0.50000000000000000, 1.0000000000000000,
3229 4.0000000000000000, -0.40000000000000002 },
3230 { 0.96550736800511827, 0.50000000000000000, 1.0000000000000000,
3231 4.0000000000000000, -0.30000000000000004 },
3232 { 0.97638624595136270, 0.50000000000000000, 1.0000000000000000,
3233 4.0000000000000000, -0.19999999999999996 },
3234 { 0.98786011482678993, 0.50000000000000000, 1.0000000000000000,
3235 4.0000000000000000, -0.099999999999999978 },
3236 { 1.0000000000000000, 0.50000000000000000, 1.0000000000000000,
3237 4.0000000000000000, 0.0000000000000000 },
3238 { 1.0128914530682316, 0.50000000000000000, 1.0000000000000000,
3239 4.0000000000000000, 0.10000000000000009 },
3240 { 1.0266391040215350, 0.50000000000000000, 1.0000000000000000,
3241 4.0000000000000000, 0.19999999999999996 },
3242 { 1.0413732738729464, 0.50000000000000000, 1.0000000000000000,
3243 4.0000000000000000, 0.30000000000000004 },
3244 { 1.0572599536532992, 0.50000000000000000, 1.0000000000000000,
3245 4.0000000000000000, 0.39999999999999991 },
3246 { 1.0745166004060953, 0.50000000000000000, 1.0000000000000000,
3247 4.0000000000000000, 0.50000000000000000 },
3248 { 1.0934387388831386, 0.50000000000000000, 1.0000000000000000,
3249 4.0000000000000000, 0.60000000000000009 },
3250 { 1.1144486980714641, 0.50000000000000000, 1.0000000000000000,
3251 4.0000000000000000, 0.69999999999999996 },
3252 { 1.1381966011250106, 0.50000000000000000, 1.0000000000000000,
3253 4.0000000000000000, 0.80000000000000004 },
3254 { 1.1658171625342397, 0.50000000000000000, 1.0000000000000000,
3255 4.0000000000000000, 0.89999999999999991 },
3258 // Test function for a=0.50000000000000000, b=1.0000000000000000, c=4.0000000000000000.
3259 template <typename Tp
>
3262 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3263 Tp max_abs_diff
= -Tp(1);
3264 Tp max_abs_frac
= -Tp(1);
3265 unsigned int num_datum
= sizeof(data047
)
3266 / sizeof(testcase_hyperg
<double>);
3267 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3269 const Tp f
= std::tr1::hyperg(Tp(data047
[i
].a
), Tp(data047
[i
].b
),
3270 Tp(data047
[i
].c
), Tp(data047
[i
].x
));
3271 const Tp f0
= data047
[i
].f0
;
3272 const Tp diff
= f
- f0
;
3273 if (std::abs(diff
) > max_abs_diff
)
3274 max_abs_diff
= std::abs(diff
);
3275 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3277 const Tp frac
= diff
/ f0
;
3278 if (std::abs(frac
) > max_abs_frac
)
3279 max_abs_frac
= std::abs(frac
);
3282 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3285 // Test data for a=0.50000000000000000, b=1.0000000000000000, c=6.0000000000000000.
3286 testcase_hyperg
<double> data048
[] = {
3287 { 0.93641908369732885, 0.50000000000000000, 1.0000000000000000,
3288 6.0000000000000000, -0.90000000000000002 },
3289 { 0.94256349654111315, 0.50000000000000000, 1.0000000000000000,
3290 6.0000000000000000, -0.80000000000000004 },
3291 { 0.94890138508461319, 0.50000000000000000, 1.0000000000000000,
3292 6.0000000000000000, -0.69999999999999996 },
3293 { 0.95544578858430007, 0.50000000000000000, 1.0000000000000000,
3294 6.0000000000000000, -0.59999999999999998 },
3295 { 0.96221121193620718, 0.50000000000000000, 1.0000000000000000,
3296 6.0000000000000000, -0.50000000000000000 },
3297 { 0.96921386948293542, 0.50000000000000000, 1.0000000000000000,
3298 6.0000000000000000, -0.40000000000000002 },
3299 { 0.97647198488394704, 0.50000000000000000, 1.0000000000000000,
3300 6.0000000000000000, -0.30000000000000004 },
3301 { 0.98400616412578656, 0.50000000000000000, 1.0000000000000000,
3302 6.0000000000000000, -0.19999999999999996 },
3303 { 0.99183986544963032, 0.50000000000000000, 1.0000000000000000,
3304 6.0000000000000000, -0.099999999999999978 },
3305 { 1.0000000000000000, 0.50000000000000000, 1.0000000000000000,
3306 6.0000000000000000, 0.0000000000000000 },
3307 { 1.0085177124149158, 0.50000000000000000, 1.0000000000000000,
3308 6.0000000000000000, 0.10000000000000009 },
3309 { 1.0174294150407122, 0.50000000000000000, 1.0000000000000000,
3310 6.0000000000000000, 0.19999999999999996 },
3311 { 1.0267781897388850, 0.50000000000000000, 1.0000000000000000,
3312 6.0000000000000000, 0.30000000000000004 },
3313 { 1.0366157405967285, 0.50000000000000000, 1.0000000000000000,
3314 6.0000000000000000, 0.39999999999999991 },
3315 { 1.0470052068648839, 0.50000000000000000, 1.0000000000000000,
3316 6.0000000000000000, 0.50000000000000000 },
3317 { 1.0580253905513313, 0.50000000000000000, 1.0000000000000000,
3318 6.0000000000000000, 0.60000000000000009 },
3319 { 1.0697774741209765, 0.50000000000000000, 1.0000000000000000,
3320 6.0000000000000000, 0.69999999999999996 },
3321 { 1.0823965556448414, 0.50000000000000000, 1.0000000000000000,
3322 6.0000000000000000, 0.80000000000000004 },
3323 { 1.0960739512057103, 0.50000000000000000, 1.0000000000000000,
3324 6.0000000000000000, 0.89999999999999991 },
3327 // Test function for a=0.50000000000000000, b=1.0000000000000000, c=6.0000000000000000.
3328 template <typename Tp
>
3331 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3332 Tp max_abs_diff
= -Tp(1);
3333 Tp max_abs_frac
= -Tp(1);
3334 unsigned int num_datum
= sizeof(data048
)
3335 / sizeof(testcase_hyperg
<double>);
3336 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3338 const Tp f
= std::tr1::hyperg(Tp(data048
[i
].a
), Tp(data048
[i
].b
),
3339 Tp(data048
[i
].c
), Tp(data048
[i
].x
));
3340 const Tp f0
= data048
[i
].f0
;
3341 const Tp diff
= f
- f0
;
3342 if (std::abs(diff
) > max_abs_diff
)
3343 max_abs_diff
= std::abs(diff
);
3344 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3346 const Tp frac
= diff
/ f0
;
3347 if (std::abs(frac
) > max_abs_frac
)
3348 max_abs_frac
= std::abs(frac
);
3351 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3354 // Test data for a=0.50000000000000000, b=1.0000000000000000, c=8.0000000000000000.
3355 testcase_hyperg
<double> data049
[] = {
3356 { 0.95069883346936235, 0.50000000000000000, 1.0000000000000000,
3357 8.0000000000000000, -0.90000000000000002 },
3358 { 0.95559618047704165, 0.50000000000000000, 1.0000000000000000,
3359 8.0000000000000000, -0.80000000000000004 },
3360 { 0.96061938755931653, 0.50000000000000000, 1.0000000000000000,
3361 8.0000000000000000, -0.69999999999999996 },
3362 { 0.96577553912851344, 0.50000000000000000, 1.0000000000000000,
3363 8.0000000000000000, -0.59999999999999998 },
3364 { 0.97107239473807716, 0.50000000000000000, 1.0000000000000000,
3365 8.0000000000000000, -0.50000000000000000 },
3366 { 0.97651848528588503, 0.50000000000000000, 1.0000000000000000,
3367 8.0000000000000000, -0.40000000000000002 },
3368 { 0.98212322830227139, 0.50000000000000000, 1.0000000000000000,
3369 8.0000000000000000, -0.30000000000000004 },
3370 { 0.98789706736195781, 0.50000000000000000, 1.0000000000000000,
3371 8.0000000000000000, -0.19999999999999996 },
3372 { 0.99385164237825074, 0.50000000000000000, 1.0000000000000000,
3373 8.0000000000000000, -0.099999999999999978 },
3374 { 1.0000000000000000, 0.50000000000000000, 1.0000000000000000,
3375 8.0000000000000000, 0.0000000000000000 },
3376 { 1.0063568569383123, 0.50000000000000000, 1.0000000000000000,
3377 8.0000000000000000, 0.10000000000000009 },
3378 { 1.0129389344715818, 0.50000000000000000, 1.0000000000000000,
3379 8.0000000000000000, 0.19999999999999996 },
3380 { 1.0197653907773940, 0.50000000000000000, 1.0000000000000000,
3381 8.0000000000000000, 0.30000000000000004 },
3382 { 1.0268583912277143, 0.50000000000000000, 1.0000000000000000,
3383 8.0000000000000000, 0.39999999999999991 },
3384 { 1.0342438793937092, 0.50000000000000000, 1.0000000000000000,
3385 8.0000000000000000, 0.50000000000000000 },
3386 { 1.0419526514766855, 0.50000000000000000, 1.0000000000000000,
3387 8.0000000000000000, 0.60000000000000009 },
3388 { 1.0500219124976327, 0.50000000000000000, 1.0000000000000000,
3389 8.0000000000000000, 0.69999999999999996 },
3390 { 1.0584976491907043, 0.50000000000000000, 1.0000000000000000,
3391 8.0000000000000000, 0.80000000000000004 },
3392 { 1.0674385240268101, 0.50000000000000000, 1.0000000000000000,
3393 8.0000000000000000, 0.89999999999999991 },
3396 // Test function for a=0.50000000000000000, b=1.0000000000000000, c=8.0000000000000000.
3397 template <typename Tp
>
3400 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3401 Tp max_abs_diff
= -Tp(1);
3402 Tp max_abs_frac
= -Tp(1);
3403 unsigned int num_datum
= sizeof(data049
)
3404 / sizeof(testcase_hyperg
<double>);
3405 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3407 const Tp f
= std::tr1::hyperg(Tp(data049
[i
].a
), Tp(data049
[i
].b
),
3408 Tp(data049
[i
].c
), Tp(data049
[i
].x
));
3409 const Tp f0
= data049
[i
].f0
;
3410 const Tp diff
= f
- f0
;
3411 if (std::abs(diff
) > max_abs_diff
)
3412 max_abs_diff
= std::abs(diff
);
3413 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3415 const Tp frac
= diff
/ f0
;
3416 if (std::abs(frac
) > max_abs_frac
)
3417 max_abs_frac
= std::abs(frac
);
3420 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3423 // Test data for a=0.50000000000000000, b=1.0000000000000000, c=10.000000000000000.
3424 testcase_hyperg
<double> data050
[] = {
3425 { 0.95968319138913893, 0.50000000000000000, 1.0000000000000000,
3426 10.000000000000000, -0.90000000000000002 },
3427 { 0.96376169072755768, 0.50000000000000000, 1.0000000000000000,
3428 10.000000000000000, -0.80000000000000004 },
3429 { 0.96792900082729316, 0.50000000000000000, 1.0000000000000000,
3430 10.000000000000000, -0.69999999999999996 },
3431 { 0.97218942798115737, 0.50000000000000000, 1.0000000000000000,
3432 10.000000000000000, -0.59999999999999998 },
3433 { 0.97654763592586857, 0.50000000000000000, 1.0000000000000000,
3434 10.000000000000000, -0.50000000000000000 },
3435 { 0.98100869054353856, 0.50000000000000000, 1.0000000000000000,
3436 10.000000000000000, -0.40000000000000002 },
3437 { 0.98557811238699278, 0.50000000000000000, 1.0000000000000000,
3438 10.000000000000000, -0.30000000000000004 },
3439 { 0.99026193885795544, 0.50000000000000000, 1.0000000000000000,
3440 10.000000000000000, -0.19999999999999996 },
3441 { 0.99506679842072221, 0.50000000000000000, 1.0000000000000000,
3442 10.000000000000000, -0.099999999999999978 },
3443 { 1.0000000000000000, 0.50000000000000000, 1.0000000000000000,
3444 10.000000000000000, 0.0000000000000000 },
3445 { 1.0050696417919618, 0.50000000000000000, 1.0000000000000000,
3446 10.000000000000000, 0.10000000000000009 },
3447 { 1.0102847452747090, 0.50000000000000000, 1.0000000000000000,
3448 10.000000000000000, 0.19999999999999996 },
3449 { 1.0156554225057022, 0.50000000000000000, 1.0000000000000000,
3450 10.000000000000000, 0.30000000000000004 },
3451 { 1.0211930882963096, 0.50000000000000000, 1.0000000000000000,
3452 10.000000000000000, 0.39999999999999991 },
3453 { 1.0269107343740711, 0.50000000000000000, 1.0000000000000000,
3454 10.000000000000000, 0.50000000000000000 },
3455 { 1.0328232917216298, 0.50000000000000000, 1.0000000000000000,
3456 10.000000000000000, 0.60000000000000009 },
3457 { 1.0389481230247195, 0.50000000000000000, 1.0000000000000000,
3458 10.000000000000000, 0.69999999999999996 },
3459 { 1.0453057164134614, 0.50000000000000000, 1.0000000000000000,
3460 10.000000000000000, 0.80000000000000004 },
3461 { 1.0519207114461246, 0.50000000000000000, 1.0000000000000000,
3462 10.000000000000000, 0.89999999999999991 },
3465 // Test function for a=0.50000000000000000, b=1.0000000000000000, c=10.000000000000000.
3466 template <typename Tp
>
3469 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3470 Tp max_abs_diff
= -Tp(1);
3471 Tp max_abs_frac
= -Tp(1);
3472 unsigned int num_datum
= sizeof(data050
)
3473 / sizeof(testcase_hyperg
<double>);
3474 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3476 const Tp f
= std::tr1::hyperg(Tp(data050
[i
].a
), Tp(data050
[i
].b
),
3477 Tp(data050
[i
].c
), Tp(data050
[i
].x
));
3478 const Tp f0
= data050
[i
].f0
;
3479 const Tp diff
= f
- f0
;
3480 if (std::abs(diff
) > max_abs_diff
)
3481 max_abs_diff
= std::abs(diff
);
3482 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3484 const Tp frac
= diff
/ f0
;
3485 if (std::abs(frac
) > max_abs_frac
)
3486 max_abs_frac
= std::abs(frac
);
3489 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3492 // Test data for a=0.50000000000000000, b=2.0000000000000000, c=2.0000000000000000.
3493 testcase_hyperg
<double> data051
[] = {
3494 { 0.72547625011001171, 0.50000000000000000, 2.0000000000000000,
3495 2.0000000000000000, -0.90000000000000002 },
3496 { 0.74535599249992990, 0.50000000000000000, 2.0000000000000000,
3497 2.0000000000000000, -0.80000000000000004 },
3498 { 0.76696498884737041, 0.50000000000000000, 2.0000000000000000,
3499 2.0000000000000000, -0.69999999999999996 },
3500 { 0.79056941504209477, 0.50000000000000000, 2.0000000000000000,
3501 2.0000000000000000, -0.59999999999999998 },
3502 { 0.81649658092772603, 0.50000000000000000, 2.0000000000000000,
3503 2.0000000000000000, -0.50000000000000000 },
3504 { 0.84515425472851657, 0.50000000000000000, 2.0000000000000000,
3505 2.0000000000000000, -0.40000000000000002 },
3506 { 0.87705801930702920, 0.50000000000000000, 2.0000000000000000,
3507 2.0000000000000000, -0.30000000000000004 },
3508 { 0.91287092917527690, 0.50000000000000000, 2.0000000000000000,
3509 2.0000000000000000, -0.19999999999999996 },
3510 { 0.95346258924559224, 0.50000000000000000, 2.0000000000000000,
3511 2.0000000000000000, -0.099999999999999978 },
3512 { 1.0000000000000000, 0.50000000000000000, 2.0000000000000000,
3513 2.0000000000000000, 0.0000000000000000 },
3514 { 1.0540925533894598, 0.50000000000000000, 2.0000000000000000,
3515 2.0000000000000000, 0.10000000000000009 },
3516 { 1.1180339887498949, 0.50000000000000000, 2.0000000000000000,
3517 2.0000000000000000, 0.19999999999999996 },
3518 { 1.1952286093343938, 0.50000000000000000, 2.0000000000000000,
3519 2.0000000000000000, 0.30000000000000004 },
3520 { 1.2909944487358056, 0.50000000000000000, 2.0000000000000000,
3521 2.0000000000000000, 0.39999999999999991 },
3522 { 1.4142135623730949, 0.50000000000000000, 2.0000000000000000,
3523 2.0000000000000000, 0.50000000000000000 },
3524 { 1.5811388300841900, 0.50000000000000000, 2.0000000000000000,
3525 2.0000000000000000, 0.60000000000000009 },
3526 { 1.8257418583505536, 0.50000000000000000, 2.0000000000000000,
3527 2.0000000000000000, 0.69999999999999996 },
3528 { 2.2360679774997898, 0.50000000000000000, 2.0000000000000000,
3529 2.0000000000000000, 0.80000000000000004 },
3530 { 3.1622776601683782, 0.50000000000000000, 2.0000000000000000,
3531 2.0000000000000000, 0.89999999999999991 },
3534 // Test function for a=0.50000000000000000, b=2.0000000000000000, c=2.0000000000000000.
3535 template <typename Tp
>
3538 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3539 Tp max_abs_diff
= -Tp(1);
3540 Tp max_abs_frac
= -Tp(1);
3541 unsigned int num_datum
= sizeof(data051
)
3542 / sizeof(testcase_hyperg
<double>);
3543 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3545 const Tp f
= std::tr1::hyperg(Tp(data051
[i
].a
), Tp(data051
[i
].b
),
3546 Tp(data051
[i
].c
), Tp(data051
[i
].x
));
3547 const Tp f0
= data051
[i
].f0
;
3548 const Tp diff
= f
- f0
;
3549 if (std::abs(diff
) > max_abs_diff
)
3550 max_abs_diff
= std::abs(diff
);
3551 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3553 const Tp frac
= diff
/ f0
;
3554 if (std::abs(frac
) > max_abs_frac
)
3555 max_abs_frac
= std::abs(frac
);
3558 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3561 // Test data for a=0.50000000000000000, b=2.0000000000000000, c=4.0000000000000000.
3562 testcase_hyperg
<double> data052
[] = {
3563 { 0.83664260086443798, 0.50000000000000000, 2.0000000000000000,
3564 4.0000000000000000, -0.90000000000000002 },
3565 { 0.85046584300227146, 0.50000000000000000, 2.0000000000000000,
3566 4.0000000000000000, -0.80000000000000004 },
3567 { 0.86509574979651593, 0.50000000000000000, 2.0000000000000000,
3568 4.0000000000000000, -0.69999999999999996 },
3569 { 0.88062082573041867, 0.50000000000000000, 2.0000000000000000,
3570 4.0000000000000000, -0.59999999999999998 },
3571 { 0.89714464248521586, 0.50000000000000000, 2.0000000000000000,
3572 4.0000000000000000, -0.50000000000000000 },
3573 { 0.91478946588967558, 0.50000000000000000, 2.0000000000000000,
3574 4.0000000000000000, -0.40000000000000002 },
3575 { 0.93370105322348573, 0.50000000000000000, 2.0000000000000000,
3576 4.0000000000000000, -0.30000000000000004 },
3577 { 0.95405511057700887, 0.50000000000000000, 2.0000000000000000,
3578 4.0000000000000000, -0.19999999999999996 },
3579 { 0.97606616007978142, 0.50000000000000000, 2.0000000000000000,
3580 4.0000000000000000, -0.099999999999999978 },
3581 { 1.0000000000000000, 0.50000000000000000, 2.0000000000000000,
3582 4.0000000000000000, 0.0000000000000000 },
3583 { 1.0261916902334731, 0.50000000000000000, 2.0000000000000000,
3584 4.0000000000000000, 0.10000000000000009 },
3585 { 1.0550723519434702, 0.50000000000000000, 2.0000000000000000,
3586 4.0000000000000000, 0.19999999999999996 },
3587 { 1.0872106588188091, 0.50000000000000000, 2.0000000000000000,
3588 4.0000000000000000, 0.30000000000000004 },
3589 { 1.1233801699379020, 0.50000000000000000, 2.0000000000000000,
3590 4.0000000000000000, 0.39999999999999991 },
3591 { 1.1646752981725688, 0.50000000000000000, 2.0000000000000000,
3592 4.0000000000000000, 0.50000000000000000 },
3593 { 1.2127272514219511, 0.50000000000000000, 2.0000000000000000,
3594 4.0000000000000000, 0.60000000000000009 },
3595 { 1.2701518651068637, 0.50000000000000000, 2.0000000000000000,
3596 4.0000000000000000, 0.69999999999999996 },
3597 { 1.3416407864998725, 0.50000000000000000, 2.0000000000000000,
3598 4.0000000000000000, 0.80000000000000004 },
3599 { 1.4374795179111102, 0.50000000000000000, 2.0000000000000000,
3600 4.0000000000000000, 0.89999999999999991 },
3603 // Test function for a=0.50000000000000000, b=2.0000000000000000, c=4.0000000000000000.
3604 template <typename Tp
>
3607 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3608 Tp max_abs_diff
= -Tp(1);
3609 Tp max_abs_frac
= -Tp(1);
3610 unsigned int num_datum
= sizeof(data052
)
3611 / sizeof(testcase_hyperg
<double>);
3612 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3614 const Tp f
= std::tr1::hyperg(Tp(data052
[i
].a
), Tp(data052
[i
].b
),
3615 Tp(data052
[i
].c
), Tp(data052
[i
].x
));
3616 const Tp f0
= data052
[i
].f0
;
3617 const Tp diff
= f
- f0
;
3618 if (std::abs(diff
) > max_abs_diff
)
3619 max_abs_diff
= std::abs(diff
);
3620 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3622 const Tp frac
= diff
/ f0
;
3623 if (std::abs(frac
) > max_abs_frac
)
3624 max_abs_frac
= std::abs(frac
);
3627 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3630 // Test data for a=0.50000000000000000, b=2.0000000000000000, c=6.0000000000000000.
3631 testcase_hyperg
<double> data053
[] = {
3632 { 0.88195381730235833, 0.50000000000000000, 2.0000000000000000,
3633 6.0000000000000000, -0.90000000000000002 },
3634 { 0.89265078469555093, 0.50000000000000000, 2.0000000000000000,
3635 6.0000000000000000, -0.80000000000000004 },
3636 { 0.90382937908303707, 0.50000000000000000, 2.0000000000000000,
3637 6.0000000000000000, -0.69999999999999996 },
3638 { 0.91553161389880577, 0.50000000000000000, 2.0000000000000000,
3639 6.0000000000000000, -0.59999999999999998 },
3640 { 0.92780530349281576, 0.50000000000000000, 2.0000000000000000,
3641 6.0000000000000000, -0.50000000000000000 },
3642 { 0.94070521140346042, 0.50000000000000000, 2.0000000000000000,
3643 6.0000000000000000, -0.40000000000000002 },
3644 { 0.95429450630523349, 0.50000000000000000, 2.0000000000000000,
3645 6.0000000000000000, -0.30000000000000004 },
3646 { 0.96864663325785849, 0.50000000000000000, 2.0000000000000000,
3647 6.0000000000000000, -0.19999999999999996 },
3648 { 0.98384775588541795, 0.50000000000000000, 2.0000000000000000,
3649 6.0000000000000000, -0.099999999999999978 },
3650 { 1.0000000000000000, 0.50000000000000000, 2.0000000000000000,
3651 6.0000000000000000, 0.0000000000000000 },
3652 { 1.0172258496884334, 0.50000000000000000, 2.0000000000000000,
3653 6.0000000000000000, 0.10000000000000009 },
3654 { 1.0356742479163459, 0.50000000000000000, 2.0000000000000000,
3655 6.0000000000000000, 0.19999999999999996 },
3656 { 1.0555293036908924, 0.50000000000000000, 2.0000000000000000,
3657 6.0000000000000000, 0.30000000000000004 },
3658 { 1.0770231491562379, 0.50000000000000000, 2.0000000000000000,
3659 6.0000000000000000, 0.39999999999999991 },
3660 { 1.1004557416484888, 0.50000000000000000, 2.0000000000000000,
3661 6.0000000000000000, 0.50000000000000000 },
3662 { 1.1262270515731978, 0.50000000000000000, 2.0000000000000000,
3663 6.0000000000000000, 0.60000000000000009 },
3664 { 1.1548932919125086, 0.50000000000000000, 2.0000000000000000,
3665 6.0000000000000000, 0.69999999999999996 },
3666 { 1.1872757758134724, 0.50000000000000000, 2.0000000000000000,
3667 6.0000000000000000, 0.80000000000000004 },
3668 { 1.2247091713458949, 0.50000000000000000, 2.0000000000000000,
3669 6.0000000000000000, 0.89999999999999991 },
3672 // Test function for a=0.50000000000000000, b=2.0000000000000000, c=6.0000000000000000.
3673 template <typename Tp
>
3676 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3677 Tp max_abs_diff
= -Tp(1);
3678 Tp max_abs_frac
= -Tp(1);
3679 unsigned int num_datum
= sizeof(data053
)
3680 / sizeof(testcase_hyperg
<double>);
3681 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3683 const Tp f
= std::tr1::hyperg(Tp(data053
[i
].a
), Tp(data053
[i
].b
),
3684 Tp(data053
[i
].c
), Tp(data053
[i
].x
));
3685 const Tp f0
= data053
[i
].f0
;
3686 const Tp diff
= f
- f0
;
3687 if (std::abs(diff
) > max_abs_diff
)
3688 max_abs_diff
= std::abs(diff
);
3689 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3691 const Tp frac
= diff
/ f0
;
3692 if (std::abs(frac
) > max_abs_frac
)
3693 max_abs_frac
= std::abs(frac
);
3696 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3699 // Test data for a=0.50000000000000000, b=2.0000000000000000, c=8.0000000000000000.
3700 testcase_hyperg
<double> data054
[] = {
3701 { 0.90716919697107301, 0.50000000000000000, 2.0000000000000000,
3702 8.0000000000000000, -0.90000000000000002 },
3703 { 0.91592299407142519, 0.50000000000000000, 2.0000000000000000,
3704 8.0000000000000000, -0.80000000000000004 },
3705 { 0.92500027075874236, 0.50000000000000000, 2.0000000000000000,
3706 8.0000000000000000, -0.69999999999999996 },
3707 { 0.93442464185467167, 0.50000000000000000, 2.0000000000000000,
3708 8.0000000000000000, -0.59999999999999998 },
3709 { 0.94422248683737009, 0.50000000000000000, 2.0000000000000000,
3710 8.0000000000000000, -0.50000000000000000 },
3711 { 0.95442341810133347, 0.50000000000000000, 2.0000000000000000,
3712 8.0000000000000000, -0.40000000000000002 },
3713 { 0.96506085725516400, 0.50000000000000000, 2.0000000000000000,
3714 8.0000000000000000, -0.30000000000000004 },
3715 { 0.97617275213704069, 0.50000000000000000, 2.0000000000000000,
3716 8.0000000000000000, -0.19999999999999996 },
3717 { 0.98780247986309799, 0.50000000000000000, 2.0000000000000000,
3718 8.0000000000000000, -0.099999999999999978 },
3719 { 1.0000000000000000, 0.50000000000000000, 2.0000000000000000,
3720 8.0000000000000000, 0.0000000000000000 },
3721 { 1.0128233505813447, 0.50000000000000000, 2.0000000000000000,
3722 8.0000000000000000, 0.10000000000000009 },
3723 { 1.0263406246541855, 0.50000000000000000, 2.0000000000000000,
3724 8.0000000000000000, 0.19999999999999996 },
3725 { 1.0406326381700366, 0.50000000000000000, 2.0000000000000000,
3726 8.0000000000000000, 0.30000000000000004 },
3727 { 1.0557966239802845, 0.50000000000000000, 2.0000000000000000,
3728 8.0000000000000000, 0.39999999999999991 },
3729 { 1.0719515075786321, 0.50000000000000000, 2.0000000000000000,
3730 8.0000000000000000, 0.50000000000000000 },
3731 { 1.0892457392422055, 0.50000000000000000, 2.0000000000000000,
3732 8.0000000000000000, 0.60000000000000009 },
3733 { 1.1078695188000958, 0.50000000000000000, 2.0000000000000000,
3734 8.0000000000000000, 0.69999999999999996 },
3735 { 1.1280752258974340, 0.50000000000000000, 2.0000000000000000,
3736 8.0000000000000000, 0.80000000000000004 },
3737 { 1.1502152002706476, 0.50000000000000000, 2.0000000000000000,
3738 8.0000000000000000, 0.89999999999999991 },
3741 // Test function for a=0.50000000000000000, b=2.0000000000000000, c=8.0000000000000000.
3742 template <typename Tp
>
3745 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3746 Tp max_abs_diff
= -Tp(1);
3747 Tp max_abs_frac
= -Tp(1);
3748 unsigned int num_datum
= sizeof(data054
)
3749 / sizeof(testcase_hyperg
<double>);
3750 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3752 const Tp f
= std::tr1::hyperg(Tp(data054
[i
].a
), Tp(data054
[i
].b
),
3753 Tp(data054
[i
].c
), Tp(data054
[i
].x
));
3754 const Tp f0
= data054
[i
].f0
;
3755 const Tp diff
= f
- f0
;
3756 if (std::abs(diff
) > max_abs_diff
)
3757 max_abs_diff
= std::abs(diff
);
3758 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3760 const Tp frac
= diff
/ f0
;
3761 if (std::abs(frac
) > max_abs_frac
)
3762 max_abs_frac
= std::abs(frac
);
3765 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3768 // Test data for a=0.50000000000000000, b=2.0000000000000000, c=10.000000000000000.
3769 testcase_hyperg
<double> data055
[] = {
3770 { 0.92336416053263093, 0.50000000000000000, 2.0000000000000000,
3771 10.000000000000000, -0.90000000000000002 },
3772 { 0.93078397248364519, 0.50000000000000000, 2.0000000000000000,
3773 10.000000000000000, -0.80000000000000004 },
3774 { 0.93843714333600226, 0.50000000000000000, 2.0000000000000000,
3775 10.000000000000000, -0.69999999999999996 },
3776 { 0.94633837784068076, 0.50000000000000000, 2.0000000000000000,
3777 10.000000000000000, -0.59999999999999998 },
3778 { 0.95450388104967909, 0.50000000000000000, 2.0000000000000000,
3779 10.000000000000000, -0.50000000000000000 },
3780 { 0.96295158125742764, 0.50000000000000000, 2.0000000000000000,
3781 10.000000000000000, -0.40000000000000002 },
3782 { 0.97170139827854296, 0.50000000000000000, 2.0000000000000000,
3783 10.000000000000000, -0.30000000000000004 },
3784 { 0.98077556918512687, 0.50000000000000000, 2.0000000000000000,
3785 10.000000000000000, -0.19999999999999996 },
3786 { 0.99019904777750845, 0.50000000000000000, 2.0000000000000000,
3787 10.000000000000000, -0.099999999999999978 },
3788 { 1.0000000000000000, 0.50000000000000000, 2.0000000000000000,
3789 10.000000000000000, 0.0000000000000000 },
3790 { 1.0102104261941198, 0.50000000000000000, 2.0000000000000000,
3791 10.000000000000000, 0.10000000000000009 },
3792 { 1.0208669540935695, 0.50000000000000000, 2.0000000000000000,
3793 10.000000000000000, 0.19999999999999996 },
3794 { 1.0320118665407505, 0.50000000000000000, 2.0000000000000000,
3795 10.000000000000000, 0.30000000000000004 },
3796 { 1.0436944599504387, 0.50000000000000000, 2.0000000000000000,
3797 10.000000000000000, 0.39999999999999991 },
3798 { 1.0559728828278145, 0.50000000000000000, 2.0000000000000000,
3799 10.000000000000000, 0.50000000000000000 },
3800 { 1.0689166967761712, 0.50000000000000000, 2.0000000000000000,
3801 10.000000000000000, 0.60000000000000009 },
3802 { 1.0826105758119842, 0.50000000000000000, 2.0000000000000000,
3803 10.000000000000000, 0.69999999999999996 },
3804 { 1.0971599106346146, 0.50000000000000000, 2.0000000000000000,
3805 10.000000000000000, 0.80000000000000004 },
3806 { 1.1126998828023964, 0.50000000000000000, 2.0000000000000000,
3807 10.000000000000000, 0.89999999999999991 },
3810 // Test function for a=0.50000000000000000, b=2.0000000000000000, c=10.000000000000000.
3811 template <typename Tp
>
3814 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3815 Tp max_abs_diff
= -Tp(1);
3816 Tp max_abs_frac
= -Tp(1);
3817 unsigned int num_datum
= sizeof(data055
)
3818 / sizeof(testcase_hyperg
<double>);
3819 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3821 const Tp f
= std::tr1::hyperg(Tp(data055
[i
].a
), Tp(data055
[i
].b
),
3822 Tp(data055
[i
].c
), Tp(data055
[i
].x
));
3823 const Tp f0
= data055
[i
].f0
;
3824 const Tp diff
= f
- f0
;
3825 if (std::abs(diff
) > max_abs_diff
)
3826 max_abs_diff
= std::abs(diff
);
3827 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3829 const Tp frac
= diff
/ f0
;
3830 if (std::abs(frac
) > max_abs_frac
)
3831 max_abs_frac
= std::abs(frac
);
3834 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3837 // Test data for a=0.50000000000000000, b=5.0000000000000000, c=2.0000000000000000.
3838 testcase_hyperg
<double> data056
[] = {
3839 { 0.52275983209457511, 0.50000000000000000, 5.0000000000000000,
3840 2.0000000000000000, -0.90000000000000002 },
3841 { 0.54700336898142965, 0.50000000000000000, 5.0000000000000000,
3842 2.0000000000000000, -0.80000000000000004 },
3843 { 0.57468955512601971, 0.50000000000000000, 5.0000000000000000,
3844 2.0000000000000000, -0.69999999999999996 },
3845 { 0.60665490543315015, 0.50000000000000000, 5.0000000000000000,
3846 2.0000000000000000, -0.59999999999999998 },
3847 { 0.64403057859056123, 0.50000000000000000, 5.0000000000000000,
3848 2.0000000000000000, -0.50000000000000000 },
3849 { 0.68838183648623719, 0.50000000000000000, 5.0000000000000000,
3850 2.0000000000000000, -0.40000000000000002 },
3851 { 0.74193265039311085, 0.50000000000000000, 5.0000000000000000,
3852 2.0000000000000000, -0.30000000000000004 },
3853 { 0.80794095908995300, 0.50000000000000000, 5.0000000000000000,
3854 2.0000000000000000, -0.19999999999999996 },
3855 { 0.89135275749639320, 0.50000000000000000, 5.0000000000000000,
3856 2.0000000000000000, -0.099999999999999978 },
3857 { 1.0000000000000000, 0.50000000000000000, 5.0000000000000000,
3858 2.0000000000000000, 0.0000000000000000 },
3859 { 1.1469266219310688, 0.50000000000000000, 5.0000000000000000,
3860 2.0000000000000000, 0.10000000000000009 },
3861 { 1.3552340708357489, 0.50000000000000000, 5.0000000000000000,
3862 2.0000000000000000, 0.19999999999999996 },
3863 { 1.6690840478838305, 0.50000000000000000, 5.0000000000000000,
3864 2.0000000000000000, 0.30000000000000004 },
3865 { 2.1815415453174483, 0.50000000000000000, 5.0000000000000000,
3866 2.0000000000000000, 0.39999999999999991 },
3867 { 3.1156892546032235, 0.50000000000000000, 5.0000000000000000,
3868 2.0000000000000000, 0.50000000000000000 },
3869 { 5.1109077417760416, 0.50000000000000000, 5.0000000000000000,
3870 2.0000000000000000, 0.60000000000000009 },
3871 { 10.560352936466296, 0.50000000000000000, 5.0000000000000000,
3872 2.0000000000000000, 0.69999999999999996 },
3873 { 33.541019662496815, 0.50000000000000000, 5.0000000000000000,
3874 2.0000000000000000, 0.80000000000000004 },
3875 { 300.66343065819501, 0.50000000000000000, 5.0000000000000000,
3876 2.0000000000000000, 0.89999999999999991 },
3879 // Test function for a=0.50000000000000000, b=5.0000000000000000, c=2.0000000000000000.
3880 template <typename Tp
>
3883 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3884 Tp max_abs_diff
= -Tp(1);
3885 Tp max_abs_frac
= -Tp(1);
3886 unsigned int num_datum
= sizeof(data056
)
3887 / sizeof(testcase_hyperg
<double>);
3888 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3890 const Tp f
= std::tr1::hyperg(Tp(data056
[i
].a
), Tp(data056
[i
].b
),
3891 Tp(data056
[i
].c
), Tp(data056
[i
].x
));
3892 const Tp f0
= data056
[i
].f0
;
3893 const Tp diff
= f
- f0
;
3894 if (std::abs(diff
) > max_abs_diff
)
3895 max_abs_diff
= std::abs(diff
);
3896 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3898 const Tp frac
= diff
/ f0
;
3899 if (std::abs(frac
) > max_abs_frac
)
3900 max_abs_frac
= std::abs(frac
);
3903 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3906 // Test data for a=0.50000000000000000, b=5.0000000000000000, c=4.0000000000000000.
3907 testcase_hyperg
<double> data057
[] = {
3908 { 0.68252041951139264, 0.50000000000000000, 5.0000000000000000,
3909 4.0000000000000000, -0.90000000000000002 },
3910 { 0.70394732624993395, 0.50000000000000000, 5.0000000000000000,
3911 4.0000000000000000, -0.80000000000000004 },
3912 { 0.72748884971552041, 0.50000000000000000, 5.0000000000000000,
3913 4.0000000000000000, -0.69999999999999996 },
3914 { 0.75351147371199689, 0.50000000000000000, 5.0000000000000000,
3915 4.0000000000000000, -0.59999999999999998 },
3916 { 0.78247589005573748, 0.50000000000000000, 5.0000000000000000,
3917 4.0000000000000000, -0.50000000000000000 },
3918 { 0.81497017420249818, 0.50000000000000000, 5.0000000000000000,
3919 4.0000000000000000, -0.40000000000000002 },
3920 { 0.85175826875009564, 0.50000000000000000, 5.0000000000000000,
3921 4.0000000000000000, -0.30000000000000004 },
3922 { 0.89385278481745867, 0.50000000000000000, 5.0000000000000000,
3923 4.0000000000000000, -0.19999999999999996 },
3924 { 0.94262778709507411, 0.50000000000000000, 5.0000000000000000,
3925 4.0000000000000000, -0.099999999999999978 },
3926 { 1.0000000000000000, 0.50000000000000000, 5.0000000000000000,
3927 4.0000000000000000, 0.0000000000000000 },
3928 { 1.0687327277420910, 0.50000000000000000, 5.0000000000000000,
3929 4.0000000000000000, 0.10000000000000009 },
3930 { 1.1529725508983291, 0.50000000000000000, 5.0000000000000000,
3931 4.0000000000000000, 0.19999999999999996 },
3932 { 1.2592587134058799, 0.50000000000000000, 5.0000000000000000,
3933 4.0000000000000000, 0.30000000000000004 },
3934 { 1.3985773194637892, 0.50000000000000000, 5.0000000000000000,
3935 4.0000000000000000, 0.39999999999999991 },
3936 { 1.5909902576697317, 0.50000000000000000, 5.0000000000000000,
3937 4.0000000000000000, 0.50000000000000000 },
3938 { 1.8776023607249752, 0.50000000000000000, 5.0000000000000000,
3939 4.0000000000000000, 0.60000000000000009 },
3940 { 2.3582499003694646, 0.50000000000000000, 5.0000000000000000,
3941 4.0000000000000000, 0.69999999999999996 },
3942 { 3.3541019662496838, 0.50000000000000000, 5.0000000000000000,
3943 4.0000000000000000, 0.80000000000000004 },
3944 { 6.7198400278577859, 0.50000000000000000, 5.0000000000000000,
3945 4.0000000000000000, 0.89999999999999991 },
3948 // Test function for a=0.50000000000000000, b=5.0000000000000000, c=4.0000000000000000.
3949 template <typename Tp
>
3952 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
3953 Tp max_abs_diff
= -Tp(1);
3954 Tp max_abs_frac
= -Tp(1);
3955 unsigned int num_datum
= sizeof(data057
)
3956 / sizeof(testcase_hyperg
<double>);
3957 for (unsigned int i
= 0; i
< num_datum
; ++i
)
3959 const Tp f
= std::tr1::hyperg(Tp(data057
[i
].a
), Tp(data057
[i
].b
),
3960 Tp(data057
[i
].c
), Tp(data057
[i
].x
));
3961 const Tp f0
= data057
[i
].f0
;
3962 const Tp diff
= f
- f0
;
3963 if (std::abs(diff
) > max_abs_diff
)
3964 max_abs_diff
= std::abs(diff
);
3965 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
3967 const Tp frac
= diff
/ f0
;
3968 if (std::abs(frac
) > max_abs_frac
)
3969 max_abs_frac
= std::abs(frac
);
3972 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
3975 // Test data for a=0.50000000000000000, b=5.0000000000000000, c=6.0000000000000000.
3976 testcase_hyperg
<double> data058
[] = {
3977 { 0.75755211927082589, 0.50000000000000000, 5.0000000000000000,
3978 6.0000000000000000, -0.90000000000000002 },
3979 { 0.77603550233010998, 0.50000000000000000, 5.0000000000000000,
3980 6.0000000000000000, -0.80000000000000004 },
3981 { 0.79596241913438492, 0.50000000000000000, 5.0000000000000000,
3982 6.0000000000000000, -0.69999999999999996 },
3983 { 0.81753360792105201, 0.50000000000000000, 5.0000000000000000,
3984 6.0000000000000000, -0.59999999999999998 },
3985 { 0.84099165409805521, 0.50000000000000000, 5.0000000000000000,
3986 6.0000000000000000, -0.50000000000000000 },
3987 { 0.86663303852180873, 0.50000000000000000, 5.0000000000000000,
3988 6.0000000000000000, -0.40000000000000002 },
3989 { 0.89482475828629970, 0.50000000000000000, 5.0000000000000000,
3990 6.0000000000000000, -0.30000000000000004 },
3991 { 0.92602774279590350, 0.50000000000000000, 5.0000000000000000,
3992 6.0000000000000000, -0.19999999999999996 },
3993 { 0.96083064727087386, 0.50000000000000000, 5.0000000000000000,
3994 6.0000000000000000, -0.099999999999999978 },
3995 { 1.0000000000000000, 0.50000000000000000, 5.0000000000000000,
3996 6.0000000000000000, 0.0000000000000000 },
3997 { 1.0445570841313008, 0.50000000000000000, 5.0000000000000000,
3998 6.0000000000000000, 0.10000000000000009 },
3999 { 1.0959004638926031, 0.50000000000000000, 5.0000000000000000,
4000 6.0000000000000000, 0.19999999999999996 },
4001 { 1.1560106261370562, 0.50000000000000000, 5.0000000000000000,
4002 6.0000000000000000, 0.30000000000000004 },
4003 { 1.2278121770678145, 0.50000000000000000, 5.0000000000000000,
4004 6.0000000000000000, 0.39999999999999991 },
4005 { 1.3158640214709998, 0.50000000000000000, 5.0000000000000000,
4006 6.0000000000000000, 0.50000000000000000 },
4007 { 1.4278095344155000, 0.50000000000000000, 5.0000000000000000,
4008 6.0000000000000000, 0.60000000000000009 },
4009 { 1.5778700502946612, 0.50000000000000000, 5.0000000000000000,
4010 6.0000000000000000, 0.69999999999999996 },
4011 { 1.7972173289196469, 0.50000000000000000, 5.0000000000000000,
4012 6.0000000000000000, 0.80000000000000004 },
4013 { 2.1789970569269732, 0.50000000000000000, 5.0000000000000000,
4014 6.0000000000000000, 0.89999999999999991 },
4017 // Test function for a=0.50000000000000000, b=5.0000000000000000, c=6.0000000000000000.
4018 template <typename Tp
>
4021 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4022 Tp max_abs_diff
= -Tp(1);
4023 Tp max_abs_frac
= -Tp(1);
4024 unsigned int num_datum
= sizeof(data058
)
4025 / sizeof(testcase_hyperg
<double>);
4026 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4028 const Tp f
= std::tr1::hyperg(Tp(data058
[i
].a
), Tp(data058
[i
].b
),
4029 Tp(data058
[i
].c
), Tp(data058
[i
].x
));
4030 const Tp f0
= data058
[i
].f0
;
4031 const Tp diff
= f
- f0
;
4032 if (std::abs(diff
) > max_abs_diff
)
4033 max_abs_diff
= std::abs(diff
);
4034 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4036 const Tp frac
= diff
/ f0
;
4037 if (std::abs(frac
) > max_abs_frac
)
4038 max_abs_frac
= std::abs(frac
);
4041 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4044 // Test data for a=0.50000000000000000, b=5.0000000000000000, c=8.0000000000000000.
4045 testcase_hyperg
<double> data059
[] = {
4046 { 0.80270093579329471, 0.50000000000000000, 5.0000000000000000,
4047 8.0000000000000000, -0.90000000000000002 },
4048 { 0.81884974572462788, 0.50000000000000000, 5.0000000000000000,
4049 8.0000000000000000, -0.80000000000000004 },
4050 { 0.83605266330015271, 0.50000000000000000, 5.0000000000000000,
4051 8.0000000000000000, -0.69999999999999996 },
4052 { 0.85443340762795972, 0.50000000000000000, 5.0000000000000000,
4053 8.0000000000000000, -0.59999999999999998 },
4054 { 0.87413762182790655, 0.50000000000000000, 5.0000000000000000,
4055 8.0000000000000000, -0.50000000000000000 },
4056 { 0.89533826626907331, 0.50000000000000000, 5.0000000000000000,
4057 8.0000000000000000, -0.40000000000000002 },
4058 { 0.91824276674115268, 0.50000000000000000, 5.0000000000000000,
4059 8.0000000000000000, -0.30000000000000004 },
4060 { 0.94310265050720576, 0.50000000000000000, 5.0000000000000000,
4061 8.0000000000000000, -0.19999999999999996 },
4062 { 0.97022678857609712, 0.50000000000000000, 5.0000000000000000,
4063 8.0000000000000000, -0.099999999999999978 },
4064 { 1.0000000000000000, 0.50000000000000000, 5.0000000000000000,
4065 8.0000000000000000, 0.0000000000000000 },
4066 { 1.0329098673199812, 0.50000000000000000, 5.0000000000000000,
4067 8.0000000000000000, 0.10000000000000009 },
4068 { 1.0695865684573389, 0.50000000000000000, 5.0000000000000000,
4069 8.0000000000000000, 0.19999999999999996 },
4070 { 1.1108642103944570, 0.50000000000000000, 5.0000000000000000,
4071 8.0000000000000000, 0.30000000000000004 },
4072 { 1.1578795055970506, 0.50000000000000000, 5.0000000000000000,
4073 8.0000000000000000, 0.39999999999999991 },
4074 { 1.2122394794169442, 0.50000000000000000, 5.0000000000000000,
4075 8.0000000000000000, 0.50000000000000000 },
4076 { 1.2763274721556934, 0.50000000000000000, 5.0000000000000000,
4077 8.0000000000000000, 0.60000000000000009 },
4078 { 1.3539179650251021, 0.50000000000000000, 5.0000000000000000,
4079 8.0000000000000000, 0.69999999999999996 },
4080 { 1.4515986118197148, 0.50000000000000000, 5.0000000000000000,
4081 8.0000000000000000, 0.80000000000000004 },
4082 { 1.5829284571614219, 0.50000000000000000, 5.0000000000000000,
4083 8.0000000000000000, 0.89999999999999991 },
4086 // Test function for a=0.50000000000000000, b=5.0000000000000000, c=8.0000000000000000.
4087 template <typename Tp
>
4090 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4091 Tp max_abs_diff
= -Tp(1);
4092 Tp max_abs_frac
= -Tp(1);
4093 unsigned int num_datum
= sizeof(data059
)
4094 / sizeof(testcase_hyperg
<double>);
4095 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4097 const Tp f
= std::tr1::hyperg(Tp(data059
[i
].a
), Tp(data059
[i
].b
),
4098 Tp(data059
[i
].c
), Tp(data059
[i
].x
));
4099 const Tp f0
= data059
[i
].f0
;
4100 const Tp diff
= f
- f0
;
4101 if (std::abs(diff
) > max_abs_diff
)
4102 max_abs_diff
= std::abs(diff
);
4103 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4105 const Tp frac
= diff
/ f0
;
4106 if (std::abs(frac
) > max_abs_frac
)
4107 max_abs_frac
= std::abs(frac
);
4110 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4113 // Test data for a=0.50000000000000000, b=5.0000000000000000, c=10.000000000000000.
4114 testcase_hyperg
<double> data060
[] = {
4115 { 0.83322694172301959, 0.50000000000000000, 5.0000000000000000,
4116 10.000000000000000, -0.90000000000000002 },
4117 { 0.84753931604765664, 0.50000000000000000, 5.0000000000000000,
4118 10.000000000000000, -0.80000000000000004 },
4119 { 0.86265784532195022, 0.50000000000000000, 5.0000000000000000,
4120 10.000000000000000, -0.69999999999999996 },
4121 { 0.87866479300707079, 0.50000000000000000, 5.0000000000000000,
4122 10.000000000000000, -0.59999999999999998 },
4123 { 0.89565516540263501, 0.50000000000000000, 5.0000000000000000,
4124 10.000000000000000, -0.50000000000000000 },
4125 { 0.91373946207610557, 0.50000000000000000, 5.0000000000000000,
4126 10.000000000000000, -0.40000000000000002 },
4127 { 0.93304721345881891, 0.50000000000000000, 5.0000000000000000,
4128 10.000000000000000, -0.30000000000000004 },
4129 { 0.95373159512905148, 0.50000000000000000, 5.0000000000000000,
4130 10.000000000000000, -0.19999999999999996 },
4131 { 0.97597554238828121, 0.50000000000000000, 5.0000000000000000,
4132 10.000000000000000, -0.099999999999999978 },
4133 { 1.0000000000000000, 0.50000000000000000, 5.0000000000000000,
4134 10.000000000000000, 0.0000000000000000 },
4135 { 1.0260752851887982, 0.50000000000000000, 5.0000000000000000,
4136 10.000000000000000, 0.10000000000000009 },
4137 { 1.0545371197996178, 0.50000000000000000, 5.0000000000000000,
4138 10.000000000000000, 0.19999999999999996 },
4139 { 1.0858099017045830, 0.50000000000000000, 5.0000000000000000,
4140 10.000000000000000, 0.30000000000000004 },
4141 { 1.1204416568688709, 0.50000000000000000, 5.0000000000000000,
4142 10.000000000000000, 0.39999999999999991 },
4143 { 1.1591587835964847, 0.50000000000000000, 5.0000000000000000,
4144 10.000000000000000, 0.50000000000000000 },
4145 { 1.2029564720303347, 0.50000000000000000, 5.0000000000000000,
4146 10.000000000000000, 0.60000000000000009 },
4147 { 1.2532588722007874, 0.50000000000000000, 5.0000000000000000,
4148 10.000000000000000, 0.69999999999999996 },
4149 { 1.3122319926925459, 0.50000000000000000, 5.0000000000000000,
4150 10.000000000000000, 0.80000000000000004 },
4151 { 1.3834948587364100, 0.50000000000000000, 5.0000000000000000,
4152 10.000000000000000, 0.89999999999999991 },
4155 // Test function for a=0.50000000000000000, b=5.0000000000000000, c=10.000000000000000.
4156 template <typename Tp
>
4159 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4160 Tp max_abs_diff
= -Tp(1);
4161 Tp max_abs_frac
= -Tp(1);
4162 unsigned int num_datum
= sizeof(data060
)
4163 / sizeof(testcase_hyperg
<double>);
4164 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4166 const Tp f
= std::tr1::hyperg(Tp(data060
[i
].a
), Tp(data060
[i
].b
),
4167 Tp(data060
[i
].c
), Tp(data060
[i
].x
));
4168 const Tp f0
= data060
[i
].f0
;
4169 const Tp diff
= f
- f0
;
4170 if (std::abs(diff
) > max_abs_diff
)
4171 max_abs_diff
= std::abs(diff
);
4172 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4174 const Tp frac
= diff
/ f0
;
4175 if (std::abs(frac
) > max_abs_frac
)
4176 max_abs_frac
= std::abs(frac
);
4179 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4182 // Test data for a=0.50000000000000000, b=10.000000000000000, c=2.0000000000000000.
4183 testcase_hyperg
<double> data061
[] = {
4184 { 0.37727530159464628, 0.50000000000000000, 10.000000000000000,
4185 2.0000000000000000, -0.90000000000000002 },
4186 { 0.39816010922169010, 0.50000000000000000, 10.000000000000000,
4187 2.0000000000000000, -0.80000000000000004 },
4188 { 0.42283703041362453, 0.50000000000000000, 10.000000000000000,
4189 2.0000000000000000, -0.69999999999999996 },
4190 { 0.45255640448730505, 0.50000000000000000, 10.000000000000000,
4191 2.0000000000000000, -0.59999999999999998 },
4192 { 0.48919507154431141, 0.50000000000000000, 10.000000000000000,
4193 2.0000000000000000, -0.50000000000000000 },
4194 { 0.53569358917731880, 0.50000000000000000, 10.000000000000000,
4195 2.0000000000000000, -0.40000000000000002 },
4196 { 0.59689778897029566, 0.50000000000000000, 10.000000000000000,
4197 2.0000000000000000, -0.30000000000000004 },
4198 { 0.68128587569875731, 0.50000000000000000, 10.000000000000000,
4199 2.0000000000000000, -0.19999999999999996 },
4200 { 0.80478739308790359, 0.50000000000000000, 10.000000000000000,
4201 2.0000000000000000, -0.099999999999999978 },
4202 { 1.0000000000000000, 0.50000000000000000, 10.000000000000000,
4203 2.0000000000000000, 0.0000000000000000 },
4204 { 1.3408664196153621, 0.50000000000000000, 10.000000000000000,
4205 2.0000000000000000, 0.10000000000000009 },
4206 { 2.0175364359923860, 0.50000000000000000, 10.000000000000000,
4207 2.0000000000000000, 0.19999999999999996 },
4208 { 3.6011214553736646, 0.50000000000000000, 10.000000000000000,
4209 2.0000000000000000, 0.30000000000000004 },
4210 { 8.1799429939495312, 0.50000000000000000, 10.000000000000000,
4211 2.0000000000000000, 0.39999999999999991 },
4212 { 25.644834637536000, 0.50000000000000000, 10.000000000000000,
4213 2.0000000000000000, 0.50000000000000000 },
4214 { 123.13738891597615, 0.50000000000000000, 10.000000000000000,
4215 2.0000000000000000, 0.60000000000000009 },
4216 { 1088.7122410321333, 0.50000000000000000, 10.000000000000000,
4217 2.0000000000000000, 0.69999999999999996 },
4218 { 27358.291704709951, 0.50000000000000000, 10.000000000000000,
4219 2.0000000000000000, 0.80000000000000004 },
4220 { 8174369.0266731177, 0.50000000000000000, 10.000000000000000,
4221 2.0000000000000000, 0.89999999999999991 },
4224 // Test function for a=0.50000000000000000, b=10.000000000000000, c=2.0000000000000000.
4225 template <typename Tp
>
4228 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4229 Tp max_abs_diff
= -Tp(1);
4230 Tp max_abs_frac
= -Tp(1);
4231 unsigned int num_datum
= sizeof(data061
)
4232 / sizeof(testcase_hyperg
<double>);
4233 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4235 const Tp f
= std::tr1::hyperg(Tp(data061
[i
].a
), Tp(data061
[i
].b
),
4236 Tp(data061
[i
].c
), Tp(data061
[i
].x
));
4237 const Tp f0
= data061
[i
].f0
;
4238 const Tp diff
= f
- f0
;
4239 if (std::abs(diff
) > max_abs_diff
)
4240 max_abs_diff
= std::abs(diff
);
4241 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4243 const Tp frac
= diff
/ f0
;
4244 if (std::abs(frac
) > max_abs_frac
)
4245 max_abs_frac
= std::abs(frac
);
4248 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4251 // Test data for a=0.50000000000000000, b=10.000000000000000, c=4.0000000000000000.
4252 testcase_hyperg
<double> data062
[] = {
4253 { 0.53905528308450834, 0.50000000000000000, 10.000000000000000,
4254 4.0000000000000000, -0.90000000000000002 },
4255 { 0.56235533974376162, 0.50000000000000000, 10.000000000000000,
4256 4.0000000000000000, -0.80000000000000004 },
4257 { 0.58887657983263575, 0.50000000000000000, 10.000000000000000,
4258 4.0000000000000000, -0.69999999999999996 },
4259 { 0.61941227047262915, 0.50000000000000000, 10.000000000000000,
4260 4.0000000000000000, -0.59999999999999998 },
4261 { 0.65504896640793853, 0.50000000000000000, 10.000000000000000,
4262 4.0000000000000000, -0.50000000000000000 },
4263 { 0.69731666644529999, 0.50000000000000000, 10.000000000000000,
4264 4.0000000000000000, -0.40000000000000002 },
4265 { 0.74844073299399128, 0.50000000000000000, 10.000000000000000,
4266 4.0000000000000000, -0.30000000000000004 },
4267 { 0.81178446800105752, 0.50000000000000000, 10.000000000000000,
4268 4.0000000000000000, -0.19999999999999996 },
4269 { 0.89266981277598023, 0.50000000000000000, 10.000000000000000,
4270 4.0000000000000000, -0.099999999999999978 },
4271 { 1.0000000000000000, 0.50000000000000000, 10.000000000000000,
4272 4.0000000000000000, 0.0000000000000000 },
4273 { 1.1497248473106778, 0.50000000000000000, 10.000000000000000,
4274 4.0000000000000000, 0.10000000000000009 },
4275 { 1.3729717112654571, 0.50000000000000000, 10.000000000000000,
4276 4.0000000000000000, 0.19999999999999996 },
4277 { 1.7374982340374392, 0.50000000000000000, 10.000000000000000,
4278 4.0000000000000000, 0.30000000000000004 },
4279 { 2.4134479340960580, 0.50000000000000000, 10.000000000000000,
4280 4.0000000000000000, 0.39999999999999991 },
4281 { 3.9191255240471192, 0.50000000000000000, 10.000000000000000,
4282 4.0000000000000000, 0.50000000000000000 },
4283 { 8.3316373077761270, 0.50000000000000000, 10.000000000000000,
4284 4.0000000000000000, 0.60000000000000009 },
4285 { 28.323020339843335, 0.50000000000000000, 10.000000000000000,
4286 4.0000000000000000, 0.69999999999999996 },
4287 { 225.84286572747891, 0.50000000000000000, 10.000000000000000,
4288 4.0000000000000000, 0.80000000000000004 },
4289 { 12757.127591286655, 0.50000000000000000, 10.000000000000000,
4290 4.0000000000000000, 0.89999999999999991 },
4293 // Test function for a=0.50000000000000000, b=10.000000000000000, c=4.0000000000000000.
4294 template <typename Tp
>
4297 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4298 Tp max_abs_diff
= -Tp(1);
4299 Tp max_abs_frac
= -Tp(1);
4300 unsigned int num_datum
= sizeof(data062
)
4301 / sizeof(testcase_hyperg
<double>);
4302 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4304 const Tp f
= std::tr1::hyperg(Tp(data062
[i
].a
), Tp(data062
[i
].b
),
4305 Tp(data062
[i
].c
), Tp(data062
[i
].x
));
4306 const Tp f0
= data062
[i
].f0
;
4307 const Tp diff
= f
- f0
;
4308 if (std::abs(diff
) > max_abs_diff
)
4309 max_abs_diff
= std::abs(diff
);
4310 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4312 const Tp frac
= diff
/ f0
;
4313 if (std::abs(frac
) > max_abs_frac
)
4314 max_abs_frac
= std::abs(frac
);
4317 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4320 // Test data for a=0.50000000000000000, b=10.000000000000000, c=6.0000000000000000.
4321 testcase_hyperg
<double> data063
[] = {
4322 { 0.62672622092226071, 0.50000000000000000, 10.000000000000000,
4323 6.0000000000000000, -0.90000000000000002 },
4324 { 0.64931010269769829, 0.50000000000000000, 10.000000000000000,
4325 6.0000000000000000, -0.80000000000000004 },
4326 { 0.67448067519076316, 0.50000000000000000, 10.000000000000000,
4327 6.0000000000000000, -0.69999999999999996 },
4328 { 0.70276306239803676, 0.50000000000000000, 10.000000000000000,
4329 6.0000000000000000, -0.59999999999999998 },
4330 { 0.73484179773087555, 0.50000000000000000, 10.000000000000000,
4331 6.0000000000000000, -0.50000000000000000 },
4332 { 0.77162761412743897, 0.50000000000000000, 10.000000000000000,
4333 6.0000000000000000, -0.40000000000000002 },
4334 { 0.81436116844816531, 0.50000000000000000, 10.000000000000000,
4335 6.0000000000000000, -0.30000000000000004 },
4336 { 0.86477994787944557, 0.50000000000000000, 10.000000000000000,
4337 6.0000000000000000, -0.19999999999999996 },
4338 { 0.92539820516603888, 0.50000000000000000, 10.000000000000000,
4339 6.0000000000000000, -0.099999999999999978 },
4340 { 1.0000000000000000, 0.50000000000000000, 10.000000000000000,
4341 6.0000000000000000, 0.0000000000000000 },
4342 { 1.0945599448210315, 0.50000000000000000, 10.000000000000000,
4343 6.0000000000000000, 0.10000000000000009 },
4344 { 1.2190897395597264, 0.50000000000000000, 10.000000000000000,
4345 6.0000000000000000, 0.19999999999999996 },
4346 { 1.3916844336856475, 0.50000000000000000, 10.000000000000000,
4347 6.0000000000000000, 0.30000000000000004 },
4348 { 1.6484497630432013, 0.50000000000000000, 10.000000000000000,
4349 6.0000000000000000, 0.39999999999999991 },
4350 { 2.0717772717131155, 0.50000000000000000, 10.000000000000000,
4351 6.0000000000000000, 0.50000000000000000 },
4352 { 2.8893613630810924, 0.50000000000000000, 10.000000000000000,
4353 6.0000000000000000, 0.60000000000000009 },
4354 { 4.9459404075413529, 0.50000000000000000, 10.000000000000000,
4355 6.0000000000000000, 0.69999999999999996 },
4356 { 13.487394149998716, 0.50000000000000000, 10.000000000000000,
4357 6.0000000000000000, 0.80000000000000004 },
4358 { 136.57616044013972, 0.50000000000000000, 10.000000000000000,
4359 6.0000000000000000, 0.89999999999999991 },
4362 // Test function for a=0.50000000000000000, b=10.000000000000000, c=6.0000000000000000.
4363 template <typename Tp
>
4366 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4367 Tp max_abs_diff
= -Tp(1);
4368 Tp max_abs_frac
= -Tp(1);
4369 unsigned int num_datum
= sizeof(data063
)
4370 / sizeof(testcase_hyperg
<double>);
4371 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4373 const Tp f
= std::tr1::hyperg(Tp(data063
[i
].a
), Tp(data063
[i
].b
),
4374 Tp(data063
[i
].c
), Tp(data063
[i
].x
));
4375 const Tp f0
= data063
[i
].f0
;
4376 const Tp diff
= f
- f0
;
4377 if (std::abs(diff
) > max_abs_diff
)
4378 max_abs_diff
= std::abs(diff
);
4379 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4381 const Tp frac
= diff
/ f0
;
4382 if (std::abs(frac
) > max_abs_frac
)
4383 max_abs_frac
= std::abs(frac
);
4386 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4389 // Test data for a=0.50000000000000000, b=10.000000000000000, c=8.0000000000000000.
4390 testcase_hyperg
<double> data064
[] = {
4391 { 0.68421604440344341, 0.50000000000000000, 10.000000000000000,
4392 8.0000000000000000, -0.90000000000000002 },
4393 { 0.70548098055548891, 0.50000000000000000, 10.000000000000000,
4394 8.0000000000000000, -0.80000000000000004 },
4395 { 0.72884342311710348, 0.50000000000000000, 10.000000000000000,
4396 8.0000000000000000, -0.69999999999999996 },
4397 { 0.75466953437856243, 0.50000000000000000, 10.000000000000000,
4398 8.0000000000000000, -0.59999999999999998 },
4399 { 0.78342090924662600, 0.50000000000000000, 10.000000000000000,
4400 8.0000000000000000, -0.50000000000000000 },
4401 { 0.81568884278645049, 0.50000000000000000, 10.000000000000000,
4402 8.0000000000000000, -0.40000000000000002 },
4403 { 0.85224480241465206, 0.50000000000000000, 10.000000000000000,
4404 8.0000000000000000, -0.30000000000000004 },
4405 { 0.89411692571131696, 0.50000000000000000, 10.000000000000000,
4406 8.0000000000000000, -0.19999999999999996 },
4407 { 0.94270986892954756, 0.50000000000000000, 10.000000000000000,
4408 8.0000000000000000, -0.099999999999999978 },
4409 { 1.0000000000000000, 0.50000000000000000, 10.000000000000000,
4410 8.0000000000000000, 0.0000000000000000 },
4411 { 1.0688682849120232, 0.50000000000000000, 10.000000000000000,
4412 8.0000000000000000, 0.10000000000000009 },
4413 { 1.1537004376097553, 0.50000000000000000, 10.000000000000000,
4414 8.0000000000000000, 0.19999999999999996 },
4415 { 1.2615455028370031, 0.50000000000000000, 10.000000000000000,
4416 8.0000000000000000, 0.30000000000000004 },
4417 { 1.4045541456153436, 0.50000000000000000, 10.000000000000000,
4418 8.0000000000000000, 0.39999999999999991 },
4419 { 1.6057216489444517, 0.50000000000000000, 10.000000000000000,
4420 8.0000000000000000, 0.50000000000000000 },
4421 { 1.9146603020550739, 0.50000000000000000, 10.000000000000000,
4422 8.0000000000000000, 0.60000000000000009 },
4423 { 2.4617931307620298, 0.50000000000000000, 10.000000000000000,
4424 8.0000000000000000, 0.69999999999999996 },
4425 { 3.7267799624996498, 0.50000000000000000, 10.000000000000000,
4426 8.0000000000000000, 0.80000000000000004 },
4427 { 9.3880118036248401, 0.50000000000000000, 10.000000000000000,
4428 8.0000000000000000, 0.89999999999999991 },
4431 // Test function for a=0.50000000000000000, b=10.000000000000000, c=8.0000000000000000.
4432 template <typename Tp
>
4435 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4436 Tp max_abs_diff
= -Tp(1);
4437 Tp max_abs_frac
= -Tp(1);
4438 unsigned int num_datum
= sizeof(data064
)
4439 / sizeof(testcase_hyperg
<double>);
4440 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4442 const Tp f
= std::tr1::hyperg(Tp(data064
[i
].a
), Tp(data064
[i
].b
),
4443 Tp(data064
[i
].c
), Tp(data064
[i
].x
));
4444 const Tp f0
= data064
[i
].f0
;
4445 const Tp diff
= f
- f0
;
4446 if (std::abs(diff
) > max_abs_diff
)
4447 max_abs_diff
= std::abs(diff
);
4448 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4450 const Tp frac
= diff
/ f0
;
4451 if (std::abs(frac
) > max_abs_frac
)
4452 max_abs_frac
= std::abs(frac
);
4455 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4458 // Test data for a=0.50000000000000000, b=10.000000000000000, c=10.000000000000000.
4459 testcase_hyperg
<double> data065
[] = {
4460 { 0.72547625011001171, 0.50000000000000000, 10.000000000000000,
4461 10.000000000000000, -0.90000000000000002 },
4462 { 0.74535599249992990, 0.50000000000000000, 10.000000000000000,
4463 10.000000000000000, -0.80000000000000004 },
4464 { 0.76696498884737041, 0.50000000000000000, 10.000000000000000,
4465 10.000000000000000, -0.69999999999999996 },
4466 { 0.79056941504209477, 0.50000000000000000, 10.000000000000000,
4467 10.000000000000000, -0.59999999999999998 },
4468 { 0.81649658092772603, 0.50000000000000000, 10.000000000000000,
4469 10.000000000000000, -0.50000000000000000 },
4470 { 0.84515425472851657, 0.50000000000000000, 10.000000000000000,
4471 10.000000000000000, -0.40000000000000002 },
4472 { 0.87705801930702920, 0.50000000000000000, 10.000000000000000,
4473 10.000000000000000, -0.30000000000000004 },
4474 { 0.91287092917527690, 0.50000000000000000, 10.000000000000000,
4475 10.000000000000000, -0.19999999999999996 },
4476 { 0.95346258924559224, 0.50000000000000000, 10.000000000000000,
4477 10.000000000000000, -0.099999999999999978 },
4478 { 1.0000000000000000, 0.50000000000000000, 10.000000000000000,
4479 10.000000000000000, 0.0000000000000000 },
4480 { 1.0540925533894598, 0.50000000000000000, 10.000000000000000,
4481 10.000000000000000, 0.10000000000000009 },
4482 { 1.1180339887498949, 0.50000000000000000, 10.000000000000000,
4483 10.000000000000000, 0.19999999999999996 },
4484 { 1.1952286093343938, 0.50000000000000000, 10.000000000000000,
4485 10.000000000000000, 0.30000000000000004 },
4486 { 1.2909944487358056, 0.50000000000000000, 10.000000000000000,
4487 10.000000000000000, 0.39999999999999991 },
4488 { 1.4142135623730949, 0.50000000000000000, 10.000000000000000,
4489 10.000000000000000, 0.50000000000000000 },
4490 { 1.5811388300841900, 0.50000000000000000, 10.000000000000000,
4491 10.000000000000000, 0.60000000000000009 },
4492 { 1.8257418583505536, 0.50000000000000000, 10.000000000000000,
4493 10.000000000000000, 0.69999999999999996 },
4494 { 2.2360679774997898, 0.50000000000000000, 10.000000000000000,
4495 10.000000000000000, 0.80000000000000004 },
4496 { 3.1622776601683782, 0.50000000000000000, 10.000000000000000,
4497 10.000000000000000, 0.89999999999999991 },
4500 // Test function for a=0.50000000000000000, b=10.000000000000000, c=10.000000000000000.
4501 template <typename Tp
>
4504 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4505 Tp max_abs_diff
= -Tp(1);
4506 Tp max_abs_frac
= -Tp(1);
4507 unsigned int num_datum
= sizeof(data065
)
4508 / sizeof(testcase_hyperg
<double>);
4509 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4511 const Tp f
= std::tr1::hyperg(Tp(data065
[i
].a
), Tp(data065
[i
].b
),
4512 Tp(data065
[i
].c
), Tp(data065
[i
].x
));
4513 const Tp f0
= data065
[i
].f0
;
4514 const Tp diff
= f
- f0
;
4515 if (std::abs(diff
) > max_abs_diff
)
4516 max_abs_diff
= std::abs(diff
);
4517 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4519 const Tp frac
= diff
/ f0
;
4520 if (std::abs(frac
) > max_abs_frac
)
4521 max_abs_frac
= std::abs(frac
);
4524 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4527 // Test data for a=0.50000000000000000, b=20.000000000000000, c=2.0000000000000000.
4528 testcase_hyperg
<double> data066
[] = {
4529 { 0.26690449940521566, 0.50000000000000000, 20.000000000000000,
4530 2.0000000000000000, -0.90000000000000002 },
4531 { 0.28252302866181805, 0.50000000000000000, 20.000000000000000,
4532 2.0000000000000000, -0.80000000000000004 },
4533 { 0.30123616141153819, 0.50000000000000000, 20.000000000000000,
4534 2.0000000000000000, -0.69999999999999996 },
4535 { 0.32421384687602628, 0.50000000000000000, 20.000000000000000,
4536 2.0000000000000000, -0.59999999999999998 },
4537 { 0.35334630811776752, 0.50000000000000000, 20.000000000000000,
4538 2.0000000000000000, -0.50000000000000000 },
4539 { 0.39191793127467034, 0.50000000000000000, 20.000000000000000,
4540 2.0000000000000000, -0.40000000000000002 },
4541 { 0.44620488618129206, 0.50000000000000000, 20.000000000000000,
4542 2.0000000000000000, -0.30000000000000004 },
4543 { 0.52980896919265685, 0.50000000000000000, 20.000000000000000,
4544 2.0000000000000000, -0.19999999999999996 },
4545 { 0.67754711477562357, 0.50000000000000000, 20.000000000000000,
4546 2.0000000000000000, -0.099999999999999978 },
4547 { 1.0000000000000000, 0.50000000000000000, 20.000000000000000,
4548 2.0000000000000000, 0.0000000000000000 },
4549 { 1.9567557771780317, 0.50000000000000000, 20.000000000000000,
4550 2.0000000000000000, 0.10000000000000009 },
4551 { 6.1816042148333086, 0.50000000000000000, 20.000000000000000,
4552 2.0000000000000000, 0.19999999999999996 },
4553 { 35.653088618561227, 0.50000000000000000, 20.000000000000000,
4554 2.0000000000000000, 0.30000000000000004 },
4555 { 377.51482843179906, 0.50000000000000000, 20.000000000000000,
4556 2.0000000000000000, 0.39999999999999991 },
4557 { 7645.8816551195359, 0.50000000000000000, 20.000000000000000,
4558 2.0000000000000000, 0.50000000000000000 },
4559 { 354791.74537980522, 0.50000000000000000, 20.000000000000000,
4560 2.0000000000000000, 0.60000000000000009 },
4561 { 57009889.966638684, 0.50000000000000000, 20.000000000000000,
4562 2.0000000000000000, 0.69999999999999996 },
4563 { 83771357024.863937, 0.50000000000000000, 20.000000000000000,
4564 2.0000000000000000, 0.80000000000000004 },
4565 { 25866972896376408., 0.50000000000000000, 20.000000000000000,
4566 2.0000000000000000, 0.89999999999999991 },
4569 // Test function for a=0.50000000000000000, b=20.000000000000000, c=2.0000000000000000.
4570 template <typename Tp
>
4573 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4574 Tp max_abs_diff
= -Tp(1);
4575 Tp max_abs_frac
= -Tp(1);
4576 unsigned int num_datum
= sizeof(data066
)
4577 / sizeof(testcase_hyperg
<double>);
4578 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4580 const Tp f
= std::tr1::hyperg(Tp(data066
[i
].a
), Tp(data066
[i
].b
),
4581 Tp(data066
[i
].c
), Tp(data066
[i
].x
));
4582 const Tp f0
= data066
[i
].f0
;
4583 const Tp diff
= f
- f0
;
4584 if (std::abs(diff
) > max_abs_diff
)
4585 max_abs_diff
= std::abs(diff
);
4586 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4588 const Tp frac
= diff
/ f0
;
4589 if (std::abs(frac
) > max_abs_frac
)
4590 max_abs_frac
= std::abs(frac
);
4593 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4596 // Test data for a=0.50000000000000000, b=20.000000000000000, c=4.0000000000000000.
4597 testcase_hyperg
<double> data067
[] = {
4598 { 0.40342659436153405, 0.50000000000000000, 20.000000000000000,
4599 4.0000000000000000, -0.90000000000000002 },
4600 { 0.42420571192034318, 0.50000000000000000, 20.000000000000000,
4601 4.0000000000000000, -0.80000000000000004 },
4602 { 0.44852768286073008, 0.50000000000000000, 20.000000000000000,
4603 4.0000000000000000, -0.69999999999999996 },
4604 { 0.47751245808592863, 0.50000000000000000, 20.000000000000000,
4605 4.0000000000000000, -0.59999999999999998 },
4606 { 0.51283632632707754, 0.50000000000000000, 20.000000000000000,
4607 4.0000000000000000, -0.50000000000000000 },
4608 { 0.55713468814894307, 0.50000000000000000, 20.000000000000000,
4609 4.0000000000000000, -0.40000000000000002 },
4610 { 0.61481320817757312, 0.50000000000000000, 20.000000000000000,
4611 4.0000000000000000, -0.30000000000000004 },
4612 { 0.69383483410097202, 0.50000000000000000, 20.000000000000000,
4613 4.0000000000000000, -0.19999999999999996 },
4614 { 0.81012002526006033, 0.50000000000000000, 20.000000000000000,
4615 4.0000000000000000, -0.099999999999999978 },
4616 { 1.0000000000000000, 0.50000000000000000, 20.000000000000000,
4617 4.0000000000000000, 0.0000000000000000 },
4618 { 1.3622225506603911, 0.50000000000000000, 20.000000000000000,
4619 4.0000000000000000, 0.10000000000000009 },
4620 { 2.2349513086109001, 0.50000000000000000, 20.000000000000000,
4621 4.0000000000000000, 0.19999999999999996 },
4622 { 5.1864917536761723, 0.50000000000000000, 20.000000000000000,
4623 4.0000000000000000, 0.30000000000000004 },
4624 { 21.020560423779411, 0.50000000000000000, 20.000000000000000,
4625 4.0000000000000000, 0.39999999999999991 },
4626 { 175.19649997100612, 0.50000000000000000, 20.000000000000000,
4627 4.0000000000000000, 0.50000000000000000 },
4628 { 3467.1587803688708, 0.50000000000000000, 20.000000000000000,
4629 4.0000000000000000, 0.60000000000000009 },
4630 { 225003.88683445856, 0.50000000000000000, 20.000000000000000,
4631 4.0000000000000000, 0.69999999999999996 },
4632 { 110837674.65652709, 0.50000000000000000, 20.000000000000000,
4633 4.0000000000000000, 0.80000000000000004 },
4634 { 6688966964170.6807, 0.50000000000000000, 20.000000000000000,
4635 4.0000000000000000, 0.89999999999999991 },
4638 // Test function for a=0.50000000000000000, b=20.000000000000000, c=4.0000000000000000.
4639 template <typename Tp
>
4642 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4643 Tp max_abs_diff
= -Tp(1);
4644 Tp max_abs_frac
= -Tp(1);
4645 unsigned int num_datum
= sizeof(data067
)
4646 / sizeof(testcase_hyperg
<double>);
4647 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4649 const Tp f
= std::tr1::hyperg(Tp(data067
[i
].a
), Tp(data067
[i
].b
),
4650 Tp(data067
[i
].c
), Tp(data067
[i
].x
));
4651 const Tp f0
= data067
[i
].f0
;
4652 const Tp diff
= f
- f0
;
4653 if (std::abs(diff
) > max_abs_diff
)
4654 max_abs_diff
= std::abs(diff
);
4655 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4657 const Tp frac
= diff
/ f0
;
4658 if (std::abs(frac
) > max_abs_frac
)
4659 max_abs_frac
= std::abs(frac
);
4662 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4665 // Test data for a=0.50000000000000000, b=20.000000000000000, c=6.0000000000000000.
4666 testcase_hyperg
<double> data068
[] = {
4667 { 0.48716309885816761, 0.50000000000000000, 20.000000000000000,
4668 6.0000000000000000, -0.90000000000000002 },
4669 { 0.50965859152542281, 0.50000000000000000, 20.000000000000000,
4670 6.0000000000000000, -0.80000000000000004 },
4671 { 0.53554809210658971, 0.50000000000000000, 20.000000000000000,
4672 6.0000000000000000, -0.69999999999999996 },
4673 { 0.56576689207507136, 0.50000000000000000, 20.000000000000000,
4674 6.0000000000000000, -0.59999999999999998 },
4675 { 0.60164849637133688, 0.50000000000000000, 20.000000000000000,
4676 6.0000000000000000, -0.50000000000000000 },
4677 { 0.64516711595404375, 0.50000000000000000, 20.000000000000000,
4678 6.0000000000000000, -0.40000000000000002 },
4679 { 0.69938278735493542, 0.50000000000000000, 20.000000000000000,
4680 6.0000000000000000, -0.30000000000000004 },
4681 { 0.76931621518401860, 0.50000000000000000, 20.000000000000000,
4682 6.0000000000000000, -0.19999999999999996 },
4683 { 0.86381808725530695, 0.50000000000000000, 20.000000000000000,
4684 6.0000000000000000, -0.099999999999999978 },
4685 { 1.0000000000000000, 0.50000000000000000, 20.000000000000000,
4686 6.0000000000000000, 0.0000000000000000 },
4687 { 1.2152051956815531, 0.50000000000000000, 20.000000000000000,
4688 6.0000000000000000, 0.10000000000000009 },
4689 { 1.6052546785425543, 0.50000000000000000, 20.000000000000000,
4690 6.0000000000000000, 0.19999999999999996 },
4691 { 2.4765586046012635, 0.50000000000000000, 20.000000000000000,
4692 6.0000000000000000, 0.30000000000000004 },
4693 { 5.1564492216997486, 0.50000000000000000, 20.000000000000000,
4694 6.0000000000000000, 0.39999999999999991 },
4695 { 18.446158392136365, 0.50000000000000000, 20.000000000000000,
4696 6.0000000000000000, 0.50000000000000000 },
4697 { 150.44577670123971, 0.50000000000000000, 20.000000000000000,
4698 6.0000000000000000, 0.60000000000000009 },
4699 { 3862.6317400115768, 0.50000000000000000, 20.000000000000000,
4700 6.0000000000000000, 0.69999999999999996 },
4701 { 632428.34833625401, 0.50000000000000000, 20.000000000000000,
4702 6.0000000000000000, 0.80000000000000004 },
4703 { 7426927663.3808765, 0.50000000000000000, 20.000000000000000,
4704 6.0000000000000000, 0.89999999999999991 },
4707 // Test function for a=0.50000000000000000, b=20.000000000000000, c=6.0000000000000000.
4708 template <typename Tp
>
4711 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4712 Tp max_abs_diff
= -Tp(1);
4713 Tp max_abs_frac
= -Tp(1);
4714 unsigned int num_datum
= sizeof(data068
)
4715 / sizeof(testcase_hyperg
<double>);
4716 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4718 const Tp f
= std::tr1::hyperg(Tp(data068
[i
].a
), Tp(data068
[i
].b
),
4719 Tp(data068
[i
].c
), Tp(data068
[i
].x
));
4720 const Tp f0
= data068
[i
].f0
;
4721 const Tp diff
= f
- f0
;
4722 if (std::abs(diff
) > max_abs_diff
)
4723 max_abs_diff
= std::abs(diff
);
4724 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4726 const Tp frac
= diff
/ f0
;
4727 if (std::abs(frac
) > max_abs_frac
)
4728 max_abs_frac
= std::abs(frac
);
4731 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4734 // Test data for a=0.50000000000000000, b=20.000000000000000, c=8.0000000000000000.
4735 testcase_hyperg
<double> data069
[] = {
4736 { 0.54703266209548362, 0.50000000000000000, 20.000000000000000,
4737 8.0000000000000000, -0.90000000000000002 },
4738 { 0.56997321774144971, 0.50000000000000000, 20.000000000000000,
4739 8.0000000000000000, -0.80000000000000004 },
4740 { 0.59603026159654970, 0.50000000000000000, 20.000000000000000,
4741 8.0000000000000000, -0.69999999999999996 },
4742 { 0.62596978851120511, 0.50000000000000000, 20.000000000000000,
4743 8.0000000000000000, -0.59999999999999998 },
4744 { 0.66084565876898926, 0.50000000000000000, 20.000000000000000,
4745 8.0000000000000000, -0.50000000000000000 },
4746 { 0.70215256667232839, 0.50000000000000000, 20.000000000000000,
4747 8.0000000000000000, -0.40000000000000002 },
4748 { 0.75208916592008568, 0.50000000000000000, 20.000000000000000,
4749 8.0000000000000000, -0.30000000000000004 },
4750 { 0.81403631111658648, 0.50000000000000000, 20.000000000000000,
4751 8.0000000000000000, -0.19999999999999996 },
4752 { 0.89348608489854608, 0.50000000000000000, 20.000000000000000,
4753 8.0000000000000000, -0.099999999999999978 },
4754 { 1.0000000000000000, 0.50000000000000000, 20.000000000000000,
4755 8.0000000000000000, 0.0000000000000000 },
4756 { 1.1517793185139173, 0.50000000000000000, 20.000000000000000,
4757 8.0000000000000000, 0.10000000000000009 },
4758 { 1.3878110313656598, 0.50000000000000000, 20.000000000000000,
4759 8.0000000000000000, 0.19999999999999996 },
4760 { 1.8061071794572381, 0.50000000000000000, 20.000000000000000,
4761 8.0000000000000000, 0.30000000000000004 },
4762 { 2.7148594517859586, 0.50000000000000000, 20.000000000000000,
4763 8.0000000000000000, 0.39999999999999991 },
4764 { 5.4529435709049361, 0.50000000000000000, 20.000000000000000,
4765 8.0000000000000000, 0.50000000000000000 },
4766 { 19.487310275377109, 0.50000000000000000, 20.000000000000000,
4767 8.0000000000000000, 0.60000000000000009 },
4768 { 191.69079165937470, 0.50000000000000000, 20.000000000000000,
4769 8.0000000000000000, 0.69999999999999996 },
4770 { 10218.543981792311, 0.50000000000000000, 20.000000000000000,
4771 8.0000000000000000, 0.80000000000000004 },
4772 { 23160836.646583911, 0.50000000000000000, 20.000000000000000,
4773 8.0000000000000000, 0.89999999999999991 },
4776 // Test function for a=0.50000000000000000, b=20.000000000000000, c=8.0000000000000000.
4777 template <typename Tp
>
4780 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4781 Tp max_abs_diff
= -Tp(1);
4782 Tp max_abs_frac
= -Tp(1);
4783 unsigned int num_datum
= sizeof(data069
)
4784 / sizeof(testcase_hyperg
<double>);
4785 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4787 const Tp f
= std::tr1::hyperg(Tp(data069
[i
].a
), Tp(data069
[i
].b
),
4788 Tp(data069
[i
].c
), Tp(data069
[i
].x
));
4789 const Tp f0
= data069
[i
].f0
;
4790 const Tp diff
= f
- f0
;
4791 if (std::abs(diff
) > max_abs_diff
)
4792 max_abs_diff
= std::abs(diff
);
4793 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4795 const Tp frac
= diff
/ f0
;
4796 if (std::abs(frac
) > max_abs_frac
)
4797 max_abs_frac
= std::abs(frac
);
4800 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4803 // Test data for a=0.50000000000000000, b=20.000000000000000, c=10.000000000000000.
4804 testcase_hyperg
<double> data070
[] = {
4805 { 0.59292067298616002, 0.50000000000000000, 20.000000000000000,
4806 10.000000000000000, -0.90000000000000002 },
4807 { 0.61572496720679915, 0.50000000000000000, 20.000000000000000,
4808 10.000000000000000, -0.80000000000000004 },
4809 { 0.64135339122875623, 0.50000000000000000, 20.000000000000000,
4810 10.000000000000000, -0.69999999999999996 },
4811 { 0.67043457419280483, 0.50000000000000000, 20.000000000000000,
4812 10.000000000000000, -0.59999999999999998 },
4813 { 0.70380956268170980, 0.50000000000000000, 20.000000000000000,
4814 10.000000000000000, -0.50000000000000000 },
4815 { 0.74263251901495231, 0.50000000000000000, 20.000000000000000,
4816 10.000000000000000, -0.40000000000000002 },
4817 { 0.78853555445528278, 0.50000000000000000, 20.000000000000000,
4818 10.000000000000000, -0.30000000000000004 },
4819 { 0.84391122775673766, 0.50000000000000000, 20.000000000000000,
4820 10.000000000000000, -0.19999999999999996 },
4821 { 0.91242401018807406, 0.50000000000000000, 20.000000000000000,
4822 10.000000000000000, -0.099999999999999978 },
4823 { 1.0000000000000000, 0.50000000000000000, 20.000000000000000,
4824 10.000000000000000, 0.0000000000000000 },
4825 { 1.1169059681274873, 0.50000000000000000, 20.000000000000000,
4826 10.000000000000000, 0.10000000000000009 },
4827 { 1.2825928301302667, 0.50000000000000000, 20.000000000000000,
4828 10.000000000000000, 0.19999999999999996 },
4829 { 1.5385937789924939, 0.50000000000000000, 20.000000000000000,
4830 10.000000000000000, 0.30000000000000004 },
4831 { 1.9895771187893898, 0.50000000000000000, 20.000000000000000,
4832 10.000000000000000, 0.39999999999999991 },
4833 { 2.9707335806970168, 0.50000000000000000, 20.000000000000000,
4834 10.000000000000000, 0.50000000000000000 },
4835 { 6.0299506157180467, 0.50000000000000000, 20.000000000000000,
4836 10.000000000000000, 0.60000000000000009 },
4837 { 24.259090336955577, 0.50000000000000000, 20.000000000000000,
4838 10.000000000000000, 0.69999999999999996 },
4839 { 406.27267173257223, 0.50000000000000000, 20.000000000000000,
4840 10.000000000000000, 0.80000000000000004 },
4841 { 174330.03997220192, 0.50000000000000000, 20.000000000000000,
4842 10.000000000000000, 0.89999999999999991 },
4845 // Test function for a=0.50000000000000000, b=20.000000000000000, c=10.000000000000000.
4846 template <typename Tp
>
4849 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4850 Tp max_abs_diff
= -Tp(1);
4851 Tp max_abs_frac
= -Tp(1);
4852 unsigned int num_datum
= sizeof(data070
)
4853 / sizeof(testcase_hyperg
<double>);
4854 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4856 const Tp f
= std::tr1::hyperg(Tp(data070
[i
].a
), Tp(data070
[i
].b
),
4857 Tp(data070
[i
].c
), Tp(data070
[i
].x
));
4858 const Tp f0
= data070
[i
].f0
;
4859 const Tp diff
= f
- f0
;
4860 if (std::abs(diff
) > max_abs_diff
)
4861 max_abs_diff
= std::abs(diff
);
4862 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4864 const Tp frac
= diff
/ f0
;
4865 if (std::abs(frac
) > max_abs_frac
)
4866 max_abs_frac
= std::abs(frac
);
4869 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4872 // Test data for a=1.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
4873 testcase_hyperg
<double> data071
[] = {
4874 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4875 2.0000000000000000, -0.90000000000000002 },
4876 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4877 2.0000000000000000, -0.80000000000000004 },
4878 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4879 2.0000000000000000, -0.69999999999999996 },
4880 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4881 2.0000000000000000, -0.59999999999999998 },
4882 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4883 2.0000000000000000, -0.50000000000000000 },
4884 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4885 2.0000000000000000, -0.40000000000000002 },
4886 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4887 2.0000000000000000, -0.30000000000000004 },
4888 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4889 2.0000000000000000, -0.19999999999999996 },
4890 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4891 2.0000000000000000, -0.099999999999999978 },
4892 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4893 2.0000000000000000, 0.0000000000000000 },
4894 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4895 2.0000000000000000, 0.10000000000000009 },
4896 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4897 2.0000000000000000, 0.19999999999999996 },
4898 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4899 2.0000000000000000, 0.30000000000000004 },
4900 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4901 2.0000000000000000, 0.39999999999999991 },
4902 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4903 2.0000000000000000, 0.50000000000000000 },
4904 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4905 2.0000000000000000, 0.60000000000000009 },
4906 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4907 2.0000000000000000, 0.69999999999999996 },
4908 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4909 2.0000000000000000, 0.80000000000000004 },
4910 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4911 2.0000000000000000, 0.89999999999999991 },
4914 // Test function for a=1.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
4915 template <typename Tp
>
4918 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4919 Tp max_abs_diff
= -Tp(1);
4920 Tp max_abs_frac
= -Tp(1);
4921 unsigned int num_datum
= sizeof(data071
)
4922 / sizeof(testcase_hyperg
<double>);
4923 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4925 const Tp f
= std::tr1::hyperg(Tp(data071
[i
].a
), Tp(data071
[i
].b
),
4926 Tp(data071
[i
].c
), Tp(data071
[i
].x
));
4927 const Tp f0
= data071
[i
].f0
;
4928 const Tp diff
= f
- f0
;
4929 if (std::abs(diff
) > max_abs_diff
)
4930 max_abs_diff
= std::abs(diff
);
4931 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
4933 const Tp frac
= diff
/ f0
;
4934 if (std::abs(frac
) > max_abs_frac
)
4935 max_abs_frac
= std::abs(frac
);
4938 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
4941 // Test data for a=1.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
4942 testcase_hyperg
<double> data072
[] = {
4943 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4944 4.0000000000000000, -0.90000000000000002 },
4945 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4946 4.0000000000000000, -0.80000000000000004 },
4947 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4948 4.0000000000000000, -0.69999999999999996 },
4949 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4950 4.0000000000000000, -0.59999999999999998 },
4951 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4952 4.0000000000000000, -0.50000000000000000 },
4953 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4954 4.0000000000000000, -0.40000000000000002 },
4955 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4956 4.0000000000000000, -0.30000000000000004 },
4957 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4958 4.0000000000000000, -0.19999999999999996 },
4959 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4960 4.0000000000000000, -0.099999999999999978 },
4961 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4962 4.0000000000000000, 0.0000000000000000 },
4963 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4964 4.0000000000000000, 0.10000000000000009 },
4965 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4966 4.0000000000000000, 0.19999999999999996 },
4967 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4968 4.0000000000000000, 0.30000000000000004 },
4969 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4970 4.0000000000000000, 0.39999999999999991 },
4971 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4972 4.0000000000000000, 0.50000000000000000 },
4973 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4974 4.0000000000000000, 0.60000000000000009 },
4975 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4976 4.0000000000000000, 0.69999999999999996 },
4977 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4978 4.0000000000000000, 0.80000000000000004 },
4979 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
4980 4.0000000000000000, 0.89999999999999991 },
4983 // Test function for a=1.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
4984 template <typename Tp
>
4987 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
4988 Tp max_abs_diff
= -Tp(1);
4989 Tp max_abs_frac
= -Tp(1);
4990 unsigned int num_datum
= sizeof(data072
)
4991 / sizeof(testcase_hyperg
<double>);
4992 for (unsigned int i
= 0; i
< num_datum
; ++i
)
4994 const Tp f
= std::tr1::hyperg(Tp(data072
[i
].a
), Tp(data072
[i
].b
),
4995 Tp(data072
[i
].c
), Tp(data072
[i
].x
));
4996 const Tp f0
= data072
[i
].f0
;
4997 const Tp diff
= f
- f0
;
4998 if (std::abs(diff
) > max_abs_diff
)
4999 max_abs_diff
= std::abs(diff
);
5000 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5002 const Tp frac
= diff
/ f0
;
5003 if (std::abs(frac
) > max_abs_frac
)
5004 max_abs_frac
= std::abs(frac
);
5007 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5010 // Test data for a=1.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
5011 testcase_hyperg
<double> data073
[] = {
5012 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5013 6.0000000000000000, -0.90000000000000002 },
5014 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5015 6.0000000000000000, -0.80000000000000004 },
5016 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5017 6.0000000000000000, -0.69999999999999996 },
5018 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5019 6.0000000000000000, -0.59999999999999998 },
5020 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5021 6.0000000000000000, -0.50000000000000000 },
5022 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5023 6.0000000000000000, -0.40000000000000002 },
5024 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5025 6.0000000000000000, -0.30000000000000004 },
5026 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5027 6.0000000000000000, -0.19999999999999996 },
5028 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5029 6.0000000000000000, -0.099999999999999978 },
5030 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5031 6.0000000000000000, 0.0000000000000000 },
5032 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5033 6.0000000000000000, 0.10000000000000009 },
5034 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5035 6.0000000000000000, 0.19999999999999996 },
5036 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5037 6.0000000000000000, 0.30000000000000004 },
5038 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5039 6.0000000000000000, 0.39999999999999991 },
5040 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5041 6.0000000000000000, 0.50000000000000000 },
5042 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5043 6.0000000000000000, 0.60000000000000009 },
5044 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5045 6.0000000000000000, 0.69999999999999996 },
5046 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5047 6.0000000000000000, 0.80000000000000004 },
5048 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5049 6.0000000000000000, 0.89999999999999991 },
5052 // Test function for a=1.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
5053 template <typename Tp
>
5056 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5057 Tp max_abs_diff
= -Tp(1);
5058 Tp max_abs_frac
= -Tp(1);
5059 unsigned int num_datum
= sizeof(data073
)
5060 / sizeof(testcase_hyperg
<double>);
5061 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5063 const Tp f
= std::tr1::hyperg(Tp(data073
[i
].a
), Tp(data073
[i
].b
),
5064 Tp(data073
[i
].c
), Tp(data073
[i
].x
));
5065 const Tp f0
= data073
[i
].f0
;
5066 const Tp diff
= f
- f0
;
5067 if (std::abs(diff
) > max_abs_diff
)
5068 max_abs_diff
= std::abs(diff
);
5069 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5071 const Tp frac
= diff
/ f0
;
5072 if (std::abs(frac
) > max_abs_frac
)
5073 max_abs_frac
= std::abs(frac
);
5076 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5079 // Test data for a=1.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
5080 testcase_hyperg
<double> data074
[] = {
5081 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5082 8.0000000000000000, -0.90000000000000002 },
5083 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5084 8.0000000000000000, -0.80000000000000004 },
5085 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5086 8.0000000000000000, -0.69999999999999996 },
5087 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5088 8.0000000000000000, -0.59999999999999998 },
5089 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5090 8.0000000000000000, -0.50000000000000000 },
5091 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5092 8.0000000000000000, -0.40000000000000002 },
5093 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5094 8.0000000000000000, -0.30000000000000004 },
5095 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5096 8.0000000000000000, -0.19999999999999996 },
5097 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5098 8.0000000000000000, -0.099999999999999978 },
5099 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5100 8.0000000000000000, 0.0000000000000000 },
5101 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5102 8.0000000000000000, 0.10000000000000009 },
5103 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5104 8.0000000000000000, 0.19999999999999996 },
5105 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5106 8.0000000000000000, 0.30000000000000004 },
5107 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5108 8.0000000000000000, 0.39999999999999991 },
5109 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5110 8.0000000000000000, 0.50000000000000000 },
5111 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5112 8.0000000000000000, 0.60000000000000009 },
5113 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5114 8.0000000000000000, 0.69999999999999996 },
5115 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5116 8.0000000000000000, 0.80000000000000004 },
5117 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5118 8.0000000000000000, 0.89999999999999991 },
5121 // Test function for a=1.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
5122 template <typename Tp
>
5125 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5126 Tp max_abs_diff
= -Tp(1);
5127 Tp max_abs_frac
= -Tp(1);
5128 unsigned int num_datum
= sizeof(data074
)
5129 / sizeof(testcase_hyperg
<double>);
5130 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5132 const Tp f
= std::tr1::hyperg(Tp(data074
[i
].a
), Tp(data074
[i
].b
),
5133 Tp(data074
[i
].c
), Tp(data074
[i
].x
));
5134 const Tp f0
= data074
[i
].f0
;
5135 const Tp diff
= f
- f0
;
5136 if (std::abs(diff
) > max_abs_diff
)
5137 max_abs_diff
= std::abs(diff
);
5138 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5140 const Tp frac
= diff
/ f0
;
5141 if (std::abs(frac
) > max_abs_frac
)
5142 max_abs_frac
= std::abs(frac
);
5145 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5148 // Test data for a=1.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
5149 testcase_hyperg
<double> data075
[] = {
5150 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5151 10.000000000000000, -0.90000000000000002 },
5152 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5153 10.000000000000000, -0.80000000000000004 },
5154 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5155 10.000000000000000, -0.69999999999999996 },
5156 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5157 10.000000000000000, -0.59999999999999998 },
5158 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5159 10.000000000000000, -0.50000000000000000 },
5160 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5161 10.000000000000000, -0.40000000000000002 },
5162 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5163 10.000000000000000, -0.30000000000000004 },
5164 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5165 10.000000000000000, -0.19999999999999996 },
5166 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5167 10.000000000000000, -0.099999999999999978 },
5168 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5169 10.000000000000000, 0.0000000000000000 },
5170 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5171 10.000000000000000, 0.10000000000000009 },
5172 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5173 10.000000000000000, 0.19999999999999996 },
5174 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5175 10.000000000000000, 0.30000000000000004 },
5176 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5177 10.000000000000000, 0.39999999999999991 },
5178 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5179 10.000000000000000, 0.50000000000000000 },
5180 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5181 10.000000000000000, 0.60000000000000009 },
5182 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5183 10.000000000000000, 0.69999999999999996 },
5184 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5185 10.000000000000000, 0.80000000000000004 },
5186 { 1.0000000000000000, 1.0000000000000000, 0.0000000000000000,
5187 10.000000000000000, 0.89999999999999991 },
5190 // Test function for a=1.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
5191 template <typename Tp
>
5194 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5195 Tp max_abs_diff
= -Tp(1);
5196 Tp max_abs_frac
= -Tp(1);
5197 unsigned int num_datum
= sizeof(data075
)
5198 / sizeof(testcase_hyperg
<double>);
5199 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5201 const Tp f
= std::tr1::hyperg(Tp(data075
[i
].a
), Tp(data075
[i
].b
),
5202 Tp(data075
[i
].c
), Tp(data075
[i
].x
));
5203 const Tp f0
= data075
[i
].f0
;
5204 const Tp diff
= f
- f0
;
5205 if (std::abs(diff
) > max_abs_diff
)
5206 max_abs_diff
= std::abs(diff
);
5207 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5209 const Tp frac
= diff
/ f0
;
5210 if (std::abs(frac
) > max_abs_frac
)
5211 max_abs_frac
= std::abs(frac
);
5214 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5217 // Test data for a=1.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
5218 testcase_hyperg
<double> data076
[] = {
5219 { 0.84089972268671609, 1.0000000000000000, 0.50000000000000000,
5220 2.0000000000000000, -0.90000000000000002 },
5221 { 0.85410196624968437, 1.0000000000000000, 0.50000000000000000,
5222 2.0000000000000000, -0.80000000000000004 },
5223 { 0.86811566011579933, 1.0000000000000000, 0.50000000000000000,
5224 2.0000000000000000, -0.69999999999999996 },
5225 { 0.88303688022450544, 1.0000000000000000, 0.50000000000000000,
5226 2.0000000000000000, -0.59999999999999998 },
5227 { 0.89897948556635565, 1.0000000000000000, 0.50000000000000000,
5228 2.0000000000000000, -0.50000000000000000 },
5229 { 0.91607978309961580, 1.0000000000000000, 0.50000000000000000,
5230 2.0000000000000000, -0.40000000000000002 },
5231 { 0.93450283399425305, 1.0000000000000000, 0.50000000000000000,
5232 2.0000000000000000, -0.30000000000000004 },
5233 { 0.95445115010332193, 1.0000000000000000, 0.50000000000000000,
5234 2.0000000000000000, -0.19999999999999996 },
5235 { 0.97617696340303095, 1.0000000000000000, 0.50000000000000000,
5236 2.0000000000000000, -0.099999999999999978 },
5237 { 1.0000000000000000, 1.0000000000000000, 0.50000000000000000,
5238 2.0000000000000000, 0.0000000000000000 },
5239 { 1.0263340389897240, 1.0000000000000000, 0.50000000000000000,
5240 2.0000000000000000, 0.10000000000000009 },
5241 { 1.0557280900008410, 1.0000000000000000, 0.50000000000000000,
5242 2.0000000000000000, 0.19999999999999996 },
5243 { 1.0889331564394962, 1.0000000000000000, 0.50000000000000000,
5244 2.0000000000000000, 0.30000000000000004 },
5245 { 1.1270166537925830, 1.0000000000000000, 0.50000000000000000,
5246 2.0000000000000000, 0.39999999999999991 },
5247 { 1.1715728752538095, 1.0000000000000000, 0.50000000000000000,
5248 2.0000000000000000, 0.50000000000000000 },
5249 { 1.2251482265544145, 1.0000000000000000, 0.50000000000000000,
5250 2.0000000000000000, 0.60000000000000009 },
5251 { 1.2922212642709541, 1.0000000000000000, 0.50000000000000000,
5252 2.0000000000000000, 0.69999999999999996 },
5253 { 1.3819660112501042, 1.0000000000000000, 0.50000000000000000,
5254 2.0000000000000000, 0.80000000000000004 },
5255 { 1.5194938532959119, 1.0000000000000000, 0.50000000000000000,
5256 2.0000000000000000, 0.89999999999999991 },
5259 // Test function for a=1.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
5260 template <typename Tp
>
5263 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5264 Tp max_abs_diff
= -Tp(1);
5265 Tp max_abs_frac
= -Tp(1);
5266 unsigned int num_datum
= sizeof(data076
)
5267 / sizeof(testcase_hyperg
<double>);
5268 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5270 const Tp f
= std::tr1::hyperg(Tp(data076
[i
].a
), Tp(data076
[i
].b
),
5271 Tp(data076
[i
].c
), Tp(data076
[i
].x
));
5272 const Tp f0
= data076
[i
].f0
;
5273 const Tp diff
= f
- f0
;
5274 if (std::abs(diff
) > max_abs_diff
)
5275 max_abs_diff
= std::abs(diff
);
5276 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5278 const Tp frac
= diff
/ f0
;
5279 if (std::abs(frac
) > max_abs_frac
)
5280 max_abs_frac
= std::abs(frac
);
5283 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5286 // Test data for a=1.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
5287 testcase_hyperg
<double> data077
[] = {
5288 { 0.90992197313391499, 1.0000000000000000, 0.50000000000000000,
5289 4.0000000000000000, -0.90000000000000002 },
5290 { 0.91822592662244507, 1.0000000000000000, 0.50000000000000000,
5291 4.0000000000000000, -0.80000000000000004 },
5292 { 0.92687104566419531, 1.0000000000000000, 0.50000000000000000,
5293 4.0000000000000000, -0.69999999999999996 },
5294 { 0.93588628166548815, 1.0000000000000000, 0.50000000000000000,
5295 4.0000000000000000, -0.59999999999999998 },
5296 { 0.94530459215552909, 1.0000000000000000, 0.50000000000000000,
5297 4.0000000000000000, -0.50000000000000000 },
5298 { 0.95516374875247467, 1.0000000000000000, 0.50000000000000000,
5299 4.0000000000000000, -0.40000000000000002 },
5300 { 0.96550736800511827, 1.0000000000000000, 0.50000000000000000,
5301 4.0000000000000000, -0.30000000000000004 },
5302 { 0.97638624595136270, 1.0000000000000000, 0.50000000000000000,
5303 4.0000000000000000, -0.19999999999999996 },
5304 { 0.98786011482678993, 1.0000000000000000, 0.50000000000000000,
5305 4.0000000000000000, -0.099999999999999978 },
5306 { 1.0000000000000000, 1.0000000000000000, 0.50000000000000000,
5307 4.0000000000000000, 0.0000000000000000 },
5308 { 1.0128914530682316, 1.0000000000000000, 0.50000000000000000,
5309 4.0000000000000000, 0.10000000000000009 },
5310 { 1.0266391040215350, 1.0000000000000000, 0.50000000000000000,
5311 4.0000000000000000, 0.19999999999999996 },
5312 { 1.0413732738729464, 1.0000000000000000, 0.50000000000000000,
5313 4.0000000000000000, 0.30000000000000004 },
5314 { 1.0572599536532992, 1.0000000000000000, 0.50000000000000000,
5315 4.0000000000000000, 0.39999999999999991 },
5316 { 1.0745166004060953, 1.0000000000000000, 0.50000000000000000,
5317 4.0000000000000000, 0.50000000000000000 },
5318 { 1.0934387388831386, 1.0000000000000000, 0.50000000000000000,
5319 4.0000000000000000, 0.60000000000000009 },
5320 { 1.1144486980714641, 1.0000000000000000, 0.50000000000000000,
5321 4.0000000000000000, 0.69999999999999996 },
5322 { 1.1381966011250106, 1.0000000000000000, 0.50000000000000000,
5323 4.0000000000000000, 0.80000000000000004 },
5324 { 1.1658171625342397, 1.0000000000000000, 0.50000000000000000,
5325 4.0000000000000000, 0.89999999999999991 },
5328 // Test function for a=1.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
5329 template <typename Tp
>
5332 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5333 Tp max_abs_diff
= -Tp(1);
5334 Tp max_abs_frac
= -Tp(1);
5335 unsigned int num_datum
= sizeof(data077
)
5336 / sizeof(testcase_hyperg
<double>);
5337 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5339 const Tp f
= std::tr1::hyperg(Tp(data077
[i
].a
), Tp(data077
[i
].b
),
5340 Tp(data077
[i
].c
), Tp(data077
[i
].x
));
5341 const Tp f0
= data077
[i
].f0
;
5342 const Tp diff
= f
- f0
;
5343 if (std::abs(diff
) > max_abs_diff
)
5344 max_abs_diff
= std::abs(diff
);
5345 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5347 const Tp frac
= diff
/ f0
;
5348 if (std::abs(frac
) > max_abs_frac
)
5349 max_abs_frac
= std::abs(frac
);
5352 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5355 // Test data for a=1.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
5356 testcase_hyperg
<double> data078
[] = {
5357 { 0.93641908369732885, 1.0000000000000000, 0.50000000000000000,
5358 6.0000000000000000, -0.90000000000000002 },
5359 { 0.94256349654111315, 1.0000000000000000, 0.50000000000000000,
5360 6.0000000000000000, -0.80000000000000004 },
5361 { 0.94890138508461319, 1.0000000000000000, 0.50000000000000000,
5362 6.0000000000000000, -0.69999999999999996 },
5363 { 0.95544578858430007, 1.0000000000000000, 0.50000000000000000,
5364 6.0000000000000000, -0.59999999999999998 },
5365 { 0.96221121193620718, 1.0000000000000000, 0.50000000000000000,
5366 6.0000000000000000, -0.50000000000000000 },
5367 { 0.96921386948293542, 1.0000000000000000, 0.50000000000000000,
5368 6.0000000000000000, -0.40000000000000002 },
5369 { 0.97647198488394704, 1.0000000000000000, 0.50000000000000000,
5370 6.0000000000000000, -0.30000000000000004 },
5371 { 0.98400616412578656, 1.0000000000000000, 0.50000000000000000,
5372 6.0000000000000000, -0.19999999999999996 },
5373 { 0.99183986544963032, 1.0000000000000000, 0.50000000000000000,
5374 6.0000000000000000, -0.099999999999999978 },
5375 { 1.0000000000000000, 1.0000000000000000, 0.50000000000000000,
5376 6.0000000000000000, 0.0000000000000000 },
5377 { 1.0085177124149158, 1.0000000000000000, 0.50000000000000000,
5378 6.0000000000000000, 0.10000000000000009 },
5379 { 1.0174294150407122, 1.0000000000000000, 0.50000000000000000,
5380 6.0000000000000000, 0.19999999999999996 },
5381 { 1.0267781897388850, 1.0000000000000000, 0.50000000000000000,
5382 6.0000000000000000, 0.30000000000000004 },
5383 { 1.0366157405967285, 1.0000000000000000, 0.50000000000000000,
5384 6.0000000000000000, 0.39999999999999991 },
5385 { 1.0470052068648839, 1.0000000000000000, 0.50000000000000000,
5386 6.0000000000000000, 0.50000000000000000 },
5387 { 1.0580253905513313, 1.0000000000000000, 0.50000000000000000,
5388 6.0000000000000000, 0.60000000000000009 },
5389 { 1.0697774741209765, 1.0000000000000000, 0.50000000000000000,
5390 6.0000000000000000, 0.69999999999999996 },
5391 { 1.0823965556448414, 1.0000000000000000, 0.50000000000000000,
5392 6.0000000000000000, 0.80000000000000004 },
5393 { 1.0960739512057103, 1.0000000000000000, 0.50000000000000000,
5394 6.0000000000000000, 0.89999999999999991 },
5397 // Test function for a=1.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
5398 template <typename Tp
>
5401 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5402 Tp max_abs_diff
= -Tp(1);
5403 Tp max_abs_frac
= -Tp(1);
5404 unsigned int num_datum
= sizeof(data078
)
5405 / sizeof(testcase_hyperg
<double>);
5406 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5408 const Tp f
= std::tr1::hyperg(Tp(data078
[i
].a
), Tp(data078
[i
].b
),
5409 Tp(data078
[i
].c
), Tp(data078
[i
].x
));
5410 const Tp f0
= data078
[i
].f0
;
5411 const Tp diff
= f
- f0
;
5412 if (std::abs(diff
) > max_abs_diff
)
5413 max_abs_diff
= std::abs(diff
);
5414 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5416 const Tp frac
= diff
/ f0
;
5417 if (std::abs(frac
) > max_abs_frac
)
5418 max_abs_frac
= std::abs(frac
);
5421 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5424 // Test data for a=1.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
5425 testcase_hyperg
<double> data079
[] = {
5426 { 0.95069883346936235, 1.0000000000000000, 0.50000000000000000,
5427 8.0000000000000000, -0.90000000000000002 },
5428 { 0.95559618047704165, 1.0000000000000000, 0.50000000000000000,
5429 8.0000000000000000, -0.80000000000000004 },
5430 { 0.96061938755931653, 1.0000000000000000, 0.50000000000000000,
5431 8.0000000000000000, -0.69999999999999996 },
5432 { 0.96577553912851344, 1.0000000000000000, 0.50000000000000000,
5433 8.0000000000000000, -0.59999999999999998 },
5434 { 0.97107239473807716, 1.0000000000000000, 0.50000000000000000,
5435 8.0000000000000000, -0.50000000000000000 },
5436 { 0.97651848528588503, 1.0000000000000000, 0.50000000000000000,
5437 8.0000000000000000, -0.40000000000000002 },
5438 { 0.98212322830227139, 1.0000000000000000, 0.50000000000000000,
5439 8.0000000000000000, -0.30000000000000004 },
5440 { 0.98789706736195781, 1.0000000000000000, 0.50000000000000000,
5441 8.0000000000000000, -0.19999999999999996 },
5442 { 0.99385164237825074, 1.0000000000000000, 0.50000000000000000,
5443 8.0000000000000000, -0.099999999999999978 },
5444 { 1.0000000000000000, 1.0000000000000000, 0.50000000000000000,
5445 8.0000000000000000, 0.0000000000000000 },
5446 { 1.0063568569383123, 1.0000000000000000, 0.50000000000000000,
5447 8.0000000000000000, 0.10000000000000009 },
5448 { 1.0129389344715818, 1.0000000000000000, 0.50000000000000000,
5449 8.0000000000000000, 0.19999999999999996 },
5450 { 1.0197653907773940, 1.0000000000000000, 0.50000000000000000,
5451 8.0000000000000000, 0.30000000000000004 },
5452 { 1.0268583912277143, 1.0000000000000000, 0.50000000000000000,
5453 8.0000000000000000, 0.39999999999999991 },
5454 { 1.0342438793937092, 1.0000000000000000, 0.50000000000000000,
5455 8.0000000000000000, 0.50000000000000000 },
5456 { 1.0419526514766855, 1.0000000000000000, 0.50000000000000000,
5457 8.0000000000000000, 0.60000000000000009 },
5458 { 1.0500219124976327, 1.0000000000000000, 0.50000000000000000,
5459 8.0000000000000000, 0.69999999999999996 },
5460 { 1.0584976491907043, 1.0000000000000000, 0.50000000000000000,
5461 8.0000000000000000, 0.80000000000000004 },
5462 { 1.0674385240268101, 1.0000000000000000, 0.50000000000000000,
5463 8.0000000000000000, 0.89999999999999991 },
5466 // Test function for a=1.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
5467 template <typename Tp
>
5470 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5471 Tp max_abs_diff
= -Tp(1);
5472 Tp max_abs_frac
= -Tp(1);
5473 unsigned int num_datum
= sizeof(data079
)
5474 / sizeof(testcase_hyperg
<double>);
5475 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5477 const Tp f
= std::tr1::hyperg(Tp(data079
[i
].a
), Tp(data079
[i
].b
),
5478 Tp(data079
[i
].c
), Tp(data079
[i
].x
));
5479 const Tp f0
= data079
[i
].f0
;
5480 const Tp diff
= f
- f0
;
5481 if (std::abs(diff
) > max_abs_diff
)
5482 max_abs_diff
= std::abs(diff
);
5483 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5485 const Tp frac
= diff
/ f0
;
5486 if (std::abs(frac
) > max_abs_frac
)
5487 max_abs_frac
= std::abs(frac
);
5490 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5493 // Test data for a=1.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
5494 testcase_hyperg
<double> data080
[] = {
5495 { 0.95968319138913893, 1.0000000000000000, 0.50000000000000000,
5496 10.000000000000000, -0.90000000000000002 },
5497 { 0.96376169072755768, 1.0000000000000000, 0.50000000000000000,
5498 10.000000000000000, -0.80000000000000004 },
5499 { 0.96792900082729316, 1.0000000000000000, 0.50000000000000000,
5500 10.000000000000000, -0.69999999999999996 },
5501 { 0.97218942798115737, 1.0000000000000000, 0.50000000000000000,
5502 10.000000000000000, -0.59999999999999998 },
5503 { 0.97654763592586857, 1.0000000000000000, 0.50000000000000000,
5504 10.000000000000000, -0.50000000000000000 },
5505 { 0.98100869054353856, 1.0000000000000000, 0.50000000000000000,
5506 10.000000000000000, -0.40000000000000002 },
5507 { 0.98557811238699278, 1.0000000000000000, 0.50000000000000000,
5508 10.000000000000000, -0.30000000000000004 },
5509 { 0.99026193885795544, 1.0000000000000000, 0.50000000000000000,
5510 10.000000000000000, -0.19999999999999996 },
5511 { 0.99506679842072221, 1.0000000000000000, 0.50000000000000000,
5512 10.000000000000000, -0.099999999999999978 },
5513 { 1.0000000000000000, 1.0000000000000000, 0.50000000000000000,
5514 10.000000000000000, 0.0000000000000000 },
5515 { 1.0050696417919618, 1.0000000000000000, 0.50000000000000000,
5516 10.000000000000000, 0.10000000000000009 },
5517 { 1.0102847452747090, 1.0000000000000000, 0.50000000000000000,
5518 10.000000000000000, 0.19999999999999996 },
5519 { 1.0156554225057022, 1.0000000000000000, 0.50000000000000000,
5520 10.000000000000000, 0.30000000000000004 },
5521 { 1.0211930882963096, 1.0000000000000000, 0.50000000000000000,
5522 10.000000000000000, 0.39999999999999991 },
5523 { 1.0269107343740711, 1.0000000000000000, 0.50000000000000000,
5524 10.000000000000000, 0.50000000000000000 },
5525 { 1.0328232917216298, 1.0000000000000000, 0.50000000000000000,
5526 10.000000000000000, 0.60000000000000009 },
5527 { 1.0389481230247195, 1.0000000000000000, 0.50000000000000000,
5528 10.000000000000000, 0.69999999999999996 },
5529 { 1.0453057164134614, 1.0000000000000000, 0.50000000000000000,
5530 10.000000000000000, 0.80000000000000004 },
5531 { 1.0519207114461246, 1.0000000000000000, 0.50000000000000000,
5532 10.000000000000000, 0.89999999999999991 },
5535 // Test function for a=1.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
5536 template <typename Tp
>
5539 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5540 Tp max_abs_diff
= -Tp(1);
5541 Tp max_abs_frac
= -Tp(1);
5542 unsigned int num_datum
= sizeof(data080
)
5543 / sizeof(testcase_hyperg
<double>);
5544 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5546 const Tp f
= std::tr1::hyperg(Tp(data080
[i
].a
), Tp(data080
[i
].b
),
5547 Tp(data080
[i
].c
), Tp(data080
[i
].x
));
5548 const Tp f0
= data080
[i
].f0
;
5549 const Tp diff
= f
- f0
;
5550 if (std::abs(diff
) > max_abs_diff
)
5551 max_abs_diff
= std::abs(diff
);
5552 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5554 const Tp frac
= diff
/ f0
;
5555 if (std::abs(frac
) > max_abs_frac
)
5556 max_abs_frac
= std::abs(frac
);
5559 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5562 // Test data for a=1.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
5563 testcase_hyperg
<double> data081
[] = {
5564 { 0.71317098463599404, 1.0000000000000000, 1.0000000000000000,
5565 2.0000000000000000, -0.90000000000000002 },
5566 { 0.73473333112764871, 1.0000000000000000, 1.0000000000000000,
5567 2.0000000000000000, -0.80000000000000004 },
5568 { 0.75804035866024377, 1.0000000000000000, 1.0000000000000000,
5569 2.0000000000000000, -0.69999999999999996 },
5570 { 0.78333938207622600, 1.0000000000000000, 1.0000000000000000,
5571 2.0000000000000000, -0.59999999999999998 },
5572 { 0.81093021621632877, 1.0000000000000000, 1.0000000000000000,
5573 2.0000000000000000, -0.50000000000000000 },
5574 { 0.84118059155303226, 1.0000000000000000, 1.0000000000000000,
5575 2.0000000000000000, -0.40000000000000002 },
5576 { 0.87454754822497005, 1.0000000000000000, 1.0000000000000000,
5577 2.0000000000000000, -0.30000000000000004 },
5578 { 0.91160778396977304, 1.0000000000000000, 1.0000000000000000,
5579 2.0000000000000000, -0.19999999999999996 },
5580 { 0.95310179804324857, 1.0000000000000000, 1.0000000000000000,
5581 2.0000000000000000, -0.099999999999999978 },
5582 { 1.0000000000000000, 1.0000000000000000, 1.0000000000000000,
5583 2.0000000000000000, 0.0000000000000000 },
5584 { 1.0536051565782629, 1.0000000000000000, 1.0000000000000000,
5585 2.0000000000000000, 0.10000000000000009 },
5586 { 1.1157177565710485, 1.0000000000000000, 1.0000000000000000,
5587 2.0000000000000000, 0.19999999999999996 },
5588 { 1.1889164797957747, 1.0000000000000000, 1.0000000000000000,
5589 2.0000000000000000, 0.30000000000000004 },
5590 { 1.2770640594149765, 1.0000000000000000, 1.0000000000000000,
5591 2.0000000000000000, 0.39999999999999991 },
5592 { 1.3862943611198899, 1.0000000000000000, 1.0000000000000000,
5593 2.0000000000000000, 0.50000000000000000 },
5594 { 1.5271512197902593, 1.0000000000000000, 1.0000000000000000,
5595 2.0000000000000000, 0.60000000000000009 },
5596 { 1.7199611490370503, 1.0000000000000000, 1.0000000000000000,
5597 2.0000000000000000, 0.69999999999999996 },
5598 { 2.0117973905426232, 1.0000000000000000, 1.0000000000000000,
5599 2.0000000000000000, 0.80000000000000004 },
5600 { 2.5584278811044912, 1.0000000000000000, 1.0000000000000000,
5601 2.0000000000000000, 0.89999999999999991 },
5604 // Test function for a=1.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
5605 template <typename Tp
>
5608 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5609 Tp max_abs_diff
= -Tp(1);
5610 Tp max_abs_frac
= -Tp(1);
5611 unsigned int num_datum
= sizeof(data081
)
5612 / sizeof(testcase_hyperg
<double>);
5613 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5615 const Tp f
= std::tr1::hyperg(Tp(data081
[i
].a
), Tp(data081
[i
].b
),
5616 Tp(data081
[i
].c
), Tp(data081
[i
].x
));
5617 const Tp f0
= data081
[i
].f0
;
5618 const Tp diff
= f
- f0
;
5619 if (std::abs(diff
) > max_abs_diff
)
5620 max_abs_diff
= std::abs(diff
);
5621 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5623 const Tp frac
= diff
/ f0
;
5624 if (std::abs(frac
) > max_abs_frac
)
5625 max_abs_frac
= std::abs(frac
);
5628 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5631 // Test data for a=1.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
5632 testcase_hyperg
<double> data082
[] = {
5633 { 0.83165649828125576, 1.0000000000000000, 1.0000000000000000,
5634 4.0000000000000000, -0.90000000000000002 },
5635 { 0.84626246650116577, 1.0000000000000000, 1.0000000000000000,
5636 4.0000000000000000, -0.80000000000000004 },
5637 { 0.86165287670267410, 1.0000000000000000, 1.0000000000000000,
5638 4.0000000000000000, -0.69999999999999996 },
5639 { 0.87790681762615241, 1.0000000000000000, 1.0000000000000000,
5640 4.0000000000000000, -0.59999999999999998 },
5641 { 0.89511583784087689, 1.0000000000000000, 1.0000000000000000,
5642 4.0000000000000000, -0.50000000000000000 },
5643 { 0.91338673957393823, 1.0000000000000000, 1.0000000000000000,
5644 4.0000000000000000, -0.40000000000000002 },
5645 { 0.93284521667331954, 1.0000000000000000, 1.0000000000000000,
5646 4.0000000000000000, -0.30000000000000004 },
5647 { 0.95364066873549813, 1.0000000000000000, 1.0000000000000000,
5648 4.0000000000000000, -0.19999999999999996 },
5649 { 0.97595268969924187, 1.0000000000000000, 1.0000000000000000,
5650 4.0000000000000000, -0.099999999999999978 },
5651 { 1.0000000000000000, 1.0000000000000000, 1.0000000000000000,
5652 4.0000000000000000, 0.0000000000000000 },
5653 { 1.0260530485179122, 1.0000000000000000, 1.0000000000000000,
5654 4.0000000000000000, 0.10000000000000009 },
5655 { 1.0544523154103413, 1.0000000000000000, 1.0000000000000000,
5656 4.0000000000000000, 0.19999999999999996 },
5657 { 1.0856358366643180, 1.0000000000000000, 1.0000000000000000,
5658 4.0000000000000000, 0.30000000000000004 },
5659 { 1.1201824010510930, 1.0000000000000000, 1.0000000000000000,
5660 4.0000000000000000, 0.39999999999999991 },
5661 { 1.1588830833596719, 1.0000000000000000, 1.0000000000000000,
5662 4.0000000000000000, 0.50000000000000000 },
5663 { 1.2028682930536780, 1.0000000000000000, 1.0000000000000000,
5664 4.0000000000000000, 0.60000000000000009 },
5665 { 1.2538561433469468, 1.0000000000000000, 1.0000000000000000,
5666 4.0000000000000000, 0.69999999999999996 },
5667 { 1.3147120107267418, 1.0000000000000000, 1.0000000000000000,
5668 4.0000000000000000, 0.80000000000000004 },
5669 { 1.3910528844853491, 1.0000000000000000, 1.0000000000000000,
5670 4.0000000000000000, 0.89999999999999991 },
5673 // Test function for a=1.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
5674 template <typename Tp
>
5677 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5678 Tp max_abs_diff
= -Tp(1);
5679 Tp max_abs_frac
= -Tp(1);
5680 unsigned int num_datum
= sizeof(data082
)
5681 / sizeof(testcase_hyperg
<double>);
5682 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5684 const Tp f
= std::tr1::hyperg(Tp(data082
[i
].a
), Tp(data082
[i
].b
),
5685 Tp(data082
[i
].c
), Tp(data082
[i
].x
));
5686 const Tp f0
= data082
[i
].f0
;
5687 const Tp diff
= f
- f0
;
5688 if (std::abs(diff
) > max_abs_diff
)
5689 max_abs_diff
= std::abs(diff
);
5690 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5692 const Tp frac
= diff
/ f0
;
5693 if (std::abs(frac
) > max_abs_frac
)
5694 max_abs_frac
= std::abs(frac
);
5697 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5700 // Test data for a=1.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
5701 testcase_hyperg
<double> data083
[] = {
5702 { 0.87917686994924527, 1.0000000000000000, 1.0000000000000000,
5703 6.0000000000000000, -0.90000000000000002 },
5704 { 0.89033956110358414, 1.0000000000000000, 1.0000000000000000,
5705 6.0000000000000000, -0.80000000000000004 },
5706 { 0.90196195126098366, 1.0000000000000000, 1.0000000000000000,
5707 6.0000000000000000, -0.69999999999999996 },
5708 { 0.91408080149514692, 1.0000000000000000, 1.0000000000000000,
5709 6.0000000000000000, -0.59999999999999998 },
5710 { 0.92673756761314952, 1.0000000000000000, 1.0000000000000000,
5711 6.0000000000000000, -0.50000000000000000 },
5712 { 0.93997926630123407, 1.0000000000000000, 1.0000000000000000,
5713 6.0000000000000000, -0.40000000000000002 },
5714 { 0.95385955885019291, 1.0000000000000000, 1.0000000000000000,
5715 6.0000000000000000, -0.30000000000000004 },
5716 { 0.96844012412988900, 1.0000000000000000, 1.0000000000000000,
5717 6.0000000000000000, -0.19999999999999996 },
5718 { 0.98379242268046208, 1.0000000000000000, 1.0000000000000000,
5719 6.0000000000000000, -0.099999999999999978 },
5720 { 1.0000000000000000, 1.0000000000000000, 1.0000000000000000,
5721 6.0000000000000000, 0.0000000000000000 },
5722 { 1.0171615499181177, 1.0000000000000000, 1.0000000000000000,
5723 6.0000000000000000, 0.10000000000000009 },
5724 { 1.0353950776091037, 1.0000000000000000, 1.0000000000000000,
5725 6.0000000000000000, 0.19999999999999996 },
5726 { 1.0548437030651112, 1.0000000000000000, 1.0000000000000000,
5727 6.0000000000000000, 0.30000000000000004 },
5728 { 1.0756840039415978, 1.0000000000000000, 1.0000000000000000,
5729 6.0000000000000000, 0.39999999999999991 },
5730 { 1.0981384722661196, 1.0000000000000000, 1.0000000000000000,
5731 6.0000000000000000, 0.50000000000000000 },
5732 { 1.1224950318916129, 1.0000000000000000, 1.0000000000000000,
5733 6.0000000000000000, 0.60000000000000009 },
5734 { 1.1491396357184527, 1.0000000000000000, 1.0000000000000000,
5735 6.0000000000000000, 0.69999999999999996 },
5736 { 1.1786158344507012, 1.0000000000000000, 1.0000000000000000,
5737 6.0000000000000000, 0.80000000000000004 },
5738 { 1.2117500593515478, 1.0000000000000000, 1.0000000000000000,
5739 6.0000000000000000, 0.89999999999999991 },
5742 // Test function for a=1.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
5743 template <typename Tp
>
5746 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5747 Tp max_abs_diff
= -Tp(1);
5748 Tp max_abs_frac
= -Tp(1);
5749 unsigned int num_datum
= sizeof(data083
)
5750 / sizeof(testcase_hyperg
<double>);
5751 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5753 const Tp f
= std::tr1::hyperg(Tp(data083
[i
].a
), Tp(data083
[i
].b
),
5754 Tp(data083
[i
].c
), Tp(data083
[i
].x
));
5755 const Tp f0
= data083
[i
].f0
;
5756 const Tp diff
= f
- f0
;
5757 if (std::abs(diff
) > max_abs_diff
)
5758 max_abs_diff
= std::abs(diff
);
5759 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5761 const Tp frac
= diff
/ f0
;
5762 if (std::abs(frac
) > max_abs_frac
)
5763 max_abs_frac
= std::abs(frac
);
5766 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5769 // Test data for a=1.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
5770 testcase_hyperg
<double> data084
[] = {
5771 { 0.90538259348578409, 1.0000000000000000, 1.0000000000000000,
5772 8.0000000000000000, -0.90000000000000002 },
5773 { 0.91444830598832050, 1.0000000000000000, 1.0000000000000000,
5774 8.0000000000000000, -0.80000000000000004 },
5775 { 0.92381915945974002, 1.0000000000000000, 1.0000000000000000,
5776 8.0000000000000000, -0.69999999999999996 },
5777 { 0.93351553488501815, 1.0000000000000000, 1.0000000000000000,
5778 8.0000000000000000, -0.59999999999999998 },
5779 { 0.94356001859234884, 1.0000000000000000, 1.0000000000000000,
5780 8.0000000000000000, -0.50000000000000000 },
5781 { 0.95397775039949584, 1.0000000000000000, 1.0000000000000000,
5782 8.0000000000000000, -0.40000000000000002 },
5783 { 0.96479684710618019, 1.0000000000000000, 1.0000000000000000,
5784 8.0000000000000000, -0.30000000000000004 },
5785 { 0.97604892281308531, 1.0000000000000000, 1.0000000000000000,
5786 8.0000000000000000, -0.19999999999999996 },
5787 { 0.98776973540356938, 1.0000000000000000, 1.0000000000000000,
5788 8.0000000000000000, -0.099999999999999978 },
5789 { 1.0000000000000000, 1.0000000000000000, 1.0000000000000000,
5790 8.0000000000000000, 0.0000000000000000 },
5791 { 1.0127864273812119, 1.0000000000000000, 1.0000000000000000,
5792 8.0000000000000000, 0.10000000000000009 },
5793 { 1.0261830717772533, 1.0000000000000000, 1.0000000000000000,
5794 8.0000000000000000, 0.19999999999999996 },
5795 { 1.0402531144740719, 1.0000000000000000, 1.0000000000000000,
5796 8.0000000000000000, 0.30000000000000004 },
5797 { 1.0550712790827002, 1.0000000000000000, 1.0000000000000000,
5798 8.0000000000000000, 0.39999999999999991 },
5799 { 1.0707271945059007, 1.0000000000000000, 1.0000000000000000,
5800 8.0000000000000000, 0.50000000000000000 },
5801 { 1.0873302420658923, 1.0000000000000000, 1.0000000000000000,
5802 8.0000000000000000, 0.60000000000000009 },
5803 { 1.1050168587085545, 1.0000000000000000, 1.0000000000000000,
5804 8.0000000000000000, 0.69999999999999996 },
5805 { 1.1239622188477687, 1.0000000000000000, 1.0000000000000000,
5806 8.0000000000000000, 0.80000000000000004 },
5807 { 1.1444006183097781, 1.0000000000000000, 1.0000000000000000,
5808 8.0000000000000000, 0.89999999999999991 },
5811 // Test function for a=1.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
5812 template <typename Tp
>
5815 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5816 Tp max_abs_diff
= -Tp(1);
5817 Tp max_abs_frac
= -Tp(1);
5818 unsigned int num_datum
= sizeof(data084
)
5819 / sizeof(testcase_hyperg
<double>);
5820 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5822 const Tp f
= std::tr1::hyperg(Tp(data084
[i
].a
), Tp(data084
[i
].b
),
5823 Tp(data084
[i
].c
), Tp(data084
[i
].x
));
5824 const Tp f0
= data084
[i
].f0
;
5825 const Tp diff
= f
- f0
;
5826 if (std::abs(diff
) > max_abs_diff
)
5827 max_abs_diff
= std::abs(diff
);
5828 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5830 const Tp frac
= diff
/ f0
;
5831 if (std::abs(frac
) > max_abs_frac
)
5832 max_abs_frac
= std::abs(frac
);
5835 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5838 // Test data for a=1.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
5839 testcase_hyperg
<double> data085
[] = {
5840 { 0.92211295632330403, 1.0000000000000000, 1.0000000000000000,
5841 10.000000000000000, -0.90000000000000002 },
5842 { 0.92975727737040659, 1.0000000000000000, 1.0000000000000000,
5843 10.000000000000000, -0.80000000000000004 },
5844 { 0.93761992348333467, 1.0000000000000000, 1.0000000000000000,
5845 10.000000000000000, -0.69999999999999996 },
5846 { 0.94571346180587801, 1.0000000000000000, 1.0000000000000000,
5847 10.000000000000000, -0.59999999999999998 },
5848 { 0.95405164371146867, 1.0000000000000000, 1.0000000000000000,
5849 10.000000000000000, -0.50000000000000000 },
5850 { 0.96264956879205954, 1.0000000000000000, 1.0000000000000000,
5851 10.000000000000000, -0.40000000000000002 },
5852 { 0.97152388013493096, 1.0000000000000000, 1.0000000000000000,
5853 10.000000000000000, -0.30000000000000004 },
5854 { 0.98069299877709348, 1.0000000000000000, 1.0000000000000000,
5855 10.000000000000000, -0.19999999999999996 },
5856 { 0.99017740778385854, 1.0000000000000000, 1.0000000000000000,
5857 10.000000000000000, -0.099999999999999978 },
5858 { 1.0000000000000000, 1.0000000000000000, 1.0000000000000000,
5859 10.000000000000000, 0.0000000000000000 },
5860 { 1.0101865087004833, 1.0000000000000000, 1.0000000000000000,
5861 10.000000000000000, 0.10000000000000009 },
5862 { 1.0207660479892111, 1.0000000000000000, 1.0000000000000000,
5863 10.000000000000000, 0.19999999999999996 },
5864 { 1.0317718013185031, 1.0000000000000000, 1.0000000000000000,
5865 10.000000000000000, 0.30000000000000004 },
5866 { 1.0432419144892398, 1.0000000000000000, 1.0000000000000000,
5867 10.000000000000000, 0.39999999999999991 },
5868 { 1.0552206786504446, 1.0000000000000000, 1.0000000000000000,
5869 10.000000000000000, 0.50000000000000000 },
5870 { 1.0677601383233675, 1.0000000000000000, 1.0000000000000000,
5871 10.000000000000000, 0.60000000000000009 },
5872 { 1.0809223485579968, 1.0000000000000000, 1.0000000000000000,
5873 10.000000000000000, 0.69999999999999996 },
5874 { 1.0947826783002668, 1.0000000000000000, 1.0000000000000000,
5875 10.000000000000000, 0.80000000000000004 },
5876 { 1.1094349304493603, 1.0000000000000000, 1.0000000000000000,
5877 10.000000000000000, 0.89999999999999991 },
5880 // Test function for a=1.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
5881 template <typename Tp
>
5884 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5885 Tp max_abs_diff
= -Tp(1);
5886 Tp max_abs_frac
= -Tp(1);
5887 unsigned int num_datum
= sizeof(data085
)
5888 / sizeof(testcase_hyperg
<double>);
5889 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5891 const Tp f
= std::tr1::hyperg(Tp(data085
[i
].a
), Tp(data085
[i
].b
),
5892 Tp(data085
[i
].c
), Tp(data085
[i
].x
));
5893 const Tp f0
= data085
[i
].f0
;
5894 const Tp diff
= f
- f0
;
5895 if (std::abs(diff
) > max_abs_diff
)
5896 max_abs_diff
= std::abs(diff
);
5897 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5899 const Tp frac
= diff
/ f0
;
5900 if (std::abs(frac
) > max_abs_frac
)
5901 max_abs_frac
= std::abs(frac
);
5904 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5907 // Test data for a=1.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
5908 testcase_hyperg
<double> data086
[] = {
5909 { 0.52631578947368429, 1.0000000000000000, 2.0000000000000000,
5910 2.0000000000000000, -0.90000000000000002 },
5911 { 0.55555555555555558, 1.0000000000000000, 2.0000000000000000,
5912 2.0000000000000000, -0.80000000000000004 },
5913 { 0.58823529411764708, 1.0000000000000000, 2.0000000000000000,
5914 2.0000000000000000, -0.69999999999999996 },
5915 { 0.62500000000000000, 1.0000000000000000, 2.0000000000000000,
5916 2.0000000000000000, -0.59999999999999998 },
5917 { 0.66666666666666663, 1.0000000000000000, 2.0000000000000000,
5918 2.0000000000000000, -0.50000000000000000 },
5919 { 0.71428571428571430, 1.0000000000000000, 2.0000000000000000,
5920 2.0000000000000000, -0.40000000000000002 },
5921 { 0.76923076923076927, 1.0000000000000000, 2.0000000000000000,
5922 2.0000000000000000, -0.30000000000000004 },
5923 { 0.83333333333333337, 1.0000000000000000, 2.0000000000000000,
5924 2.0000000000000000, -0.19999999999999996 },
5925 { 0.90909090909090906, 1.0000000000000000, 2.0000000000000000,
5926 2.0000000000000000, -0.099999999999999978 },
5927 { 1.0000000000000000, 1.0000000000000000, 2.0000000000000000,
5928 2.0000000000000000, 0.0000000000000000 },
5929 { 1.1111111111111112, 1.0000000000000000, 2.0000000000000000,
5930 2.0000000000000000, 0.10000000000000009 },
5931 { 1.2500000000000000, 1.0000000000000000, 2.0000000000000000,
5932 2.0000000000000000, 0.19999999999999996 },
5933 { 1.4285714285714286, 1.0000000000000000, 2.0000000000000000,
5934 2.0000000000000000, 0.30000000000000004 },
5935 { 1.6666666666666663, 1.0000000000000000, 2.0000000000000000,
5936 2.0000000000000000, 0.39999999999999991 },
5937 { 2.0000000000000000, 1.0000000000000000, 2.0000000000000000,
5938 2.0000000000000000, 0.50000000000000000 },
5939 { 2.5000000000000004, 1.0000000000000000, 2.0000000000000000,
5940 2.0000000000000000, 0.60000000000000009 },
5941 { 3.3333333333333330, 1.0000000000000000, 2.0000000000000000,
5942 2.0000000000000000, 0.69999999999999996 },
5943 { 5.0000000000000009, 1.0000000000000000, 2.0000000000000000,
5944 2.0000000000000000, 0.80000000000000004 },
5945 { 9.9999999999999929, 1.0000000000000000, 2.0000000000000000,
5946 2.0000000000000000, 0.89999999999999991 },
5949 // Test function for a=1.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
5950 template <typename Tp
>
5953 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
5954 Tp max_abs_diff
= -Tp(1);
5955 Tp max_abs_frac
= -Tp(1);
5956 unsigned int num_datum
= sizeof(data086
)
5957 / sizeof(testcase_hyperg
<double>);
5958 for (unsigned int i
= 0; i
< num_datum
; ++i
)
5960 const Tp f
= std::tr1::hyperg(Tp(data086
[i
].a
), Tp(data086
[i
].b
),
5961 Tp(data086
[i
].c
), Tp(data086
[i
].x
));
5962 const Tp f0
= data086
[i
].f0
;
5963 const Tp diff
= f
- f0
;
5964 if (std::abs(diff
) > max_abs_diff
)
5965 max_abs_diff
= std::abs(diff
);
5966 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
5968 const Tp frac
= diff
/ f0
;
5969 if (std::abs(frac
) > max_abs_frac
)
5970 max_abs_frac
= std::abs(frac
);
5973 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
5976 // Test data for a=1.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
5977 testcase_hyperg
<double> data087
[] = {
5978 { 0.70351947549341520, 1.0000000000000000, 2.0000000000000000,
5979 4.0000000000000000, -0.90000000000000002 },
5980 { 0.72637503722092711, 1.0000000000000000, 2.0000000000000000,
5981 4.0000000000000000, -0.80000000000000004 },
5982 { 0.75099661564391251, 1.0000000000000000, 2.0000000000000000,
5983 4.0000000000000000, -0.69999999999999996 },
5984 { 0.77761647796730871, 1.0000000000000000, 2.0000000000000000,
5985 4.0000000000000000, -0.59999999999999998 },
5986 { 0.80651221621216451, 1.0000000000000000, 2.0000000000000000,
5987 4.0000000000000000, -0.50000000000000000 },
5988 { 0.83801894346580275, 1.0000000000000000, 2.0000000000000000,
5989 4.0000000000000000, -0.40000000000000002 },
5990 { 0.87254582050258467, 1.0000000000000000, 2.0000000000000000,
5991 4.0000000000000000, -0.30000000000000004 },
5992 { 0.91059888544083678, 1.0000000000000000, 2.0000000000000000,
5993 4.0000000000000000, -0.19999999999999996 },
5994 { 0.95281329145592386, 1.0000000000000000, 2.0000000000000000,
5995 4.0000000000000000, -0.099999999999999978 },
5996 { 1.0000000000000000, 1.0000000000000000, 2.0000000000000000,
5997 4.0000000000000000, 0.0000000000000000 },
5998 { 1.0532154477379738, 1.0000000000000000, 2.0000000000000000,
5999 4.0000000000000000, 0.10000000000000009 },
6000 { 1.1138692114741471, 1.0000000000000000, 2.0000000000000000,
6001 4.0000000000000000, 0.19999999999999996 },
6002 { 1.1838976095305187, 1.0000000000000000, 2.0000000000000000,
6003 4.0000000000000000, 0.30000000000000004 },
6004 { 1.2660586631630237, 1.0000000000000000, 2.0000000000000000,
6005 4.0000000000000000, 0.39999999999999991 },
6006 { 1.3644676665613118, 1.0000000000000000, 2.0000000000000000,
6007 4.0000000000000000, 0.50000000000000000 },
6008 { 1.4856585347316102, 1.0000000000000000, 2.0000000000000000,
6009 4.0000000000000000, 0.60000000000000009 },
6010 { 1.6409590443536872, 1.0000000000000000, 2.0000000000000000,
6011 4.0000000000000000, 0.69999999999999996 },
6012 { 1.8528798927325769, 1.0000000000000000, 2.0000000000000000,
6013 4.0000000000000000, 0.80000000000000004 },
6014 { 2.1789423102929644, 1.0000000000000000, 2.0000000000000000,
6015 4.0000000000000000, 0.89999999999999991 },
6018 // Test function for a=1.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
6019 template <typename Tp
>
6022 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6023 Tp max_abs_diff
= -Tp(1);
6024 Tp max_abs_frac
= -Tp(1);
6025 unsigned int num_datum
= sizeof(data087
)
6026 / sizeof(testcase_hyperg
<double>);
6027 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6029 const Tp f
= std::tr1::hyperg(Tp(data087
[i
].a
), Tp(data087
[i
].b
),
6030 Tp(data087
[i
].c
), Tp(data087
[i
].x
));
6031 const Tp f0
= data087
[i
].f0
;
6032 const Tp diff
= f
- f0
;
6033 if (std::abs(diff
) > max_abs_diff
)
6034 max_abs_diff
= std::abs(diff
);
6035 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6037 const Tp frac
= diff
/ f0
;
6038 if (std::abs(frac
) > max_abs_frac
)
6039 max_abs_frac
= std::abs(frac
);
6042 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6045 // Test data for a=1.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
6046 testcase_hyperg
<double> data088
[] = {
6047 { 0.78068027379106253, 1.0000000000000000, 2.0000000000000000,
6048 6.0000000000000000, -0.90000000000000002 },
6049 { 0.79924541976981278, 1.0000000000000000, 2.0000000000000000,
6050 6.0000000000000000, -0.80000000000000004 },
6051 { 0.81891305585650942, 1.0000000000000000, 2.0000000000000000,
6052 6.0000000000000000, -0.69999999999999996 },
6053 { 0.83979799626213270, 1.0000000000000000, 2.0000000000000000,
6054 6.0000000000000000, -0.59999999999999998 },
6055 { 0.86203315303160166, 1.0000000000000000, 2.0000000000000000,
6056 6.0000000000000000, -0.50000000000000000 },
6057 { 0.88577352485361693, 1.0000000000000000, 2.0000000000000000,
6058 6.0000000000000000, -0.40000000000000002 },
6059 { 0.91120135738402208, 1.0000000000000000, 2.0000000000000000,
6060 6.0000000000000000, -0.30000000000000004 },
6061 { 0.93853291956703588, 1.0000000000000000, 2.0000000000000000,
6062 6.0000000000000000, -0.19999999999999996 },
6063 { 0.96802755388922956, 1.0000000000000000, 2.0000000000000000,
6064 6.0000000000000000, -0.099999999999999978 },
6065 { 1.0000000000000000, 1.0000000000000000, 2.0000000000000000,
6066 6.0000000000000000, 0.0000000000000000 },
6067 { 1.0348375559194773, 1.0000000000000000, 2.0000000000000000,
6068 6.0000000000000000, 0.10000000000000009 },
6069 { 1.0730246119544820, 1.0000000000000000, 2.0000000000000000,
6070 6.0000000000000000, 0.19999999999999996 },
6071 { 1.1151788396279341, 1.0000000000000000, 2.0000000000000000,
6072 6.0000000000000000, 0.30000000000000004 },
6073 { 1.1621066403893472, 1.0000000000000000, 2.0000000000000000,
6074 6.0000000000000000, 0.39999999999999991 },
6075 { 1.2148922218710421, 1.0000000000000000, 2.0000000000000000,
6076 6.0000000000000000, 0.50000000000000000 },
6077 { 1.2750496810838674, 1.0000000000000000, 2.0000000000000000,
6078 6.0000000000000000, 0.60000000000000009 },
6079 { 1.3448048570872917, 1.0000000000000000, 2.0000000000000000,
6080 6.0000000000000000, 0.69999999999999996 },
6081 { 1.4276833109859521, 1.0000000000000000, 2.0000000000000000,
6082 6.0000000000000000, 0.80000000000000004 },
6083 { 1.5299976259379788, 1.0000000000000000, 2.0000000000000000,
6084 6.0000000000000000, 0.89999999999999991 },
6087 // Test function for a=1.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
6088 template <typename Tp
>
6091 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6092 Tp max_abs_diff
= -Tp(1);
6093 Tp max_abs_frac
= -Tp(1);
6094 unsigned int num_datum
= sizeof(data088
)
6095 / sizeof(testcase_hyperg
<double>);
6096 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6098 const Tp f
= std::tr1::hyperg(Tp(data088
[i
].a
), Tp(data088
[i
].b
),
6099 Tp(data088
[i
].c
), Tp(data088
[i
].x
));
6100 const Tp f0
= data088
[i
].f0
;
6101 const Tp diff
= f
- f0
;
6102 if (std::abs(diff
) > max_abs_diff
)
6103 max_abs_diff
= std::abs(diff
);
6104 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6106 const Tp frac
= diff
/ f0
;
6107 if (std::abs(frac
) > max_abs_frac
)
6108 max_abs_frac
= std::abs(frac
);
6111 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6114 // Test data for a=1.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
6115 testcase_hyperg
<double> data089
[] = {
6116 { 0.82510759951857582, 1.0000000000000000, 2.0000000000000000,
6117 8.0000000000000000, -0.90000000000000002 },
6118 { 0.84072786892782092, 1.0000000000000000, 2.0000000000000000,
6119 8.0000000000000000, -0.80000000000000004 },
6120 { 0.85710884896562356, 1.0000000000000000, 2.0000000000000000,
6121 8.0000000000000000, -0.69999999999999996 },
6122 { 0.87431674418118333, 1.0000000000000000, 2.0000000000000000,
6123 8.0000000000000000, -0.59999999999999998 },
6124 { 0.89242659229727017, 1.0000000000000000, 2.0000000000000000,
6125 8.0000000000000000, -0.50000000000000000 },
6126 { 0.91152392685930339, 1.0000000000000000, 2.0000000000000000,
6127 8.0000000000000000, -0.40000000000000002 },
6128 { 0.93170685950993570, 1.0000000000000000, 2.0000000000000000,
6129 8.0000000000000000, -0.30000000000000004 },
6130 { 0.95308871926790661, 1.0000000000000000, 2.0000000000000000,
6131 8.0000000000000000, -0.19999999999999996 },
6132 { 0.97580144325325802, 1.0000000000000000, 2.0000000000000000,
6133 8.0000000000000000, -0.099999999999999978 },
6134 { 1.0000000000000000, 1.0000000000000000, 2.0000000000000000,
6135 8.0000000000000000, 0.0000000000000000 },
6136 { 1.0258682619030324, 1.0000000000000000, 2.0000000000000000,
6137 8.0000000000000000, 0.10000000000000009 },
6138 { 1.0536269616706000, 1.0000000000000000, 2.0000000000000000,
6139 8.0000000000000000, 0.19999999999999996 },
6140 { 1.0835447330793833, 1.0000000000000000, 2.0000000000000000,
6141 8.0000000000000000, 0.30000000000000004 },
6142 { 1.1159538758396654, 1.0000000000000000, 2.0000000000000000,
6143 8.0000000000000000, 0.39999999999999991 },
6144 { 1.1512736659291880, 1.0000000000000000, 2.0000000000000000,
6145 8.0000000000000000, 0.50000000000000000 },
6146 { 1.1900463690116090, 1.0000000000000000, 2.0000000000000000,
6147 8.0000000000000000, 0.60000000000000009 },
6148 { 1.2329961591622411, 1.0000000000000000, 2.0000000000000000,
6149 8.0000000000000000, 0.69999999999999996 },
6150 { 1.2811334345669059, 1.0000000000000000, 2.0000000000000000,
6151 8.0000000000000000, 0.80000000000000004 },
6152 { 1.3359629014132051, 1.0000000000000000, 2.0000000000000000,
6153 8.0000000000000000, 0.89999999999999991 },
6156 // Test function for a=1.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
6157 template <typename Tp
>
6160 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6161 Tp max_abs_diff
= -Tp(1);
6162 Tp max_abs_frac
= -Tp(1);
6163 unsigned int num_datum
= sizeof(data089
)
6164 / sizeof(testcase_hyperg
<double>);
6165 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6167 const Tp f
= std::tr1::hyperg(Tp(data089
[i
].a
), Tp(data089
[i
].b
),
6168 Tp(data089
[i
].c
), Tp(data089
[i
].x
));
6169 const Tp f0
= data089
[i
].f0
;
6170 const Tp diff
= f
- f0
;
6171 if (std::abs(diff
) > max_abs_diff
)
6172 max_abs_diff
= std::abs(diff
);
6173 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6175 const Tp frac
= diff
/ f0
;
6176 if (std::abs(frac
) > max_abs_frac
)
6177 max_abs_frac
= std::abs(frac
);
6180 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6183 // Test data for a=1.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
6184 testcase_hyperg
<double> data090
[] = {
6185 { 0.85426123653345876, 1.0000000000000000, 2.0000000000000000,
6186 10.000000000000000, -0.90000000000000002 },
6187 { 0.86774543390930370, 1.0000000000000000, 2.0000000000000000,
6188 10.000000000000000, -0.80000000000000004 },
6189 { 0.88178859537254239, 1.0000000000000000, 2.0000000000000000,
6190 10.000000000000000, -0.69999999999999996 },
6191 { 0.89643269097060951, 1.0000000000000000, 2.0000000000000000,
6192 10.000000000000000, -0.59999999999999998 },
6193 { 0.91172456687216763, 1.0000000000000000, 2.0000000000000000,
6194 10.000000000000000, -0.50000000000000000 },
6195 { 0.92771674975966134, 1.0000000000000000, 2.0000000000000000,
6196 10.000000000000000, -0.40000000000000002 },
6197 { 0.94446842993888647, 1.0000000000000000, 2.0000000000000000,
6198 10.000000000000000, -0.30000000000000004 },
6199 { 0.96204667481937678, 1.0000000000000000, 2.0000000000000000,
6200 10.000000000000000, -0.19999999999999996 },
6201 { 0.98052794339012128, 1.0000000000000000, 2.0000000000000000,
6202 10.000000000000000, -0.099999999999999978 },
6203 { 1.0000000000000000, 1.0000000000000000, 2.0000000000000000,
6204 10.000000000000000, 0.0000000000000000 },
6205 { 1.0205643671068179, 1.0000000000000000, 2.0000000000000000,
6206 10.000000000000000, 0.10000000000000009 },
6207 { 1.0423395201078882, 1.0000000000000000, 2.0000000000000000,
6208 10.000000000000000, 0.19999999999999996 },
6209 { 1.0654651277885334, 1.0000000000000000, 2.0000000000000000,
6210 10.000000000000000, 0.30000000000000004 },
6211 { 1.0901078068101382, 1.0000000000000000, 2.0000000000000000,
6212 10.000000000000000, 0.39999999999999991 },
6213 { 1.1164691415928940, 1.0000000000000000, 2.0000000000000000,
6214 10.000000000000000, 0.50000000000000000 },
6215 { 1.1447972335326551, 1.0000000000000000, 2.0000000000000000,
6216 10.000000000000000, 0.60000000000000009 },
6217 { 1.1754040384534161, 1.0000000000000000, 2.0000000000000000,
6218 10.000000000000000, 0.69999999999999996 },
6219 { 1.2086928679893112, 1.0000000000000000, 2.0000000000000000,
6220 10.000000000000000, 0.80000000000000004 },
6221 { 1.2452055640510711, 1.0000000000000000, 2.0000000000000000,
6222 10.000000000000000, 0.89999999999999991 },
6225 // Test function for a=1.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
6226 template <typename Tp
>
6229 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6230 Tp max_abs_diff
= -Tp(1);
6231 Tp max_abs_frac
= -Tp(1);
6232 unsigned int num_datum
= sizeof(data090
)
6233 / sizeof(testcase_hyperg
<double>);
6234 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6236 const Tp f
= std::tr1::hyperg(Tp(data090
[i
].a
), Tp(data090
[i
].b
),
6237 Tp(data090
[i
].c
), Tp(data090
[i
].x
));
6238 const Tp f0
= data090
[i
].f0
;
6239 const Tp diff
= f
- f0
;
6240 if (std::abs(diff
) > max_abs_diff
)
6241 max_abs_diff
= std::abs(diff
);
6242 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6244 const Tp frac
= diff
/ f0
;
6245 if (std::abs(frac
) > max_abs_frac
)
6246 max_abs_frac
= std::abs(frac
);
6249 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6252 // Test data for a=1.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
6253 testcase_hyperg
<double> data091
[] = {
6254 { 0.25646288779245091, 1.0000000000000000, 5.0000000000000000,
6255 2.0000000000000000, -0.90000000000000002 },
6256 { 0.28273129096174382, 1.0000000000000000, 5.0000000000000000,
6257 2.0000000000000000, -0.80000000000000004 },
6258 { 0.31438201170962976, 1.0000000000000000, 5.0000000000000000,
6259 2.0000000000000000, -0.69999999999999996 },
6260 { 0.35308837890625017, 1.0000000000000000, 5.0000000000000000,
6261 2.0000000000000000, -0.59999999999999998 },
6262 { 0.40123456790123463, 1.0000000000000000, 5.0000000000000000,
6263 2.0000000000000000, -0.50000000000000000 },
6264 { 0.46230737192836319, 1.0000000000000000, 5.0000000000000000,
6265 2.0000000000000000, -0.40000000000000002 },
6266 { 0.54156016946185359, 1.0000000000000000, 5.0000000000000000,
6267 2.0000000000000000, -0.30000000000000004 },
6268 { 0.64718364197530875, 1.0000000000000000, 5.0000000000000000,
6269 2.0000000000000000, -0.19999999999999996 },
6270 { 0.79246636158732342, 1.0000000000000000, 5.0000000000000000,
6271 2.0000000000000000, -0.099999999999999978 },
6272 { 1.0000000000000000, 1.0000000000000000, 5.0000000000000000,
6273 2.0000000000000000, 0.0000000000000000 },
6274 { 1.3103947568968148, 1.0000000000000000, 5.0000000000000000,
6275 2.0000000000000000, 0.10000000000000009 },
6276 { 1.8017578125000004, 1.0000000000000000, 5.0000000000000000,
6277 2.0000000000000000, 0.19999999999999996 },
6278 { 2.6374427321949185, 1.0000000000000000, 5.0000000000000000,
6279 2.0000000000000000, 0.30000000000000004 },
6280 { 4.1975308641975282, 1.0000000000000000, 5.0000000000000000,
6281 2.0000000000000000, 0.39999999999999991 },
6282 { 7.4999999999999964, 1.0000000000000000, 5.0000000000000000,
6283 2.0000000000000000, 0.50000000000000000 },
6284 { 15.859375000000012, 1.0000000000000000, 5.0000000000000000,
6285 2.0000000000000000, 0.60000000000000009 },
6286 { 43.734567901234513, 1.0000000000000000, 5.0000000000000000,
6287 2.0000000000000000, 0.69999999999999996 },
6288 { 194.99999999999994, 1.0000000000000000, 5.0000000000000000,
6289 2.0000000000000000, 0.80000000000000004 },
6290 { 2777.4999999999832, 1.0000000000000000, 5.0000000000000000,
6291 2.0000000000000000, 0.89999999999999991 },
6294 // Test function for a=1.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
6295 template <typename Tp
>
6298 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6299 Tp max_abs_diff
= -Tp(1);
6300 Tp max_abs_frac
= -Tp(1);
6301 unsigned int num_datum
= sizeof(data091
)
6302 / sizeof(testcase_hyperg
<double>);
6303 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6305 const Tp f
= std::tr1::hyperg(Tp(data091
[i
].a
), Tp(data091
[i
].b
),
6306 Tp(data091
[i
].c
), Tp(data091
[i
].x
));
6307 const Tp f0
= data091
[i
].f0
;
6308 const Tp diff
= f
- f0
;
6309 if (std::abs(diff
) > max_abs_diff
)
6310 max_abs_diff
= std::abs(diff
);
6311 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6313 const Tp frac
= diff
/ f0
;
6314 if (std::abs(frac
) > max_abs_frac
)
6315 max_abs_frac
= std::abs(frac
);
6318 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6321 // Test data for a=1.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
6322 testcase_hyperg
<double> data092
[] = {
6323 { 0.46398891966759004, 1.0000000000000000, 5.0000000000000000,
6324 4.0000000000000000, -0.90000000000000002 },
6325 { 0.49382716049382713, 1.0000000000000000, 5.0000000000000000,
6326 4.0000000000000000, -0.80000000000000004 },
6327 { 0.52768166089965396, 1.0000000000000000, 5.0000000000000000,
6328 4.0000000000000000, -0.69999999999999996 },
6329 { 0.56640624999999978, 1.0000000000000000, 5.0000000000000000,
6330 4.0000000000000000, -0.59999999999999998 },
6331 { 0.61111111111111116, 1.0000000000000000, 5.0000000000000000,
6332 4.0000000000000000, -0.50000000000000000 },
6333 { 0.66326530612244894, 1.0000000000000000, 5.0000000000000000,
6334 4.0000000000000000, -0.40000000000000002 },
6335 { 0.72485207100591698, 1.0000000000000000, 5.0000000000000000,
6336 4.0000000000000000, -0.30000000000000004 },
6337 { 0.79861111111111094, 1.0000000000000000, 5.0000000000000000,
6338 4.0000000000000000, -0.19999999999999996 },
6339 { 0.88842975206611552, 1.0000000000000000, 5.0000000000000000,
6340 4.0000000000000000, -0.099999999999999978 },
6341 { 1.0000000000000000, 1.0000000000000000, 5.0000000000000000,
6342 4.0000000000000000, 0.0000000000000000 },
6343 { 1.1419753086419753, 1.0000000000000000, 5.0000000000000000,
6344 4.0000000000000000, 0.10000000000000009 },
6345 { 1.3281249999999998, 1.0000000000000000, 5.0000000000000000,
6346 4.0000000000000000, 0.19999999999999996 },
6347 { 1.5816326530612239, 1.0000000000000000, 5.0000000000000000,
6348 4.0000000000000000, 0.30000000000000004 },
6349 { 1.9444444444444444, 1.0000000000000000, 5.0000000000000000,
6350 4.0000000000000000, 0.39999999999999991 },
6351 { 2.5000000000000000, 1.0000000000000000, 5.0000000000000000,
6352 4.0000000000000000, 0.50000000000000000 },
6353 { 3.4374999999999996, 1.0000000000000000, 5.0000000000000000,
6354 4.0000000000000000, 0.60000000000000009 },
6355 { 5.2777777777777715, 1.0000000000000000, 5.0000000000000000,
6356 4.0000000000000000, 0.69999999999999996 },
6357 { 9.9999999999999947, 1.0000000000000000, 5.0000000000000000,
6358 4.0000000000000000, 0.80000000000000004 },
6359 { 32.499999999999837, 1.0000000000000000, 5.0000000000000000,
6360 4.0000000000000000, 0.89999999999999991 },
6363 // Test function for a=1.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
6364 template <typename Tp
>
6367 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6368 Tp max_abs_diff
= -Tp(1);
6369 Tp max_abs_frac
= -Tp(1);
6370 unsigned int num_datum
= sizeof(data092
)
6371 / sizeof(testcase_hyperg
<double>);
6372 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6374 const Tp f
= std::tr1::hyperg(Tp(data092
[i
].a
), Tp(data092
[i
].b
),
6375 Tp(data092
[i
].c
), Tp(data092
[i
].x
));
6376 const Tp f0
= data092
[i
].f0
;
6377 const Tp diff
= f
- f0
;
6378 if (std::abs(diff
) > max_abs_diff
)
6379 max_abs_diff
= std::abs(diff
);
6380 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6382 const Tp frac
= diff
/ f0
;
6383 if (std::abs(frac
) > max_abs_frac
)
6384 max_abs_frac
= std::abs(frac
);
6387 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6390 // Test data for a=1.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
6391 testcase_hyperg
<double> data093
[] = {
6392 { 0.57476744883397501, 1.0000000000000000, 5.0000000000000000,
6393 6.0000000000000000, -0.90000000000000002 },
6394 { 0.60302731682513933, 1.0000000000000000, 5.0000000000000000,
6395 6.0000000000000000, -0.80000000000000004 },
6396 { 0.63425708719096396, 1.0000000000000000, 5.0000000000000000,
6397 6.0000000000000000, -0.69999999999999996 },
6398 { 0.66895764182970419, 1.0000000000000000, 5.0000000000000000,
6399 6.0000000000000000, -0.59999999999999998 },
6400 { 0.70775063063963428, 1.0000000000000000, 5.0000000000000000,
6401 6.0000000000000000, -0.50000000000000000 },
6402 { 0.75141762103495924, 1.0000000000000000, 5.0000000000000000,
6403 6.0000000000000000, -0.40000000000000002 },
6404 { 0.80095569442603298, 1.0000000000000000, 5.0000000000000000,
6405 6.0000000000000000, -0.30000000000000004 },
6406 { 0.85765823887436754, 1.0000000000000000, 5.0000000000000000,
6407 6.0000000000000000, -0.19999999999999996 },
6408 { 0.92323549576335540, 1.0000000000000000, 5.0000000000000000,
6409 6.0000000000000000, -0.099999999999999978 },
6410 { 1.0000000000000000, 1.0000000000000000, 5.0000000000000000,
6411 6.0000000000000000, 0.0000000000000000 },
6412 { 1.0911622464839472, 1.0000000000000000, 5.0000000000000000,
6413 6.0000000000000000, 0.10000000000000009 },
6414 { 1.2013226178607666, 1.0000000000000000, 5.0000000000000000,
6415 6.0000000000000000, 0.19999999999999996 },
6416 { 1.3373332072682687, 1.0000000000000000, 5.0000000000000000,
6417 6.0000000000000000, 0.30000000000000004 },
6418 { 1.5099074378209716, 1.0000000000000000, 5.0000000000000000,
6419 6.0000000000000000, 0.39999999999999991 },
6420 { 1.7368822229245819, 1.0000000000000000, 5.0000000000000000,
6421 6.0000000000000000, 0.50000000000000000 },
6422 { 2.0505871832661429, 1.0000000000000000, 5.0000000000000000,
6423 6.0000000000000000, 0.60000000000000009 },
6424 { 2.5172389775867967, 1.0000000000000000, 5.0000000000000000,
6425 6.0000000000000000, 0.69999999999999996 },
6426 { 3.3015631983556144, 1.0000000000000000, 5.0000000000000000,
6427 6.0000000000000000, 0.80000000000000004 },
6428 { 5.0005935155044519, 1.0000000000000000, 5.0000000000000000,
6429 6.0000000000000000, 0.89999999999999991 },
6432 // Test function for a=1.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
6433 template <typename Tp
>
6436 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6437 Tp max_abs_diff
= -Tp(1);
6438 Tp max_abs_frac
= -Tp(1);
6439 unsigned int num_datum
= sizeof(data093
)
6440 / sizeof(testcase_hyperg
<double>);
6441 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6443 const Tp f
= std::tr1::hyperg(Tp(data093
[i
].a
), Tp(data093
[i
].b
),
6444 Tp(data093
[i
].c
), Tp(data093
[i
].x
));
6445 const Tp f0
= data093
[i
].f0
;
6446 const Tp diff
= f
- f0
;
6447 if (std::abs(diff
) > max_abs_diff
)
6448 max_abs_diff
= std::abs(diff
);
6449 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6451 const Tp frac
= diff
/ f0
;
6452 if (std::abs(frac
) > max_abs_frac
)
6453 max_abs_frac
= std::abs(frac
);
6456 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6459 // Test data for a=1.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
6460 testcase_hyperg
<double> data094
[] = {
6461 { 0.64582752605387961, 1.0000000000000000, 5.0000000000000000,
6462 8.0000000000000000, -0.90000000000000002 },
6463 { 0.67184161997264169, 1.0000000000000000, 5.0000000000000000,
6464 8.0000000000000000, -0.80000000000000004 },
6465 { 0.70012779922368040, 1.0000000000000000, 5.0000000000000000,
6466 8.0000000000000000, -0.69999999999999996 },
6467 { 0.73100784656910256, 1.0000000000000000, 5.0000000000000000,
6468 8.0000000000000000, -0.59999999999999998 },
6469 { 0.76486919089091077, 1.0000000000000000, 5.0000000000000000,
6470 8.0000000000000000, -0.50000000000000000 },
6471 { 0.80218301124334579, 1.0000000000000000, 5.0000000000000000,
6472 8.0000000000000000, -0.40000000000000002 },
6473 { 0.84352883533234446, 1.0000000000000000, 5.0000000000000000,
6474 8.0000000000000000, -0.30000000000000004 },
6475 { 0.88962858902212572, 1.0000000000000000, 5.0000000000000000,
6476 8.0000000000000000, -0.19999999999999996 },
6477 { 0.94139473468584123, 1.0000000000000000, 5.0000000000000000,
6478 8.0000000000000000, -0.099999999999999978 },
6479 { 1.0000000000000000, 1.0000000000000000, 5.0000000000000000,
6480 8.0000000000000000, 0.0000000000000000 },
6481 { 1.0669812691939897, 1.0000000000000000, 5.0000000000000000,
6482 8.0000000000000000, 0.10000000000000009 },
6483 { 1.1443996012177726, 1.0000000000000000, 5.0000000000000000,
6484 8.0000000000000000, 0.19999999999999996 },
6485 { 1.2350966976721314, 1.0000000000000000, 5.0000000000000000,
6486 8.0000000000000000, 0.30000000000000004 },
6487 { 1.3431264370409088, 1.0000000000000000, 5.0000000000000000,
6488 8.0000000000000000, 0.39999999999999991 },
6489 { 1.4745266814162399, 1.0000000000000000, 5.0000000000000000,
6490 8.0000000000000000, 0.50000000000000000 },
6491 { 1.6388137104840066, 1.0000000000000000, 5.0000000000000000,
6492 8.0000000000000000, 0.60000000000000009 },
6493 { 1.8522074849776518, 1.0000000000000000, 5.0000000000000000,
6494 8.0000000000000000, 0.69999999999999996 },
6495 { 2.1458016978417458, 1.0000000000000000, 5.0000000000000000,
6496 8.0000000000000000, 0.80000000000000004 },
6497 { 2.5927464669826339, 1.0000000000000000, 5.0000000000000000,
6498 8.0000000000000000, 0.89999999999999991 },
6501 // Test function for a=1.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
6502 template <typename Tp
>
6505 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6506 Tp max_abs_diff
= -Tp(1);
6507 Tp max_abs_frac
= -Tp(1);
6508 unsigned int num_datum
= sizeof(data094
)
6509 / sizeof(testcase_hyperg
<double>);
6510 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6512 const Tp f
= std::tr1::hyperg(Tp(data094
[i
].a
), Tp(data094
[i
].b
),
6513 Tp(data094
[i
].c
), Tp(data094
[i
].x
));
6514 const Tp f0
= data094
[i
].f0
;
6515 const Tp diff
= f
- f0
;
6516 if (std::abs(diff
) > max_abs_diff
)
6517 max_abs_diff
= std::abs(diff
);
6518 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6520 const Tp frac
= diff
/ f0
;
6521 if (std::abs(frac
) > max_abs_frac
)
6522 max_abs_frac
= std::abs(frac
);
6525 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6528 // Test data for a=1.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
6529 testcase_hyperg
<double> data095
[] = {
6530 { 0.69583236336670629, 1.0000000000000000, 5.0000000000000000,
6531 10.000000000000000, -0.90000000000000002 },
6532 { 0.71968920666899694, 1.0000000000000000, 5.0000000000000000,
6533 10.000000000000000, -0.80000000000000004 },
6534 { 0.74533885416044232, 1.0000000000000000, 5.0000000000000000,
6535 10.000000000000000, -0.69999999999999996 },
6536 { 0.77300145361503014, 1.0000000000000000, 5.0000000000000000,
6537 10.000000000000000, -0.59999999999999998 },
6538 { 0.80293630810919514, 1.0000000000000000, 5.0000000000000000,
6539 10.000000000000000, -0.50000000000000000 },
6540 { 0.83545132638592035, 1.0000000000000000, 5.0000000000000000,
6541 10.000000000000000, -0.40000000000000002 },
6542 { 0.87091544744412508, 1.0000000000000000, 5.0000000000000000,
6543 10.000000000000000, -0.30000000000000004 },
6544 { 0.90977522877919847, 1.0000000000000000, 5.0000000000000000,
6545 10.000000000000000, -0.19999999999999996 },
6546 { 0.95257738192069130, 1.0000000000000000, 5.0000000000000000,
6547 10.000000000000000, -0.099999999999999978 },
6548 { 1.0000000000000000, 1.0000000000000000, 5.0000000000000000,
6549 10.000000000000000, 0.0000000000000000 },
6550 { 1.0528968282789379, 1.0000000000000000, 5.0000000000000000,
6551 10.000000000000000, 0.10000000000000009 },
6552 { 1.1123617169062123, 1.0000000000000000, 5.0000000000000000,
6553 10.000000000000000, 0.19999999999999996 },
6554 { 1.1798254572896132, 1.0000000000000000, 5.0000000000000000,
6555 10.000000000000000, 0.30000000000000004 },
6556 { 1.2572069000522696, 1.0000000000000000, 5.0000000000000000,
6557 10.000000000000000, 0.39999999999999991 },
6558 { 1.3471600884974377, 1.0000000000000000, 5.0000000000000000,
6559 10.000000000000000, 0.50000000000000000 },
6560 { 1.4535032279573519, 1.0000000000000000, 5.0000000000000000,
6561 10.000000000000000, 0.60000000000000009 },
6562 { 1.5820245752814948, 1.0000000000000000, 5.0000000000000000,
6563 10.000000000000000, 0.69999999999999996 },
6564 { 1.7421756366906538, 1.0000000000000000, 5.0000000000000000,
6565 10.000000000000000, 0.80000000000000004 },
6566 { 1.9513145531098233, 1.0000000000000000, 5.0000000000000000,
6567 10.000000000000000, 0.89999999999999991 },
6570 // Test function for a=1.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
6571 template <typename Tp
>
6574 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6575 Tp max_abs_diff
= -Tp(1);
6576 Tp max_abs_frac
= -Tp(1);
6577 unsigned int num_datum
= sizeof(data095
)
6578 / sizeof(testcase_hyperg
<double>);
6579 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6581 const Tp f
= std::tr1::hyperg(Tp(data095
[i
].a
), Tp(data095
[i
].b
),
6582 Tp(data095
[i
].c
), Tp(data095
[i
].x
));
6583 const Tp f0
= data095
[i
].f0
;
6584 const Tp diff
= f
- f0
;
6585 if (std::abs(diff
) > max_abs_diff
)
6586 max_abs_diff
= std::abs(diff
);
6587 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6589 const Tp frac
= diff
/ f0
;
6590 if (std::abs(frac
) > max_abs_frac
)
6591 max_abs_frac
= std::abs(frac
);
6594 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6597 // Test data for a=1.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
6598 testcase_hyperg
<double> data096
[] = {
6599 { 0.12307420104127871, 1.0000000000000000, 10.000000000000000,
6600 2.0000000000000000, -0.90000000000000002 },
6601 { 0.13818870041457423, 1.0000000000000000, 10.000000000000000,
6602 2.0000000000000000, -0.80000000000000004 },
6603 { 0.15739165631811691, 1.0000000000000000, 10.000000000000000,
6604 2.0000000000000000, -0.69999999999999996 },
6605 { 0.18249038606882068, 1.0000000000000000, 10.000000000000000,
6606 2.0000000000000000, -0.59999999999999998 },
6607 { 0.21644171225027786, 1.0000000000000000, 10.000000000000000,
6608 2.0000000000000000, -0.50000000000000000 },
6609 { 0.26433326159804160, 1.0000000000000000, 10.000000000000000,
6610 2.0000000000000000, -0.40000000000000002 },
6611 { 0.33544459430654533, 1.0000000000000000, 10.000000000000000,
6612 2.0000000000000000, -0.30000000000000004 },
6613 { 0.44788516696232517, 1.0000000000000000, 10.000000000000000,
6614 2.0000000000000000, -0.19999999999999996 },
6615 { 0.63989153514168362, 1.0000000000000000, 10.000000000000000,
6616 2.0000000000000000, -0.099999999999999978 },
6617 { 1.0000000000000000, 1.0000000000000000, 10.000000000000000,
6618 2.0000000000000000, 0.0000000000000000 },
6619 { 1.7568608796813312, 1.0000000000000000, 10.000000000000000,
6620 2.0000000000000000, 0.10000000000000009 },
6621 { 3.5836558871799027, 1.0000000000000000, 10.000000000000000,
6622 2.0000000000000000, 0.19999999999999996 },
6623 { 8.8077526749963226, 1.0000000000000000, 10.000000000000000,
6624 2.0000000000000000, 0.30000000000000004 },
6625 { 27.285841702089190, 1.0000000000000000, 10.000000000000000,
6626 2.0000000000000000, 0.39999999999999991 },
6627 { 113.55555555555557, 1.0000000000000000, 10.000000000000000,
6628 2.0000000000000000, 0.50000000000000000 },
6629 { 706.24023437500091, 1.0000000000000000, 10.000000000000000,
6630 2.0000000000000000, 0.60000000000000009 },
6631 { 8064.1687976651992, 1.0000000000000000, 10.000000000000000,
6632 2.0000000000000000, 0.69999999999999996 },
6633 { 271267.22222222196, 1.0000000000000000, 10.000000000000000,
6634 2.0000000000000000, 0.80000000000000004 },
6635 { 123456789.99999890, 1.0000000000000000, 10.000000000000000,
6636 2.0000000000000000, 0.89999999999999991 },
6639 // Test function for a=1.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
6640 template <typename Tp
>
6643 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6644 Tp max_abs_diff
= -Tp(1);
6645 Tp max_abs_frac
= -Tp(1);
6646 unsigned int num_datum
= sizeof(data096
)
6647 / sizeof(testcase_hyperg
<double>);
6648 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6650 const Tp f
= std::tr1::hyperg(Tp(data096
[i
].a
), Tp(data096
[i
].b
),
6651 Tp(data096
[i
].c
), Tp(data096
[i
].x
));
6652 const Tp f0
= data096
[i
].f0
;
6653 const Tp diff
= f
- f0
;
6654 if (std::abs(diff
) > max_abs_diff
)
6655 max_abs_diff
= std::abs(diff
);
6656 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6658 const Tp frac
= diff
/ f0
;
6659 if (std::abs(frac
) > max_abs_frac
)
6660 max_abs_frac
= std::abs(frac
);
6663 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6666 // Test data for a=1.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
6667 testcase_hyperg
<double> data097
[] = {
6668 { 0.28363728383055758, 1.0000000000000000, 10.000000000000000,
6669 4.0000000000000000, -0.90000000000000002 },
6670 { 0.30933003169808387, 1.0000000000000000, 10.000000000000000,
6671 4.0000000000000000, -0.80000000000000004 },
6672 { 0.33998437757128797, 1.0000000000000000, 10.000000000000000,
6673 4.0000000000000000, -0.69999999999999996 },
6674 { 0.37713553224291119, 1.0000000000000000, 10.000000000000000,
6675 4.0000000000000000, -0.59999999999999998 },
6676 { 0.42299736538419658, 1.0000000000000000, 10.000000000000000,
6677 4.0000000000000000, -0.50000000000000000 },
6678 { 0.48086597727600106, 1.0000000000000000, 10.000000000000000,
6679 4.0000000000000000, -0.40000000000000002 },
6680 { 0.55583495759293045, 1.0000000000000000, 10.000000000000000,
6681 4.0000000000000000, -0.30000000000000004 },
6682 { 0.65612850114039667, 1.0000000000000000, 10.000000000000000,
6683 4.0000000000000000, -0.19999999999999996 },
6684 { 0.79573668772968120, 1.0000000000000000, 10.000000000000000,
6685 4.0000000000000000, -0.099999999999999978 },
6686 { 1.0000000000000000, 1.0000000000000000, 10.000000000000000,
6687 4.0000000000000000, 0.0000000000000000 },
6688 { 1.3184712058058303, 1.0000000000000000, 10.000000000000000,
6689 4.0000000000000000, 0.10000000000000009 },
6690 { 1.8576958065941214, 1.0000000000000000, 10.000000000000000,
6691 4.0000000000000000, 0.19999999999999996 },
6692 { 2.8759509651764228, 1.0000000000000000, 10.000000000000000,
6693 4.0000000000000000, 0.30000000000000004 },
6694 { 5.1046225531822182, 1.0000000000000000, 10.000000000000000,
6695 4.0000000000000000, 0.39999999999999991 },
6696 { 11.095238095238095, 1.0000000000000000, 10.000000000000000,
6697 4.0000000000000000, 0.50000000000000000 },
6698 { 32.797154017857174, 1.0000000000000000, 10.000000000000000,
6699 4.0000000000000000, 0.60000000000000009 },
6700 { 158.01935680536477, 1.0000000000000000, 10.000000000000000,
6701 4.0000000000000000, 0.69999999999999996 },
6702 { 1815.9523809523814, 1.0000000000000000, 10.000000000000000,
6703 4.0000000000000000, 0.80000000000000004 },
6704 { 163302.14285714156, 1.0000000000000000, 10.000000000000000,
6705 4.0000000000000000, 0.89999999999999991 },
6708 // Test function for a=1.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
6709 template <typename Tp
>
6712 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6713 Tp max_abs_diff
= -Tp(1);
6714 Tp max_abs_frac
= -Tp(1);
6715 unsigned int num_datum
= sizeof(data097
)
6716 / sizeof(testcase_hyperg
<double>);
6717 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6719 const Tp f
= std::tr1::hyperg(Tp(data097
[i
].a
), Tp(data097
[i
].b
),
6720 Tp(data097
[i
].c
), Tp(data097
[i
].x
));
6721 const Tp f0
= data097
[i
].f0
;
6722 const Tp diff
= f
- f0
;
6723 if (std::abs(diff
) > max_abs_diff
)
6724 max_abs_diff
= std::abs(diff
);
6725 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6727 const Tp frac
= diff
/ f0
;
6728 if (std::abs(frac
) > max_abs_frac
)
6729 max_abs_frac
= std::abs(frac
);
6732 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6735 // Test data for a=1.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
6736 testcase_hyperg
<double> data098
[] = {
6737 { 0.39006633302741794, 1.0000000000000000, 10.000000000000000,
6738 6.0000000000000000, -0.90000000000000002 },
6739 { 0.41898885698103294, 1.0000000000000000, 10.000000000000000,
6740 6.0000000000000000, -0.80000000000000004 },
6741 { 0.45245557983812590, 1.0000000000000000, 10.000000000000000,
6742 6.0000000000000000, -0.69999999999999996 },
6743 { 0.49160548618861633, 1.0000000000000000, 10.000000000000000,
6744 6.0000000000000000, -0.59999999999999998 },
6745 { 0.53798419230517980, 1.0000000000000000, 10.000000000000000,
6746 6.0000000000000000, -0.50000000000000000 },
6747 { 0.59373881442067344, 1.0000000000000000, 10.000000000000000,
6748 6.0000000000000000, -0.40000000000000002 },
6749 { 0.66193391357076115, 1.0000000000000000, 10.000000000000000,
6750 6.0000000000000000, -0.30000000000000004 },
6751 { 0.74708402736952129, 1.0000000000000000, 10.000000000000000,
6752 6.0000000000000000, -0.19999999999999996 },
6753 { 0.85609281019430605, 1.0000000000000000, 10.000000000000000,
6754 6.0000000000000000, -0.099999999999999978 },
6755 { 1.0000000000000000, 1.0000000000000000, 10.000000000000000,
6756 6.0000000000000000, 0.0000000000000000 },
6757 { 1.1974451135148187, 1.0000000000000000, 10.000000000000000,
6758 6.0000000000000000, 0.10000000000000009 },
6759 { 1.4820886036706347, 1.0000000000000000, 10.000000000000000,
6760 6.0000000000000000, 0.19999999999999996 },
6761 { 1.9201183180477521, 1.0000000000000000, 10.000000000000000,
6762 6.0000000000000000, 0.30000000000000004 },
6763 { 2.6569338297733336, 1.0000000000000000, 10.000000000000000,
6764 6.0000000000000000, 0.39999999999999991 },
6765 { 4.0634920634920650, 1.0000000000000000, 10.000000000000000,
6766 6.0000000000000000, 0.50000000000000000 },
6767 { 7.3102678571428568, 1.0000000000000000, 10.000000000000000,
6768 6.0000000000000000, 0.60000000000000009 },
6769 { 17.512574302697733, 1.0000000000000000, 10.000000000000000,
6770 6.0000000000000000, 0.69999999999999996 },
6771 { 74.206349206349131, 1.0000000000000000, 10.000000000000000,
6772 6.0000000000000000, 0.80000000000000004 },
6773 { 1342.8571428571363, 1.0000000000000000, 10.000000000000000,
6774 6.0000000000000000, 0.89999999999999991 },
6777 // Test function for a=1.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
6778 template <typename Tp
>
6781 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6782 Tp max_abs_diff
= -Tp(1);
6783 Tp max_abs_frac
= -Tp(1);
6784 unsigned int num_datum
= sizeof(data098
)
6785 / sizeof(testcase_hyperg
<double>);
6786 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6788 const Tp f
= std::tr1::hyperg(Tp(data098
[i
].a
), Tp(data098
[i
].b
),
6789 Tp(data098
[i
].c
), Tp(data098
[i
].x
));
6790 const Tp f0
= data098
[i
].f0
;
6791 const Tp diff
= f
- f0
;
6792 if (std::abs(diff
) > max_abs_diff
)
6793 max_abs_diff
= std::abs(diff
);
6794 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6796 const Tp frac
= diff
/ f0
;
6797 if (std::abs(frac
) > max_abs_frac
)
6798 max_abs_frac
= std::abs(frac
);
6801 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6804 // Test data for a=1.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
6805 testcase_hyperg
<double> data099
[] = {
6806 { 0.46726928123633193, 1.0000000000000000, 10.000000000000000,
6807 8.0000000000000000, -0.90000000000000002 },
6808 { 0.49687547629934464, 1.0000000000000000, 10.000000000000000,
6809 8.0000000000000000, -0.80000000000000004 },
6810 { 0.53045208856322235, 1.0000000000000000, 10.000000000000000,
6811 8.0000000000000000, -0.69999999999999996 },
6812 { 0.56884765624999978, 1.0000000000000000, 10.000000000000000,
6813 8.0000000000000000, -0.59999999999999998 },
6814 { 0.61316872427983526, 1.0000000000000000, 10.000000000000000,
6815 8.0000000000000000, -0.50000000000000000 },
6816 { 0.66488500161969544, 1.0000000000000000, 10.000000000000000,
6817 8.0000000000000000, -0.40000000000000002 },
6818 { 0.72598998634501577, 1.0000000000000000, 10.000000000000000,
6819 8.0000000000000000, -0.30000000000000004 },
6820 { 0.79925411522633782, 1.0000000000000000, 10.000000000000000,
6821 8.0000000000000000, -0.19999999999999996 },
6822 { 0.88863845062192193, 1.0000000000000000, 10.000000000000000,
6823 8.0000000000000000, -0.099999999999999978 },
6824 { 1.0000000000000000, 1.0000000000000000, 10.000000000000000,
6825 8.0000000000000000, 0.0000000000000000 },
6826 { 1.1423563481176653, 1.0000000000000000, 10.000000000000000,
6827 8.0000000000000000, 0.10000000000000009 },
6828 { 1.3302951388888888, 1.0000000000000000, 10.000000000000000,
6829 8.0000000000000000, 0.19999999999999996 },
6830 { 1.5889212827988335, 1.0000000000000000, 10.000000000000000,
6831 8.0000000000000000, 0.30000000000000004 },
6832 { 1.9650205761316870, 1.0000000000000000, 10.000000000000000,
6833 8.0000000000000000, 0.39999999999999991 },
6834 { 2.5555555555555549, 1.0000000000000000, 10.000000000000000,
6835 8.0000000000000000, 0.50000000000000000 },
6836 { 3.5937500000000013, 1.0000000000000000, 10.000000000000000,
6837 8.0000000000000000, 0.60000000000000009 },
6838 { 5.7818930041152203, 1.0000000000000000, 10.000000000000000,
6839 8.0000000000000000, 0.69999999999999996 },
6840 { 12.222222222222220, 1.0000000000000000, 10.000000000000000,
6841 8.0000000000000000, 0.80000000000000004 },
6842 { 54.999999999999780, 1.0000000000000000, 10.000000000000000,
6843 8.0000000000000000, 0.89999999999999991 },
6846 // Test function for a=1.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
6847 template <typename Tp
>
6850 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6851 Tp max_abs_diff
= -Tp(1);
6852 Tp max_abs_frac
= -Tp(1);
6853 unsigned int num_datum
= sizeof(data099
)
6854 / sizeof(testcase_hyperg
<double>);
6855 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6857 const Tp f
= std::tr1::hyperg(Tp(data099
[i
].a
), Tp(data099
[i
].b
),
6858 Tp(data099
[i
].c
), Tp(data099
[i
].x
));
6859 const Tp f0
= data099
[i
].f0
;
6860 const Tp diff
= f
- f0
;
6861 if (std::abs(diff
) > max_abs_diff
)
6862 max_abs_diff
= std::abs(diff
);
6863 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6865 const Tp frac
= diff
/ f0
;
6866 if (std::abs(frac
) > max_abs_frac
)
6867 max_abs_frac
= std::abs(frac
);
6870 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6873 // Test data for a=1.0000000000000000, b=10.000000000000000, c=10.000000000000000.
6874 testcase_hyperg
<double> data100
[] = {
6875 { 0.52631578947368429, 1.0000000000000000, 10.000000000000000,
6876 10.000000000000000, -0.90000000000000002 },
6877 { 0.55555555555555558, 1.0000000000000000, 10.000000000000000,
6878 10.000000000000000, -0.80000000000000004 },
6879 { 0.58823529411764708, 1.0000000000000000, 10.000000000000000,
6880 10.000000000000000, -0.69999999999999996 },
6881 { 0.62500000000000000, 1.0000000000000000, 10.000000000000000,
6882 10.000000000000000, -0.59999999999999998 },
6883 { 0.66666666666666663, 1.0000000000000000, 10.000000000000000,
6884 10.000000000000000, -0.50000000000000000 },
6885 { 0.71428571428571430, 1.0000000000000000, 10.000000000000000,
6886 10.000000000000000, -0.40000000000000002 },
6887 { 0.76923076923076927, 1.0000000000000000, 10.000000000000000,
6888 10.000000000000000, -0.30000000000000004 },
6889 { 0.83333333333333337, 1.0000000000000000, 10.000000000000000,
6890 10.000000000000000, -0.19999999999999996 },
6891 { 0.90909090909090906, 1.0000000000000000, 10.000000000000000,
6892 10.000000000000000, -0.099999999999999978 },
6893 { 1.0000000000000000, 1.0000000000000000, 10.000000000000000,
6894 10.000000000000000, 0.0000000000000000 },
6895 { 1.1111111111111112, 1.0000000000000000, 10.000000000000000,
6896 10.000000000000000, 0.10000000000000009 },
6897 { 1.2500000000000000, 1.0000000000000000, 10.000000000000000,
6898 10.000000000000000, 0.19999999999999996 },
6899 { 1.4285714285714286, 1.0000000000000000, 10.000000000000000,
6900 10.000000000000000, 0.30000000000000004 },
6901 { 1.6666666666666663, 1.0000000000000000, 10.000000000000000,
6902 10.000000000000000, 0.39999999999999991 },
6903 { 2.0000000000000000, 1.0000000000000000, 10.000000000000000,
6904 10.000000000000000, 0.50000000000000000 },
6905 { 2.5000000000000004, 1.0000000000000000, 10.000000000000000,
6906 10.000000000000000, 0.60000000000000009 },
6907 { 3.3333333333333330, 1.0000000000000000, 10.000000000000000,
6908 10.000000000000000, 0.69999999999999996 },
6909 { 5.0000000000000009, 1.0000000000000000, 10.000000000000000,
6910 10.000000000000000, 0.80000000000000004 },
6911 { 9.9999999999999929, 1.0000000000000000, 10.000000000000000,
6912 10.000000000000000, 0.89999999999999991 },
6915 // Test function for a=1.0000000000000000, b=10.000000000000000, c=10.000000000000000.
6916 template <typename Tp
>
6919 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6920 Tp max_abs_diff
= -Tp(1);
6921 Tp max_abs_frac
= -Tp(1);
6922 unsigned int num_datum
= sizeof(data100
)
6923 / sizeof(testcase_hyperg
<double>);
6924 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6926 const Tp f
= std::tr1::hyperg(Tp(data100
[i
].a
), Tp(data100
[i
].b
),
6927 Tp(data100
[i
].c
), Tp(data100
[i
].x
));
6928 const Tp f0
= data100
[i
].f0
;
6929 const Tp diff
= f
- f0
;
6930 if (std::abs(diff
) > max_abs_diff
)
6931 max_abs_diff
= std::abs(diff
);
6932 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
6934 const Tp frac
= diff
/ f0
;
6935 if (std::abs(frac
) > max_abs_frac
)
6936 max_abs_frac
= std::abs(frac
);
6939 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
6942 // Test data for a=1.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
6943 testcase_hyperg
<double> data101
[] = {
6944 { 0.058479236576646373, 1.0000000000000000, 20.000000000000000,
6945 2.0000000000000000, -0.90000000000000002 },
6946 { 0.065788544763137669, 1.0000000000000000, 20.000000000000000,
6947 2.0000000000000000, -0.80000000000000004 },
6948 { 0.075184824937824662, 1.0000000000000000, 20.000000000000000,
6949 2.0000000000000000, -0.69999999999999996 },
6950 { 0.087707688693157260, 1.0000000000000000, 20.000000000000000,
6951 2.0000000000000000, -0.59999999999999998 },
6952 { 0.10521567442213345, 1.0000000000000000, 20.000000000000000,
6953 2.0000000000000000, -0.50000000000000000 },
6954 { 0.13135877960541525, 1.0000000000000000, 20.000000000000000,
6955 2.0000000000000000, -0.40000000000000002 },
6956 { 0.17423854066297104, 1.0000000000000000, 20.000000000000000,
6957 2.0000000000000000, -0.30000000000000004 },
6958 { 0.25492082527223525, 1.0000000000000000, 20.000000000000000,
6959 2.0000000000000000, -0.19999999999999996 },
6960 { 0.44025895219654843, 1.0000000000000000, 20.000000000000000,
6961 2.0000000000000000, -0.099999999999999978 },
6962 { 1.0000000000000000, 1.0000000000000000, 20.000000000000000,
6963 2.0000000000000000, 0.0000000000000000 },
6964 { 3.3698615820910360, 1.0000000000000000, 20.000000000000000,
6965 2.0000000000000000, 0.10000000000000009 },
6966 { 17.997089220808483, 1.0000000000000000, 20.000000000000000,
6967 2.0000000000000000, 0.19999999999999996 },
6968 { 153.73298291118951, 1.0000000000000000, 20.000000000000000,
6969 2.0000000000000000, 0.30000000000000004 },
6970 { 2159.1667587825627, 1.0000000000000000, 20.000000000000000,
6971 2.0000000000000000, 0.39999999999999991 },
6972 { 55188.105263157879, 1.0000000000000000, 20.000000000000000,
6973 2.0000000000000000, 0.50000000000000000 },
6974 { 3191209.3921857267, 1.0000000000000000, 20.000000000000000,
6975 2.0000000000000000, 0.60000000000000009 },
6976 { 646910975.29152656, 1.0000000000000000, 20.000000000000000,
6977 2.0000000000000000, 0.69999999999999996 },
6978 { 1254834626850.2659, 1.0000000000000000, 20.000000000000000,
6979 2.0000000000000000, 0.80000000000000004 },
6980 { 5.8479532163741414e+17, 1.0000000000000000, 20.000000000000000,
6981 2.0000000000000000, 0.89999999999999991 },
6984 // Test function for a=1.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
6985 template <typename Tp
>
6988 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
6989 Tp max_abs_diff
= -Tp(1);
6990 Tp max_abs_frac
= -Tp(1);
6991 unsigned int num_datum
= sizeof(data101
)
6992 / sizeof(testcase_hyperg
<double>);
6993 for (unsigned int i
= 0; i
< num_datum
; ++i
)
6995 const Tp f
= std::tr1::hyperg(Tp(data101
[i
].a
), Tp(data101
[i
].b
),
6996 Tp(data101
[i
].c
), Tp(data101
[i
].x
));
6997 const Tp f0
= data101
[i
].f0
;
6998 const Tp diff
= f
- f0
;
6999 if (std::abs(diff
) > max_abs_diff
)
7000 max_abs_diff
= std::abs(diff
);
7001 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7003 const Tp frac
= diff
/ f0
;
7004 if (std::abs(frac
) > max_abs_frac
)
7005 max_abs_frac
= std::abs(frac
);
7008 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7011 // Test data for a=1.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
7012 testcase_hyperg
<double> data102
[] = {
7013 { 0.15519511120894947, 1.0000000000000000, 20.000000000000000,
7014 4.0000000000000000, -0.90000000000000002 },
7015 { 0.17197165701692899, 1.0000000000000000, 20.000000000000000,
7016 4.0000000000000000, -0.80000000000000004 },
7017 { 0.19276847315207363, 1.0000000000000000, 20.000000000000000,
7018 4.0000000000000000, -0.69999999999999996 },
7019 { 0.21920107206179093, 1.0000000000000000, 20.000000000000000,
7020 4.0000000000000000, -0.59999999999999998 },
7021 { 0.25386158960390581, 1.0000000000000000, 20.000000000000000,
7022 4.0000000000000000, -0.50000000000000000 },
7023 { 0.30115970686600657, 1.0000000000000000, 20.000000000000000,
7024 4.0000000000000000, -0.40000000000000002 },
7025 { 0.36916408142057117, 1.0000000000000000, 20.000000000000000,
7026 4.0000000000000000, -0.30000000000000004 },
7027 { 0.47406175901569558, 1.0000000000000000, 20.000000000000000,
7028 4.0000000000000000, -0.19999999999999996 },
7029 { 0.65237908266239919, 1.0000000000000000, 20.000000000000000,
7030 4.0000000000000000, -0.099999999999999978 },
7031 { 1.0000000000000000, 1.0000000000000000, 20.000000000000000,
7032 4.0000000000000000, 0.0000000000000000 },
7033 { 1.8227213362622299, 1.0000000000000000, 20.000000000000000,
7034 4.0000000000000000, 0.10000000000000009 },
7035 { 4.3716358339791332, 1.0000000000000000, 20.000000000000000,
7036 4.0000000000000000, 0.19999999999999996 },
7037 { 15.670841312959222, 1.0000000000000000, 20.000000000000000,
7038 4.0000000000000000, 0.30000000000000004 },
7039 { 94.742651122760179, 1.0000000000000000, 20.000000000000000,
7040 4.0000000000000000, 0.39999999999999991 },
7041 { 1081.7275541795671, 1.0000000000000000, 20.000000000000000,
7042 4.0000000000000000, 0.50000000000000000 },
7043 { 27809.787731465960, 1.0000000000000000, 20.000000000000000,
7044 4.0000000000000000, 0.60000000000000009 },
7045 { 2329811.1715181042, 1.0000000000000000, 20.000000000000000,
7046 4.0000000000000000, 0.69999999999999996 },
7047 { 1537787532.6780224, 1.0000000000000000, 20.000000000000000,
7048 4.0000000000000000, 0.80000000000000004 },
7049 { 141562653506999.88, 1.0000000000000000, 20.000000000000000,
7050 4.0000000000000000, 0.89999999999999991 },
7053 // Test function for a=1.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
7054 template <typename Tp
>
7057 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7058 Tp max_abs_diff
= -Tp(1);
7059 Tp max_abs_frac
= -Tp(1);
7060 unsigned int num_datum
= sizeof(data102
)
7061 / sizeof(testcase_hyperg
<double>);
7062 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7064 const Tp f
= std::tr1::hyperg(Tp(data102
[i
].a
), Tp(data102
[i
].b
),
7065 Tp(data102
[i
].c
), Tp(data102
[i
].x
));
7066 const Tp f0
= data102
[i
].f0
;
7067 const Tp diff
= f
- f0
;
7068 if (std::abs(diff
) > max_abs_diff
)
7069 max_abs_diff
= std::abs(diff
);
7070 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7072 const Tp frac
= diff
/ f0
;
7073 if (std::abs(frac
) > max_abs_frac
)
7074 max_abs_frac
= std::abs(frac
);
7077 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7080 // Test data for a=1.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
7081 testcase_hyperg
<double> data103
[] = {
7082 { 0.23253645591196570, 1.0000000000000000, 20.000000000000000,
7083 6.0000000000000000, -0.90000000000000002 },
7084 { 0.25484220947068353, 1.0000000000000000, 20.000000000000000,
7085 6.0000000000000000, -0.80000000000000004 },
7086 { 0.28181987881113829, 1.0000000000000000, 20.000000000000000,
7087 6.0000000000000000, -0.69999999999999996 },
7088 { 0.31508211677735765, 1.0000000000000000, 20.000000000000000,
7089 6.0000000000000000, -0.59999999999999998 },
7090 { 0.35706285886959599, 1.0000000000000000, 20.000000000000000,
7091 6.0000000000000000, -0.50000000000000000 },
7092 { 0.41160053409238195, 1.0000000000000000, 20.000000000000000,
7093 6.0000000000000000, -0.40000000000000002 },
7094 { 0.48508083111181949, 1.0000000000000000, 20.000000000000000,
7095 6.0000000000000000, -0.30000000000000004 },
7096 { 0.58885194371375260, 1.0000000000000000, 20.000000000000000,
7097 6.0000000000000000, -0.19999999999999996 },
7098 { 0.74482241684585748, 1.0000000000000000, 20.000000000000000,
7099 6.0000000000000000, -0.099999999999999978 },
7100 { 1.0000000000000000, 1.0000000000000000, 20.000000000000000,
7101 6.0000000000000000, 0.0000000000000000 },
7102 { 1.4700356864367146, 1.0000000000000000, 20.000000000000000,
7103 6.0000000000000000, 0.10000000000000009 },
7104 { 2.4955144453055143, 1.0000000000000000, 20.000000000000000,
7105 6.0000000000000000, 0.19999999999999996 },
7106 { 5.3506594845833471, 1.0000000000000000, 20.000000000000000,
7107 6.0000000000000000, 0.30000000000000004 },
7108 { 16.618413752184221, 1.0000000000000000, 20.000000000000000,
7109 6.0000000000000000, 0.39999999999999991 },
7110 { 89.310629514963878, 1.0000000000000000, 20.000000000000000,
7111 6.0000000000000000, 0.50000000000000000 },
7112 { 1029.3439900542960, 1.0000000000000000, 20.000000000000000,
7113 6.0000000000000000, 0.60000000000000009 },
7114 { 35659.847863372350, 1.0000000000000000, 20.000000000000000,
7115 6.0000000000000000, 0.69999999999999996 },
7116 { 8009309.6233230168, 1.0000000000000000, 20.000000000000000,
7117 6.0000000000000000, 0.80000000000000004 },
7118 { 145640590027.39731, 1.0000000000000000, 20.000000000000000,
7119 6.0000000000000000, 0.89999999999999991 },
7122 // Test function for a=1.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
7123 template <typename Tp
>
7126 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7127 Tp max_abs_diff
= -Tp(1);
7128 Tp max_abs_frac
= -Tp(1);
7129 unsigned int num_datum
= sizeof(data103
)
7130 / sizeof(testcase_hyperg
<double>);
7131 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7133 const Tp f
= std::tr1::hyperg(Tp(data103
[i
].a
), Tp(data103
[i
].b
),
7134 Tp(data103
[i
].c
), Tp(data103
[i
].x
));
7135 const Tp f0
= data103
[i
].f0
;
7136 const Tp diff
= f
- f0
;
7137 if (std::abs(diff
) > max_abs_diff
)
7138 max_abs_diff
= std::abs(diff
);
7139 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7141 const Tp frac
= diff
/ f0
;
7142 if (std::abs(frac
) > max_abs_frac
)
7143 max_abs_frac
= std::abs(frac
);
7146 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7149 // Test data for a=1.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
7150 testcase_hyperg
<double> data104
[] = {
7151 { 0.29614148314592498, 1.0000000000000000, 20.000000000000000,
7152 8.0000000000000000, -0.90000000000000002 },
7153 { 0.32176277356430810, 1.0000000000000000, 20.000000000000000,
7154 8.0000000000000000, -0.80000000000000004 },
7155 { 0.35217870475550522, 1.0000000000000000, 20.000000000000000,
7156 8.0000000000000000, -0.69999999999999996 },
7157 { 0.38885270445515091, 1.0000000000000000, 20.000000000000000,
7158 8.0000000000000000, -0.59999999999999998 },
7159 { 0.43389978380608424, 1.0000000000000000, 20.000000000000000,
7160 8.0000000000000000, -0.50000000000000000 },
7161 { 0.49048612522269436, 1.0000000000000000, 20.000000000000000,
7162 8.0000000000000000, -0.40000000000000002 },
7163 { 0.56355539635634611, 1.0000000000000000, 20.000000000000000,
7164 8.0000000000000000, -0.30000000000000004 },
7165 { 0.66123153239117682, 1.0000000000000000, 20.000000000000000,
7166 8.0000000000000000, -0.19999999999999996 },
7167 { 0.79773363961895427, 1.0000000000000000, 20.000000000000000,
7168 8.0000000000000000, -0.099999999999999978 },
7169 { 1.0000000000000000, 1.0000000000000000, 20.000000000000000,
7170 8.0000000000000000, 0.0000000000000000 },
7171 { 1.3245132157016595, 1.0000000000000000, 20.000000000000000,
7172 8.0000000000000000, 0.10000000000000009 },
7173 { 1.9065148749742076, 1.0000000000000000, 20.000000000000000,
7174 8.0000000000000000, 0.19999999999999996 },
7175 { 3.1328798652457452, 1.0000000000000000, 20.000000000000000,
7176 8.0000000000000000, 0.30000000000000004 },
7177 { 6.4172532944033476, 1.0000000000000000, 20.000000000000000,
7178 8.0000000000000000, 0.39999999999999991 },
7179 { 19.071683734222436, 1.0000000000000000, 20.000000000000000,
7180 8.0000000000000000, 0.50000000000000000 },
7181 { 104.41989641582512, 1.0000000000000000, 20.000000000000000,
7182 8.0000000000000000, 0.60000000000000009 },
7183 { 1510.5743992324240, 1.0000000000000000, 20.000000000000000,
7184 8.0000000000000000, 0.69999999999999996 },
7185 { 115518.14360562043, 1.0000000000000000, 20.000000000000000,
7186 8.0000000000000000, 0.80000000000000004 },
7187 { 414930455.29173034, 1.0000000000000000, 20.000000000000000,
7188 8.0000000000000000, 0.89999999999999991 },
7191 // Test function for a=1.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
7192 template <typename Tp
>
7195 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7196 Tp max_abs_diff
= -Tp(1);
7197 Tp max_abs_frac
= -Tp(1);
7198 unsigned int num_datum
= sizeof(data104
)
7199 / sizeof(testcase_hyperg
<double>);
7200 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7202 const Tp f
= std::tr1::hyperg(Tp(data104
[i
].a
), Tp(data104
[i
].b
),
7203 Tp(data104
[i
].c
), Tp(data104
[i
].x
));
7204 const Tp f0
= data104
[i
].f0
;
7205 const Tp diff
= f
- f0
;
7206 if (std::abs(diff
) > max_abs_diff
)
7207 max_abs_diff
= std::abs(diff
);
7208 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7210 const Tp frac
= diff
/ f0
;
7211 if (std::abs(frac
) > max_abs_frac
)
7212 max_abs_frac
= std::abs(frac
);
7215 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7218 // Test data for a=1.0000000000000000, b=20.000000000000000, c=10.000000000000000.
7219 testcase_hyperg
<double> data105
[] = {
7220 { 0.34954259539177696, 1.0000000000000000, 20.000000000000000,
7221 10.000000000000000, -0.90000000000000002 },
7222 { 0.37714038609235123, 1.0000000000000000, 20.000000000000000,
7223 10.000000000000000, -0.80000000000000004 },
7224 { 0.40942091659748725, 1.0000000000000000, 20.000000000000000,
7225 10.000000000000000, -0.69999999999999996 },
7226 { 0.44767109606846428, 1.0000000000000000, 20.000000000000000,
7227 10.000000000000000, -0.59999999999999998 },
7228 { 0.49368984777532254, 1.0000000000000000, 20.000000000000000,
7229 10.000000000000000, -0.50000000000000000 },
7230 { 0.55006638216982318, 1.0000000000000000, 20.000000000000000,
7231 10.000000000000000, -0.40000000000000002 },
7232 { 0.62065830207408912, 1.0000000000000000, 20.000000000000000,
7233 10.000000000000000, -0.30000000000000004 },
7234 { 0.71145554513583786, 1.0000000000000000, 20.000000000000000,
7235 10.000000000000000, -0.19999999999999996 },
7236 { 0.83223839666914623, 1.0000000000000000, 20.000000000000000,
7237 10.000000000000000, -0.099999999999999978 },
7238 { 1.0000000000000000, 1.0000000000000000, 20.000000000000000,
7239 10.000000000000000, 0.0000000000000000 },
7240 { 1.2466748028187731, 1.0000000000000000, 20.000000000000000,
7241 10.000000000000000, 0.10000000000000009 },
7242 { 1.6386752725021749, 1.0000000000000000, 20.000000000000000,
7243 10.000000000000000, 0.19999999999999996 },
7244 { 2.3340068725479681, 1.0000000000000000, 20.000000000000000,
7245 10.000000000000000, 0.30000000000000004 },
7246 { 3.7848108613132054, 1.0000000000000000, 20.000000000000000,
7247 10.000000000000000, 0.39999999999999991 },
7248 { 7.6754638550304133, 1.0000000000000000, 20.000000000000000,
7249 10.000000000000000, 0.50000000000000000 },
7250 { 23.344217312927277, 1.0000000000000000, 20.000000000000000,
7251 10.000000000000000, 0.60000000000000009 },
7252 { 149.83491198246921, 1.0000000000000000, 20.000000000000000,
7253 10.000000000000000, 0.69999999999999996 },
7254 { 3936.9253501916060, 1.0000000000000000, 20.000000000000000,
7255 10.000000000000000, 0.80000000000000004 },
7256 { 2794143.5036480185, 1.0000000000000000, 20.000000000000000,
7257 10.000000000000000, 0.89999999999999991 },
7260 // Test function for a=1.0000000000000000, b=20.000000000000000, c=10.000000000000000.
7261 template <typename Tp
>
7264 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7265 Tp max_abs_diff
= -Tp(1);
7266 Tp max_abs_frac
= -Tp(1);
7267 unsigned int num_datum
= sizeof(data105
)
7268 / sizeof(testcase_hyperg
<double>);
7269 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7271 const Tp f
= std::tr1::hyperg(Tp(data105
[i
].a
), Tp(data105
[i
].b
),
7272 Tp(data105
[i
].c
), Tp(data105
[i
].x
));
7273 const Tp f0
= data105
[i
].f0
;
7274 const Tp diff
= f
- f0
;
7275 if (std::abs(diff
) > max_abs_diff
)
7276 max_abs_diff
= std::abs(diff
);
7277 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7279 const Tp frac
= diff
/ f0
;
7280 if (std::abs(frac
) > max_abs_frac
)
7281 max_abs_frac
= std::abs(frac
);
7284 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7287 // Test data for a=2.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
7288 testcase_hyperg
<double> data106
[] = {
7289 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7290 2.0000000000000000, -0.90000000000000002 },
7291 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7292 2.0000000000000000, -0.80000000000000004 },
7293 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7294 2.0000000000000000, -0.69999999999999996 },
7295 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7296 2.0000000000000000, -0.59999999999999998 },
7297 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7298 2.0000000000000000, -0.50000000000000000 },
7299 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7300 2.0000000000000000, -0.40000000000000002 },
7301 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7302 2.0000000000000000, -0.30000000000000004 },
7303 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7304 2.0000000000000000, -0.19999999999999996 },
7305 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7306 2.0000000000000000, -0.099999999999999978 },
7307 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7308 2.0000000000000000, 0.0000000000000000 },
7309 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7310 2.0000000000000000, 0.10000000000000009 },
7311 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7312 2.0000000000000000, 0.19999999999999996 },
7313 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7314 2.0000000000000000, 0.30000000000000004 },
7315 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7316 2.0000000000000000, 0.39999999999999991 },
7317 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7318 2.0000000000000000, 0.50000000000000000 },
7319 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7320 2.0000000000000000, 0.60000000000000009 },
7321 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7322 2.0000000000000000, 0.69999999999999996 },
7323 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7324 2.0000000000000000, 0.80000000000000004 },
7325 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7326 2.0000000000000000, 0.89999999999999991 },
7329 // Test function for a=2.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
7330 template <typename Tp
>
7333 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7334 Tp max_abs_diff
= -Tp(1);
7335 Tp max_abs_frac
= -Tp(1);
7336 unsigned int num_datum
= sizeof(data106
)
7337 / sizeof(testcase_hyperg
<double>);
7338 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7340 const Tp f
= std::tr1::hyperg(Tp(data106
[i
].a
), Tp(data106
[i
].b
),
7341 Tp(data106
[i
].c
), Tp(data106
[i
].x
));
7342 const Tp f0
= data106
[i
].f0
;
7343 const Tp diff
= f
- f0
;
7344 if (std::abs(diff
) > max_abs_diff
)
7345 max_abs_diff
= std::abs(diff
);
7346 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7348 const Tp frac
= diff
/ f0
;
7349 if (std::abs(frac
) > max_abs_frac
)
7350 max_abs_frac
= std::abs(frac
);
7353 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7356 // Test data for a=2.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
7357 testcase_hyperg
<double> data107
[] = {
7358 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7359 4.0000000000000000, -0.90000000000000002 },
7360 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7361 4.0000000000000000, -0.80000000000000004 },
7362 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7363 4.0000000000000000, -0.69999999999999996 },
7364 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7365 4.0000000000000000, -0.59999999999999998 },
7366 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7367 4.0000000000000000, -0.50000000000000000 },
7368 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7369 4.0000000000000000, -0.40000000000000002 },
7370 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7371 4.0000000000000000, -0.30000000000000004 },
7372 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7373 4.0000000000000000, -0.19999999999999996 },
7374 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7375 4.0000000000000000, -0.099999999999999978 },
7376 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7377 4.0000000000000000, 0.0000000000000000 },
7378 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7379 4.0000000000000000, 0.10000000000000009 },
7380 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7381 4.0000000000000000, 0.19999999999999996 },
7382 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7383 4.0000000000000000, 0.30000000000000004 },
7384 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7385 4.0000000000000000, 0.39999999999999991 },
7386 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7387 4.0000000000000000, 0.50000000000000000 },
7388 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7389 4.0000000000000000, 0.60000000000000009 },
7390 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7391 4.0000000000000000, 0.69999999999999996 },
7392 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7393 4.0000000000000000, 0.80000000000000004 },
7394 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7395 4.0000000000000000, 0.89999999999999991 },
7398 // Test function for a=2.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
7399 template <typename Tp
>
7402 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7403 Tp max_abs_diff
= -Tp(1);
7404 Tp max_abs_frac
= -Tp(1);
7405 unsigned int num_datum
= sizeof(data107
)
7406 / sizeof(testcase_hyperg
<double>);
7407 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7409 const Tp f
= std::tr1::hyperg(Tp(data107
[i
].a
), Tp(data107
[i
].b
),
7410 Tp(data107
[i
].c
), Tp(data107
[i
].x
));
7411 const Tp f0
= data107
[i
].f0
;
7412 const Tp diff
= f
- f0
;
7413 if (std::abs(diff
) > max_abs_diff
)
7414 max_abs_diff
= std::abs(diff
);
7415 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7417 const Tp frac
= diff
/ f0
;
7418 if (std::abs(frac
) > max_abs_frac
)
7419 max_abs_frac
= std::abs(frac
);
7422 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7425 // Test data for a=2.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
7426 testcase_hyperg
<double> data108
[] = {
7427 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7428 6.0000000000000000, -0.90000000000000002 },
7429 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7430 6.0000000000000000, -0.80000000000000004 },
7431 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7432 6.0000000000000000, -0.69999999999999996 },
7433 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7434 6.0000000000000000, -0.59999999999999998 },
7435 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7436 6.0000000000000000, -0.50000000000000000 },
7437 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7438 6.0000000000000000, -0.40000000000000002 },
7439 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7440 6.0000000000000000, -0.30000000000000004 },
7441 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7442 6.0000000000000000, -0.19999999999999996 },
7443 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7444 6.0000000000000000, -0.099999999999999978 },
7445 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7446 6.0000000000000000, 0.0000000000000000 },
7447 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7448 6.0000000000000000, 0.10000000000000009 },
7449 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7450 6.0000000000000000, 0.19999999999999996 },
7451 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7452 6.0000000000000000, 0.30000000000000004 },
7453 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7454 6.0000000000000000, 0.39999999999999991 },
7455 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7456 6.0000000000000000, 0.50000000000000000 },
7457 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7458 6.0000000000000000, 0.60000000000000009 },
7459 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7460 6.0000000000000000, 0.69999999999999996 },
7461 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7462 6.0000000000000000, 0.80000000000000004 },
7463 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7464 6.0000000000000000, 0.89999999999999991 },
7467 // Test function for a=2.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
7468 template <typename Tp
>
7471 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7472 Tp max_abs_diff
= -Tp(1);
7473 Tp max_abs_frac
= -Tp(1);
7474 unsigned int num_datum
= sizeof(data108
)
7475 / sizeof(testcase_hyperg
<double>);
7476 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7478 const Tp f
= std::tr1::hyperg(Tp(data108
[i
].a
), Tp(data108
[i
].b
),
7479 Tp(data108
[i
].c
), Tp(data108
[i
].x
));
7480 const Tp f0
= data108
[i
].f0
;
7481 const Tp diff
= f
- f0
;
7482 if (std::abs(diff
) > max_abs_diff
)
7483 max_abs_diff
= std::abs(diff
);
7484 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7486 const Tp frac
= diff
/ f0
;
7487 if (std::abs(frac
) > max_abs_frac
)
7488 max_abs_frac
= std::abs(frac
);
7491 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7494 // Test data for a=2.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
7495 testcase_hyperg
<double> data109
[] = {
7496 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7497 8.0000000000000000, -0.90000000000000002 },
7498 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7499 8.0000000000000000, -0.80000000000000004 },
7500 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7501 8.0000000000000000, -0.69999999999999996 },
7502 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7503 8.0000000000000000, -0.59999999999999998 },
7504 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7505 8.0000000000000000, -0.50000000000000000 },
7506 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7507 8.0000000000000000, -0.40000000000000002 },
7508 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7509 8.0000000000000000, -0.30000000000000004 },
7510 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7511 8.0000000000000000, -0.19999999999999996 },
7512 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7513 8.0000000000000000, -0.099999999999999978 },
7514 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7515 8.0000000000000000, 0.0000000000000000 },
7516 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7517 8.0000000000000000, 0.10000000000000009 },
7518 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7519 8.0000000000000000, 0.19999999999999996 },
7520 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7521 8.0000000000000000, 0.30000000000000004 },
7522 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7523 8.0000000000000000, 0.39999999999999991 },
7524 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7525 8.0000000000000000, 0.50000000000000000 },
7526 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7527 8.0000000000000000, 0.60000000000000009 },
7528 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7529 8.0000000000000000, 0.69999999999999996 },
7530 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7531 8.0000000000000000, 0.80000000000000004 },
7532 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7533 8.0000000000000000, 0.89999999999999991 },
7536 // Test function for a=2.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
7537 template <typename Tp
>
7540 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7541 Tp max_abs_diff
= -Tp(1);
7542 Tp max_abs_frac
= -Tp(1);
7543 unsigned int num_datum
= sizeof(data109
)
7544 / sizeof(testcase_hyperg
<double>);
7545 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7547 const Tp f
= std::tr1::hyperg(Tp(data109
[i
].a
), Tp(data109
[i
].b
),
7548 Tp(data109
[i
].c
), Tp(data109
[i
].x
));
7549 const Tp f0
= data109
[i
].f0
;
7550 const Tp diff
= f
- f0
;
7551 if (std::abs(diff
) > max_abs_diff
)
7552 max_abs_diff
= std::abs(diff
);
7553 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7555 const Tp frac
= diff
/ f0
;
7556 if (std::abs(frac
) > max_abs_frac
)
7557 max_abs_frac
= std::abs(frac
);
7560 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7563 // Test data for a=2.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
7564 testcase_hyperg
<double> data110
[] = {
7565 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7566 10.000000000000000, -0.90000000000000002 },
7567 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7568 10.000000000000000, -0.80000000000000004 },
7569 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7570 10.000000000000000, -0.69999999999999996 },
7571 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7572 10.000000000000000, -0.59999999999999998 },
7573 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7574 10.000000000000000, -0.50000000000000000 },
7575 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7576 10.000000000000000, -0.40000000000000002 },
7577 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7578 10.000000000000000, -0.30000000000000004 },
7579 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7580 10.000000000000000, -0.19999999999999996 },
7581 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7582 10.000000000000000, -0.099999999999999978 },
7583 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7584 10.000000000000000, 0.0000000000000000 },
7585 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7586 10.000000000000000, 0.10000000000000009 },
7587 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7588 10.000000000000000, 0.19999999999999996 },
7589 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7590 10.000000000000000, 0.30000000000000004 },
7591 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7592 10.000000000000000, 0.39999999999999991 },
7593 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7594 10.000000000000000, 0.50000000000000000 },
7595 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7596 10.000000000000000, 0.60000000000000009 },
7597 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7598 10.000000000000000, 0.69999999999999996 },
7599 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7600 10.000000000000000, 0.80000000000000004 },
7601 { 1.0000000000000000, 2.0000000000000000, 0.0000000000000000,
7602 10.000000000000000, 0.89999999999999991 },
7605 // Test function for a=2.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
7606 template <typename Tp
>
7609 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7610 Tp max_abs_diff
= -Tp(1);
7611 Tp max_abs_frac
= -Tp(1);
7612 unsigned int num_datum
= sizeof(data110
)
7613 / sizeof(testcase_hyperg
<double>);
7614 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7616 const Tp f
= std::tr1::hyperg(Tp(data110
[i
].a
), Tp(data110
[i
].b
),
7617 Tp(data110
[i
].c
), Tp(data110
[i
].x
));
7618 const Tp f0
= data110
[i
].f0
;
7619 const Tp diff
= f
- f0
;
7620 if (std::abs(diff
) > max_abs_diff
)
7621 max_abs_diff
= std::abs(diff
);
7622 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7624 const Tp frac
= diff
/ f0
;
7625 if (std::abs(frac
) > max_abs_frac
)
7626 max_abs_frac
= std::abs(frac
);
7629 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7632 // Test data for a=2.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
7633 testcase_hyperg
<double> data111
[] = {
7634 { 0.72547625011001171, 2.0000000000000000, 0.50000000000000000,
7635 2.0000000000000000, -0.90000000000000002 },
7636 { 0.74535599249992990, 2.0000000000000000, 0.50000000000000000,
7637 2.0000000000000000, -0.80000000000000004 },
7638 { 0.76696498884737041, 2.0000000000000000, 0.50000000000000000,
7639 2.0000000000000000, -0.69999999999999996 },
7640 { 0.79056941504209477, 2.0000000000000000, 0.50000000000000000,
7641 2.0000000000000000, -0.59999999999999998 },
7642 { 0.81649658092772603, 2.0000000000000000, 0.50000000000000000,
7643 2.0000000000000000, -0.50000000000000000 },
7644 { 0.84515425472851657, 2.0000000000000000, 0.50000000000000000,
7645 2.0000000000000000, -0.40000000000000002 },
7646 { 0.87705801930702920, 2.0000000000000000, 0.50000000000000000,
7647 2.0000000000000000, -0.30000000000000004 },
7648 { 0.91287092917527690, 2.0000000000000000, 0.50000000000000000,
7649 2.0000000000000000, -0.19999999999999996 },
7650 { 0.95346258924559224, 2.0000000000000000, 0.50000000000000000,
7651 2.0000000000000000, -0.099999999999999978 },
7652 { 1.0000000000000000, 2.0000000000000000, 0.50000000000000000,
7653 2.0000000000000000, 0.0000000000000000 },
7654 { 1.0540925533894598, 2.0000000000000000, 0.50000000000000000,
7655 2.0000000000000000, 0.10000000000000009 },
7656 { 1.1180339887498949, 2.0000000000000000, 0.50000000000000000,
7657 2.0000000000000000, 0.19999999999999996 },
7658 { 1.1952286093343938, 2.0000000000000000, 0.50000000000000000,
7659 2.0000000000000000, 0.30000000000000004 },
7660 { 1.2909944487358056, 2.0000000000000000, 0.50000000000000000,
7661 2.0000000000000000, 0.39999999999999991 },
7662 { 1.4142135623730949, 2.0000000000000000, 0.50000000000000000,
7663 2.0000000000000000, 0.50000000000000000 },
7664 { 1.5811388300841900, 2.0000000000000000, 0.50000000000000000,
7665 2.0000000000000000, 0.60000000000000009 },
7666 { 1.8257418583505536, 2.0000000000000000, 0.50000000000000000,
7667 2.0000000000000000, 0.69999999999999996 },
7668 { 2.2360679774997898, 2.0000000000000000, 0.50000000000000000,
7669 2.0000000000000000, 0.80000000000000004 },
7670 { 3.1622776601683782, 2.0000000000000000, 0.50000000000000000,
7671 2.0000000000000000, 0.89999999999999991 },
7674 // Test function for a=2.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
7675 template <typename Tp
>
7678 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7679 Tp max_abs_diff
= -Tp(1);
7680 Tp max_abs_frac
= -Tp(1);
7681 unsigned int num_datum
= sizeof(data111
)
7682 / sizeof(testcase_hyperg
<double>);
7683 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7685 const Tp f
= std::tr1::hyperg(Tp(data111
[i
].a
), Tp(data111
[i
].b
),
7686 Tp(data111
[i
].c
), Tp(data111
[i
].x
));
7687 const Tp f0
= data111
[i
].f0
;
7688 const Tp diff
= f
- f0
;
7689 if (std::abs(diff
) > max_abs_diff
)
7690 max_abs_diff
= std::abs(diff
);
7691 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7693 const Tp frac
= diff
/ f0
;
7694 if (std::abs(frac
) > max_abs_frac
)
7695 max_abs_frac
= std::abs(frac
);
7698 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7701 // Test data for a=2.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
7702 testcase_hyperg
<double> data112
[] = {
7703 { 0.83664260086443798, 2.0000000000000000, 0.50000000000000000,
7704 4.0000000000000000, -0.90000000000000002 },
7705 { 0.85046584300227146, 2.0000000000000000, 0.50000000000000000,
7706 4.0000000000000000, -0.80000000000000004 },
7707 { 0.86509574979651593, 2.0000000000000000, 0.50000000000000000,
7708 4.0000000000000000, -0.69999999999999996 },
7709 { 0.88062082573041867, 2.0000000000000000, 0.50000000000000000,
7710 4.0000000000000000, -0.59999999999999998 },
7711 { 0.89714464248521586, 2.0000000000000000, 0.50000000000000000,
7712 4.0000000000000000, -0.50000000000000000 },
7713 { 0.91478946588967558, 2.0000000000000000, 0.50000000000000000,
7714 4.0000000000000000, -0.40000000000000002 },
7715 { 0.93370105322348573, 2.0000000000000000, 0.50000000000000000,
7716 4.0000000000000000, -0.30000000000000004 },
7717 { 0.95405511057700887, 2.0000000000000000, 0.50000000000000000,
7718 4.0000000000000000, -0.19999999999999996 },
7719 { 0.97606616007978142, 2.0000000000000000, 0.50000000000000000,
7720 4.0000000000000000, -0.099999999999999978 },
7721 { 1.0000000000000000, 2.0000000000000000, 0.50000000000000000,
7722 4.0000000000000000, 0.0000000000000000 },
7723 { 1.0261916902334731, 2.0000000000000000, 0.50000000000000000,
7724 4.0000000000000000, 0.10000000000000009 },
7725 { 1.0550723519434702, 2.0000000000000000, 0.50000000000000000,
7726 4.0000000000000000, 0.19999999999999996 },
7727 { 1.0872106588188091, 2.0000000000000000, 0.50000000000000000,
7728 4.0000000000000000, 0.30000000000000004 },
7729 { 1.1233801699379020, 2.0000000000000000, 0.50000000000000000,
7730 4.0000000000000000, 0.39999999999999991 },
7731 { 1.1646752981725688, 2.0000000000000000, 0.50000000000000000,
7732 4.0000000000000000, 0.50000000000000000 },
7733 { 1.2127272514219511, 2.0000000000000000, 0.50000000000000000,
7734 4.0000000000000000, 0.60000000000000009 },
7735 { 1.2701518651068637, 2.0000000000000000, 0.50000000000000000,
7736 4.0000000000000000, 0.69999999999999996 },
7737 { 1.3416407864998725, 2.0000000000000000, 0.50000000000000000,
7738 4.0000000000000000, 0.80000000000000004 },
7739 { 1.4374795179111102, 2.0000000000000000, 0.50000000000000000,
7740 4.0000000000000000, 0.89999999999999991 },
7743 // Test function for a=2.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
7744 template <typename Tp
>
7747 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7748 Tp max_abs_diff
= -Tp(1);
7749 Tp max_abs_frac
= -Tp(1);
7750 unsigned int num_datum
= sizeof(data112
)
7751 / sizeof(testcase_hyperg
<double>);
7752 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7754 const Tp f
= std::tr1::hyperg(Tp(data112
[i
].a
), Tp(data112
[i
].b
),
7755 Tp(data112
[i
].c
), Tp(data112
[i
].x
));
7756 const Tp f0
= data112
[i
].f0
;
7757 const Tp diff
= f
- f0
;
7758 if (std::abs(diff
) > max_abs_diff
)
7759 max_abs_diff
= std::abs(diff
);
7760 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7762 const Tp frac
= diff
/ f0
;
7763 if (std::abs(frac
) > max_abs_frac
)
7764 max_abs_frac
= std::abs(frac
);
7767 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7770 // Test data for a=2.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
7771 testcase_hyperg
<double> data113
[] = {
7772 { 0.88195381730235833, 2.0000000000000000, 0.50000000000000000,
7773 6.0000000000000000, -0.90000000000000002 },
7774 { 0.89265078469555093, 2.0000000000000000, 0.50000000000000000,
7775 6.0000000000000000, -0.80000000000000004 },
7776 { 0.90382937908303707, 2.0000000000000000, 0.50000000000000000,
7777 6.0000000000000000, -0.69999999999999996 },
7778 { 0.91553161389880577, 2.0000000000000000, 0.50000000000000000,
7779 6.0000000000000000, -0.59999999999999998 },
7780 { 0.92780530349281576, 2.0000000000000000, 0.50000000000000000,
7781 6.0000000000000000, -0.50000000000000000 },
7782 { 0.94070521140346042, 2.0000000000000000, 0.50000000000000000,
7783 6.0000000000000000, -0.40000000000000002 },
7784 { 0.95429450630523349, 2.0000000000000000, 0.50000000000000000,
7785 6.0000000000000000, -0.30000000000000004 },
7786 { 0.96864663325785849, 2.0000000000000000, 0.50000000000000000,
7787 6.0000000000000000, -0.19999999999999996 },
7788 { 0.98384775588541795, 2.0000000000000000, 0.50000000000000000,
7789 6.0000000000000000, -0.099999999999999978 },
7790 { 1.0000000000000000, 2.0000000000000000, 0.50000000000000000,
7791 6.0000000000000000, 0.0000000000000000 },
7792 { 1.0172258496884334, 2.0000000000000000, 0.50000000000000000,
7793 6.0000000000000000, 0.10000000000000009 },
7794 { 1.0356742479163459, 2.0000000000000000, 0.50000000000000000,
7795 6.0000000000000000, 0.19999999999999996 },
7796 { 1.0555293036908924, 2.0000000000000000, 0.50000000000000000,
7797 6.0000000000000000, 0.30000000000000004 },
7798 { 1.0770231491562379, 2.0000000000000000, 0.50000000000000000,
7799 6.0000000000000000, 0.39999999999999991 },
7800 { 1.1004557416484888, 2.0000000000000000, 0.50000000000000000,
7801 6.0000000000000000, 0.50000000000000000 },
7802 { 1.1262270515731978, 2.0000000000000000, 0.50000000000000000,
7803 6.0000000000000000, 0.60000000000000009 },
7804 { 1.1548932919125086, 2.0000000000000000, 0.50000000000000000,
7805 6.0000000000000000, 0.69999999999999996 },
7806 { 1.1872757758134724, 2.0000000000000000, 0.50000000000000000,
7807 6.0000000000000000, 0.80000000000000004 },
7808 { 1.2247091713458949, 2.0000000000000000, 0.50000000000000000,
7809 6.0000000000000000, 0.89999999999999991 },
7812 // Test function for a=2.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
7813 template <typename Tp
>
7816 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7817 Tp max_abs_diff
= -Tp(1);
7818 Tp max_abs_frac
= -Tp(1);
7819 unsigned int num_datum
= sizeof(data113
)
7820 / sizeof(testcase_hyperg
<double>);
7821 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7823 const Tp f
= std::tr1::hyperg(Tp(data113
[i
].a
), Tp(data113
[i
].b
),
7824 Tp(data113
[i
].c
), Tp(data113
[i
].x
));
7825 const Tp f0
= data113
[i
].f0
;
7826 const Tp diff
= f
- f0
;
7827 if (std::abs(diff
) > max_abs_diff
)
7828 max_abs_diff
= std::abs(diff
);
7829 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7831 const Tp frac
= diff
/ f0
;
7832 if (std::abs(frac
) > max_abs_frac
)
7833 max_abs_frac
= std::abs(frac
);
7836 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7839 // Test data for a=2.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
7840 testcase_hyperg
<double> data114
[] = {
7841 { 0.90716919697107301, 2.0000000000000000, 0.50000000000000000,
7842 8.0000000000000000, -0.90000000000000002 },
7843 { 0.91592299407142519, 2.0000000000000000, 0.50000000000000000,
7844 8.0000000000000000, -0.80000000000000004 },
7845 { 0.92500027075874236, 2.0000000000000000, 0.50000000000000000,
7846 8.0000000000000000, -0.69999999999999996 },
7847 { 0.93442464185467167, 2.0000000000000000, 0.50000000000000000,
7848 8.0000000000000000, -0.59999999999999998 },
7849 { 0.94422248683737009, 2.0000000000000000, 0.50000000000000000,
7850 8.0000000000000000, -0.50000000000000000 },
7851 { 0.95442341810133347, 2.0000000000000000, 0.50000000000000000,
7852 8.0000000000000000, -0.40000000000000002 },
7853 { 0.96506085725516400, 2.0000000000000000, 0.50000000000000000,
7854 8.0000000000000000, -0.30000000000000004 },
7855 { 0.97617275213704069, 2.0000000000000000, 0.50000000000000000,
7856 8.0000000000000000, -0.19999999999999996 },
7857 { 0.98780247986309799, 2.0000000000000000, 0.50000000000000000,
7858 8.0000000000000000, -0.099999999999999978 },
7859 { 1.0000000000000000, 2.0000000000000000, 0.50000000000000000,
7860 8.0000000000000000, 0.0000000000000000 },
7861 { 1.0128233505813447, 2.0000000000000000, 0.50000000000000000,
7862 8.0000000000000000, 0.10000000000000009 },
7863 { 1.0263406246541855, 2.0000000000000000, 0.50000000000000000,
7864 8.0000000000000000, 0.19999999999999996 },
7865 { 1.0406326381700366, 2.0000000000000000, 0.50000000000000000,
7866 8.0000000000000000, 0.30000000000000004 },
7867 { 1.0557966239802845, 2.0000000000000000, 0.50000000000000000,
7868 8.0000000000000000, 0.39999999999999991 },
7869 { 1.0719515075786321, 2.0000000000000000, 0.50000000000000000,
7870 8.0000000000000000, 0.50000000000000000 },
7871 { 1.0892457392422055, 2.0000000000000000, 0.50000000000000000,
7872 8.0000000000000000, 0.60000000000000009 },
7873 { 1.1078695188000958, 2.0000000000000000, 0.50000000000000000,
7874 8.0000000000000000, 0.69999999999999996 },
7875 { 1.1280752258974340, 2.0000000000000000, 0.50000000000000000,
7876 8.0000000000000000, 0.80000000000000004 },
7877 { 1.1502152002706476, 2.0000000000000000, 0.50000000000000000,
7878 8.0000000000000000, 0.89999999999999991 },
7881 // Test function for a=2.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
7882 template <typename Tp
>
7885 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7886 Tp max_abs_diff
= -Tp(1);
7887 Tp max_abs_frac
= -Tp(1);
7888 unsigned int num_datum
= sizeof(data114
)
7889 / sizeof(testcase_hyperg
<double>);
7890 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7892 const Tp f
= std::tr1::hyperg(Tp(data114
[i
].a
), Tp(data114
[i
].b
),
7893 Tp(data114
[i
].c
), Tp(data114
[i
].x
));
7894 const Tp f0
= data114
[i
].f0
;
7895 const Tp diff
= f
- f0
;
7896 if (std::abs(diff
) > max_abs_diff
)
7897 max_abs_diff
= std::abs(diff
);
7898 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7900 const Tp frac
= diff
/ f0
;
7901 if (std::abs(frac
) > max_abs_frac
)
7902 max_abs_frac
= std::abs(frac
);
7905 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7908 // Test data for a=2.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
7909 testcase_hyperg
<double> data115
[] = {
7910 { 0.92336416053263093, 2.0000000000000000, 0.50000000000000000,
7911 10.000000000000000, -0.90000000000000002 },
7912 { 0.93078397248364519, 2.0000000000000000, 0.50000000000000000,
7913 10.000000000000000, -0.80000000000000004 },
7914 { 0.93843714333600226, 2.0000000000000000, 0.50000000000000000,
7915 10.000000000000000, -0.69999999999999996 },
7916 { 0.94633837784068076, 2.0000000000000000, 0.50000000000000000,
7917 10.000000000000000, -0.59999999999999998 },
7918 { 0.95450388104967909, 2.0000000000000000, 0.50000000000000000,
7919 10.000000000000000, -0.50000000000000000 },
7920 { 0.96295158125742764, 2.0000000000000000, 0.50000000000000000,
7921 10.000000000000000, -0.40000000000000002 },
7922 { 0.97170139827854296, 2.0000000000000000, 0.50000000000000000,
7923 10.000000000000000, -0.30000000000000004 },
7924 { 0.98077556918512687, 2.0000000000000000, 0.50000000000000000,
7925 10.000000000000000, -0.19999999999999996 },
7926 { 0.99019904777750845, 2.0000000000000000, 0.50000000000000000,
7927 10.000000000000000, -0.099999999999999978 },
7928 { 1.0000000000000000, 2.0000000000000000, 0.50000000000000000,
7929 10.000000000000000, 0.0000000000000000 },
7930 { 1.0102104261941198, 2.0000000000000000, 0.50000000000000000,
7931 10.000000000000000, 0.10000000000000009 },
7932 { 1.0208669540935695, 2.0000000000000000, 0.50000000000000000,
7933 10.000000000000000, 0.19999999999999996 },
7934 { 1.0320118665407505, 2.0000000000000000, 0.50000000000000000,
7935 10.000000000000000, 0.30000000000000004 },
7936 { 1.0436944599504387, 2.0000000000000000, 0.50000000000000000,
7937 10.000000000000000, 0.39999999999999991 },
7938 { 1.0559728828278145, 2.0000000000000000, 0.50000000000000000,
7939 10.000000000000000, 0.50000000000000000 },
7940 { 1.0689166967761712, 2.0000000000000000, 0.50000000000000000,
7941 10.000000000000000, 0.60000000000000009 },
7942 { 1.0826105758119842, 2.0000000000000000, 0.50000000000000000,
7943 10.000000000000000, 0.69999999999999996 },
7944 { 1.0971599106346146, 2.0000000000000000, 0.50000000000000000,
7945 10.000000000000000, 0.80000000000000004 },
7946 { 1.1126998828023964, 2.0000000000000000, 0.50000000000000000,
7947 10.000000000000000, 0.89999999999999991 },
7950 // Test function for a=2.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
7951 template <typename Tp
>
7954 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
7955 Tp max_abs_diff
= -Tp(1);
7956 Tp max_abs_frac
= -Tp(1);
7957 unsigned int num_datum
= sizeof(data115
)
7958 / sizeof(testcase_hyperg
<double>);
7959 for (unsigned int i
= 0; i
< num_datum
; ++i
)
7961 const Tp f
= std::tr1::hyperg(Tp(data115
[i
].a
), Tp(data115
[i
].b
),
7962 Tp(data115
[i
].c
), Tp(data115
[i
].x
));
7963 const Tp f0
= data115
[i
].f0
;
7964 const Tp diff
= f
- f0
;
7965 if (std::abs(diff
) > max_abs_diff
)
7966 max_abs_diff
= std::abs(diff
);
7967 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
7969 const Tp frac
= diff
/ f0
;
7970 if (std::abs(frac
) > max_abs_frac
)
7971 max_abs_frac
= std::abs(frac
);
7974 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
7977 // Test data for a=2.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
7978 testcase_hyperg
<double> data116
[] = {
7979 { 0.52631578947368429, 2.0000000000000000, 1.0000000000000000,
7980 2.0000000000000000, -0.90000000000000002 },
7981 { 0.55555555555555558, 2.0000000000000000, 1.0000000000000000,
7982 2.0000000000000000, -0.80000000000000004 },
7983 { 0.58823529411764708, 2.0000000000000000, 1.0000000000000000,
7984 2.0000000000000000, -0.69999999999999996 },
7985 { 0.62500000000000000, 2.0000000000000000, 1.0000000000000000,
7986 2.0000000000000000, -0.59999999999999998 },
7987 { 0.66666666666666663, 2.0000000000000000, 1.0000000000000000,
7988 2.0000000000000000, -0.50000000000000000 },
7989 { 0.71428571428571430, 2.0000000000000000, 1.0000000000000000,
7990 2.0000000000000000, -0.40000000000000002 },
7991 { 0.76923076923076927, 2.0000000000000000, 1.0000000000000000,
7992 2.0000000000000000, -0.30000000000000004 },
7993 { 0.83333333333333337, 2.0000000000000000, 1.0000000000000000,
7994 2.0000000000000000, -0.19999999999999996 },
7995 { 0.90909090909090906, 2.0000000000000000, 1.0000000000000000,
7996 2.0000000000000000, -0.099999999999999978 },
7997 { 1.0000000000000000, 2.0000000000000000, 1.0000000000000000,
7998 2.0000000000000000, 0.0000000000000000 },
7999 { 1.1111111111111112, 2.0000000000000000, 1.0000000000000000,
8000 2.0000000000000000, 0.10000000000000009 },
8001 { 1.2500000000000000, 2.0000000000000000, 1.0000000000000000,
8002 2.0000000000000000, 0.19999999999999996 },
8003 { 1.4285714285714286, 2.0000000000000000, 1.0000000000000000,
8004 2.0000000000000000, 0.30000000000000004 },
8005 { 1.6666666666666663, 2.0000000000000000, 1.0000000000000000,
8006 2.0000000000000000, 0.39999999999999991 },
8007 { 2.0000000000000000, 2.0000000000000000, 1.0000000000000000,
8008 2.0000000000000000, 0.50000000000000000 },
8009 { 2.5000000000000004, 2.0000000000000000, 1.0000000000000000,
8010 2.0000000000000000, 0.60000000000000009 },
8011 { 3.3333333333333330, 2.0000000000000000, 1.0000000000000000,
8012 2.0000000000000000, 0.69999999999999996 },
8013 { 5.0000000000000009, 2.0000000000000000, 1.0000000000000000,
8014 2.0000000000000000, 0.80000000000000004 },
8015 { 9.9999999999999929, 2.0000000000000000, 1.0000000000000000,
8016 2.0000000000000000, 0.89999999999999991 },
8019 // Test function for a=2.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
8020 template <typename Tp
>
8023 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8024 Tp max_abs_diff
= -Tp(1);
8025 Tp max_abs_frac
= -Tp(1);
8026 unsigned int num_datum
= sizeof(data116
)
8027 / sizeof(testcase_hyperg
<double>);
8028 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8030 const Tp f
= std::tr1::hyperg(Tp(data116
[i
].a
), Tp(data116
[i
].b
),
8031 Tp(data116
[i
].c
), Tp(data116
[i
].x
));
8032 const Tp f0
= data116
[i
].f0
;
8033 const Tp diff
= f
- f0
;
8034 if (std::abs(diff
) > max_abs_diff
)
8035 max_abs_diff
= std::abs(diff
);
8036 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8038 const Tp frac
= diff
/ f0
;
8039 if (std::abs(frac
) > max_abs_frac
)
8040 max_abs_frac
= std::abs(frac
);
8043 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8046 // Test data for a=2.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
8047 testcase_hyperg
<double> data117
[] = {
8048 { 0.70351947549341520, 2.0000000000000000, 1.0000000000000000,
8049 4.0000000000000000, -0.90000000000000002 },
8050 { 0.72637503722092711, 2.0000000000000000, 1.0000000000000000,
8051 4.0000000000000000, -0.80000000000000004 },
8052 { 0.75099661564391251, 2.0000000000000000, 1.0000000000000000,
8053 4.0000000000000000, -0.69999999999999996 },
8054 { 0.77761647796730871, 2.0000000000000000, 1.0000000000000000,
8055 4.0000000000000000, -0.59999999999999998 },
8056 { 0.80651221621216451, 2.0000000000000000, 1.0000000000000000,
8057 4.0000000000000000, -0.50000000000000000 },
8058 { 0.83801894346580275, 2.0000000000000000, 1.0000000000000000,
8059 4.0000000000000000, -0.40000000000000002 },
8060 { 0.87254582050258467, 2.0000000000000000, 1.0000000000000000,
8061 4.0000000000000000, -0.30000000000000004 },
8062 { 0.91059888544083678, 2.0000000000000000, 1.0000000000000000,
8063 4.0000000000000000, -0.19999999999999996 },
8064 { 0.95281329145592386, 2.0000000000000000, 1.0000000000000000,
8065 4.0000000000000000, -0.099999999999999978 },
8066 { 1.0000000000000000, 2.0000000000000000, 1.0000000000000000,
8067 4.0000000000000000, 0.0000000000000000 },
8068 { 1.0532154477379738, 2.0000000000000000, 1.0000000000000000,
8069 4.0000000000000000, 0.10000000000000009 },
8070 { 1.1138692114741471, 2.0000000000000000, 1.0000000000000000,
8071 4.0000000000000000, 0.19999999999999996 },
8072 { 1.1838976095305187, 2.0000000000000000, 1.0000000000000000,
8073 4.0000000000000000, 0.30000000000000004 },
8074 { 1.2660586631630237, 2.0000000000000000, 1.0000000000000000,
8075 4.0000000000000000, 0.39999999999999991 },
8076 { 1.3644676665613118, 2.0000000000000000, 1.0000000000000000,
8077 4.0000000000000000, 0.50000000000000000 },
8078 { 1.4856585347316102, 2.0000000000000000, 1.0000000000000000,
8079 4.0000000000000000, 0.60000000000000009 },
8080 { 1.6409590443536872, 2.0000000000000000, 1.0000000000000000,
8081 4.0000000000000000, 0.69999999999999996 },
8082 { 1.8528798927325769, 2.0000000000000000, 1.0000000000000000,
8083 4.0000000000000000, 0.80000000000000004 },
8084 { 2.1789423102929644, 2.0000000000000000, 1.0000000000000000,
8085 4.0000000000000000, 0.89999999999999991 },
8088 // Test function for a=2.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
8089 template <typename Tp
>
8092 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8093 Tp max_abs_diff
= -Tp(1);
8094 Tp max_abs_frac
= -Tp(1);
8095 unsigned int num_datum
= sizeof(data117
)
8096 / sizeof(testcase_hyperg
<double>);
8097 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8099 const Tp f
= std::tr1::hyperg(Tp(data117
[i
].a
), Tp(data117
[i
].b
),
8100 Tp(data117
[i
].c
), Tp(data117
[i
].x
));
8101 const Tp f0
= data117
[i
].f0
;
8102 const Tp diff
= f
- f0
;
8103 if (std::abs(diff
) > max_abs_diff
)
8104 max_abs_diff
= std::abs(diff
);
8105 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8107 const Tp frac
= diff
/ f0
;
8108 if (std::abs(frac
) > max_abs_frac
)
8109 max_abs_frac
= std::abs(frac
);
8112 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8115 // Test data for a=2.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
8116 testcase_hyperg
<double> data118
[] = {
8117 { 0.78068027379106253, 2.0000000000000000, 1.0000000000000000,
8118 6.0000000000000000, -0.90000000000000002 },
8119 { 0.79924541976981278, 2.0000000000000000, 1.0000000000000000,
8120 6.0000000000000000, -0.80000000000000004 },
8121 { 0.81891305585650942, 2.0000000000000000, 1.0000000000000000,
8122 6.0000000000000000, -0.69999999999999996 },
8123 { 0.83979799626213270, 2.0000000000000000, 1.0000000000000000,
8124 6.0000000000000000, -0.59999999999999998 },
8125 { 0.86203315303160166, 2.0000000000000000, 1.0000000000000000,
8126 6.0000000000000000, -0.50000000000000000 },
8127 { 0.88577352485361693, 2.0000000000000000, 1.0000000000000000,
8128 6.0000000000000000, -0.40000000000000002 },
8129 { 0.91120135738402208, 2.0000000000000000, 1.0000000000000000,
8130 6.0000000000000000, -0.30000000000000004 },
8131 { 0.93853291956703588, 2.0000000000000000, 1.0000000000000000,
8132 6.0000000000000000, -0.19999999999999996 },
8133 { 0.96802755388922956, 2.0000000000000000, 1.0000000000000000,
8134 6.0000000000000000, -0.099999999999999978 },
8135 { 1.0000000000000000, 2.0000000000000000, 1.0000000000000000,
8136 6.0000000000000000, 0.0000000000000000 },
8137 { 1.0348375559194773, 2.0000000000000000, 1.0000000000000000,
8138 6.0000000000000000, 0.10000000000000009 },
8139 { 1.0730246119544820, 2.0000000000000000, 1.0000000000000000,
8140 6.0000000000000000, 0.19999999999999996 },
8141 { 1.1151788396279341, 2.0000000000000000, 1.0000000000000000,
8142 6.0000000000000000, 0.30000000000000004 },
8143 { 1.1621066403893472, 2.0000000000000000, 1.0000000000000000,
8144 6.0000000000000000, 0.39999999999999991 },
8145 { 1.2148922218710421, 2.0000000000000000, 1.0000000000000000,
8146 6.0000000000000000, 0.50000000000000000 },
8147 { 1.2750496810838674, 2.0000000000000000, 1.0000000000000000,
8148 6.0000000000000000, 0.60000000000000009 },
8149 { 1.3448048570872917, 2.0000000000000000, 1.0000000000000000,
8150 6.0000000000000000, 0.69999999999999996 },
8151 { 1.4276833109859521, 2.0000000000000000, 1.0000000000000000,
8152 6.0000000000000000, 0.80000000000000004 },
8153 { 1.5299976259379788, 2.0000000000000000, 1.0000000000000000,
8154 6.0000000000000000, 0.89999999999999991 },
8157 // Test function for a=2.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
8158 template <typename Tp
>
8161 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8162 Tp max_abs_diff
= -Tp(1);
8163 Tp max_abs_frac
= -Tp(1);
8164 unsigned int num_datum
= sizeof(data118
)
8165 / sizeof(testcase_hyperg
<double>);
8166 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8168 const Tp f
= std::tr1::hyperg(Tp(data118
[i
].a
), Tp(data118
[i
].b
),
8169 Tp(data118
[i
].c
), Tp(data118
[i
].x
));
8170 const Tp f0
= data118
[i
].f0
;
8171 const Tp diff
= f
- f0
;
8172 if (std::abs(diff
) > max_abs_diff
)
8173 max_abs_diff
= std::abs(diff
);
8174 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8176 const Tp frac
= diff
/ f0
;
8177 if (std::abs(frac
) > max_abs_frac
)
8178 max_abs_frac
= std::abs(frac
);
8181 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8184 // Test data for a=2.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
8185 testcase_hyperg
<double> data119
[] = {
8186 { 0.82510759951857582, 2.0000000000000000, 1.0000000000000000,
8187 8.0000000000000000, -0.90000000000000002 },
8188 { 0.84072786892782092, 2.0000000000000000, 1.0000000000000000,
8189 8.0000000000000000, -0.80000000000000004 },
8190 { 0.85710884896562356, 2.0000000000000000, 1.0000000000000000,
8191 8.0000000000000000, -0.69999999999999996 },
8192 { 0.87431674418118333, 2.0000000000000000, 1.0000000000000000,
8193 8.0000000000000000, -0.59999999999999998 },
8194 { 0.89242659229727017, 2.0000000000000000, 1.0000000000000000,
8195 8.0000000000000000, -0.50000000000000000 },
8196 { 0.91152392685930339, 2.0000000000000000, 1.0000000000000000,
8197 8.0000000000000000, -0.40000000000000002 },
8198 { 0.93170685950993570, 2.0000000000000000, 1.0000000000000000,
8199 8.0000000000000000, -0.30000000000000004 },
8200 { 0.95308871926790661, 2.0000000000000000, 1.0000000000000000,
8201 8.0000000000000000, -0.19999999999999996 },
8202 { 0.97580144325325802, 2.0000000000000000, 1.0000000000000000,
8203 8.0000000000000000, -0.099999999999999978 },
8204 { 1.0000000000000000, 2.0000000000000000, 1.0000000000000000,
8205 8.0000000000000000, 0.0000000000000000 },
8206 { 1.0258682619030324, 2.0000000000000000, 1.0000000000000000,
8207 8.0000000000000000, 0.10000000000000009 },
8208 { 1.0536269616706000, 2.0000000000000000, 1.0000000000000000,
8209 8.0000000000000000, 0.19999999999999996 },
8210 { 1.0835447330793833, 2.0000000000000000, 1.0000000000000000,
8211 8.0000000000000000, 0.30000000000000004 },
8212 { 1.1159538758396654, 2.0000000000000000, 1.0000000000000000,
8213 8.0000000000000000, 0.39999999999999991 },
8214 { 1.1512736659291880, 2.0000000000000000, 1.0000000000000000,
8215 8.0000000000000000, 0.50000000000000000 },
8216 { 1.1900463690116090, 2.0000000000000000, 1.0000000000000000,
8217 8.0000000000000000, 0.60000000000000009 },
8218 { 1.2329961591622411, 2.0000000000000000, 1.0000000000000000,
8219 8.0000000000000000, 0.69999999999999996 },
8220 { 1.2811334345669059, 2.0000000000000000, 1.0000000000000000,
8221 8.0000000000000000, 0.80000000000000004 },
8222 { 1.3359629014132051, 2.0000000000000000, 1.0000000000000000,
8223 8.0000000000000000, 0.89999999999999991 },
8226 // Test function for a=2.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
8227 template <typename Tp
>
8230 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8231 Tp max_abs_diff
= -Tp(1);
8232 Tp max_abs_frac
= -Tp(1);
8233 unsigned int num_datum
= sizeof(data119
)
8234 / sizeof(testcase_hyperg
<double>);
8235 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8237 const Tp f
= std::tr1::hyperg(Tp(data119
[i
].a
), Tp(data119
[i
].b
),
8238 Tp(data119
[i
].c
), Tp(data119
[i
].x
));
8239 const Tp f0
= data119
[i
].f0
;
8240 const Tp diff
= f
- f0
;
8241 if (std::abs(diff
) > max_abs_diff
)
8242 max_abs_diff
= std::abs(diff
);
8243 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8245 const Tp frac
= diff
/ f0
;
8246 if (std::abs(frac
) > max_abs_frac
)
8247 max_abs_frac
= std::abs(frac
);
8250 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8253 // Test data for a=2.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
8254 testcase_hyperg
<double> data120
[] = {
8255 { 0.85426123653345876, 2.0000000000000000, 1.0000000000000000,
8256 10.000000000000000, -0.90000000000000002 },
8257 { 0.86774543390930370, 2.0000000000000000, 1.0000000000000000,
8258 10.000000000000000, -0.80000000000000004 },
8259 { 0.88178859537254239, 2.0000000000000000, 1.0000000000000000,
8260 10.000000000000000, -0.69999999999999996 },
8261 { 0.89643269097060951, 2.0000000000000000, 1.0000000000000000,
8262 10.000000000000000, -0.59999999999999998 },
8263 { 0.91172456687216763, 2.0000000000000000, 1.0000000000000000,
8264 10.000000000000000, -0.50000000000000000 },
8265 { 0.92771674975966134, 2.0000000000000000, 1.0000000000000000,
8266 10.000000000000000, -0.40000000000000002 },
8267 { 0.94446842993888647, 2.0000000000000000, 1.0000000000000000,
8268 10.000000000000000, -0.30000000000000004 },
8269 { 0.96204667481937678, 2.0000000000000000, 1.0000000000000000,
8270 10.000000000000000, -0.19999999999999996 },
8271 { 0.98052794339012128, 2.0000000000000000, 1.0000000000000000,
8272 10.000000000000000, -0.099999999999999978 },
8273 { 1.0000000000000000, 2.0000000000000000, 1.0000000000000000,
8274 10.000000000000000, 0.0000000000000000 },
8275 { 1.0205643671068179, 2.0000000000000000, 1.0000000000000000,
8276 10.000000000000000, 0.10000000000000009 },
8277 { 1.0423395201078882, 2.0000000000000000, 1.0000000000000000,
8278 10.000000000000000, 0.19999999999999996 },
8279 { 1.0654651277885334, 2.0000000000000000, 1.0000000000000000,
8280 10.000000000000000, 0.30000000000000004 },
8281 { 1.0901078068101382, 2.0000000000000000, 1.0000000000000000,
8282 10.000000000000000, 0.39999999999999991 },
8283 { 1.1164691415928940, 2.0000000000000000, 1.0000000000000000,
8284 10.000000000000000, 0.50000000000000000 },
8285 { 1.1447972335326551, 2.0000000000000000, 1.0000000000000000,
8286 10.000000000000000, 0.60000000000000009 },
8287 { 1.1754040384534161, 2.0000000000000000, 1.0000000000000000,
8288 10.000000000000000, 0.69999999999999996 },
8289 { 1.2086928679893112, 2.0000000000000000, 1.0000000000000000,
8290 10.000000000000000, 0.80000000000000004 },
8291 { 1.2452055640510711, 2.0000000000000000, 1.0000000000000000,
8292 10.000000000000000, 0.89999999999999991 },
8295 // Test function for a=2.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
8296 template <typename Tp
>
8299 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8300 Tp max_abs_diff
= -Tp(1);
8301 Tp max_abs_frac
= -Tp(1);
8302 unsigned int num_datum
= sizeof(data120
)
8303 / sizeof(testcase_hyperg
<double>);
8304 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8306 const Tp f
= std::tr1::hyperg(Tp(data120
[i
].a
), Tp(data120
[i
].b
),
8307 Tp(data120
[i
].c
), Tp(data120
[i
].x
));
8308 const Tp f0
= data120
[i
].f0
;
8309 const Tp diff
= f
- f0
;
8310 if (std::abs(diff
) > max_abs_diff
)
8311 max_abs_diff
= std::abs(diff
);
8312 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8314 const Tp frac
= diff
/ f0
;
8315 if (std::abs(frac
) > max_abs_frac
)
8316 max_abs_frac
= std::abs(frac
);
8319 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8322 // Test data for a=2.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
8323 testcase_hyperg
<double> data121
[] = {
8324 { 0.27700831024930750, 2.0000000000000000, 2.0000000000000000,
8325 2.0000000000000000, -0.90000000000000002 },
8326 { 0.30864197530864196, 2.0000000000000000, 2.0000000000000000,
8327 2.0000000000000000, -0.80000000000000004 },
8328 { 0.34602076124567477, 2.0000000000000000, 2.0000000000000000,
8329 2.0000000000000000, -0.69999999999999996 },
8330 { 0.39062499999999994, 2.0000000000000000, 2.0000000000000000,
8331 2.0000000000000000, -0.59999999999999998 },
8332 { 0.44444444444444442, 2.0000000000000000, 2.0000000000000000,
8333 2.0000000000000000, -0.50000000000000000 },
8334 { 0.51020408163265307, 2.0000000000000000, 2.0000000000000000,
8335 2.0000000000000000, -0.40000000000000002 },
8336 { 0.59171597633136097, 2.0000000000000000, 2.0000000000000000,
8337 2.0000000000000000, -0.30000000000000004 },
8338 { 0.69444444444444453, 2.0000000000000000, 2.0000000000000000,
8339 2.0000000000000000, -0.19999999999999996 },
8340 { 0.82644628099173545, 2.0000000000000000, 2.0000000000000000,
8341 2.0000000000000000, -0.099999999999999978 },
8342 { 1.0000000000000000, 2.0000000000000000, 2.0000000000000000,
8343 2.0000000000000000, 0.0000000000000000 },
8344 { 1.2345679012345681, 2.0000000000000000, 2.0000000000000000,
8345 2.0000000000000000, 0.10000000000000009 },
8346 { 1.5624999999999998, 2.0000000000000000, 2.0000000000000000,
8347 2.0000000000000000, 0.19999999999999996 },
8348 { 2.0408163265306127, 2.0000000000000000, 2.0000000000000000,
8349 2.0000000000000000, 0.30000000000000004 },
8350 { 2.7777777777777768, 2.0000000000000000, 2.0000000000000000,
8351 2.0000000000000000, 0.39999999999999991 },
8352 { 4.0000000000000000, 2.0000000000000000, 2.0000000000000000,
8353 2.0000000000000000, 0.50000000000000000 },
8354 { 6.2500000000000036, 2.0000000000000000, 2.0000000000000000,
8355 2.0000000000000000, 0.60000000000000009 },
8356 { 11.111111111111109, 2.0000000000000000, 2.0000000000000000,
8357 2.0000000000000000, 0.69999999999999996 },
8358 { 25.000000000000007, 2.0000000000000000, 2.0000000000000000,
8359 2.0000000000000000, 0.80000000000000004 },
8360 { 99.999999999999872, 2.0000000000000000, 2.0000000000000000,
8361 2.0000000000000000, 0.89999999999999991 },
8364 // Test function for a=2.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
8365 template <typename Tp
>
8368 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8369 Tp max_abs_diff
= -Tp(1);
8370 Tp max_abs_frac
= -Tp(1);
8371 unsigned int num_datum
= sizeof(data121
)
8372 / sizeof(testcase_hyperg
<double>);
8373 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8375 const Tp f
= std::tr1::hyperg(Tp(data121
[i
].a
), Tp(data121
[i
].b
),
8376 Tp(data121
[i
].c
), Tp(data121
[i
].x
));
8377 const Tp f0
= data121
[i
].f0
;
8378 const Tp diff
= f
- f0
;
8379 if (std::abs(diff
) > max_abs_diff
)
8380 max_abs_diff
= std::abs(diff
);
8381 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8383 const Tp frac
= diff
/ f0
;
8384 if (std::abs(frac
) > max_abs_frac
)
8385 max_abs_frac
= std::abs(frac
);
8388 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8391 // Test data for a=2.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
8392 testcase_hyperg
<double> data122
[] = {
8393 { 0.50515448477320868, 2.0000000000000000, 2.0000000000000000,
8394 4.0000000000000000, -0.90000000000000002 },
8395 { 0.53674994210078020, 2.0000000000000000, 2.0000000000000000,
8396 4.0000000000000000, -0.80000000000000004 },
8397 { 0.57194655162437447, 2.0000000000000000, 2.0000000000000000,
8398 4.0000000000000000, -0.69999999999999996 },
8399 { 0.61137322330312327, 2.0000000000000000, 2.0000000000000000,
8400 4.0000000000000000, -0.59999999999999998 },
8401 { 0.65581297297972574, 2.0000000000000000, 2.0000000000000000,
8402 4.0000000000000000, -0.50000000000000000 },
8403 { 0.70625323977290932, 2.0000000000000000, 2.0000000000000000,
8404 4.0000000000000000, -0.40000000000000002 },
8405 { 0.76395739449542643, 2.0000000000000000, 2.0000000000000000,
8406 4.0000000000000000, -0.30000000000000004 },
8407 { 0.83056871002513311, 2.0000000000000000, 2.0000000000000000,
8408 4.0000000000000000, -0.19999999999999996 },
8409 { 0.90826553449323655, 2.0000000000000000, 2.0000000000000000,
8410 4.0000000000000000, -0.099999999999999978 },
8411 { 1.0000000000000000, 2.0000000000000000, 2.0000000000000000,
8412 4.0000000000000000, 0.0000000000000000 },
8413 { 1.1098784992198341, 2.0000000000000000, 2.0000000000000000,
8414 4.0000000000000000, 0.10000000000000009 },
8415 { 1.2437942741831700, 2.0000000000000000, 2.0000000000000000,
8416 4.0000000000000000, 0.19999999999999996 },
8417 { 1.4105343768544543, 2.0000000000000000, 2.0000000000000000,
8418 4.0000000000000000, 0.30000000000000004 },
8419 { 1.6238435648986016, 2.0000000000000000, 2.0000000000000000,
8420 4.0000000000000000, 0.39999999999999991 },
8421 { 1.9065970003160624, 2.0000000000000000, 2.0000000000000000,
8422 4.0000000000000000, 0.50000000000000000 },
8423 { 2.3001951284393627, 2.0000000000000000, 2.0000000000000000,
8424 4.0000000000000000, 0.60000000000000009 },
8425 { 2.8891774744673464, 2.0000000000000000, 2.0000000000000000,
8426 4.0000000000000000, 0.69999999999999996 },
8427 { 3.8827206436045336, 2.0000000000000000, 2.0000000000000000,
8428 4.0000000000000000, 0.80000000000000004 },
8429 { 6.0316345867773542, 2.0000000000000000, 2.0000000000000000,
8430 4.0000000000000000, 0.89999999999999991 },
8433 // Test function for a=2.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
8434 template <typename Tp
>
8437 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8438 Tp max_abs_diff
= -Tp(1);
8439 Tp max_abs_frac
= -Tp(1);
8440 unsigned int num_datum
= sizeof(data122
)
8441 / sizeof(testcase_hyperg
<double>);
8442 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8444 const Tp f
= std::tr1::hyperg(Tp(data122
[i
].a
), Tp(data122
[i
].b
),
8445 Tp(data122
[i
].c
), Tp(data122
[i
].x
));
8446 const Tp f0
= data122
[i
].f0
;
8447 const Tp diff
= f
- f0
;
8448 if (std::abs(diff
) > max_abs_diff
)
8449 max_abs_diff
= std::abs(diff
);
8450 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8452 const Tp frac
= diff
/ f0
;
8453 if (std::abs(frac
) > max_abs_frac
)
8454 max_abs_frac
= std::abs(frac
);
8457 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8460 // Test data for a=2.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
8461 testcase_hyperg
<double> data123
[] = {
8462 { 0.61824560969673303, 2.0000000000000000, 2.0000000000000000,
8463 6.0000000000000000, -0.90000000000000002 },
8464 { 0.64645665839161048, 2.0000000000000000, 2.0000000000000000,
8465 6.0000000000000000, -0.80000000000000004 },
8466 { 0.67712272792612083, 2.0000000000000000, 2.0000000000000000,
8467 6.0000000000000000, -0.69999999999999996 },
8468 { 0.71058076074636822, 2.0000000000000000, 2.0000000000000000,
8469 6.0000000000000000, -0.59999999999999998 },
8470 { 0.74723387423852861, 2.0000000000000000, 2.0000000000000000,
8471 6.0000000000000000, -0.50000000000000000 },
8472 { 0.78756892188863126, 2.0000000000000000, 2.0000000000000000,
8473 6.0000000000000000, -0.40000000000000002 },
8474 { 0.83218012557592713, 2.0000000000000000, 2.0000000000000000,
8475 6.0000000000000000, -0.30000000000000004 },
8476 { 0.88180144818204143, 2.0000000000000000, 2.0000000000000000,
8477 6.0000000000000000, -0.19999999999999996 },
8478 { 0.93735184459468934, 2.0000000000000000, 2.0000000000000000,
8479 6.0000000000000000, -0.099999999999999978 },
8480 { 1.0000000000000000, 2.0000000000000000, 2.0000000000000000,
8481 6.0000000000000000, 0.0000000000000000 },
8482 { 1.0712594799044883, 2.0000000000000000, 2.0000000000000000,
8483 6.0000000000000000, 0.10000000000000009 },
8484 { 1.1531330932162096, 2.0000000000000000, 2.0000000000000000,
8485 6.0000000000000000, 0.19999999999999996 },
8486 { 1.2483404191094898, 2.0000000000000000, 2.0000000000000000,
8487 6.0000000000000000, 0.30000000000000004 },
8488 { 1.3606934909972501, 2.0000000000000000, 2.0000000000000000,
8489 6.0000000000000000, 0.39999999999999991 },
8490 { 1.4957544469027071, 2.0000000000000000, 2.0000000000000000,
8491 6.0000000000000000, 0.50000000000000000 },
8492 { 1.6620777107871287, 2.0000000000000000, 2.0000000000000000,
8493 6.0000000000000000, 0.60000000000000009 },
8494 { 1.8738132387064506, 2.0000000000000000, 2.0000000000000000,
8495 6.0000000000000000, 0.69999999999999996 },
8496 { 2.1570670242247409, 2.0000000000000000, 2.0000000000000000,
8497 6.0000000000000000, 0.80000000000000004 },
8498 { 2.5700735959225494, 2.0000000000000000, 2.0000000000000000,
8499 6.0000000000000000, 0.89999999999999991 },
8502 // Test function for a=2.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
8503 template <typename Tp
>
8506 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8507 Tp max_abs_diff
= -Tp(1);
8508 Tp max_abs_frac
= -Tp(1);
8509 unsigned int num_datum
= sizeof(data123
)
8510 / sizeof(testcase_hyperg
<double>);
8511 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8513 const Tp f
= std::tr1::hyperg(Tp(data123
[i
].a
), Tp(data123
[i
].b
),
8514 Tp(data123
[i
].c
), Tp(data123
[i
].x
));
8515 const Tp f0
= data123
[i
].f0
;
8516 const Tp diff
= f
- f0
;
8517 if (std::abs(diff
) > max_abs_diff
)
8518 max_abs_diff
= std::abs(diff
);
8519 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8521 const Tp frac
= diff
/ f0
;
8522 if (std::abs(frac
) > max_abs_frac
)
8523 max_abs_frac
= std::abs(frac
);
8526 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8529 // Test data for a=2.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
8530 testcase_hyperg
<double> data124
[] = {
8531 { 0.68776713859043437, 2.0000000000000000, 2.0000000000000000,
8532 8.0000000000000000, -0.90000000000000002 },
8533 { 0.71280582849489826, 2.0000000000000000, 2.0000000000000000,
8534 8.0000000000000000, -0.80000000000000004 },
8535 { 0.73962983054724929, 2.0000000000000000, 2.0000000000000000,
8536 8.0000000000000000, -0.69999999999999996 },
8537 { 0.76844343025262085, 2.0000000000000000, 2.0000000000000000,
8538 8.0000000000000000, -0.59999999999999998 },
8539 { 0.79948476671182911, 2.0000000000000000, 2.0000000000000000,
8540 8.0000000000000000, -0.50000000000000000 },
8541 { 0.83303347721461229, 2.0000000000000000, 2.0000000000000000,
8542 8.0000000000000000, -0.40000000000000002 },
8543 { 0.86942060391338782, 2.0000000000000000, 2.0000000000000000,
8544 8.0000000000000000, -0.30000000000000004 },
8545 { 0.90904161711581655, 2.0000000000000000, 2.0000000000000000,
8546 8.0000000000000000, -0.19999999999999996 },
8547 { 0.95237381468647742, 2.0000000000000000, 2.0000000000000000,
8548 8.0000000000000000, -0.099999999999999978 },
8549 { 1.0000000000000000, 2.0000000000000000, 2.0000000000000000,
8550 8.0000000000000000, 0.0000000000000000 },
8551 { 1.0526413941912305, 2.0000000000000000, 2.0000000000000000,
8552 8.0000000000000000, 0.10000000000000009 },
8553 { 1.1112045278881502, 2.0000000000000000, 2.0000000000000000,
8554 8.0000000000000000, 0.19999999999999996 },
8555 { 1.1768500306393046, 2.0000000000000000, 2.0000000000000000,
8556 8.0000000000000000, 0.30000000000000004 },
8557 { 1.2510971588297888, 2.0000000000000000, 2.0000000000000000,
8558 8.0000000000000000, 0.39999999999999991 },
8559 { 1.3359896747789315, 2.0000000000000000, 2.0000000000000000,
8560 8.0000000000000000, 0.50000000000000000 },
8561 { 1.4343740183432725, 2.0000000000000000, 2.0000000000000000,
8562 8.0000000000000000, 0.60000000000000009 },
8563 { 1.5504011881337365, 2.0000000000000000, 2.0000000000000000,
8564 8.0000000000000000, 0.69999999999999996 },
8565 { 1.6905307012604318, 2.0000000000000000, 2.0000000000000000,
8566 8.0000000000000000, 0.80000000000000004 },
8567 { 1.8658920279264424, 2.0000000000000000, 2.0000000000000000,
8568 8.0000000000000000, 0.89999999999999991 },
8571 // Test function for a=2.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
8572 template <typename Tp
>
8575 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8576 Tp max_abs_diff
= -Tp(1);
8577 Tp max_abs_frac
= -Tp(1);
8578 unsigned int num_datum
= sizeof(data124
)
8579 / sizeof(testcase_hyperg
<double>);
8580 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8582 const Tp f
= std::tr1::hyperg(Tp(data124
[i
].a
), Tp(data124
[i
].b
),
8583 Tp(data124
[i
].c
), Tp(data124
[i
].x
));
8584 const Tp f0
= data124
[i
].f0
;
8585 const Tp diff
= f
- f0
;
8586 if (std::abs(diff
) > max_abs_diff
)
8587 max_abs_diff
= std::abs(diff
);
8588 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8590 const Tp frac
= diff
/ f0
;
8591 if (std::abs(frac
) > max_abs_frac
)
8592 max_abs_frac
= std::abs(frac
);
8595 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8598 // Test data for a=2.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
8599 testcase_hyperg
<double> data125
[] = {
8600 { 0.73530262886958830, 2.0000000000000000, 2.0000000000000000,
8601 10.000000000000000, -0.90000000000000002 },
8602 { 0.75768898977673638, 2.0000000000000000, 2.0000000000000000,
8603 10.000000000000000, -0.80000000000000004 },
8604 { 0.78143483544640069, 2.0000000000000000, 2.0000000000000000,
8605 10.000000000000000, -0.69999999999999996 },
8606 { 0.80667428603297209, 2.0000000000000000, 2.0000000000000000,
8607 10.000000000000000, -0.59999999999999998 },
8608 { 0.83356078772438325, 2.0000000000000000, 2.0000000000000000,
8609 10.000000000000000, -0.50000000000000000 },
8610 { 0.86227093001346145, 2.0000000000000000, 2.0000000000000000,
8611 10.000000000000000, -0.40000000000000002 },
8612 { 0.89300925500556994, 2.0000000000000000, 2.0000000000000000,
8613 10.000000000000000, -0.30000000000000004 },
8614 { 0.92601438873425990, 2.0000000000000000, 2.0000000000000000,
8615 10.000000000000000, -0.19999999999999996 },
8616 { 0.96156696230910810, 2.0000000000000000, 2.0000000000000000,
8617 10.000000000000000, -0.099999999999999978 },
8618 { 1.0000000000000000, 2.0000000000000000, 2.0000000000000000,
8619 10.000000000000000, 0.0000000000000000 },
8620 { 1.0417127776179342, 2.0000000000000000, 2.0000000000000000,
8621 10.000000000000000, 0.10000000000000009 },
8622 { 1.0871896789480930, 2.0000000000000000, 2.0000000000000000,
8623 10.000000000000000, 0.19999999999999996 },
8624 { 1.1370264514689949, 2.0000000000000000, 2.0000000000000000,
8625 10.000000000000000, 0.30000000000000004 },
8626 { 1.1919677804049154, 2.0000000000000000, 2.0000000000000000,
8627 10.000000000000000, 0.39999999999999991 },
8628 { 1.2529628761065934, 2.0000000000000000, 2.0000000000000000,
8629 10.000000000000000, 0.50000000000000000 },
8630 { 1.3212511796458866, 2.0000000000000000, 2.0000000000000000,
8631 10.000000000000000, 0.60000000000000009 },
8632 { 1.3985017309668506, 2.0000000000000000, 2.0000000000000000,
8633 10.000000000000000, 0.69999999999999996 },
8634 { 1.4870567523847895, 2.0000000000000000, 2.0000000000000000,
8635 10.000000000000000, 0.80000000000000004 },
8636 { 1.5904049523738040, 2.0000000000000000, 2.0000000000000000,
8637 10.000000000000000, 0.89999999999999991 },
8640 // Test function for a=2.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
8641 template <typename Tp
>
8644 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8645 Tp max_abs_diff
= -Tp(1);
8646 Tp max_abs_frac
= -Tp(1);
8647 unsigned int num_datum
= sizeof(data125
)
8648 / sizeof(testcase_hyperg
<double>);
8649 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8651 const Tp f
= std::tr1::hyperg(Tp(data125
[i
].a
), Tp(data125
[i
].b
),
8652 Tp(data125
[i
].c
), Tp(data125
[i
].x
));
8653 const Tp f0
= data125
[i
].f0
;
8654 const Tp diff
= f
- f0
;
8655 if (std::abs(diff
) > max_abs_diff
)
8656 max_abs_diff
= std::abs(diff
);
8657 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8659 const Tp frac
= diff
/ f0
;
8660 if (std::abs(frac
) > max_abs_frac
)
8661 max_abs_frac
= std::abs(frac
);
8664 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8667 // Test data for a=2.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
8668 testcase_hyperg
<double> data126
[] = {
8669 { 0.040386107340619266, 2.0000000000000000, 5.0000000000000000,
8670 2.0000000000000000, -0.90000000000000002 },
8671 { 0.052922149401344633, 2.0000000000000000, 5.0000000000000000,
8672 2.0000000000000000, -0.80000000000000004 },
8673 { 0.070429627772374270, 2.0000000000000000, 5.0000000000000000,
8674 2.0000000000000000, -0.69999999999999996 },
8675 { 0.095367431640624972, 2.0000000000000000, 5.0000000000000000,
8676 2.0000000000000000, -0.59999999999999998 },
8677 { 0.13168724279835387, 2.0000000000000000, 5.0000000000000000,
8678 2.0000000000000000, -0.50000000000000000 },
8679 { 0.18593443208187066, 2.0000000000000000, 5.0000000000000000,
8680 2.0000000000000000, -0.40000000000000002 },
8681 { 0.26932907434290437, 2.0000000000000000, 5.0000000000000000,
8682 2.0000000000000000, -0.30000000000000004 },
8683 { 0.40187757201646096, 2.0000000000000000, 5.0000000000000000,
8684 2.0000000000000000, -0.19999999999999996 },
8685 { 0.62092132305915493, 2.0000000000000000, 5.0000000000000000,
8686 2.0000000000000000, -0.099999999999999978 },
8687 { 1.0000000000000000, 2.0000000000000000, 5.0000000000000000,
8688 2.0000000000000000, 0.0000000000000000 },
8689 { 1.6935087808430296, 2.0000000000000000, 5.0000000000000000,
8690 2.0000000000000000, 0.10000000000000009 },
8691 { 3.0517578124999991, 2.0000000000000000, 5.0000000000000000,
8692 2.0000000000000000, 0.19999999999999996 },
8693 { 5.9499018266198629, 2.0000000000000000, 5.0000000000000000,
8694 2.0000000000000000, 0.30000000000000004 },
8695 { 12.860082304526737, 2.0000000000000000, 5.0000000000000000,
8696 2.0000000000000000, 0.39999999999999991 },
8697 { 32.000000000000000, 2.0000000000000000, 5.0000000000000000,
8698 2.0000000000000000, 0.50000000000000000 },
8699 { 97.656250000000114, 2.0000000000000000, 5.0000000000000000,
8700 2.0000000000000000, 0.60000000000000009 },
8701 { 411.52263374485580, 2.0000000000000000, 5.0000000000000000,
8702 2.0000000000000000, 0.69999999999999996 },
8703 { 3124.9999999999991, 2.0000000000000000, 5.0000000000000000,
8704 2.0000000000000000, 0.80000000000000004 },
8705 { 99999.999999999665, 2.0000000000000000, 5.0000000000000000,
8706 2.0000000000000000, 0.89999999999999991 },
8709 // Test function for a=2.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
8710 template <typename Tp
>
8713 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8714 Tp max_abs_diff
= -Tp(1);
8715 Tp max_abs_frac
= -Tp(1);
8716 unsigned int num_datum
= sizeof(data126
)
8717 / sizeof(testcase_hyperg
<double>);
8718 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8720 const Tp f
= std::tr1::hyperg(Tp(data126
[i
].a
), Tp(data126
[i
].b
),
8721 Tp(data126
[i
].c
), Tp(data126
[i
].x
));
8722 const Tp f0
= data126
[i
].f0
;
8723 const Tp diff
= f
- f0
;
8724 if (std::abs(diff
) > max_abs_diff
)
8725 max_abs_diff
= std::abs(diff
);
8726 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8728 const Tp frac
= diff
/ f0
;
8729 if (std::abs(frac
) > max_abs_frac
)
8730 max_abs_frac
= std::abs(frac
);
8733 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8736 // Test data for a=2.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
8737 testcase_hyperg
<double> data127
[] = {
8738 { 0.21140107887447140, 2.0000000000000000, 5.0000000000000000,
8739 4.0000000000000000, -0.90000000000000002 },
8740 { 0.24005486968449935, 2.0000000000000000, 5.0000000000000000,
8741 4.0000000000000000, -0.80000000000000004 },
8742 { 0.27478119275391821, 2.0000000000000000, 5.0000000000000000,
8743 4.0000000000000000, -0.69999999999999996 },
8744 { 0.31738281249999994, 2.0000000000000000, 5.0000000000000000,
8745 4.0000000000000000, -0.59999999999999998 },
8746 { 0.37037037037037035, 2.0000000000000000, 5.0000000000000000,
8747 4.0000000000000000, -0.50000000000000000 },
8748 { 0.43731778425655982, 2.0000000000000000, 5.0000000000000000,
8749 4.0000000000000000, -0.40000000000000002 },
8750 { 0.52344105598543444, 2.0000000000000000, 5.0000000000000000,
8751 4.0000000000000000, -0.30000000000000004 },
8752 { 0.63657407407407429, 2.0000000000000000, 5.0000000000000000,
8753 4.0000000000000000, -0.19999999999999996 },
8754 { 0.78888054094665638, 2.0000000000000000, 5.0000000000000000,
8755 4.0000000000000000, -0.099999999999999978 },
8756 { 1.0000000000000000, 2.0000000000000000, 5.0000000000000000,
8757 4.0000000000000000, 0.0000000000000000 },
8758 { 1.3031550068587108, 2.0000000000000000, 5.0000000000000000,
8759 4.0000000000000000, 0.10000000000000009 },
8760 { 1.7578125000000002, 2.0000000000000000, 5.0000000000000000,
8761 4.0000000000000000, 0.19999999999999996 },
8762 { 2.4781341107871717, 2.0000000000000000, 5.0000000000000000,
8763 4.0000000000000000, 0.30000000000000004 },
8764 { 3.7037037037037037, 2.0000000000000000, 5.0000000000000000,
8765 4.0000000000000000, 0.39999999999999991 },
8766 { 5.9999999999999982, 2.0000000000000000, 5.0000000000000000,
8767 4.0000000000000000, 0.50000000000000000 },
8768 { 10.937500000000005, 2.0000000000000000, 5.0000000000000000,
8769 4.0000000000000000, 0.60000000000000009 },
8770 { 24.074074074074076, 2.0000000000000000, 5.0000000000000000,
8771 4.0000000000000000, 0.69999999999999996 },
8772 { 74.999999999999957, 2.0000000000000000, 5.0000000000000000,
8773 4.0000000000000000, 0.80000000000000004 },
8774 { 549.99999999999670, 2.0000000000000000, 5.0000000000000000,
8775 4.0000000000000000, 0.89999999999999991 },
8778 // Test function for a=2.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
8779 template <typename Tp
>
8782 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8783 Tp max_abs_diff
= -Tp(1);
8784 Tp max_abs_frac
= -Tp(1);
8785 unsigned int num_datum
= sizeof(data127
)
8786 / sizeof(testcase_hyperg
<double>);
8787 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8789 const Tp f
= std::tr1::hyperg(Tp(data127
[i
].a
), Tp(data127
[i
].b
),
8790 Tp(data127
[i
].c
), Tp(data127
[i
].x
));
8791 const Tp f0
= data127
[i
].f0
;
8792 const Tp diff
= f
- f0
;
8793 if (std::abs(diff
) > max_abs_diff
)
8794 max_abs_diff
= std::abs(diff
);
8795 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8797 const Tp frac
= diff
/ f0
;
8798 if (std::abs(frac
) > max_abs_frac
)
8799 max_abs_frac
= std::abs(frac
);
8802 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8805 // Test data for a=2.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
8806 testcase_hyperg
<double> data128
[] = {
8807 { 0.33250915203252107, 2.0000000000000000, 5.0000000000000000,
8808 6.0000000000000000, -0.90000000000000002 },
8809 { 0.36566851047721960, 2.0000000000000000, 5.0000000000000000,
8810 6.0000000000000000, -0.80000000000000004 },
8811 { 0.40414812182437942, 2.0000000000000000, 5.0000000000000000,
8812 6.0000000000000000, -0.69999999999999996 },
8813 { 0.44916943268118470, 2.0000000000000000, 5.0000000000000000,
8814 6.0000000000000000, -0.59999999999999998 },
8815 { 0.50233081077479569, 2.0000000000000000, 5.0000000000000000,
8816 6.0000000000000000, -0.50000000000000000 },
8817 { 0.56575808728873322, 2.0000000000000000, 5.0000000000000000,
8818 6.0000000000000000, -0.40000000000000002 },
8819 { 0.64233106844971422, 2.0000000000000000, 5.0000000000000000,
8820 6.0000000000000000, -0.30000000000000004 },
8821 { 0.73603371116919514, 2.0000000000000000, 5.0000000000000000,
8822 6.0000000000000000, -0.19999999999999996 },
8823 { 0.85251256240112439, 2.0000000000000000, 5.0000000000000000,
8824 6.0000000000000000, -0.099999999999999978 },
8825 { 1.0000000000000000, 2.0000000000000000, 5.0000000000000000,
8826 6.0000000000000000, 0.0000000000000000 },
8827 { 1.1909065696197674, 2.0000000000000000, 5.0000000000000000,
8828 6.0000000000000000, 0.10000000000000009 },
8829 { 1.4447095285569311, 2.0000000000000000, 5.0000000000000000,
8830 6.0000000000000000, 0.19999999999999996 },
8831 { 1.7935243137840653, 2.0000000000000000, 5.0000000000000000,
8832 6.0000000000000000, 0.30000000000000004 },
8833 { 2.2937035820494454, 2.0000000000000000, 5.0000000000000000,
8834 6.0000000000000000, 0.39999999999999991 },
8835 { 3.0524711083016687, 2.0000000000000000, 5.0000000000000000,
8836 6.0000000000000000, 0.50000000000000000 },
8837 { 4.2976512669354259, 2.0000000000000000, 5.0000000000000000,
8838 6.0000000000000000, 0.60000000000000009 },
8839 { 6.5977107563194677, 2.0000000000000000, 5.0000000000000000,
8840 6.0000000000000000, 0.69999999999999996 },
8841 { 11.793747206577530, 2.0000000000000000, 5.0000000000000000,
8842 6.0000000000000000, 0.80000000000000004 },
8843 { 29.997625937982058, 2.0000000000000000, 5.0000000000000000,
8844 6.0000000000000000, 0.89999999999999991 },
8847 // Test function for a=2.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
8848 template <typename Tp
>
8851 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8852 Tp max_abs_diff
= -Tp(1);
8853 Tp max_abs_frac
= -Tp(1);
8854 unsigned int num_datum
= sizeof(data128
)
8855 / sizeof(testcase_hyperg
<double>);
8856 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8858 const Tp f
= std::tr1::hyperg(Tp(data128
[i
].a
), Tp(data128
[i
].b
),
8859 Tp(data128
[i
].c
), Tp(data128
[i
].x
));
8860 const Tp f0
= data128
[i
].f0
;
8861 const Tp diff
= f
- f0
;
8862 if (std::abs(diff
) > max_abs_diff
)
8863 max_abs_diff
= std::abs(diff
);
8864 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8866 const Tp frac
= diff
/ f0
;
8867 if (std::abs(frac
) > max_abs_frac
)
8868 max_abs_frac
= std::abs(frac
);
8871 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8874 // Test data for a=2.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
8875 testcase_hyperg
<double> data129
[] = {
8876 { 0.42108197362250305, 2.0000000000000000, 5.0000000000000000,
8877 8.0000000000000000, -0.90000000000000002 },
8878 { 0.45503172013983051, 2.0000000000000000, 5.0000000000000000,
8879 8.0000000000000000, -0.80000000000000004 },
8880 { 0.49345609813624303, 2.0000000000000000, 5.0000000000000000,
8881 8.0000000000000000, -0.69999999999999996 },
8882 { 0.53720880551221295, 2.0000000000000000, 5.0000000000000000,
8883 8.0000000000000000, -0.59999999999999998 },
8884 { 0.58736431524847466, 2.0000000000000000, 5.0000000000000000,
8885 8.0000000000000000, -0.50000000000000000 },
8886 { 0.64529222467897962, 2.0000000000000000, 5.0000000000000000,
8887 8.0000000000000000, -0.40000000000000002 },
8888 { 0.71276337354393904, 2.0000000000000000, 5.0000000000000000,
8889 8.0000000000000000, -0.30000000000000004 },
8890 { 0.79210466220795306, 2.0000000000000000, 5.0000000000000000,
8891 8.0000000000000000, -0.19999999999999996 },
8892 { 0.88643063455510596, 2.0000000000000000, 5.0000000000000000,
8893 8.0000000000000000, -0.099999999999999978 },
8894 { 1.0000000000000000, 2.0000000000000000, 5.0000000000000000,
8895 8.0000000000000000, 0.0000000000000000 },
8896 { 1.1387832139040652, 2.0000000000000000, 5.0000000000000000,
8897 8.0000000000000000, 0.10000000000000009 },
8898 { 1.3114025920844752, 2.0000000000000000, 5.0000000000000000,
8899 8.0000000000000000, 0.19999999999999996 },
8900 { 1.5307655016768162, 2.0000000000000000, 5.0000000000000000,
8901 8.0000000000000000, 0.30000000000000004 },
8902 { 1.8170727950333345, 2.0000000000000000, 5.0000000000000000,
8903 8.0000000000000000, 0.39999999999999991 },
8904 { 2.2037865486700836, 2.0000000000000000, 5.0000000000000000,
8905 8.0000000000000000, 0.50000000000000000 },
8906 { 2.7506766056439380, 2.0000000000000000, 5.0000000000000000,
8907 8.0000000000000000, 0.60000000000000009 },
8908 { 3.5764534935716972, 2.0000000000000000, 5.0000000000000000,
8909 8.0000000000000000, 0.69999999999999996 },
8910 { 4.9587762302155403, 2.0000000000000000, 5.0000000000000000,
8911 8.0000000000000000, 0.80000000000000004 },
8912 { 7.7740847924166800, 2.0000000000000000, 5.0000000000000000,
8913 8.0000000000000000, 0.89999999999999991 },
8916 // Test function for a=2.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
8917 template <typename Tp
>
8920 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8921 Tp max_abs_diff
= -Tp(1);
8922 Tp max_abs_frac
= -Tp(1);
8923 unsigned int num_datum
= sizeof(data129
)
8924 / sizeof(testcase_hyperg
<double>);
8925 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8927 const Tp f
= std::tr1::hyperg(Tp(data129
[i
].a
), Tp(data129
[i
].b
),
8928 Tp(data129
[i
].c
), Tp(data129
[i
].x
));
8929 const Tp f0
= data129
[i
].f0
;
8930 const Tp diff
= f
- f0
;
8931 if (std::abs(diff
) > max_abs_diff
)
8932 max_abs_diff
= std::abs(diff
);
8933 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
8935 const Tp frac
= diff
/ f0
;
8936 if (std::abs(frac
) > max_abs_frac
)
8937 max_abs_frac
= std::abs(frac
);
8940 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
8943 // Test data for a=2.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
8944 testcase_hyperg
<double> data130
[] = {
8945 { 0.48860241312958425, 2.0000000000000000, 5.0000000000000000,
8946 10.000000000000000, -0.90000000000000002 },
8947 { 0.52193382517068487, 2.0000000000000000, 5.0000000000000000,
8948 10.000000000000000, -0.80000000000000004 },
8949 { 0.55902375003954219, 2.0000000000000000, 5.0000000000000000,
8950 10.000000000000000, -0.69999999999999996 },
8951 { 0.60049055150230346, 2.0000000000000000, 5.0000000000000000,
8952 10.000000000000000, -0.59999999999999998 },
8953 { 0.64709127927203480, 2.0000000000000000, 5.0000000000000000,
8954 10.000000000000000, -0.50000000000000000 },
8955 { 0.69976233335368998, 2.0000000000000000, 5.0000000000000000,
8956 10.000000000000000, -0.40000000000000002 },
8957 { 0.75967529501081055, 2.0000000000000000, 5.0000000000000000,
8958 10.000000000000000, -0.30000000000000004 },
8959 { 0.82831498895254407, 2.0000000000000000, 5.0000000000000000,
8960 10.000000000000000, -0.19999999999999996 },
8961 { 0.90759090169653933, 2.0000000000000000, 5.0000000000000000,
8962 10.000000000000000, -0.099999999999999978 },
8963 { 1.0000000000000000, 2.0000000000000000, 5.0000000000000000,
8964 10.000000000000000, 0.0000000000000000 },
8965 { 1.1088712278667465, 2.0000000000000000, 5.0000000000000000,
8966 10.000000000000000, 0.10000000000000009 },
8967 { 1.2387445478440853, 2.0000000000000000, 5.0000000000000000,
8968 10.000000000000000, 0.19999999999999996 },
8969 { 1.3959812720437546, 2.0000000000000000, 5.0000000000000000,
8970 10.000000000000000, 0.30000000000000004 },
8971 { 1.5897930661091164, 2.0000000000000000, 5.0000000000000000,
8972 10.000000000000000, 0.39999999999999991 },
8973 { 1.8340789380307454, 2.0000000000000000, 5.0000000000000000,
8974 10.000000000000000, 0.50000000000000000 },
8975 { 2.1509548085970764, 2.0000000000000000, 5.0000000000000000,
8976 10.000000000000000, 0.60000000000000009 },
8977 { 2.5782406951207504, 2.0000000000000000, 5.0000000000000000,
8978 10.000000000000000, 0.69999999999999996 },
8979 { 3.1877847194242737, 2.0000000000000000, 5.0000000000000000,
8980 10.000000000000000, 0.80000000000000004 },
8981 { 4.1421596631676900, 2.0000000000000000, 5.0000000000000000,
8982 10.000000000000000, 0.89999999999999991 },
8985 // Test function for a=2.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
8986 template <typename Tp
>
8989 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
8990 Tp max_abs_diff
= -Tp(1);
8991 Tp max_abs_frac
= -Tp(1);
8992 unsigned int num_datum
= sizeof(data130
)
8993 / sizeof(testcase_hyperg
<double>);
8994 for (unsigned int i
= 0; i
< num_datum
; ++i
)
8996 const Tp f
= std::tr1::hyperg(Tp(data130
[i
].a
), Tp(data130
[i
].b
),
8997 Tp(data130
[i
].c
), Tp(data130
[i
].x
));
8998 const Tp f0
= data130
[i
].f0
;
8999 const Tp diff
= f
- f0
;
9000 if (std::abs(diff
) > max_abs_diff
)
9001 max_abs_diff
= std::abs(diff
);
9002 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9004 const Tp frac
= diff
/ f0
;
9005 if (std::abs(frac
) > max_abs_frac
)
9006 max_abs_frac
= std::abs(frac
);
9009 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9012 // Test data for a=2.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
9013 testcase_hyperg
<double> data131
[] = {
9014 { 0.0016310376661280216, 2.0000000000000000, 10.000000000000000,
9015 2.0000000000000000, -0.90000000000000002 },
9016 { 0.0028007538972582421, 2.0000000000000000, 10.000000000000000,
9017 2.0000000000000000, -0.80000000000000004 },
9018 { 0.0049603324681551939, 2.0000000000000000, 10.000000000000000,
9019 2.0000000000000000, -0.69999999999999996 },
9020 { 0.0090949470177292789, 2.0000000000000000, 10.000000000000000,
9021 2.0000000000000000, -0.59999999999999998 },
9022 { 0.017341529915832606, 2.0000000000000000, 10.000000000000000,
9023 2.0000000000000000, -0.50000000000000000 },
9024 { 0.034571613033607777, 2.0000000000000000, 10.000000000000000,
9025 2.0000000000000000, -0.40000000000000002 },
9026 { 0.072538150286405714, 2.0000000000000000, 10.000000000000000,
9027 2.0000000000000000, -0.30000000000000004 },
9028 { 0.16150558288984579, 2.0000000000000000, 10.000000000000000,
9029 2.0000000000000000, -0.19999999999999996 },
9030 { 0.38554328942953148, 2.0000000000000000, 10.000000000000000,
9031 2.0000000000000000, -0.099999999999999978 },
9032 { 1.0000000000000000, 2.0000000000000000, 10.000000000000000,
9033 2.0000000000000000, 0.0000000000000000 },
9034 { 2.8679719907924444, 2.0000000000000000, 10.000000000000000,
9035 2.0000000000000000, 0.10000000000000009 },
9036 { 9.3132257461547816, 2.0000000000000000, 10.000000000000000,
9037 2.0000000000000000, 0.19999999999999996 },
9038 { 35.401331746414378, 2.0000000000000000, 10.000000000000000,
9039 2.0000000000000000, 0.30000000000000004 },
9040 { 165.38171687920172, 2.0000000000000000, 10.000000000000000,
9041 2.0000000000000000, 0.39999999999999991 },
9042 { 1024.0000000000000, 2.0000000000000000, 10.000000000000000,
9043 2.0000000000000000, 0.50000000000000000 },
9044 { 9536.7431640625200, 2.0000000000000000, 10.000000000000000,
9045 2.0000000000000000, 0.60000000000000009 },
9046 { 169350.87808430271, 2.0000000000000000, 10.000000000000000,
9047 2.0000000000000000, 0.69999999999999996 },
9048 { 9765624.9999999944, 2.0000000000000000, 10.000000000000000,
9049 2.0000000000000000, 0.80000000000000004 },
9050 { 9999999999.9999332, 2.0000000000000000, 10.000000000000000,
9051 2.0000000000000000, 0.89999999999999991 },
9054 // Test function for a=2.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
9055 template <typename Tp
>
9058 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9059 Tp max_abs_diff
= -Tp(1);
9060 Tp max_abs_frac
= -Tp(1);
9061 unsigned int num_datum
= sizeof(data131
)
9062 / sizeof(testcase_hyperg
<double>);
9063 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9065 const Tp f
= std::tr1::hyperg(Tp(data131
[i
].a
), Tp(data131
[i
].b
),
9066 Tp(data131
[i
].c
), Tp(data131
[i
].x
));
9067 const Tp f0
= data131
[i
].f0
;
9068 const Tp diff
= f
- f0
;
9069 if (std::abs(diff
) > max_abs_diff
)
9070 max_abs_diff
= std::abs(diff
);
9071 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9073 const Tp frac
= diff
/ f0
;
9074 if (std::abs(frac
) > max_abs_frac
)
9075 max_abs_frac
= std::abs(frac
);
9078 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9081 // Test data for a=2.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
9082 testcase_hyperg
<double> data132
[] = {
9083 { 0.071191280690193509, 2.0000000000000000, 10.000000000000000,
9084 4.0000000000000000, -0.90000000000000002 },
9085 { 0.085646504654238079, 2.0000000000000000, 10.000000000000000,
9086 4.0000000000000000, -0.80000000000000004 },
9087 { 0.10478215656371073, 2.0000000000000000, 10.000000000000000,
9088 4.0000000000000000, -0.69999999999999996 },
9089 { 0.13074816337653575, 2.0000000000000000, 10.000000000000000,
9090 4.0000000000000000, -0.59999999999999998 },
9091 { 0.16701141666848116, 2.0000000000000000, 10.000000000000000,
9092 4.0000000000000000, -0.50000000000000000 },
9093 { 0.21939323375313971, 2.0000000000000000, 10.000000000000000,
9094 4.0000000000000000, -0.40000000000000002 },
9095 { 0.29813515331786627, 2.0000000000000000, 10.000000000000000,
9096 4.0000000000000000, -0.30000000000000004 },
9097 { 0.42225974638874386, 2.0000000000000000, 10.000000000000000,
9098 4.0000000000000000, -0.19999999999999996 },
9099 { 0.62942145962174867, 2.0000000000000000, 10.000000000000000,
9100 4.0000000000000000, -0.099999999999999978 },
9101 { 1.0000000000000000, 2.0000000000000000, 10.000000000000000,
9102 4.0000000000000000, 0.0000000000000000 },
9103 { 1.7218685262373197, 2.0000000000000000, 10.000000000000000,
9104 4.0000000000000000, 0.10000000000000009 },
9105 { 3.2855760483514689, 2.0000000000000000, 10.000000000000000,
9106 4.0000000000000000, 0.19999999999999996 },
9107 { 7.1616652508907093, 2.0000000000000000, 10.000000000000000,
9108 4.0000000000000000, 0.30000000000000004 },
9109 { 18.612326808485907, 2.0000000000000000, 10.000000000000000,
9110 4.0000000000000000, 0.39999999999999991 },
9111 { 61.476190476190474, 2.0000000000000000, 10.000000000000000,
9112 4.0000000000000000, 0.50000000000000000 },
9113 { 286.27580915178623, 2.0000000000000000, 10.000000000000000,
9114 4.0000000000000000, 0.60000000000000009 },
9115 { 2274.9441142102296, 2.0000000000000000, 10.000000000000000,
9116 4.0000000000000000, 0.69999999999999996 },
9117 { 47229.761904761865, 2.0000000000000000, 10.000000000000000,
9118 4.0000000000000000, 0.80000000000000004 },
9119 { 9961460.7142856438, 2.0000000000000000, 10.000000000000000,
9120 4.0000000000000000, 0.89999999999999991 },
9123 // Test function for a=2.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
9124 template <typename Tp
>
9127 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9128 Tp max_abs_diff
= -Tp(1);
9129 Tp max_abs_frac
= -Tp(1);
9130 unsigned int num_datum
= sizeof(data132
)
9131 / sizeof(testcase_hyperg
<double>);
9132 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9134 const Tp f
= std::tr1::hyperg(Tp(data132
[i
].a
), Tp(data132
[i
].b
),
9135 Tp(data132
[i
].c
), Tp(data132
[i
].x
));
9136 const Tp f0
= data132
[i
].f0
;
9137 const Tp diff
= f
- f0
;
9138 if (std::abs(diff
) > max_abs_diff
)
9139 max_abs_diff
= std::abs(diff
);
9140 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9142 const Tp frac
= diff
/ f0
;
9143 if (std::abs(frac
) > max_abs_frac
)
9144 max_abs_frac
= std::abs(frac
);
9147 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9150 // Test data for a=2.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
9151 testcase_hyperg
<double> data133
[] = {
9152 { 0.14747230019381052, 2.0000000000000000, 10.000000000000000,
9153 6.0000000000000000, -0.90000000000000002 },
9154 { 0.17073600100690603, 2.0000000000000000, 10.000000000000000,
9155 6.0000000000000000, -0.80000000000000004 },
9156 { 0.19982795745135354, 2.0000000000000000, 10.000000000000000,
9157 6.0000000000000000, -0.69999999999999996 },
9158 { 0.23681776864188067, 2.0000000000000000, 10.000000000000000,
9159 6.0000000000000000, -0.59999999999999998 },
9160 { 0.28475624360398022, 2.0000000000000000, 10.000000000000000,
9161 6.0000000000000000, -0.50000000000000000 },
9162 { 0.34827500743063144, 2.0000000000000000, 10.000000000000000,
9163 6.0000000000000000, -0.40000000000000002 },
9164 { 0.43464829159684681, 2.0000000000000000, 10.000000000000000,
9165 6.0000000000000000, -0.30000000000000004 },
9166 { 0.55576053438064787, 2.0000000000000000, 10.000000000000000,
9167 6.0000000000000000, -0.19999999999999996 },
9168 { 0.73195020913445485, 2.0000000000000000, 10.000000000000000,
9169 6.0000000000000000, -0.099999999999999978 },
9170 { 1.0000000000000000, 2.0000000000000000, 10.000000000000000,
9171 6.0000000000000000, 0.0000000000000000 },
9172 { 1.4310223867822929, 2.0000000000000000, 10.000000000000000,
9173 6.0000000000000000, 0.10000000000000009 },
9174 { 2.1742563399057540, 2.0000000000000000, 10.000000000000000,
9175 6.0000000000000000, 0.19999999999999996 },
9176 { 3.5769231236256043, 2.0000000000000000, 10.000000000000000,
9177 6.0000000000000000, 0.30000000000000004 },
9178 { 6.5620441134844363, 2.0000000000000000, 10.000000000000000,
9179 6.0000000000000000, 0.39999999999999991 },
9180 { 14.063492063492063, 2.0000000000000000, 10.000000000000000,
9181 6.0000000000000000, 0.50000000000000000 },
9182 { 38.085937500000036, 2.0000000000000000, 10.000000000000000,
9183 6.0000000000000000, 0.60000000000000009 },
9184 { 150.92973632068282, 2.0000000000000000, 10.000000000000000,
9185 6.0000000000000000, 0.69999999999999996 },
9186 { 1212.3015873015852, 2.0000000000000000, 10.000000000000000,
9187 6.0000000000000000, 0.80000000000000004 },
9188 { 55107.142857142389, 2.0000000000000000, 10.000000000000000,
9189 6.0000000000000000, 0.89999999999999991 },
9192 // Test function for a=2.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
9193 template <typename Tp
>
9196 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9197 Tp max_abs_diff
= -Tp(1);
9198 Tp max_abs_frac
= -Tp(1);
9199 unsigned int num_datum
= sizeof(data133
)
9200 / sizeof(testcase_hyperg
<double>);
9201 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9203 const Tp f
= std::tr1::hyperg(Tp(data133
[i
].a
), Tp(data133
[i
].b
),
9204 Tp(data133
[i
].c
), Tp(data133
[i
].x
));
9205 const Tp f0
= data133
[i
].f0
;
9206 const Tp diff
= f
- f0
;
9207 if (std::abs(diff
) > max_abs_diff
)
9208 max_abs_diff
= std::abs(diff
);
9209 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9211 const Tp frac
= diff
/ f0
;
9212 if (std::abs(frac
) > max_abs_frac
)
9213 max_abs_frac
= std::abs(frac
);
9216 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9219 // Test data for a=2.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
9220 testcase_hyperg
<double> data134
[] = {
9221 { 0.21658059714090588, 2.0000000000000000, 10.000000000000000,
9222 8.0000000000000000, -0.90000000000000002 },
9223 { 0.24513539602702844, 2.0000000000000000, 10.000000000000000,
9224 8.0000000000000000, -0.80000000000000004 },
9225 { 0.27967018274845046, 2.0000000000000000, 10.000000000000000,
9226 8.0000000000000000, -0.69999999999999996 },
9227 { 0.32196044921874994, 2.0000000000000000, 10.000000000000000,
9228 8.0000000000000000, -0.59999999999999998 },
9229 { 0.37448559670781900, 2.0000000000000000, 10.000000000000000,
9230 8.0000000000000000, -0.50000000000000000 },
9231 { 0.44078856032208796, 2.0000000000000000, 10.000000000000000,
9232 8.0000000000000000, -0.40000000000000002 },
9233 { 0.52606701446027815, 2.0000000000000000, 10.000000000000000,
9234 8.0000000000000000, -0.30000000000000004 },
9235 { 0.63818158436214001, 2.0000000000000000, 10.000000000000000,
9236 8.0000000000000000, -0.19999999999999996 },
9237 { 0.78944971882612769, 2.0000000000000000, 10.000000000000000,
9238 8.0000000000000000, -0.099999999999999978 },
9239 { 1.0000000000000000, 2.0000000000000000, 10.000000000000000,
9240 8.0000000000000000, 0.0000000000000000 },
9241 { 1.3044251384443430, 2.0000000000000000, 10.000000000000000,
9242 8.0000000000000000, 0.10000000000000009 },
9243 { 1.7659505208333335, 2.0000000000000000, 10.000000000000000,
9244 8.0000000000000000, 0.19999999999999996 },
9245 { 2.5093710953769270, 2.0000000000000000, 10.000000000000000,
9246 8.0000000000000000, 0.30000000000000004 },
9247 { 3.8065843621399158, 2.0000000000000000, 10.000000000000000,
9248 8.0000000000000000, 0.39999999999999991 },
9249 { 6.3333333333333313, 2.0000000000000000, 10.000000000000000,
9250 8.0000000000000000, 0.50000000000000000 },
9251 { 12.109375000000004, 2.0000000000000000, 10.000000000000000,
9252 8.0000000000000000, 0.60000000000000009 },
9253 { 29.115226337448540, 2.0000000000000000, 10.000000000000000,
9254 8.0000000000000000, 0.69999999999999996 },
9255 { 108.33333333333330, 2.0000000000000000, 10.000000000000000,
9256 8.0000000000000000, 0.80000000000000004 },
9257 { 1224.9999999999923, 2.0000000000000000, 10.000000000000000,
9258 8.0000000000000000, 0.89999999999999991 },
9261 // Test function for a=2.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
9262 template <typename Tp
>
9265 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9266 Tp max_abs_diff
= -Tp(1);
9267 Tp max_abs_frac
= -Tp(1);
9268 unsigned int num_datum
= sizeof(data134
)
9269 / sizeof(testcase_hyperg
<double>);
9270 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9272 const Tp f
= std::tr1::hyperg(Tp(data134
[i
].a
), Tp(data134
[i
].b
),
9273 Tp(data134
[i
].c
), Tp(data134
[i
].x
));
9274 const Tp f0
= data134
[i
].f0
;
9275 const Tp diff
= f
- f0
;
9276 if (std::abs(diff
) > max_abs_diff
)
9277 max_abs_diff
= std::abs(diff
);
9278 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9280 const Tp frac
= diff
/ f0
;
9281 if (std::abs(frac
) > max_abs_frac
)
9282 max_abs_frac
= std::abs(frac
);
9285 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9288 // Test data for a=2.0000000000000000, b=10.000000000000000, c=10.000000000000000.
9289 testcase_hyperg
<double> data135
[] = {
9290 { 0.27700831024930750, 2.0000000000000000, 10.000000000000000,
9291 10.000000000000000, -0.90000000000000002 },
9292 { 0.30864197530864196, 2.0000000000000000, 10.000000000000000,
9293 10.000000000000000, -0.80000000000000004 },
9294 { 0.34602076124567477, 2.0000000000000000, 10.000000000000000,
9295 10.000000000000000, -0.69999999999999996 },
9296 { 0.39062499999999994, 2.0000000000000000, 10.000000000000000,
9297 10.000000000000000, -0.59999999999999998 },
9298 { 0.44444444444444442, 2.0000000000000000, 10.000000000000000,
9299 10.000000000000000, -0.50000000000000000 },
9300 { 0.51020408163265307, 2.0000000000000000, 10.000000000000000,
9301 10.000000000000000, -0.40000000000000002 },
9302 { 0.59171597633136097, 2.0000000000000000, 10.000000000000000,
9303 10.000000000000000, -0.30000000000000004 },
9304 { 0.69444444444444453, 2.0000000000000000, 10.000000000000000,
9305 10.000000000000000, -0.19999999999999996 },
9306 { 0.82644628099173545, 2.0000000000000000, 10.000000000000000,
9307 10.000000000000000, -0.099999999999999978 },
9308 { 1.0000000000000000, 2.0000000000000000, 10.000000000000000,
9309 10.000000000000000, 0.0000000000000000 },
9310 { 1.2345679012345681, 2.0000000000000000, 10.000000000000000,
9311 10.000000000000000, 0.10000000000000009 },
9312 { 1.5624999999999998, 2.0000000000000000, 10.000000000000000,
9313 10.000000000000000, 0.19999999999999996 },
9314 { 2.0408163265306127, 2.0000000000000000, 10.000000000000000,
9315 10.000000000000000, 0.30000000000000004 },
9316 { 2.7777777777777768, 2.0000000000000000, 10.000000000000000,
9317 10.000000000000000, 0.39999999999999991 },
9318 { 4.0000000000000000, 2.0000000000000000, 10.000000000000000,
9319 10.000000000000000, 0.50000000000000000 },
9320 { 6.2500000000000036, 2.0000000000000000, 10.000000000000000,
9321 10.000000000000000, 0.60000000000000009 },
9322 { 11.111111111111109, 2.0000000000000000, 10.000000000000000,
9323 10.000000000000000, 0.69999999999999996 },
9324 { 25.000000000000007, 2.0000000000000000, 10.000000000000000,
9325 10.000000000000000, 0.80000000000000004 },
9326 { 99.999999999999872, 2.0000000000000000, 10.000000000000000,
9327 10.000000000000000, 0.89999999999999991 },
9330 // Test function for a=2.0000000000000000, b=10.000000000000000, c=10.000000000000000.
9331 template <typename Tp
>
9334 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9335 Tp max_abs_diff
= -Tp(1);
9336 Tp max_abs_frac
= -Tp(1);
9337 unsigned int num_datum
= sizeof(data135
)
9338 / sizeof(testcase_hyperg
<double>);
9339 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9341 const Tp f
= std::tr1::hyperg(Tp(data135
[i
].a
), Tp(data135
[i
].b
),
9342 Tp(data135
[i
].c
), Tp(data135
[i
].x
));
9343 const Tp f0
= data135
[i
].f0
;
9344 const Tp diff
= f
- f0
;
9345 if (std::abs(diff
) > max_abs_diff
)
9346 max_abs_diff
= std::abs(diff
);
9347 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9349 const Tp frac
= diff
/ f0
;
9350 if (std::abs(frac
) > max_abs_frac
)
9351 max_abs_frac
= std::abs(frac
);
9354 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9357 // Test data for a=2.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
9358 testcase_hyperg
<double> data136
[] = {
9359 { 2.6602838683283435e-06, 2.0000000000000000, 20.000000000000000,
9360 2.0000000000000000, -0.90000000000000002 },
9361 { 7.8442223930072316e-06, 2.0000000000000000, 20.000000000000000,
9362 2.0000000000000000, -0.80000000000000004 },
9363 { 2.4604898194634598e-05, 2.0000000000000000, 20.000000000000000,
9364 2.0000000000000000, -0.69999999999999996 },
9365 { 8.2718061255302686e-05, 2.0000000000000000, 20.000000000000000,
9366 2.0000000000000000, -0.59999999999999998 },
9367 { 0.00030072865982171723, 2.0000000000000000, 20.000000000000000,
9368 2.0000000000000000, -0.50000000000000000 },
9369 { 0.0011951964277455193, 2.0000000000000000, 20.000000000000000,
9370 2.0000000000000000, -0.40000000000000002 },
9371 { 0.0052617832469731814, 2.0000000000000000, 20.000000000000000,
9372 2.0000000000000000, -0.30000000000000004 },
9373 { 0.026084053304588847, 2.0000000000000000, 20.000000000000000,
9374 2.0000000000000000, -0.19999999999999996 },
9375 { 0.14864362802414346, 2.0000000000000000, 20.000000000000000,
9376 2.0000000000000000, -0.099999999999999978 },
9377 { 1.0000000000000000, 2.0000000000000000, 20.000000000000000,
9378 2.0000000000000000, 0.0000000000000000 },
9379 { 8.2252633399699757, 2.0000000000000000, 20.000000000000000,
9380 2.0000000000000000, 0.10000000000000009 },
9381 { 86.736173798840269, 2.0000000000000000, 20.000000000000000,
9382 2.0000000000000000, 0.19999999999999996 },
9383 { 1253.2542894196865, 2.0000000000000000, 20.000000000000000,
9384 2.0000000000000000, 0.30000000000000004 },
9385 { 27351.112277912434, 2.0000000000000000, 20.000000000000000,
9386 2.0000000000000000, 0.39999999999999991 },
9387 { 1048576.0000000000, 2.0000000000000000, 20.000000000000000,
9388 2.0000000000000000, 0.50000000000000000 },
9389 { 90949470.177293226, 2.0000000000000000, 20.000000000000000,
9390 2.0000000000000000, 0.60000000000000009 },
9391 { 28679719907.924358, 2.0000000000000000, 20.000000000000000,
9392 2.0000000000000000, 0.69999999999999996 },
9393 { 95367431640624.906, 2.0000000000000000, 20.000000000000000,
9394 2.0000000000000000, 0.80000000000000004 },
9395 { 9.9999999999998657e+19, 2.0000000000000000, 20.000000000000000,
9396 2.0000000000000000, 0.89999999999999991 },
9399 // Test function for a=2.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
9400 template <typename Tp
>
9403 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9404 Tp max_abs_diff
= -Tp(1);
9405 Tp max_abs_frac
= -Tp(1);
9406 unsigned int num_datum
= sizeof(data136
)
9407 / sizeof(testcase_hyperg
<double>);
9408 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9410 const Tp f
= std::tr1::hyperg(Tp(data136
[i
].a
), Tp(data136
[i
].b
),
9411 Tp(data136
[i
].c
), Tp(data136
[i
].x
));
9412 const Tp f0
= data136
[i
].f0
;
9413 const Tp diff
= f
- f0
;
9414 if (std::abs(diff
) > max_abs_diff
)
9415 max_abs_diff
= std::abs(diff
);
9416 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9418 const Tp frac
= diff
/ f0
;
9419 if (std::abs(frac
) > max_abs_frac
)
9420 max_abs_frac
= std::abs(frac
);
9423 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
9426 // Test data for a=2.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
9427 testcase_hyperg
<double> data137
[] = {
9428 { 0.018828092583720951, 2.0000000000000000, 20.000000000000000,
9429 4.0000000000000000, -0.90000000000000002 },
9430 { 0.023381944060455316, 2.0000000000000000, 20.000000000000000,
9431 4.0000000000000000, -0.80000000000000004 },
9432 { 0.029789623984280793, 2.0000000000000000, 20.000000000000000,
9433 4.0000000000000000, -0.69999999999999996 },
9434 { 0.039191021482500497, 2.0000000000000000, 20.000000000000000,
9435 4.0000000000000000, -0.59999999999999998 },
9436 { 0.053727813036721514, 2.0000000000000000, 20.000000000000000,
9437 4.0000000000000000, -0.50000000000000000 },
9438 { 0.077762010061669024, 2.0000000000000000, 20.000000000000000,
9439 4.0000000000000000, -0.40000000000000002 },
9440 { 0.12110505620123302, 2.0000000000000000, 20.000000000000000,
9441 4.0000000000000000, -0.30000000000000004 },
9442 { 0.20870149809080590, 2.0000000000000000, 20.000000000000000,
9443 4.0000000000000000, -0.19999999999999996 },
9444 { 0.41429234328785769, 2.0000000000000000, 20.000000000000000,
9445 4.0000000000000000, -0.099999999999999978 },
9446 { 1.0000000000000000, 2.0000000000000000, 20.000000000000000,
9447 4.0000000000000000, 0.0000000000000000 },
9448 { 3.1308087404153113, 2.0000000000000000, 20.000000000000000,
9449 4.0000000000000000, 0.10000000000000009 },
9450 { 13.586180626453050, 2.0000000000000000, 20.000000000000000,
9451 4.0000000000000000, 0.19999999999999996 },
9452 { 87.117304082784415, 2.0000000000000000, 20.000000000000000,
9453 4.0000000000000000, 0.30000000000000004 },
9454 { 889.26474381242826, 2.0000000000000000, 20.000000000000000,
9455 4.0000000000000000, 0.39999999999999991 },
9456 { 16231.913312693494, 2.0000000000000000, 20.000000000000000,
9457 4.0000000000000000, 0.50000000000000000 },
9458 { 653537.51168945129, 2.0000000000000000, 20.000000000000000,
9459 4.0000000000000000, 0.60000000000000009 },
9460 { 87756230.793848589, 2.0000000000000000, 20.000000000000000,
9461 4.0000000000000000, 0.69999999999999996 },
9462 { 101493977171.74945, 2.0000000000000000, 20.000000000000000,
9463 4.0000000000000000, 0.80000000000000004 },
9464 { 21375960679556916., 2.0000000000000000, 20.000000000000000,
9465 4.0000000000000000, 0.89999999999999991 },
9468 // Test function for a=2.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
9469 template <typename Tp
>
9472 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9473 Tp max_abs_diff
= -Tp(1);
9474 Tp max_abs_frac
= -Tp(1);
9475 unsigned int num_datum
= sizeof(data137
)
9476 / sizeof(testcase_hyperg
<double>);
9477 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9479 const Tp f
= std::tr1::hyperg(Tp(data137
[i
].a
), Tp(data137
[i
].b
),
9480 Tp(data137
[i
].c
), Tp(data137
[i
].x
));
9481 const Tp f0
= data137
[i
].f0
;
9482 const Tp diff
= f
- f0
;
9483 if (std::abs(diff
) > max_abs_diff
)
9484 max_abs_diff
= std::abs(diff
);
9485 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9487 const Tp frac
= diff
/ f0
;
9488 if (std::abs(frac
) > max_abs_frac
)
9489 max_abs_frac
= std::abs(frac
);
9492 VERIFY(max_abs_frac
< Tp(1.0000000000000008e-12));
9495 // Test data for a=2.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
9496 testcase_hyperg
<double> data138
[] = {
9497 { 0.049200410661854252, 2.0000000000000000, 20.000000000000000,
9498 6.0000000000000000, -0.90000000000000002 },
9499 { 0.059460876757152226, 2.0000000000000000, 20.000000000000000,
9500 6.0000000000000000, -0.80000000000000004 },
9501 { 0.073244762686653350, 2.0000000000000000, 20.000000000000000,
9502 6.0000000000000000, -0.69999999999999996 },
9503 { 0.092334626017932922, 2.0000000000000000, 20.000000000000000,
9504 6.0000000000000000, -0.59999999999999998 },
9505 { 0.11976760350696837, 2.0000000000000000, 20.000000000000000,
9506 6.0000000000000000, -0.50000000000000000 },
9507 { 0.16102414609169383, 2.0000000000000000, 20.000000000000000,
9508 6.0000000000000000, -0.40000000000000002 },
9509 { 0.22670456785796222, 2.0000000000000000, 20.000000000000000,
9510 6.0000000000000000, -0.30000000000000004 },
9511 { 0.33912903252727361, 2.0000000000000000, 20.000000000000000,
9512 6.0000000000000000, -0.19999999999999996 },
9513 { 0.55049794600858060, 2.0000000000000000, 20.000000000000000,
9514 6.0000000000000000, -0.099999999999999978 },
9515 { 1.0000000000000000, 2.0000000000000000, 20.000000000000000,
9516 6.0000000000000000, 0.0000000000000000 },
9517 { 2.1254722872032232, 2.0000000000000000, 20.000000000000000,
9518 6.0000000000000000, 0.10000000000000009 },
9519 { 5.6261213886736172, 2.0000000000000000, 20.000000000000000,
9520 6.0000000000000000, 0.19999999999999996 },
9521 { 20.137315891130996, 2.0000000000000000, 20.000000000000000,
9522 6.0000000000000000, 0.30000000000000004 },
9523 { 108.04381584643853, 2.0000000000000000, 20.000000000000000,
9524 6.0000000000000000, 0.39999999999999991 },
9525 { 992.41692466460245, 2.0000000000000000, 20.000000000000000,
9526 6.0000000000000000, 0.50000000000000000 },
9527 { 19055.363816004465, 2.0000000000000000, 20.000000000000000,
9528 6.0000000000000000, 0.60000000000000009 },
9529 { 1105471.9504312086, 2.0000000000000000, 20.000000000000000,
9530 6.0000000000000000, 0.69999999999999996 },
9531 { 448521363.90608919, 2.0000000000000000, 20.000000000000000,
9532 6.0000000000000000, 0.80000000000000004 },
9533 { 19078917293639.004, 2.0000000000000000, 20.000000000000000,
9534 6.0000000000000000, 0.89999999999999991 },
9537 // Test function for a=2.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
9538 template <typename Tp
>
9541 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9542 Tp max_abs_diff
= -Tp(1);
9543 Tp max_abs_frac
= -Tp(1);
9544 unsigned int num_datum
= sizeof(data138
)
9545 / sizeof(testcase_hyperg
<double>);
9546 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9548 const Tp f
= std::tr1::hyperg(Tp(data138
[i
].a
), Tp(data138
[i
].b
),
9549 Tp(data138
[i
].c
), Tp(data138
[i
].x
));
9550 const Tp f0
= data138
[i
].f0
;
9551 const Tp diff
= f
- f0
;
9552 if (std::abs(diff
) > max_abs_diff
)
9553 max_abs_diff
= std::abs(diff
);
9554 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9556 const Tp frac
= diff
/ f0
;
9557 if (std::abs(frac
) > max_abs_frac
)
9558 max_abs_frac
= std::abs(frac
);
9561 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
9564 // Test data for a=2.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
9565 testcase_hyperg
<double> data139
[] = {
9566 { 0.083753547015334745, 2.0000000000000000, 20.000000000000000,
9567 8.0000000000000000, -0.90000000000000002 },
9568 { 0.099238444687035701, 2.0000000000000000, 20.000000000000000,
9569 8.0000000000000000, -0.80000000000000004 },
9570 { 0.11938294012867758, 2.0000000000000000, 20.000000000000000,
9571 8.0000000000000000, -0.69999999999999996 },
9572 { 0.14622683905023326, 2.0000000000000000, 20.000000000000000,
9573 8.0000000000000000, -0.59999999999999998 },
9574 { 0.18303556733713025, 2.0000000000000000, 20.000000000000000,
9575 8.0000000000000000, -0.50000000000000000 },
9576 { 0.23527764069382409, 2.0000000000000000, 20.000000000000000,
9577 8.0000000000000000, -0.40000000000000002 },
9578 { 0.31261681740827085, 2.0000000000000000, 20.000000000000000,
9579 8.0000000000000000, -0.30000000000000004 },
9580 { 0.43327581880538862, 2.0000000000000000, 20.000000000000000,
9581 8.0000000000000000, -0.19999999999999996 },
9582 { 0.63445840637296658, 2.0000000000000000, 20.000000000000000,
9583 8.0000000000000000, -0.099999999999999978 },
9584 { 1.0000000000000000, 2.0000000000000000, 20.000000000000000,
9585 8.0000000000000000, 0.0000000000000000 },
9586 { 1.7438842395813297, 2.0000000000000000, 20.000000000000000,
9587 8.0000000000000000, 0.10000000000000009 },
9588 { 3.5070840938209269, 2.0000000000000000, 20.000000000000000,
9589 8.0000000000000000, 0.19999999999999996 },
9590 { 8.6573372006089713, 2.0000000000000000, 20.000000000000000,
9591 8.0000000000000000, 0.30000000000000004 },
9592 { 28.779342118408906, 2.0000000000000000, 20.000000000000000,
9593 8.0000000000000000, 0.39999999999999991 },
9594 { 147.50178613955714, 2.0000000000000000, 20.000000000000000,
9595 8.0000000000000000, 0.50000000000000000 },
9596 { 1427.1686016136398, 2.0000000000000000, 20.000000000000000,
9597 8.0000000000000000, 0.60000000000000009 },
9598 { 36780.643714655642, 2.0000000000000000, 20.000000000000000,
9599 8.0000000000000000, 0.69999999999999996 },
9600 { 5313869.6058585485, 2.0000000000000000, 20.000000000000000,
9601 8.0000000000000000, 0.80000000000000004 },
9602 { 46057280607.381966, 2.0000000000000000, 20.000000000000000,
9603 8.0000000000000000, 0.89999999999999991 },
9606 // Test function for a=2.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
9607 template <typename Tp
>
9610 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9611 Tp max_abs_diff
= -Tp(1);
9612 Tp max_abs_frac
= -Tp(1);
9613 unsigned int num_datum
= sizeof(data139
)
9614 / sizeof(testcase_hyperg
<double>);
9615 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9617 const Tp f
= std::tr1::hyperg(Tp(data139
[i
].a
), Tp(data139
[i
].b
),
9618 Tp(data139
[i
].c
), Tp(data139
[i
].x
));
9619 const Tp f0
= data139
[i
].f0
;
9620 const Tp diff
= f
- f0
;
9621 if (std::abs(diff
) > max_abs_diff
)
9622 max_abs_diff
= std::abs(diff
);
9623 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9625 const Tp frac
= diff
/ f0
;
9626 if (std::abs(frac
) > max_abs_frac
)
9627 max_abs_frac
= std::abs(frac
);
9630 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9633 // Test data for a=2.0000000000000000, b=20.000000000000000, c=10.000000000000000.
9634 testcase_hyperg
<double> data140
[] = {
9635 { 0.11920045035073683, 2.0000000000000000, 20.000000000000000,
9636 10.000000000000000, -0.90000000000000002 },
9637 { 0.13907946814302774, 2.0000000000000000, 20.000000000000000,
9638 10.000000000000000, -0.80000000000000004 },
9639 { 0.16431439792559688, 2.0000000000000000, 20.000000000000000,
9640 10.000000000000000, -0.69999999999999996 },
9641 { 0.19698796016987008, 2.0000000000000000, 20.000000000000000,
9642 10.000000000000000, -0.59999999999999998 },
9643 { 0.24028510928790570, 2.0000000000000000, 20.000000000000000,
9644 10.000000000000000, -0.50000000000000000 },
9645 { 0.29926031296483119, 2.0000000000000000, 20.000000000000000,
9646 10.000000000000000, -0.40000000000000002 },
9647 { 0.38229327814229169, 2.0000000000000000, 20.000000000000000,
9648 10.000000000000000, -0.30000000000000004 },
9649 { 0.50402047283093110, 2.0000000000000000, 20.000000000000000,
9650 10.000000000000000, -0.19999999999999996 },
9651 { 0.69167261179586503, 2.0000000000000000, 20.000000000000000,
9652 10.000000000000000, -0.099999999999999978 },
9653 { 1.0000000000000000, 2.0000000000000000, 20.000000000000000,
9654 10.000000000000000, 0.0000000000000000 },
9655 { 1.5503152253394308, 2.0000000000000000, 20.000000000000000,
9656 10.000000000000000, 0.10000000000000009 },
9657 { 2.6469548193635797, 2.0000000000000000, 20.000000000000000,
9658 10.000000000000000, 0.19999999999999996 },
9659 { 5.1882631330566813, 2.0000000000000000, 20.000000000000000,
9660 10.000000000000000, 0.30000000000000004 },
9661 { 12.476792759124516, 2.0000000000000000, 20.000000000000000,
9662 10.000000000000000, 0.39999999999999991 },
9663 { 41.026391565091259, 2.0000000000000000, 20.000000000000000,
9664 10.000000000000000, 0.50000000000000000 },
9665 { 220.92584715988204, 2.0000000000000000, 20.000000000000000,
9666 10.000000000000000, 0.60000000000000009 },
9667 { 2677.0834450236207, 2.0000000000000000, 20.000000000000000,
9668 10.000000000000000, 0.69999999999999996 },
9669 { 141774.31260689779, 2.0000000000000000, 20.000000000000000,
9670 10.000000000000000, 0.80000000000000004 },
9671 { 254267148.83196995, 2.0000000000000000, 20.000000000000000,
9672 10.000000000000000, 0.89999999999999991 },
9675 // Test function for a=2.0000000000000000, b=20.000000000000000, c=10.000000000000000.
9676 template <typename Tp
>
9679 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9680 Tp max_abs_diff
= -Tp(1);
9681 Tp max_abs_frac
= -Tp(1);
9682 unsigned int num_datum
= sizeof(data140
)
9683 / sizeof(testcase_hyperg
<double>);
9684 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9686 const Tp f
= std::tr1::hyperg(Tp(data140
[i
].a
), Tp(data140
[i
].b
),
9687 Tp(data140
[i
].c
), Tp(data140
[i
].x
));
9688 const Tp f0
= data140
[i
].f0
;
9689 const Tp diff
= f
- f0
;
9690 if (std::abs(diff
) > max_abs_diff
)
9691 max_abs_diff
= std::abs(diff
);
9692 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9694 const Tp frac
= diff
/ f0
;
9695 if (std::abs(frac
) > max_abs_frac
)
9696 max_abs_frac
= std::abs(frac
);
9699 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9702 // Test data for a=5.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
9703 testcase_hyperg
<double> data141
[] = {
9704 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9705 2.0000000000000000, -0.90000000000000002 },
9706 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9707 2.0000000000000000, -0.80000000000000004 },
9708 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9709 2.0000000000000000, -0.69999999999999996 },
9710 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9711 2.0000000000000000, -0.59999999999999998 },
9712 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9713 2.0000000000000000, -0.50000000000000000 },
9714 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9715 2.0000000000000000, -0.40000000000000002 },
9716 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9717 2.0000000000000000, -0.30000000000000004 },
9718 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9719 2.0000000000000000, -0.19999999999999996 },
9720 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9721 2.0000000000000000, -0.099999999999999978 },
9722 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9723 2.0000000000000000, 0.0000000000000000 },
9724 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9725 2.0000000000000000, 0.10000000000000009 },
9726 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9727 2.0000000000000000, 0.19999999999999996 },
9728 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9729 2.0000000000000000, 0.30000000000000004 },
9730 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9731 2.0000000000000000, 0.39999999999999991 },
9732 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9733 2.0000000000000000, 0.50000000000000000 },
9734 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9735 2.0000000000000000, 0.60000000000000009 },
9736 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9737 2.0000000000000000, 0.69999999999999996 },
9738 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9739 2.0000000000000000, 0.80000000000000004 },
9740 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9741 2.0000000000000000, 0.89999999999999991 },
9744 // Test function for a=5.0000000000000000, b=0.0000000000000000, c=2.0000000000000000.
9745 template <typename Tp
>
9748 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9749 Tp max_abs_diff
= -Tp(1);
9750 Tp max_abs_frac
= -Tp(1);
9751 unsigned int num_datum
= sizeof(data141
)
9752 / sizeof(testcase_hyperg
<double>);
9753 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9755 const Tp f
= std::tr1::hyperg(Tp(data141
[i
].a
), Tp(data141
[i
].b
),
9756 Tp(data141
[i
].c
), Tp(data141
[i
].x
));
9757 const Tp f0
= data141
[i
].f0
;
9758 const Tp diff
= f
- f0
;
9759 if (std::abs(diff
) > max_abs_diff
)
9760 max_abs_diff
= std::abs(diff
);
9761 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9763 const Tp frac
= diff
/ f0
;
9764 if (std::abs(frac
) > max_abs_frac
)
9765 max_abs_frac
= std::abs(frac
);
9768 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9771 // Test data for a=5.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
9772 testcase_hyperg
<double> data142
[] = {
9773 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9774 4.0000000000000000, -0.90000000000000002 },
9775 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9776 4.0000000000000000, -0.80000000000000004 },
9777 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9778 4.0000000000000000, -0.69999999999999996 },
9779 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9780 4.0000000000000000, -0.59999999999999998 },
9781 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9782 4.0000000000000000, -0.50000000000000000 },
9783 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9784 4.0000000000000000, -0.40000000000000002 },
9785 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9786 4.0000000000000000, -0.30000000000000004 },
9787 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9788 4.0000000000000000, -0.19999999999999996 },
9789 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9790 4.0000000000000000, -0.099999999999999978 },
9791 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9792 4.0000000000000000, 0.0000000000000000 },
9793 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9794 4.0000000000000000, 0.10000000000000009 },
9795 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9796 4.0000000000000000, 0.19999999999999996 },
9797 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9798 4.0000000000000000, 0.30000000000000004 },
9799 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9800 4.0000000000000000, 0.39999999999999991 },
9801 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9802 4.0000000000000000, 0.50000000000000000 },
9803 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9804 4.0000000000000000, 0.60000000000000009 },
9805 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9806 4.0000000000000000, 0.69999999999999996 },
9807 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9808 4.0000000000000000, 0.80000000000000004 },
9809 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9810 4.0000000000000000, 0.89999999999999991 },
9813 // Test function for a=5.0000000000000000, b=0.0000000000000000, c=4.0000000000000000.
9814 template <typename Tp
>
9817 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9818 Tp max_abs_diff
= -Tp(1);
9819 Tp max_abs_frac
= -Tp(1);
9820 unsigned int num_datum
= sizeof(data142
)
9821 / sizeof(testcase_hyperg
<double>);
9822 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9824 const Tp f
= std::tr1::hyperg(Tp(data142
[i
].a
), Tp(data142
[i
].b
),
9825 Tp(data142
[i
].c
), Tp(data142
[i
].x
));
9826 const Tp f0
= data142
[i
].f0
;
9827 const Tp diff
= f
- f0
;
9828 if (std::abs(diff
) > max_abs_diff
)
9829 max_abs_diff
= std::abs(diff
);
9830 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9832 const Tp frac
= diff
/ f0
;
9833 if (std::abs(frac
) > max_abs_frac
)
9834 max_abs_frac
= std::abs(frac
);
9837 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9840 // Test data for a=5.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
9841 testcase_hyperg
<double> data143
[] = {
9842 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9843 6.0000000000000000, -0.90000000000000002 },
9844 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9845 6.0000000000000000, -0.80000000000000004 },
9846 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9847 6.0000000000000000, -0.69999999999999996 },
9848 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9849 6.0000000000000000, -0.59999999999999998 },
9850 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9851 6.0000000000000000, -0.50000000000000000 },
9852 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9853 6.0000000000000000, -0.40000000000000002 },
9854 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9855 6.0000000000000000, -0.30000000000000004 },
9856 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9857 6.0000000000000000, -0.19999999999999996 },
9858 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9859 6.0000000000000000, -0.099999999999999978 },
9860 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9861 6.0000000000000000, 0.0000000000000000 },
9862 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9863 6.0000000000000000, 0.10000000000000009 },
9864 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9865 6.0000000000000000, 0.19999999999999996 },
9866 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9867 6.0000000000000000, 0.30000000000000004 },
9868 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9869 6.0000000000000000, 0.39999999999999991 },
9870 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9871 6.0000000000000000, 0.50000000000000000 },
9872 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9873 6.0000000000000000, 0.60000000000000009 },
9874 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9875 6.0000000000000000, 0.69999999999999996 },
9876 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9877 6.0000000000000000, 0.80000000000000004 },
9878 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9879 6.0000000000000000, 0.89999999999999991 },
9882 // Test function for a=5.0000000000000000, b=0.0000000000000000, c=6.0000000000000000.
9883 template <typename Tp
>
9886 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9887 Tp max_abs_diff
= -Tp(1);
9888 Tp max_abs_frac
= -Tp(1);
9889 unsigned int num_datum
= sizeof(data143
)
9890 / sizeof(testcase_hyperg
<double>);
9891 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9893 const Tp f
= std::tr1::hyperg(Tp(data143
[i
].a
), Tp(data143
[i
].b
),
9894 Tp(data143
[i
].c
), Tp(data143
[i
].x
));
9895 const Tp f0
= data143
[i
].f0
;
9896 const Tp diff
= f
- f0
;
9897 if (std::abs(diff
) > max_abs_diff
)
9898 max_abs_diff
= std::abs(diff
);
9899 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9901 const Tp frac
= diff
/ f0
;
9902 if (std::abs(frac
) > max_abs_frac
)
9903 max_abs_frac
= std::abs(frac
);
9906 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9909 // Test data for a=5.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
9910 testcase_hyperg
<double> data144
[] = {
9911 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9912 8.0000000000000000, -0.90000000000000002 },
9913 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9914 8.0000000000000000, -0.80000000000000004 },
9915 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9916 8.0000000000000000, -0.69999999999999996 },
9917 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9918 8.0000000000000000, -0.59999999999999998 },
9919 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9920 8.0000000000000000, -0.50000000000000000 },
9921 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9922 8.0000000000000000, -0.40000000000000002 },
9923 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9924 8.0000000000000000, -0.30000000000000004 },
9925 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9926 8.0000000000000000, -0.19999999999999996 },
9927 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9928 8.0000000000000000, -0.099999999999999978 },
9929 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9930 8.0000000000000000, 0.0000000000000000 },
9931 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9932 8.0000000000000000, 0.10000000000000009 },
9933 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9934 8.0000000000000000, 0.19999999999999996 },
9935 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9936 8.0000000000000000, 0.30000000000000004 },
9937 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9938 8.0000000000000000, 0.39999999999999991 },
9939 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9940 8.0000000000000000, 0.50000000000000000 },
9941 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9942 8.0000000000000000, 0.60000000000000009 },
9943 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9944 8.0000000000000000, 0.69999999999999996 },
9945 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9946 8.0000000000000000, 0.80000000000000004 },
9947 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9948 8.0000000000000000, 0.89999999999999991 },
9951 // Test function for a=5.0000000000000000, b=0.0000000000000000, c=8.0000000000000000.
9952 template <typename Tp
>
9955 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
9956 Tp max_abs_diff
= -Tp(1);
9957 Tp max_abs_frac
= -Tp(1);
9958 unsigned int num_datum
= sizeof(data144
)
9959 / sizeof(testcase_hyperg
<double>);
9960 for (unsigned int i
= 0; i
< num_datum
; ++i
)
9962 const Tp f
= std::tr1::hyperg(Tp(data144
[i
].a
), Tp(data144
[i
].b
),
9963 Tp(data144
[i
].c
), Tp(data144
[i
].x
));
9964 const Tp f0
= data144
[i
].f0
;
9965 const Tp diff
= f
- f0
;
9966 if (std::abs(diff
) > max_abs_diff
)
9967 max_abs_diff
= std::abs(diff
);
9968 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
9970 const Tp frac
= diff
/ f0
;
9971 if (std::abs(frac
) > max_abs_frac
)
9972 max_abs_frac
= std::abs(frac
);
9975 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
9978 // Test data for a=5.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
9979 testcase_hyperg
<double> data145
[] = {
9980 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9981 10.000000000000000, -0.90000000000000002 },
9982 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9983 10.000000000000000, -0.80000000000000004 },
9984 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9985 10.000000000000000, -0.69999999999999996 },
9986 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9987 10.000000000000000, -0.59999999999999998 },
9988 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9989 10.000000000000000, -0.50000000000000000 },
9990 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9991 10.000000000000000, -0.40000000000000002 },
9992 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9993 10.000000000000000, -0.30000000000000004 },
9994 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9995 10.000000000000000, -0.19999999999999996 },
9996 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9997 10.000000000000000, -0.099999999999999978 },
9998 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
9999 10.000000000000000, 0.0000000000000000 },
10000 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10001 10.000000000000000, 0.10000000000000009 },
10002 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10003 10.000000000000000, 0.19999999999999996 },
10004 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10005 10.000000000000000, 0.30000000000000004 },
10006 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10007 10.000000000000000, 0.39999999999999991 },
10008 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10009 10.000000000000000, 0.50000000000000000 },
10010 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10011 10.000000000000000, 0.60000000000000009 },
10012 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10013 10.000000000000000, 0.69999999999999996 },
10014 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10015 10.000000000000000, 0.80000000000000004 },
10016 { 1.0000000000000000, 5.0000000000000000, 0.0000000000000000,
10017 10.000000000000000, 0.89999999999999991 },
10020 // Test function for a=5.0000000000000000, b=0.0000000000000000, c=10.000000000000000.
10021 template <typename Tp
>
10024 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10025 Tp max_abs_diff
= -Tp(1);
10026 Tp max_abs_frac
= -Tp(1);
10027 unsigned int num_datum
= sizeof(data145
)
10028 / sizeof(testcase_hyperg
<double>);
10029 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10031 const Tp f
= std::tr1::hyperg(Tp(data145
[i
].a
), Tp(data145
[i
].b
),
10032 Tp(data145
[i
].c
), Tp(data145
[i
].x
));
10033 const Tp f0
= data145
[i
].f0
;
10034 const Tp diff
= f
- f0
;
10035 if (std::abs(diff
) > max_abs_diff
)
10036 max_abs_diff
= std::abs(diff
);
10037 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10039 const Tp frac
= diff
/ f0
;
10040 if (std::abs(frac
) > max_abs_frac
)
10041 max_abs_frac
= std::abs(frac
);
10044 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10047 // Test data for a=5.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
10048 testcase_hyperg
<double> data146
[] = {
10049 { 0.52275983209457511, 5.0000000000000000, 0.50000000000000000,
10050 2.0000000000000000, -0.90000000000000002 },
10051 { 0.54700336898142965, 5.0000000000000000, 0.50000000000000000,
10052 2.0000000000000000, -0.80000000000000004 },
10053 { 0.57468955512601971, 5.0000000000000000, 0.50000000000000000,
10054 2.0000000000000000, -0.69999999999999996 },
10055 { 0.60665490543315015, 5.0000000000000000, 0.50000000000000000,
10056 2.0000000000000000, -0.59999999999999998 },
10057 { 0.64403057859056123, 5.0000000000000000, 0.50000000000000000,
10058 2.0000000000000000, -0.50000000000000000 },
10059 { 0.68838183648623719, 5.0000000000000000, 0.50000000000000000,
10060 2.0000000000000000, -0.40000000000000002 },
10061 { 0.74193265039311085, 5.0000000000000000, 0.50000000000000000,
10062 2.0000000000000000, -0.30000000000000004 },
10063 { 0.80794095908995300, 5.0000000000000000, 0.50000000000000000,
10064 2.0000000000000000, -0.19999999999999996 },
10065 { 0.89135275749639320, 5.0000000000000000, 0.50000000000000000,
10066 2.0000000000000000, -0.099999999999999978 },
10067 { 1.0000000000000000, 5.0000000000000000, 0.50000000000000000,
10068 2.0000000000000000, 0.0000000000000000 },
10069 { 1.1469266219310688, 5.0000000000000000, 0.50000000000000000,
10070 2.0000000000000000, 0.10000000000000009 },
10071 { 1.3552340708357489, 5.0000000000000000, 0.50000000000000000,
10072 2.0000000000000000, 0.19999999999999996 },
10073 { 1.6690840478838305, 5.0000000000000000, 0.50000000000000000,
10074 2.0000000000000000, 0.30000000000000004 },
10075 { 2.1815415453174483, 5.0000000000000000, 0.50000000000000000,
10076 2.0000000000000000, 0.39999999999999991 },
10077 { 3.1156892546032235, 5.0000000000000000, 0.50000000000000000,
10078 2.0000000000000000, 0.50000000000000000 },
10079 { 5.1109077417760416, 5.0000000000000000, 0.50000000000000000,
10080 2.0000000000000000, 0.60000000000000009 },
10081 { 10.560352936466296, 5.0000000000000000, 0.50000000000000000,
10082 2.0000000000000000, 0.69999999999999996 },
10083 { 33.541019662496815, 5.0000000000000000, 0.50000000000000000,
10084 2.0000000000000000, 0.80000000000000004 },
10085 { 300.66343065819501, 5.0000000000000000, 0.50000000000000000,
10086 2.0000000000000000, 0.89999999999999991 },
10089 // Test function for a=5.0000000000000000, b=0.50000000000000000, c=2.0000000000000000.
10090 template <typename Tp
>
10093 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10094 Tp max_abs_diff
= -Tp(1);
10095 Tp max_abs_frac
= -Tp(1);
10096 unsigned int num_datum
= sizeof(data146
)
10097 / sizeof(testcase_hyperg
<double>);
10098 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10100 const Tp f
= std::tr1::hyperg(Tp(data146
[i
].a
), Tp(data146
[i
].b
),
10101 Tp(data146
[i
].c
), Tp(data146
[i
].x
));
10102 const Tp f0
= data146
[i
].f0
;
10103 const Tp diff
= f
- f0
;
10104 if (std::abs(diff
) > max_abs_diff
)
10105 max_abs_diff
= std::abs(diff
);
10106 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10108 const Tp frac
= diff
/ f0
;
10109 if (std::abs(frac
) > max_abs_frac
)
10110 max_abs_frac
= std::abs(frac
);
10113 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10116 // Test data for a=5.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
10117 testcase_hyperg
<double> data147
[] = {
10118 { 0.68252041951139264, 5.0000000000000000, 0.50000000000000000,
10119 4.0000000000000000, -0.90000000000000002 },
10120 { 0.70394732624993395, 5.0000000000000000, 0.50000000000000000,
10121 4.0000000000000000, -0.80000000000000004 },
10122 { 0.72748884971552041, 5.0000000000000000, 0.50000000000000000,
10123 4.0000000000000000, -0.69999999999999996 },
10124 { 0.75351147371199689, 5.0000000000000000, 0.50000000000000000,
10125 4.0000000000000000, -0.59999999999999998 },
10126 { 0.78247589005573748, 5.0000000000000000, 0.50000000000000000,
10127 4.0000000000000000, -0.50000000000000000 },
10128 { 0.81497017420249818, 5.0000000000000000, 0.50000000000000000,
10129 4.0000000000000000, -0.40000000000000002 },
10130 { 0.85175826875009564, 5.0000000000000000, 0.50000000000000000,
10131 4.0000000000000000, -0.30000000000000004 },
10132 { 0.89385278481745867, 5.0000000000000000, 0.50000000000000000,
10133 4.0000000000000000, -0.19999999999999996 },
10134 { 0.94262778709507411, 5.0000000000000000, 0.50000000000000000,
10135 4.0000000000000000, -0.099999999999999978 },
10136 { 1.0000000000000000, 5.0000000000000000, 0.50000000000000000,
10137 4.0000000000000000, 0.0000000000000000 },
10138 { 1.0687327277420910, 5.0000000000000000, 0.50000000000000000,
10139 4.0000000000000000, 0.10000000000000009 },
10140 { 1.1529725508983291, 5.0000000000000000, 0.50000000000000000,
10141 4.0000000000000000, 0.19999999999999996 },
10142 { 1.2592587134058799, 5.0000000000000000, 0.50000000000000000,
10143 4.0000000000000000, 0.30000000000000004 },
10144 { 1.3985773194637892, 5.0000000000000000, 0.50000000000000000,
10145 4.0000000000000000, 0.39999999999999991 },
10146 { 1.5909902576697317, 5.0000000000000000, 0.50000000000000000,
10147 4.0000000000000000, 0.50000000000000000 },
10148 { 1.8776023607249752, 5.0000000000000000, 0.50000000000000000,
10149 4.0000000000000000, 0.60000000000000009 },
10150 { 2.3582499003694646, 5.0000000000000000, 0.50000000000000000,
10151 4.0000000000000000, 0.69999999999999996 },
10152 { 3.3541019662496838, 5.0000000000000000, 0.50000000000000000,
10153 4.0000000000000000, 0.80000000000000004 },
10154 { 6.7198400278577859, 5.0000000000000000, 0.50000000000000000,
10155 4.0000000000000000, 0.89999999999999991 },
10158 // Test function for a=5.0000000000000000, b=0.50000000000000000, c=4.0000000000000000.
10159 template <typename Tp
>
10162 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10163 Tp max_abs_diff
= -Tp(1);
10164 Tp max_abs_frac
= -Tp(1);
10165 unsigned int num_datum
= sizeof(data147
)
10166 / sizeof(testcase_hyperg
<double>);
10167 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10169 const Tp f
= std::tr1::hyperg(Tp(data147
[i
].a
), Tp(data147
[i
].b
),
10170 Tp(data147
[i
].c
), Tp(data147
[i
].x
));
10171 const Tp f0
= data147
[i
].f0
;
10172 const Tp diff
= f
- f0
;
10173 if (std::abs(diff
) > max_abs_diff
)
10174 max_abs_diff
= std::abs(diff
);
10175 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10177 const Tp frac
= diff
/ f0
;
10178 if (std::abs(frac
) > max_abs_frac
)
10179 max_abs_frac
= std::abs(frac
);
10182 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10185 // Test data for a=5.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
10186 testcase_hyperg
<double> data148
[] = {
10187 { 0.75755211927082589, 5.0000000000000000, 0.50000000000000000,
10188 6.0000000000000000, -0.90000000000000002 },
10189 { 0.77603550233010998, 5.0000000000000000, 0.50000000000000000,
10190 6.0000000000000000, -0.80000000000000004 },
10191 { 0.79596241913438492, 5.0000000000000000, 0.50000000000000000,
10192 6.0000000000000000, -0.69999999999999996 },
10193 { 0.81753360792105201, 5.0000000000000000, 0.50000000000000000,
10194 6.0000000000000000, -0.59999999999999998 },
10195 { 0.84099165409805521, 5.0000000000000000, 0.50000000000000000,
10196 6.0000000000000000, -0.50000000000000000 },
10197 { 0.86663303852180873, 5.0000000000000000, 0.50000000000000000,
10198 6.0000000000000000, -0.40000000000000002 },
10199 { 0.89482475828629970, 5.0000000000000000, 0.50000000000000000,
10200 6.0000000000000000, -0.30000000000000004 },
10201 { 0.92602774279590350, 5.0000000000000000, 0.50000000000000000,
10202 6.0000000000000000, -0.19999999999999996 },
10203 { 0.96083064727087386, 5.0000000000000000, 0.50000000000000000,
10204 6.0000000000000000, -0.099999999999999978 },
10205 { 1.0000000000000000, 5.0000000000000000, 0.50000000000000000,
10206 6.0000000000000000, 0.0000000000000000 },
10207 { 1.0445570841313008, 5.0000000000000000, 0.50000000000000000,
10208 6.0000000000000000, 0.10000000000000009 },
10209 { 1.0959004638926031, 5.0000000000000000, 0.50000000000000000,
10210 6.0000000000000000, 0.19999999999999996 },
10211 { 1.1560106261370562, 5.0000000000000000, 0.50000000000000000,
10212 6.0000000000000000, 0.30000000000000004 },
10213 { 1.2278121770678145, 5.0000000000000000, 0.50000000000000000,
10214 6.0000000000000000, 0.39999999999999991 },
10215 { 1.3158640214709998, 5.0000000000000000, 0.50000000000000000,
10216 6.0000000000000000, 0.50000000000000000 },
10217 { 1.4278095344155000, 5.0000000000000000, 0.50000000000000000,
10218 6.0000000000000000, 0.60000000000000009 },
10219 { 1.5778700502946612, 5.0000000000000000, 0.50000000000000000,
10220 6.0000000000000000, 0.69999999999999996 },
10221 { 1.7972173289196469, 5.0000000000000000, 0.50000000000000000,
10222 6.0000000000000000, 0.80000000000000004 },
10223 { 2.1789970569269732, 5.0000000000000000, 0.50000000000000000,
10224 6.0000000000000000, 0.89999999999999991 },
10227 // Test function for a=5.0000000000000000, b=0.50000000000000000, c=6.0000000000000000.
10228 template <typename Tp
>
10231 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10232 Tp max_abs_diff
= -Tp(1);
10233 Tp max_abs_frac
= -Tp(1);
10234 unsigned int num_datum
= sizeof(data148
)
10235 / sizeof(testcase_hyperg
<double>);
10236 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10238 const Tp f
= std::tr1::hyperg(Tp(data148
[i
].a
), Tp(data148
[i
].b
),
10239 Tp(data148
[i
].c
), Tp(data148
[i
].x
));
10240 const Tp f0
= data148
[i
].f0
;
10241 const Tp diff
= f
- f0
;
10242 if (std::abs(diff
) > max_abs_diff
)
10243 max_abs_diff
= std::abs(diff
);
10244 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10246 const Tp frac
= diff
/ f0
;
10247 if (std::abs(frac
) > max_abs_frac
)
10248 max_abs_frac
= std::abs(frac
);
10251 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10254 // Test data for a=5.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
10255 testcase_hyperg
<double> data149
[] = {
10256 { 0.80270093579329471, 5.0000000000000000, 0.50000000000000000,
10257 8.0000000000000000, -0.90000000000000002 },
10258 { 0.81884974572462788, 5.0000000000000000, 0.50000000000000000,
10259 8.0000000000000000, -0.80000000000000004 },
10260 { 0.83605266330015271, 5.0000000000000000, 0.50000000000000000,
10261 8.0000000000000000, -0.69999999999999996 },
10262 { 0.85443340762795972, 5.0000000000000000, 0.50000000000000000,
10263 8.0000000000000000, -0.59999999999999998 },
10264 { 0.87413762182790655, 5.0000000000000000, 0.50000000000000000,
10265 8.0000000000000000, -0.50000000000000000 },
10266 { 0.89533826626907331, 5.0000000000000000, 0.50000000000000000,
10267 8.0000000000000000, -0.40000000000000002 },
10268 { 0.91824276674115268, 5.0000000000000000, 0.50000000000000000,
10269 8.0000000000000000, -0.30000000000000004 },
10270 { 0.94310265050720576, 5.0000000000000000, 0.50000000000000000,
10271 8.0000000000000000, -0.19999999999999996 },
10272 { 0.97022678857609712, 5.0000000000000000, 0.50000000000000000,
10273 8.0000000000000000, -0.099999999999999978 },
10274 { 1.0000000000000000, 5.0000000000000000, 0.50000000000000000,
10275 8.0000000000000000, 0.0000000000000000 },
10276 { 1.0329098673199812, 5.0000000000000000, 0.50000000000000000,
10277 8.0000000000000000, 0.10000000000000009 },
10278 { 1.0695865684573389, 5.0000000000000000, 0.50000000000000000,
10279 8.0000000000000000, 0.19999999999999996 },
10280 { 1.1108642103944570, 5.0000000000000000, 0.50000000000000000,
10281 8.0000000000000000, 0.30000000000000004 },
10282 { 1.1578795055970506, 5.0000000000000000, 0.50000000000000000,
10283 8.0000000000000000, 0.39999999999999991 },
10284 { 1.2122394794169442, 5.0000000000000000, 0.50000000000000000,
10285 8.0000000000000000, 0.50000000000000000 },
10286 { 1.2763274721556934, 5.0000000000000000, 0.50000000000000000,
10287 8.0000000000000000, 0.60000000000000009 },
10288 { 1.3539179650251021, 5.0000000000000000, 0.50000000000000000,
10289 8.0000000000000000, 0.69999999999999996 },
10290 { 1.4515986118197148, 5.0000000000000000, 0.50000000000000000,
10291 8.0000000000000000, 0.80000000000000004 },
10292 { 1.5829284571614219, 5.0000000000000000, 0.50000000000000000,
10293 8.0000000000000000, 0.89999999999999991 },
10296 // Test function for a=5.0000000000000000, b=0.50000000000000000, c=8.0000000000000000.
10297 template <typename Tp
>
10300 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10301 Tp max_abs_diff
= -Tp(1);
10302 Tp max_abs_frac
= -Tp(1);
10303 unsigned int num_datum
= sizeof(data149
)
10304 / sizeof(testcase_hyperg
<double>);
10305 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10307 const Tp f
= std::tr1::hyperg(Tp(data149
[i
].a
), Tp(data149
[i
].b
),
10308 Tp(data149
[i
].c
), Tp(data149
[i
].x
));
10309 const Tp f0
= data149
[i
].f0
;
10310 const Tp diff
= f
- f0
;
10311 if (std::abs(diff
) > max_abs_diff
)
10312 max_abs_diff
= std::abs(diff
);
10313 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10315 const Tp frac
= diff
/ f0
;
10316 if (std::abs(frac
) > max_abs_frac
)
10317 max_abs_frac
= std::abs(frac
);
10320 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10323 // Test data for a=5.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
10324 testcase_hyperg
<double> data150
[] = {
10325 { 0.83322694172301959, 5.0000000000000000, 0.50000000000000000,
10326 10.000000000000000, -0.90000000000000002 },
10327 { 0.84753931604765664, 5.0000000000000000, 0.50000000000000000,
10328 10.000000000000000, -0.80000000000000004 },
10329 { 0.86265784532195022, 5.0000000000000000, 0.50000000000000000,
10330 10.000000000000000, -0.69999999999999996 },
10331 { 0.87866479300707079, 5.0000000000000000, 0.50000000000000000,
10332 10.000000000000000, -0.59999999999999998 },
10333 { 0.89565516540263501, 5.0000000000000000, 0.50000000000000000,
10334 10.000000000000000, -0.50000000000000000 },
10335 { 0.91373946207610557, 5.0000000000000000, 0.50000000000000000,
10336 10.000000000000000, -0.40000000000000002 },
10337 { 0.93304721345881891, 5.0000000000000000, 0.50000000000000000,
10338 10.000000000000000, -0.30000000000000004 },
10339 { 0.95373159512905148, 5.0000000000000000, 0.50000000000000000,
10340 10.000000000000000, -0.19999999999999996 },
10341 { 0.97597554238828121, 5.0000000000000000, 0.50000000000000000,
10342 10.000000000000000, -0.099999999999999978 },
10343 { 1.0000000000000000, 5.0000000000000000, 0.50000000000000000,
10344 10.000000000000000, 0.0000000000000000 },
10345 { 1.0260752851887982, 5.0000000000000000, 0.50000000000000000,
10346 10.000000000000000, 0.10000000000000009 },
10347 { 1.0545371197996178, 5.0000000000000000, 0.50000000000000000,
10348 10.000000000000000, 0.19999999999999996 },
10349 { 1.0858099017045830, 5.0000000000000000, 0.50000000000000000,
10350 10.000000000000000, 0.30000000000000004 },
10351 { 1.1204416568688709, 5.0000000000000000, 0.50000000000000000,
10352 10.000000000000000, 0.39999999999999991 },
10353 { 1.1591587835964847, 5.0000000000000000, 0.50000000000000000,
10354 10.000000000000000, 0.50000000000000000 },
10355 { 1.2029564720303347, 5.0000000000000000, 0.50000000000000000,
10356 10.000000000000000, 0.60000000000000009 },
10357 { 1.2532588722007874, 5.0000000000000000, 0.50000000000000000,
10358 10.000000000000000, 0.69999999999999996 },
10359 { 1.3122319926925459, 5.0000000000000000, 0.50000000000000000,
10360 10.000000000000000, 0.80000000000000004 },
10361 { 1.3834948587364100, 5.0000000000000000, 0.50000000000000000,
10362 10.000000000000000, 0.89999999999999991 },
10365 // Test function for a=5.0000000000000000, b=0.50000000000000000, c=10.000000000000000.
10366 template <typename Tp
>
10369 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10370 Tp max_abs_diff
= -Tp(1);
10371 Tp max_abs_frac
= -Tp(1);
10372 unsigned int num_datum
= sizeof(data150
)
10373 / sizeof(testcase_hyperg
<double>);
10374 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10376 const Tp f
= std::tr1::hyperg(Tp(data150
[i
].a
), Tp(data150
[i
].b
),
10377 Tp(data150
[i
].c
), Tp(data150
[i
].x
));
10378 const Tp f0
= data150
[i
].f0
;
10379 const Tp diff
= f
- f0
;
10380 if (std::abs(diff
) > max_abs_diff
)
10381 max_abs_diff
= std::abs(diff
);
10382 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10384 const Tp frac
= diff
/ f0
;
10385 if (std::abs(frac
) > max_abs_frac
)
10386 max_abs_frac
= std::abs(frac
);
10389 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10392 // Test data for a=5.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
10393 testcase_hyperg
<double> data151
[] = {
10394 { 0.25646288779245091, 5.0000000000000000, 1.0000000000000000,
10395 2.0000000000000000, -0.90000000000000002 },
10396 { 0.28273129096174382, 5.0000000000000000, 1.0000000000000000,
10397 2.0000000000000000, -0.80000000000000004 },
10398 { 0.31438201170962976, 5.0000000000000000, 1.0000000000000000,
10399 2.0000000000000000, -0.69999999999999996 },
10400 { 0.35308837890625017, 5.0000000000000000, 1.0000000000000000,
10401 2.0000000000000000, -0.59999999999999998 },
10402 { 0.40123456790123463, 5.0000000000000000, 1.0000000000000000,
10403 2.0000000000000000, -0.50000000000000000 },
10404 { 0.46230737192836319, 5.0000000000000000, 1.0000000000000000,
10405 2.0000000000000000, -0.40000000000000002 },
10406 { 0.54156016946185359, 5.0000000000000000, 1.0000000000000000,
10407 2.0000000000000000, -0.30000000000000004 },
10408 { 0.64718364197530875, 5.0000000000000000, 1.0000000000000000,
10409 2.0000000000000000, -0.19999999999999996 },
10410 { 0.79246636158732342, 5.0000000000000000, 1.0000000000000000,
10411 2.0000000000000000, -0.099999999999999978 },
10412 { 1.0000000000000000, 5.0000000000000000, 1.0000000000000000,
10413 2.0000000000000000, 0.0000000000000000 },
10414 { 1.3103947568968148, 5.0000000000000000, 1.0000000000000000,
10415 2.0000000000000000, 0.10000000000000009 },
10416 { 1.8017578125000004, 5.0000000000000000, 1.0000000000000000,
10417 2.0000000000000000, 0.19999999999999996 },
10418 { 2.6374427321949185, 5.0000000000000000, 1.0000000000000000,
10419 2.0000000000000000, 0.30000000000000004 },
10420 { 4.1975308641975282, 5.0000000000000000, 1.0000000000000000,
10421 2.0000000000000000, 0.39999999999999991 },
10422 { 7.4999999999999964, 5.0000000000000000, 1.0000000000000000,
10423 2.0000000000000000, 0.50000000000000000 },
10424 { 15.859375000000012, 5.0000000000000000, 1.0000000000000000,
10425 2.0000000000000000, 0.60000000000000009 },
10426 { 43.734567901234513, 5.0000000000000000, 1.0000000000000000,
10427 2.0000000000000000, 0.69999999999999996 },
10428 { 194.99999999999994, 5.0000000000000000, 1.0000000000000000,
10429 2.0000000000000000, 0.80000000000000004 },
10430 { 2777.4999999999832, 5.0000000000000000, 1.0000000000000000,
10431 2.0000000000000000, 0.89999999999999991 },
10434 // Test function for a=5.0000000000000000, b=1.0000000000000000, c=2.0000000000000000.
10435 template <typename Tp
>
10438 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10439 Tp max_abs_diff
= -Tp(1);
10440 Tp max_abs_frac
= -Tp(1);
10441 unsigned int num_datum
= sizeof(data151
)
10442 / sizeof(testcase_hyperg
<double>);
10443 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10445 const Tp f
= std::tr1::hyperg(Tp(data151
[i
].a
), Tp(data151
[i
].b
),
10446 Tp(data151
[i
].c
), Tp(data151
[i
].x
));
10447 const Tp f0
= data151
[i
].f0
;
10448 const Tp diff
= f
- f0
;
10449 if (std::abs(diff
) > max_abs_diff
)
10450 max_abs_diff
= std::abs(diff
);
10451 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10453 const Tp frac
= diff
/ f0
;
10454 if (std::abs(frac
) > max_abs_frac
)
10455 max_abs_frac
= std::abs(frac
);
10458 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10461 // Test data for a=5.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
10462 testcase_hyperg
<double> data152
[] = {
10463 { 0.46398891966759004, 5.0000000000000000, 1.0000000000000000,
10464 4.0000000000000000, -0.90000000000000002 },
10465 { 0.49382716049382713, 5.0000000000000000, 1.0000000000000000,
10466 4.0000000000000000, -0.80000000000000004 },
10467 { 0.52768166089965396, 5.0000000000000000, 1.0000000000000000,
10468 4.0000000000000000, -0.69999999999999996 },
10469 { 0.56640624999999978, 5.0000000000000000, 1.0000000000000000,
10470 4.0000000000000000, -0.59999999999999998 },
10471 { 0.61111111111111116, 5.0000000000000000, 1.0000000000000000,
10472 4.0000000000000000, -0.50000000000000000 },
10473 { 0.66326530612244894, 5.0000000000000000, 1.0000000000000000,
10474 4.0000000000000000, -0.40000000000000002 },
10475 { 0.72485207100591698, 5.0000000000000000, 1.0000000000000000,
10476 4.0000000000000000, -0.30000000000000004 },
10477 { 0.79861111111111094, 5.0000000000000000, 1.0000000000000000,
10478 4.0000000000000000, -0.19999999999999996 },
10479 { 0.88842975206611552, 5.0000000000000000, 1.0000000000000000,
10480 4.0000000000000000, -0.099999999999999978 },
10481 { 1.0000000000000000, 5.0000000000000000, 1.0000000000000000,
10482 4.0000000000000000, 0.0000000000000000 },
10483 { 1.1419753086419753, 5.0000000000000000, 1.0000000000000000,
10484 4.0000000000000000, 0.10000000000000009 },
10485 { 1.3281249999999998, 5.0000000000000000, 1.0000000000000000,
10486 4.0000000000000000, 0.19999999999999996 },
10487 { 1.5816326530612239, 5.0000000000000000, 1.0000000000000000,
10488 4.0000000000000000, 0.30000000000000004 },
10489 { 1.9444444444444444, 5.0000000000000000, 1.0000000000000000,
10490 4.0000000000000000, 0.39999999999999991 },
10491 { 2.5000000000000000, 5.0000000000000000, 1.0000000000000000,
10492 4.0000000000000000, 0.50000000000000000 },
10493 { 3.4374999999999996, 5.0000000000000000, 1.0000000000000000,
10494 4.0000000000000000, 0.60000000000000009 },
10495 { 5.2777777777777715, 5.0000000000000000, 1.0000000000000000,
10496 4.0000000000000000, 0.69999999999999996 },
10497 { 9.9999999999999947, 5.0000000000000000, 1.0000000000000000,
10498 4.0000000000000000, 0.80000000000000004 },
10499 { 32.499999999999837, 5.0000000000000000, 1.0000000000000000,
10500 4.0000000000000000, 0.89999999999999991 },
10503 // Test function for a=5.0000000000000000, b=1.0000000000000000, c=4.0000000000000000.
10504 template <typename Tp
>
10507 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10508 Tp max_abs_diff
= -Tp(1);
10509 Tp max_abs_frac
= -Tp(1);
10510 unsigned int num_datum
= sizeof(data152
)
10511 / sizeof(testcase_hyperg
<double>);
10512 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10514 const Tp f
= std::tr1::hyperg(Tp(data152
[i
].a
), Tp(data152
[i
].b
),
10515 Tp(data152
[i
].c
), Tp(data152
[i
].x
));
10516 const Tp f0
= data152
[i
].f0
;
10517 const Tp diff
= f
- f0
;
10518 if (std::abs(diff
) > max_abs_diff
)
10519 max_abs_diff
= std::abs(diff
);
10520 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10522 const Tp frac
= diff
/ f0
;
10523 if (std::abs(frac
) > max_abs_frac
)
10524 max_abs_frac
= std::abs(frac
);
10527 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10530 // Test data for a=5.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
10531 testcase_hyperg
<double> data153
[] = {
10532 { 0.57476744883397501, 5.0000000000000000, 1.0000000000000000,
10533 6.0000000000000000, -0.90000000000000002 },
10534 { 0.60302731682513933, 5.0000000000000000, 1.0000000000000000,
10535 6.0000000000000000, -0.80000000000000004 },
10536 { 0.63425708719096396, 5.0000000000000000, 1.0000000000000000,
10537 6.0000000000000000, -0.69999999999999996 },
10538 { 0.66895764182970419, 5.0000000000000000, 1.0000000000000000,
10539 6.0000000000000000, -0.59999999999999998 },
10540 { 0.70775063063963428, 5.0000000000000000, 1.0000000000000000,
10541 6.0000000000000000, -0.50000000000000000 },
10542 { 0.75141762103495924, 5.0000000000000000, 1.0000000000000000,
10543 6.0000000000000000, -0.40000000000000002 },
10544 { 0.80095569442603298, 5.0000000000000000, 1.0000000000000000,
10545 6.0000000000000000, -0.30000000000000004 },
10546 { 0.85765823887436754, 5.0000000000000000, 1.0000000000000000,
10547 6.0000000000000000, -0.19999999999999996 },
10548 { 0.92323549576335540, 5.0000000000000000, 1.0000000000000000,
10549 6.0000000000000000, -0.099999999999999978 },
10550 { 1.0000000000000000, 5.0000000000000000, 1.0000000000000000,
10551 6.0000000000000000, 0.0000000000000000 },
10552 { 1.0911622464839472, 5.0000000000000000, 1.0000000000000000,
10553 6.0000000000000000, 0.10000000000000009 },
10554 { 1.2013226178607666, 5.0000000000000000, 1.0000000000000000,
10555 6.0000000000000000, 0.19999999999999996 },
10556 { 1.3373332072682687, 5.0000000000000000, 1.0000000000000000,
10557 6.0000000000000000, 0.30000000000000004 },
10558 { 1.5099074378209716, 5.0000000000000000, 1.0000000000000000,
10559 6.0000000000000000, 0.39999999999999991 },
10560 { 1.7368822229245819, 5.0000000000000000, 1.0000000000000000,
10561 6.0000000000000000, 0.50000000000000000 },
10562 { 2.0505871832661429, 5.0000000000000000, 1.0000000000000000,
10563 6.0000000000000000, 0.60000000000000009 },
10564 { 2.5172389775867967, 5.0000000000000000, 1.0000000000000000,
10565 6.0000000000000000, 0.69999999999999996 },
10566 { 3.3015631983556144, 5.0000000000000000, 1.0000000000000000,
10567 6.0000000000000000, 0.80000000000000004 },
10568 { 5.0005935155044519, 5.0000000000000000, 1.0000000000000000,
10569 6.0000000000000000, 0.89999999999999991 },
10572 // Test function for a=5.0000000000000000, b=1.0000000000000000, c=6.0000000000000000.
10573 template <typename Tp
>
10576 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10577 Tp max_abs_diff
= -Tp(1);
10578 Tp max_abs_frac
= -Tp(1);
10579 unsigned int num_datum
= sizeof(data153
)
10580 / sizeof(testcase_hyperg
<double>);
10581 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10583 const Tp f
= std::tr1::hyperg(Tp(data153
[i
].a
), Tp(data153
[i
].b
),
10584 Tp(data153
[i
].c
), Tp(data153
[i
].x
));
10585 const Tp f0
= data153
[i
].f0
;
10586 const Tp diff
= f
- f0
;
10587 if (std::abs(diff
) > max_abs_diff
)
10588 max_abs_diff
= std::abs(diff
);
10589 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10591 const Tp frac
= diff
/ f0
;
10592 if (std::abs(frac
) > max_abs_frac
)
10593 max_abs_frac
= std::abs(frac
);
10596 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10599 // Test data for a=5.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
10600 testcase_hyperg
<double> data154
[] = {
10601 { 0.64582752605387961, 5.0000000000000000, 1.0000000000000000,
10602 8.0000000000000000, -0.90000000000000002 },
10603 { 0.67184161997264169, 5.0000000000000000, 1.0000000000000000,
10604 8.0000000000000000, -0.80000000000000004 },
10605 { 0.70012779922368040, 5.0000000000000000, 1.0000000000000000,
10606 8.0000000000000000, -0.69999999999999996 },
10607 { 0.73100784656910256, 5.0000000000000000, 1.0000000000000000,
10608 8.0000000000000000, -0.59999999999999998 },
10609 { 0.76486919089091077, 5.0000000000000000, 1.0000000000000000,
10610 8.0000000000000000, -0.50000000000000000 },
10611 { 0.80218301124334579, 5.0000000000000000, 1.0000000000000000,
10612 8.0000000000000000, -0.40000000000000002 },
10613 { 0.84352883533234446, 5.0000000000000000, 1.0000000000000000,
10614 8.0000000000000000, -0.30000000000000004 },
10615 { 0.88962858902212572, 5.0000000000000000, 1.0000000000000000,
10616 8.0000000000000000, -0.19999999999999996 },
10617 { 0.94139473468584123, 5.0000000000000000, 1.0000000000000000,
10618 8.0000000000000000, -0.099999999999999978 },
10619 { 1.0000000000000000, 5.0000000000000000, 1.0000000000000000,
10620 8.0000000000000000, 0.0000000000000000 },
10621 { 1.0669812691939897, 5.0000000000000000, 1.0000000000000000,
10622 8.0000000000000000, 0.10000000000000009 },
10623 { 1.1443996012177726, 5.0000000000000000, 1.0000000000000000,
10624 8.0000000000000000, 0.19999999999999996 },
10625 { 1.2350966976721314, 5.0000000000000000, 1.0000000000000000,
10626 8.0000000000000000, 0.30000000000000004 },
10627 { 1.3431264370409088, 5.0000000000000000, 1.0000000000000000,
10628 8.0000000000000000, 0.39999999999999991 },
10629 { 1.4745266814162399, 5.0000000000000000, 1.0000000000000000,
10630 8.0000000000000000, 0.50000000000000000 },
10631 { 1.6388137104840066, 5.0000000000000000, 1.0000000000000000,
10632 8.0000000000000000, 0.60000000000000009 },
10633 { 1.8522074849776518, 5.0000000000000000, 1.0000000000000000,
10634 8.0000000000000000, 0.69999999999999996 },
10635 { 2.1458016978417458, 5.0000000000000000, 1.0000000000000000,
10636 8.0000000000000000, 0.80000000000000004 },
10637 { 2.5927464669826339, 5.0000000000000000, 1.0000000000000000,
10638 8.0000000000000000, 0.89999999999999991 },
10641 // Test function for a=5.0000000000000000, b=1.0000000000000000, c=8.0000000000000000.
10642 template <typename Tp
>
10645 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10646 Tp max_abs_diff
= -Tp(1);
10647 Tp max_abs_frac
= -Tp(1);
10648 unsigned int num_datum
= sizeof(data154
)
10649 / sizeof(testcase_hyperg
<double>);
10650 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10652 const Tp f
= std::tr1::hyperg(Tp(data154
[i
].a
), Tp(data154
[i
].b
),
10653 Tp(data154
[i
].c
), Tp(data154
[i
].x
));
10654 const Tp f0
= data154
[i
].f0
;
10655 const Tp diff
= f
- f0
;
10656 if (std::abs(diff
) > max_abs_diff
)
10657 max_abs_diff
= std::abs(diff
);
10658 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10660 const Tp frac
= diff
/ f0
;
10661 if (std::abs(frac
) > max_abs_frac
)
10662 max_abs_frac
= std::abs(frac
);
10665 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10668 // Test data for a=5.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
10669 testcase_hyperg
<double> data155
[] = {
10670 { 0.69583236336670629, 5.0000000000000000, 1.0000000000000000,
10671 10.000000000000000, -0.90000000000000002 },
10672 { 0.71968920666899694, 5.0000000000000000, 1.0000000000000000,
10673 10.000000000000000, -0.80000000000000004 },
10674 { 0.74533885416044232, 5.0000000000000000, 1.0000000000000000,
10675 10.000000000000000, -0.69999999999999996 },
10676 { 0.77300145361503014, 5.0000000000000000, 1.0000000000000000,
10677 10.000000000000000, -0.59999999999999998 },
10678 { 0.80293630810919514, 5.0000000000000000, 1.0000000000000000,
10679 10.000000000000000, -0.50000000000000000 },
10680 { 0.83545132638592035, 5.0000000000000000, 1.0000000000000000,
10681 10.000000000000000, -0.40000000000000002 },
10682 { 0.87091544744412508, 5.0000000000000000, 1.0000000000000000,
10683 10.000000000000000, -0.30000000000000004 },
10684 { 0.90977522877919847, 5.0000000000000000, 1.0000000000000000,
10685 10.000000000000000, -0.19999999999999996 },
10686 { 0.95257738192069130, 5.0000000000000000, 1.0000000000000000,
10687 10.000000000000000, -0.099999999999999978 },
10688 { 1.0000000000000000, 5.0000000000000000, 1.0000000000000000,
10689 10.000000000000000, 0.0000000000000000 },
10690 { 1.0528968282789379, 5.0000000000000000, 1.0000000000000000,
10691 10.000000000000000, 0.10000000000000009 },
10692 { 1.1123617169062123, 5.0000000000000000, 1.0000000000000000,
10693 10.000000000000000, 0.19999999999999996 },
10694 { 1.1798254572896132, 5.0000000000000000, 1.0000000000000000,
10695 10.000000000000000, 0.30000000000000004 },
10696 { 1.2572069000522696, 5.0000000000000000, 1.0000000000000000,
10697 10.000000000000000, 0.39999999999999991 },
10698 { 1.3471600884974377, 5.0000000000000000, 1.0000000000000000,
10699 10.000000000000000, 0.50000000000000000 },
10700 { 1.4535032279573519, 5.0000000000000000, 1.0000000000000000,
10701 10.000000000000000, 0.60000000000000009 },
10702 { 1.5820245752814948, 5.0000000000000000, 1.0000000000000000,
10703 10.000000000000000, 0.69999999999999996 },
10704 { 1.7421756366906538, 5.0000000000000000, 1.0000000000000000,
10705 10.000000000000000, 0.80000000000000004 },
10706 { 1.9513145531098233, 5.0000000000000000, 1.0000000000000000,
10707 10.000000000000000, 0.89999999999999991 },
10710 // Test function for a=5.0000000000000000, b=1.0000000000000000, c=10.000000000000000.
10711 template <typename Tp
>
10714 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10715 Tp max_abs_diff
= -Tp(1);
10716 Tp max_abs_frac
= -Tp(1);
10717 unsigned int num_datum
= sizeof(data155
)
10718 / sizeof(testcase_hyperg
<double>);
10719 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10721 const Tp f
= std::tr1::hyperg(Tp(data155
[i
].a
), Tp(data155
[i
].b
),
10722 Tp(data155
[i
].c
), Tp(data155
[i
].x
));
10723 const Tp f0
= data155
[i
].f0
;
10724 const Tp diff
= f
- f0
;
10725 if (std::abs(diff
) > max_abs_diff
)
10726 max_abs_diff
= std::abs(diff
);
10727 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10729 const Tp frac
= diff
/ f0
;
10730 if (std::abs(frac
) > max_abs_frac
)
10731 max_abs_frac
= std::abs(frac
);
10734 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10737 // Test data for a=5.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
10738 testcase_hyperg
<double> data156
[] = {
10739 { 0.040386107340619266, 5.0000000000000000, 2.0000000000000000,
10740 2.0000000000000000, -0.90000000000000002 },
10741 { 0.052922149401344633, 5.0000000000000000, 2.0000000000000000,
10742 2.0000000000000000, -0.80000000000000004 },
10743 { 0.070429627772374270, 5.0000000000000000, 2.0000000000000000,
10744 2.0000000000000000, -0.69999999999999996 },
10745 { 0.095367431640624972, 5.0000000000000000, 2.0000000000000000,
10746 2.0000000000000000, -0.59999999999999998 },
10747 { 0.13168724279835387, 5.0000000000000000, 2.0000000000000000,
10748 2.0000000000000000, -0.50000000000000000 },
10749 { 0.18593443208187066, 5.0000000000000000, 2.0000000000000000,
10750 2.0000000000000000, -0.40000000000000002 },
10751 { 0.26932907434290437, 5.0000000000000000, 2.0000000000000000,
10752 2.0000000000000000, -0.30000000000000004 },
10753 { 0.40187757201646096, 5.0000000000000000, 2.0000000000000000,
10754 2.0000000000000000, -0.19999999999999996 },
10755 { 0.62092132305915493, 5.0000000000000000, 2.0000000000000000,
10756 2.0000000000000000, -0.099999999999999978 },
10757 { 1.0000000000000000, 5.0000000000000000, 2.0000000000000000,
10758 2.0000000000000000, 0.0000000000000000 },
10759 { 1.6935087808430296, 5.0000000000000000, 2.0000000000000000,
10760 2.0000000000000000, 0.10000000000000009 },
10761 { 3.0517578124999991, 5.0000000000000000, 2.0000000000000000,
10762 2.0000000000000000, 0.19999999999999996 },
10763 { 5.9499018266198629, 5.0000000000000000, 2.0000000000000000,
10764 2.0000000000000000, 0.30000000000000004 },
10765 { 12.860082304526737, 5.0000000000000000, 2.0000000000000000,
10766 2.0000000000000000, 0.39999999999999991 },
10767 { 32.000000000000000, 5.0000000000000000, 2.0000000000000000,
10768 2.0000000000000000, 0.50000000000000000 },
10769 { 97.656250000000114, 5.0000000000000000, 2.0000000000000000,
10770 2.0000000000000000, 0.60000000000000009 },
10771 { 411.52263374485580, 5.0000000000000000, 2.0000000000000000,
10772 2.0000000000000000, 0.69999999999999996 },
10773 { 3124.9999999999991, 5.0000000000000000, 2.0000000000000000,
10774 2.0000000000000000, 0.80000000000000004 },
10775 { 99999.999999999665, 5.0000000000000000, 2.0000000000000000,
10776 2.0000000000000000, 0.89999999999999991 },
10779 // Test function for a=5.0000000000000000, b=2.0000000000000000, c=2.0000000000000000.
10780 template <typename Tp
>
10783 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10784 Tp max_abs_diff
= -Tp(1);
10785 Tp max_abs_frac
= -Tp(1);
10786 unsigned int num_datum
= sizeof(data156
)
10787 / sizeof(testcase_hyperg
<double>);
10788 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10790 const Tp f
= std::tr1::hyperg(Tp(data156
[i
].a
), Tp(data156
[i
].b
),
10791 Tp(data156
[i
].c
), Tp(data156
[i
].x
));
10792 const Tp f0
= data156
[i
].f0
;
10793 const Tp diff
= f
- f0
;
10794 if (std::abs(diff
) > max_abs_diff
)
10795 max_abs_diff
= std::abs(diff
);
10796 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10798 const Tp frac
= diff
/ f0
;
10799 if (std::abs(frac
) > max_abs_frac
)
10800 max_abs_frac
= std::abs(frac
);
10803 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10806 // Test data for a=5.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
10807 testcase_hyperg
<double> data157
[] = {
10808 { 0.21140107887447140, 5.0000000000000000, 2.0000000000000000,
10809 4.0000000000000000, -0.90000000000000002 },
10810 { 0.24005486968449935, 5.0000000000000000, 2.0000000000000000,
10811 4.0000000000000000, -0.80000000000000004 },
10812 { 0.27478119275391821, 5.0000000000000000, 2.0000000000000000,
10813 4.0000000000000000, -0.69999999999999996 },
10814 { 0.31738281249999994, 5.0000000000000000, 2.0000000000000000,
10815 4.0000000000000000, -0.59999999999999998 },
10816 { 0.37037037037037035, 5.0000000000000000, 2.0000000000000000,
10817 4.0000000000000000, -0.50000000000000000 },
10818 { 0.43731778425655982, 5.0000000000000000, 2.0000000000000000,
10819 4.0000000000000000, -0.40000000000000002 },
10820 { 0.52344105598543444, 5.0000000000000000, 2.0000000000000000,
10821 4.0000000000000000, -0.30000000000000004 },
10822 { 0.63657407407407429, 5.0000000000000000, 2.0000000000000000,
10823 4.0000000000000000, -0.19999999999999996 },
10824 { 0.78888054094665638, 5.0000000000000000, 2.0000000000000000,
10825 4.0000000000000000, -0.099999999999999978 },
10826 { 1.0000000000000000, 5.0000000000000000, 2.0000000000000000,
10827 4.0000000000000000, 0.0000000000000000 },
10828 { 1.3031550068587108, 5.0000000000000000, 2.0000000000000000,
10829 4.0000000000000000, 0.10000000000000009 },
10830 { 1.7578125000000002, 5.0000000000000000, 2.0000000000000000,
10831 4.0000000000000000, 0.19999999999999996 },
10832 { 2.4781341107871717, 5.0000000000000000, 2.0000000000000000,
10833 4.0000000000000000, 0.30000000000000004 },
10834 { 3.7037037037037037, 5.0000000000000000, 2.0000000000000000,
10835 4.0000000000000000, 0.39999999999999991 },
10836 { 5.9999999999999982, 5.0000000000000000, 2.0000000000000000,
10837 4.0000000000000000, 0.50000000000000000 },
10838 { 10.937500000000005, 5.0000000000000000, 2.0000000000000000,
10839 4.0000000000000000, 0.60000000000000009 },
10840 { 24.074074074074076, 5.0000000000000000, 2.0000000000000000,
10841 4.0000000000000000, 0.69999999999999996 },
10842 { 74.999999999999957, 5.0000000000000000, 2.0000000000000000,
10843 4.0000000000000000, 0.80000000000000004 },
10844 { 549.99999999999670, 5.0000000000000000, 2.0000000000000000,
10845 4.0000000000000000, 0.89999999999999991 },
10848 // Test function for a=5.0000000000000000, b=2.0000000000000000, c=4.0000000000000000.
10849 template <typename Tp
>
10852 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10853 Tp max_abs_diff
= -Tp(1);
10854 Tp max_abs_frac
= -Tp(1);
10855 unsigned int num_datum
= sizeof(data157
)
10856 / sizeof(testcase_hyperg
<double>);
10857 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10859 const Tp f
= std::tr1::hyperg(Tp(data157
[i
].a
), Tp(data157
[i
].b
),
10860 Tp(data157
[i
].c
), Tp(data157
[i
].x
));
10861 const Tp f0
= data157
[i
].f0
;
10862 const Tp diff
= f
- f0
;
10863 if (std::abs(diff
) > max_abs_diff
)
10864 max_abs_diff
= std::abs(diff
);
10865 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10867 const Tp frac
= diff
/ f0
;
10868 if (std::abs(frac
) > max_abs_frac
)
10869 max_abs_frac
= std::abs(frac
);
10872 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10875 // Test data for a=5.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
10876 testcase_hyperg
<double> data158
[] = {
10877 { 0.33250915203252107, 5.0000000000000000, 2.0000000000000000,
10878 6.0000000000000000, -0.90000000000000002 },
10879 { 0.36566851047721960, 5.0000000000000000, 2.0000000000000000,
10880 6.0000000000000000, -0.80000000000000004 },
10881 { 0.40414812182437942, 5.0000000000000000, 2.0000000000000000,
10882 6.0000000000000000, -0.69999999999999996 },
10883 { 0.44916943268118470, 5.0000000000000000, 2.0000000000000000,
10884 6.0000000000000000, -0.59999999999999998 },
10885 { 0.50233081077479569, 5.0000000000000000, 2.0000000000000000,
10886 6.0000000000000000, -0.50000000000000000 },
10887 { 0.56575808728873322, 5.0000000000000000, 2.0000000000000000,
10888 6.0000000000000000, -0.40000000000000002 },
10889 { 0.64233106844971422, 5.0000000000000000, 2.0000000000000000,
10890 6.0000000000000000, -0.30000000000000004 },
10891 { 0.73603371116919514, 5.0000000000000000, 2.0000000000000000,
10892 6.0000000000000000, -0.19999999999999996 },
10893 { 0.85251256240112439, 5.0000000000000000, 2.0000000000000000,
10894 6.0000000000000000, -0.099999999999999978 },
10895 { 1.0000000000000000, 5.0000000000000000, 2.0000000000000000,
10896 6.0000000000000000, 0.0000000000000000 },
10897 { 1.1909065696197674, 5.0000000000000000, 2.0000000000000000,
10898 6.0000000000000000, 0.10000000000000009 },
10899 { 1.4447095285569311, 5.0000000000000000, 2.0000000000000000,
10900 6.0000000000000000, 0.19999999999999996 },
10901 { 1.7935243137840653, 5.0000000000000000, 2.0000000000000000,
10902 6.0000000000000000, 0.30000000000000004 },
10903 { 2.2937035820494454, 5.0000000000000000, 2.0000000000000000,
10904 6.0000000000000000, 0.39999999999999991 },
10905 { 3.0524711083016687, 5.0000000000000000, 2.0000000000000000,
10906 6.0000000000000000, 0.50000000000000000 },
10907 { 4.2976512669354259, 5.0000000000000000, 2.0000000000000000,
10908 6.0000000000000000, 0.60000000000000009 },
10909 { 6.5977107563194677, 5.0000000000000000, 2.0000000000000000,
10910 6.0000000000000000, 0.69999999999999996 },
10911 { 11.793747206577530, 5.0000000000000000, 2.0000000000000000,
10912 6.0000000000000000, 0.80000000000000004 },
10913 { 29.997625937982058, 5.0000000000000000, 2.0000000000000000,
10914 6.0000000000000000, 0.89999999999999991 },
10917 // Test function for a=5.0000000000000000, b=2.0000000000000000, c=6.0000000000000000.
10918 template <typename Tp
>
10921 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10922 Tp max_abs_diff
= -Tp(1);
10923 Tp max_abs_frac
= -Tp(1);
10924 unsigned int num_datum
= sizeof(data158
)
10925 / sizeof(testcase_hyperg
<double>);
10926 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10928 const Tp f
= std::tr1::hyperg(Tp(data158
[i
].a
), Tp(data158
[i
].b
),
10929 Tp(data158
[i
].c
), Tp(data158
[i
].x
));
10930 const Tp f0
= data158
[i
].f0
;
10931 const Tp diff
= f
- f0
;
10932 if (std::abs(diff
) > max_abs_diff
)
10933 max_abs_diff
= std::abs(diff
);
10934 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
10936 const Tp frac
= diff
/ f0
;
10937 if (std::abs(frac
) > max_abs_frac
)
10938 max_abs_frac
= std::abs(frac
);
10941 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
10944 // Test data for a=5.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
10945 testcase_hyperg
<double> data159
[] = {
10946 { 0.42108197362250305, 5.0000000000000000, 2.0000000000000000,
10947 8.0000000000000000, -0.90000000000000002 },
10948 { 0.45503172013983051, 5.0000000000000000, 2.0000000000000000,
10949 8.0000000000000000, -0.80000000000000004 },
10950 { 0.49345609813624303, 5.0000000000000000, 2.0000000000000000,
10951 8.0000000000000000, -0.69999999999999996 },
10952 { 0.53720880551221295, 5.0000000000000000, 2.0000000000000000,
10953 8.0000000000000000, -0.59999999999999998 },
10954 { 0.58736431524847466, 5.0000000000000000, 2.0000000000000000,
10955 8.0000000000000000, -0.50000000000000000 },
10956 { 0.64529222467897962, 5.0000000000000000, 2.0000000000000000,
10957 8.0000000000000000, -0.40000000000000002 },
10958 { 0.71276337354393904, 5.0000000000000000, 2.0000000000000000,
10959 8.0000000000000000, -0.30000000000000004 },
10960 { 0.79210466220795306, 5.0000000000000000, 2.0000000000000000,
10961 8.0000000000000000, -0.19999999999999996 },
10962 { 0.88643063455510596, 5.0000000000000000, 2.0000000000000000,
10963 8.0000000000000000, -0.099999999999999978 },
10964 { 1.0000000000000000, 5.0000000000000000, 2.0000000000000000,
10965 8.0000000000000000, 0.0000000000000000 },
10966 { 1.1387832139040652, 5.0000000000000000, 2.0000000000000000,
10967 8.0000000000000000, 0.10000000000000009 },
10968 { 1.3114025920844752, 5.0000000000000000, 2.0000000000000000,
10969 8.0000000000000000, 0.19999999999999996 },
10970 { 1.5307655016768162, 5.0000000000000000, 2.0000000000000000,
10971 8.0000000000000000, 0.30000000000000004 },
10972 { 1.8170727950333345, 5.0000000000000000, 2.0000000000000000,
10973 8.0000000000000000, 0.39999999999999991 },
10974 { 2.2037865486700836, 5.0000000000000000, 2.0000000000000000,
10975 8.0000000000000000, 0.50000000000000000 },
10976 { 2.7506766056439380, 5.0000000000000000, 2.0000000000000000,
10977 8.0000000000000000, 0.60000000000000009 },
10978 { 3.5764534935716972, 5.0000000000000000, 2.0000000000000000,
10979 8.0000000000000000, 0.69999999999999996 },
10980 { 4.9587762302155403, 5.0000000000000000, 2.0000000000000000,
10981 8.0000000000000000, 0.80000000000000004 },
10982 { 7.7740847924166800, 5.0000000000000000, 2.0000000000000000,
10983 8.0000000000000000, 0.89999999999999991 },
10986 // Test function for a=5.0000000000000000, b=2.0000000000000000, c=8.0000000000000000.
10987 template <typename Tp
>
10990 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
10991 Tp max_abs_diff
= -Tp(1);
10992 Tp max_abs_frac
= -Tp(1);
10993 unsigned int num_datum
= sizeof(data159
)
10994 / sizeof(testcase_hyperg
<double>);
10995 for (unsigned int i
= 0; i
< num_datum
; ++i
)
10997 const Tp f
= std::tr1::hyperg(Tp(data159
[i
].a
), Tp(data159
[i
].b
),
10998 Tp(data159
[i
].c
), Tp(data159
[i
].x
));
10999 const Tp f0
= data159
[i
].f0
;
11000 const Tp diff
= f
- f0
;
11001 if (std::abs(diff
) > max_abs_diff
)
11002 max_abs_diff
= std::abs(diff
);
11003 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11005 const Tp frac
= diff
/ f0
;
11006 if (std::abs(frac
) > max_abs_frac
)
11007 max_abs_frac
= std::abs(frac
);
11010 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
11013 // Test data for a=5.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
11014 testcase_hyperg
<double> data160
[] = {
11015 { 0.48860241312958425, 5.0000000000000000, 2.0000000000000000,
11016 10.000000000000000, -0.90000000000000002 },
11017 { 0.52193382517068487, 5.0000000000000000, 2.0000000000000000,
11018 10.000000000000000, -0.80000000000000004 },
11019 { 0.55902375003954219, 5.0000000000000000, 2.0000000000000000,
11020 10.000000000000000, -0.69999999999999996 },
11021 { 0.60049055150230346, 5.0000000000000000, 2.0000000000000000,
11022 10.000000000000000, -0.59999999999999998 },
11023 { 0.64709127927203480, 5.0000000000000000, 2.0000000000000000,
11024 10.000000000000000, -0.50000000000000000 },
11025 { 0.69976233335368998, 5.0000000000000000, 2.0000000000000000,
11026 10.000000000000000, -0.40000000000000002 },
11027 { 0.75967529501081055, 5.0000000000000000, 2.0000000000000000,
11028 10.000000000000000, -0.30000000000000004 },
11029 { 0.82831498895254407, 5.0000000000000000, 2.0000000000000000,
11030 10.000000000000000, -0.19999999999999996 },
11031 { 0.90759090169653933, 5.0000000000000000, 2.0000000000000000,
11032 10.000000000000000, -0.099999999999999978 },
11033 { 1.0000000000000000, 5.0000000000000000, 2.0000000000000000,
11034 10.000000000000000, 0.0000000000000000 },
11035 { 1.1088712278667465, 5.0000000000000000, 2.0000000000000000,
11036 10.000000000000000, 0.10000000000000009 },
11037 { 1.2387445478440853, 5.0000000000000000, 2.0000000000000000,
11038 10.000000000000000, 0.19999999999999996 },
11039 { 1.3959812720437546, 5.0000000000000000, 2.0000000000000000,
11040 10.000000000000000, 0.30000000000000004 },
11041 { 1.5897930661091164, 5.0000000000000000, 2.0000000000000000,
11042 10.000000000000000, 0.39999999999999991 },
11043 { 1.8340789380307454, 5.0000000000000000, 2.0000000000000000,
11044 10.000000000000000, 0.50000000000000000 },
11045 { 2.1509548085970764, 5.0000000000000000, 2.0000000000000000,
11046 10.000000000000000, 0.60000000000000009 },
11047 { 2.5782406951207504, 5.0000000000000000, 2.0000000000000000,
11048 10.000000000000000, 0.69999999999999996 },
11049 { 3.1877847194242737, 5.0000000000000000, 2.0000000000000000,
11050 10.000000000000000, 0.80000000000000004 },
11051 { 4.1421596631676900, 5.0000000000000000, 2.0000000000000000,
11052 10.000000000000000, 0.89999999999999991 },
11055 // Test function for a=5.0000000000000000, b=2.0000000000000000, c=10.000000000000000.
11056 template <typename Tp
>
11059 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11060 Tp max_abs_diff
= -Tp(1);
11061 Tp max_abs_frac
= -Tp(1);
11062 unsigned int num_datum
= sizeof(data160
)
11063 / sizeof(testcase_hyperg
<double>);
11064 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11066 const Tp f
= std::tr1::hyperg(Tp(data160
[i
].a
), Tp(data160
[i
].b
),
11067 Tp(data160
[i
].c
), Tp(data160
[i
].x
));
11068 const Tp f0
= data160
[i
].f0
;
11069 const Tp diff
= f
- f0
;
11070 if (std::abs(diff
) > max_abs_diff
)
11071 max_abs_diff
= std::abs(diff
);
11072 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11074 const Tp frac
= diff
/ f0
;
11075 if (std::abs(frac
) > max_abs_frac
)
11076 max_abs_frac
= std::abs(frac
);
11079 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
11082 // Test data for a=5.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
11083 testcase_hyperg
<double> data161
[] = {
11084 { -0.0047236848832209691, 5.0000000000000000, 5.0000000000000000,
11085 2.0000000000000000, -0.90000000000000002 },
11086 { -0.0073321496427103212, 5.0000000000000000, 5.0000000000000000,
11087 2.0000000000000000, -0.80000000000000004 },
11088 { -0.010977302557845672, 5.0000000000000000, 5.0000000000000000,
11089 2.0000000000000000, -0.69999999999999996 },
11090 { -0.015692785382270907, 5.0000000000000000, 5.0000000000000000,
11091 2.0000000000000000, -0.59999999999999998 },
11092 { -0.020728547477518677, 5.0000000000000000, 5.0000000000000000,
11093 2.0000000000000000, -0.50000000000000000 },
11094 { -0.022767481479412769, 5.0000000000000000, 5.0000000000000000,
11095 2.0000000000000000, -0.40000000000000002 },
11096 { -0.010634636868114139, 5.0000000000000000, 5.0000000000000000,
11097 2.0000000000000000, -0.30000000000000004 },
11098 { 0.050699832580781923, 5.0000000000000000, 5.0000000000000000,
11099 2.0000000000000000, -0.19999999999999996 },
11100 { 0.27045765367659280, 5.0000000000000000, 5.0000000000000000,
11101 2.0000000000000000, -0.099999999999999978 },
11102 { 1.0000000000000000, 5.0000000000000000, 5.0000000000000000,
11103 2.0000000000000000, 0.0000000000000000 },
11104 { 3.4387055868901171, 5.0000000000000000, 5.0000000000000000,
11105 2.0000000000000000, 0.10000000000000009 },
11106 { 12.052059173583981, 5.0000000000000000, 5.0000000000000000,
11107 2.0000000000000000, 0.19999999999999996 },
11108 { 45.565319600798020, 5.0000000000000000, 5.0000000000000000,
11109 2.0000000000000000, 0.30000000000000004 },
11110 { 196.23532998018572, 5.0000000000000000, 5.0000000000000000,
11111 2.0000000000000000, 0.39999999999999991 },
11112 { 1032.0000000000002, 5.0000000000000000, 5.0000000000000000,
11113 2.0000000000000000, 0.50000000000000000 },
11114 { 7376.0986328125073, 5.0000000000000000, 5.0000000000000000,
11115 2.0000000000000000, 0.60000000000000009 },
11116 { 86964.639536655843, 5.0000000000000000, 5.0000000000000000,
11117 2.0000000000000000, 0.69999999999999996 },
11118 { 2596875.0000000009, 5.0000000000000000, 5.0000000000000000,
11119 2.0000000000000000, 0.80000000000000004 },
11120 { 766224999.99999273, 5.0000000000000000, 5.0000000000000000,
11121 2.0000000000000000, 0.89999999999999991 },
11124 // Test function for a=5.0000000000000000, b=5.0000000000000000, c=2.0000000000000000.
11125 template <typename Tp
>
11128 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11129 Tp max_abs_diff
= -Tp(1);
11130 Tp max_abs_frac
= -Tp(1);
11131 unsigned int num_datum
= sizeof(data161
)
11132 / sizeof(testcase_hyperg
<double>);
11133 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11135 const Tp f
= std::tr1::hyperg(Tp(data161
[i
].a
), Tp(data161
[i
].b
),
11136 Tp(data161
[i
].c
), Tp(data161
[i
].x
));
11137 const Tp f0
= data161
[i
].f0
;
11138 const Tp diff
= f
- f0
;
11139 if (std::abs(diff
) > max_abs_diff
)
11140 max_abs_diff
= std::abs(diff
);
11141 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11143 const Tp frac
= diff
/ f0
;
11144 if (std::abs(frac
) > max_abs_frac
)
11145 max_abs_frac
= std::abs(frac
);
11148 VERIFY(max_abs_frac
< Tp(2.5000000000000015e-12));
11151 // Test data for a=5.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
11152 testcase_hyperg
<double> data162
[] = {
11153 { 0.016473280625778897, 5.0000000000000000, 5.0000000000000000,
11154 4.0000000000000000, -0.90000000000000002 },
11155 { 0.023520955289486407, 5.0000000000000000, 5.0000000000000000,
11156 4.0000000000000000, -0.80000000000000004 },
11157 { 0.034179084066004943, 5.0000000000000000, 5.0000000000000000,
11158 4.0000000000000000, -0.69999999999999996 },
11159 { 0.050663948059082052, 5.0000000000000000, 5.0000000000000000,
11160 4.0000000000000000, -0.59999999999999998 },
11161 { 0.076817558299039843, 5.0000000000000000, 5.0000000000000000,
11162 4.0000000000000000, -0.50000000000000000 },
11163 { 0.11952927776691676, 5.0000000000000000, 5.0000000000000000,
11164 4.0000000000000000, -0.40000000000000002 },
11165 { 0.19163799520552813, 5.0000000000000000, 5.0000000000000000,
11166 4.0000000000000000, -0.30000000000000004 },
11167 { 0.31815307784636504, 5.0000000000000000, 5.0000000000000000,
11168 4.0000000000000000, -0.19999999999999996 },
11169 { 0.55036208180243285, 5.0000000000000000, 5.0000000000000000,
11170 4.0000000000000000, -0.099999999999999978 },
11171 { 1.0000000000000000, 5.0000000000000000, 5.0000000000000000,
11172 4.0000000000000000, 0.0000000000000000 },
11173 { 1.9287183337378946, 5.0000000000000000, 5.0000000000000000,
11174 4.0000000000000000, 0.10000000000000009 },
11175 { 4.0054321289062473, 5.0000000000000000, 5.0000000000000000,
11176 4.0000000000000000, 0.19999999999999996 },
11177 { 9.1373492337376394, 5.0000000000000000, 5.0000000000000000,
11178 4.0000000000000000, 0.30000000000000004 },
11179 { 23.576817558299005, 5.0000000000000000, 5.0000000000000000,
11180 4.0000000000000000, 0.39999999999999991 },
11181 { 71.999999999999972, 5.0000000000000000, 5.0000000000000000,
11182 4.0000000000000000, 0.50000000000000000 },
11183 { 280.76171875000023, 5.0000000000000000, 5.0000000000000000,
11184 4.0000000000000000, 0.60000000000000009 },
11185 { 1611.7969821673514, 5.0000000000000000, 5.0000000000000000,
11186 4.0000000000000000, 0.69999999999999996 },
11187 { 18749.999999999996, 5.0000000000000000, 5.0000000000000000,
11188 4.0000000000000000, 0.80000000000000004 },
11189 { 1224999.9999999879, 5.0000000000000000, 5.0000000000000000,
11190 4.0000000000000000, 0.89999999999999991 },
11193 // Test function for a=5.0000000000000000, b=5.0000000000000000, c=4.0000000000000000.
11194 template <typename Tp
>
11197 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11198 Tp max_abs_diff
= -Tp(1);
11199 Tp max_abs_frac
= -Tp(1);
11200 unsigned int num_datum
= sizeof(data162
)
11201 / sizeof(testcase_hyperg
<double>);
11202 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11204 const Tp f
= std::tr1::hyperg(Tp(data162
[i
].a
), Tp(data162
[i
].b
),
11205 Tp(data162
[i
].c
), Tp(data162
[i
].x
));
11206 const Tp f0
= data162
[i
].f0
;
11207 const Tp diff
= f
- f0
;
11208 if (std::abs(diff
) > max_abs_diff
)
11209 max_abs_diff
= std::abs(diff
);
11210 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11212 const Tp frac
= diff
/ f0
;
11213 if (std::abs(frac
) > max_abs_frac
)
11214 max_abs_frac
= std::abs(frac
);
11217 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
11220 // Test data for a=5.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
11221 testcase_hyperg
<double> data163
[] = {
11222 { 0.067462409738203513, 5.0000000000000000, 5.0000000000000000,
11223 6.0000000000000000, -0.90000000000000002 },
11224 { 0.084813629887172517, 5.0000000000000000, 5.0000000000000000,
11225 6.0000000000000000, -0.80000000000000004 },
11226 { 0.10799223563666410, 5.0000000000000000, 5.0000000000000000,
11227 6.0000000000000000, -0.69999999999999996 },
11228 { 0.13947766136095369, 5.0000000000000000, 5.0000000000000000,
11229 6.0000000000000000, -0.59999999999999998 },
11230 { 0.18305927261494304, 5.0000000000000000, 5.0000000000000000,
11231 6.0000000000000000, -0.50000000000000000 },
11232 { 0.24468431546783445, 5.0000000000000000, 5.0000000000000000,
11233 6.0000000000000000, -0.40000000000000002 },
11234 { 0.33397274564972956, 5.0000000000000000, 5.0000000000000000,
11235 6.0000000000000000, -0.30000000000000004 },
11236 { 0.46703323887436765, 5.0000000000000000, 5.0000000000000000,
11237 6.0000000000000000, -0.19999999999999996 },
11238 { 0.67194346197695642, 5.0000000000000000, 5.0000000000000000,
11239 6.0000000000000000, -0.099999999999999978 },
11240 { 1.0000000000000000, 5.0000000000000000, 5.0000000000000000,
11241 6.0000000000000000, 0.0000000000000000 },
11242 { 1.5503148146900136, 5.0000000000000000, 5.0000000000000000,
11243 6.0000000000000000, 0.10000000000000009 },
11244 { 2.5278200136940998, 5.0000000000000000, 5.0000000000000000,
11245 6.0000000000000000, 0.19999999999999996 },
11246 { 4.3933515329658954, 5.0000000000000000, 5.0000000000000000,
11247 6.0000000000000000, 0.30000000000000004 },
11248 { 8.3000308946110888, 5.0000000000000000, 5.0000000000000000,
11249 6.0000000000000000, 0.39999999999999991 },
11250 { 17.570215556257921, 5.0000000000000000, 5.0000000000000000,
11251 6.0000000000000000, 0.50000000000000000 },
11252 { 43.847462183266167, 5.0000000000000000, 5.0000000000000000,
11253 6.0000000000000000, 0.60000000000000009 },
11254 { 141.86909082943853, 5.0000000000000000, 5.0000000000000000,
11255 6.0000000000000000, 0.69999999999999996 },
11256 { 736.63489653168926, 5.0000000000000000, 5.0000000000000000,
11257 6.0000000000000000, 0.80000000000000004 },
11258 { 12117.500593515439, 5.0000000000000000, 5.0000000000000000,
11259 6.0000000000000000, 0.89999999999999991 },
11262 // Test function for a=5.0000000000000000, b=5.0000000000000000, c=6.0000000000000000.
11263 template <typename Tp
>
11266 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11267 Tp max_abs_diff
= -Tp(1);
11268 Tp max_abs_frac
= -Tp(1);
11269 unsigned int num_datum
= sizeof(data163
)
11270 / sizeof(testcase_hyperg
<double>);
11271 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11273 const Tp f
= std::tr1::hyperg(Tp(data163
[i
].a
), Tp(data163
[i
].b
),
11274 Tp(data163
[i
].c
), Tp(data163
[i
].x
));
11275 const Tp f0
= data163
[i
].f0
;
11276 const Tp diff
= f
- f0
;
11277 if (std::abs(diff
) > max_abs_diff
)
11278 max_abs_diff
= std::abs(diff
);
11279 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11281 const Tp frac
= diff
/ f0
;
11282 if (std::abs(frac
) > max_abs_frac
)
11283 max_abs_frac
= std::abs(frac
);
11286 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
11289 // Test data for a=5.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
11290 testcase_hyperg
<double> data164
[] = {
11291 { 0.12409443806004232, 5.0000000000000000, 5.0000000000000000,
11292 8.0000000000000000, -0.90000000000000002 },
11293 { 0.14886910375100412, 5.0000000000000000, 5.0000000000000000,
11294 8.0000000000000000, -0.80000000000000004 },
11295 { 0.18023328876836334, 5.0000000000000000, 5.0000000000000000,
11296 8.0000000000000000, -0.69999999999999996 },
11297 { 0.22044046981094714, 5.0000000000000000, 5.0000000000000000,
11298 8.0000000000000000, -0.59999999999999998 },
11299 { 0.27271160690708801, 5.0000000000000000, 5.0000000000000000,
11300 8.0000000000000000, -0.50000000000000000 },
11301 { 0.34174821195025840, 5.0000000000000000, 5.0000000000000000,
11302 8.0000000000000000, -0.40000000000000002 },
11303 { 0.43457788826160237, 5.0000000000000000, 5.0000000000000000,
11304 8.0000000000000000, -0.30000000000000004 },
11305 { 0.56199385898404552, 5.0000000000000000, 5.0000000000000000,
11306 8.0000000000000000, -0.19999999999999996 },
11307 { 0.74109892753745221, 5.0000000000000000, 5.0000000000000000,
11308 8.0000000000000000, -0.099999999999999978 },
11309 { 1.0000000000000000, 5.0000000000000000, 5.0000000000000000,
11310 8.0000000000000000, 0.0000000000000000 },
11311 { 1.3869229400096228, 5.0000000000000000, 5.0000000000000000,
11312 8.0000000000000000, 0.10000000000000009 },
11313 { 1.9890168748121255, 5.0000000000000000, 5.0000000000000000,
11314 8.0000000000000000, 0.19999999999999996 },
11315 { 2.9741205609307424, 5.0000000000000000, 5.0000000000000000,
11316 8.0000000000000000, 0.30000000000000004 },
11317 { 4.6924751038237300, 5.0000000000000000, 5.0000000000000000,
11318 8.0000000000000000, 0.39999999999999991 },
11319 { 7.9555939380658254, 5.0000000000000000, 5.0000000000000000,
11320 8.0000000000000000, 0.50000000000000000 },
11321 { 14.933102063314404, 5.0000000000000000, 5.0000000000000000,
11322 8.0000000000000000, 0.60000000000000009 },
11323 { 32.780461638447491, 5.0000000000000000, 5.0000000000000000,
11324 8.0000000000000000, 0.69999999999999996 },
11325 { 94.848124287773530, 5.0000000000000000, 5.0000000000000000,
11326 8.0000000000000000, 0.80000000000000004 },
11327 { 523.16034401517425, 5.0000000000000000, 5.0000000000000000,
11328 8.0000000000000000, 0.89999999999999991 },
11331 // Test function for a=5.0000000000000000, b=5.0000000000000000, c=8.0000000000000000.
11332 template <typename Tp
>
11335 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11336 Tp max_abs_diff
= -Tp(1);
11337 Tp max_abs_frac
= -Tp(1);
11338 unsigned int num_datum
= sizeof(data164
)
11339 / sizeof(testcase_hyperg
<double>);
11340 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11342 const Tp f
= std::tr1::hyperg(Tp(data164
[i
].a
), Tp(data164
[i
].b
),
11343 Tp(data164
[i
].c
), Tp(data164
[i
].x
));
11344 const Tp f0
= data164
[i
].f0
;
11345 const Tp diff
= f
- f0
;
11346 if (std::abs(diff
) > max_abs_diff
)
11347 max_abs_diff
= std::abs(diff
);
11348 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11350 const Tp frac
= diff
/ f0
;
11351 if (std::abs(frac
) > max_abs_frac
)
11352 max_abs_frac
= std::abs(frac
);
11355 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
11358 // Test data for a=5.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
11359 testcase_hyperg
<double> data165
[] = {
11360 { 0.17885405888526873, 5.0000000000000000, 5.0000000000000000,
11361 10.000000000000000, -0.90000000000000002 },
11362 { 0.20861302518993380, 5.0000000000000000, 5.0000000000000000,
11363 10.000000000000000, -0.80000000000000004 },
11364 { 0.24504033307244924, 5.0000000000000000, 5.0000000000000000,
11365 10.000000000000000, -0.69999999999999996 },
11366 { 0.29007236051133478, 5.0000000000000000, 5.0000000000000000,
11367 10.000000000000000, -0.59999999999999998 },
11368 { 0.34635542859732726, 5.0000000000000000, 5.0000000000000000,
11369 10.000000000000000, -0.50000000000000000 },
11370 { 0.41756858504598376, 5.0000000000000000, 5.0000000000000000,
11371 10.000000000000000, -0.40000000000000002 },
11372 { 0.50892615622124382, 5.0000000000000000, 5.0000000000000000,
11373 10.000000000000000, -0.30000000000000004 },
11374 { 0.62798173270509761, 5.0000000000000000, 5.0000000000000000,
11375 10.000000000000000, -0.19999999999999996 },
11376 { 0.78595487360378424, 5.0000000000000000, 5.0000000000000000,
11377 10.000000000000000, -0.099999999999999978 },
11378 { 1.0000000000000000, 5.0000000000000000, 5.0000000000000000,
11379 10.000000000000000, 0.0000000000000000 },
11380 { 1.2972517637384813, 5.0000000000000000, 5.0000000000000000,
11381 10.000000000000000, 0.10000000000000009 },
11382 { 1.7224028197396388, 5.0000000000000000, 5.0000000000000000,
11383 10.000000000000000, 0.19999999999999996 },
11384 { 2.3527690438263305, 5.0000000000000000, 5.0000000000000000,
11385 10.000000000000000, 0.30000000000000004 },
11386 { 3.3305218060101116, 5.0000000000000000, 5.0000000000000000,
11387 10.000000000000000, 0.39999999999999991 },
11388 { 4.9383884076775466, 5.0000000000000000, 5.0000000000000000,
11389 10.000000000000000, 0.50000000000000000 },
11390 { 7.8007604680775229, 5.0000000000000000, 5.0000000000000000,
11391 10.000000000000000, 0.60000000000000009 },
11392 { 13.518663719271885, 5.0000000000000000, 5.0000000000000000,
11393 10.000000000000000, 0.69999999999999996 },
11394 { 27.285345906502567, 5.0000000000000000, 5.0000000000000000,
11395 10.000000000000000, 0.80000000000000004 },
11396 { 75.572415101501988, 5.0000000000000000, 5.0000000000000000,
11397 10.000000000000000, 0.89999999999999991 },
11400 // Test function for a=5.0000000000000000, b=5.0000000000000000, c=10.000000000000000.
11401 template <typename Tp
>
11404 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11405 Tp max_abs_diff
= -Tp(1);
11406 Tp max_abs_frac
= -Tp(1);
11407 unsigned int num_datum
= sizeof(data165
)
11408 / sizeof(testcase_hyperg
<double>);
11409 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11411 const Tp f
= std::tr1::hyperg(Tp(data165
[i
].a
), Tp(data165
[i
].b
),
11412 Tp(data165
[i
].c
), Tp(data165
[i
].x
));
11413 const Tp f0
= data165
[i
].f0
;
11414 const Tp diff
= f
- f0
;
11415 if (std::abs(diff
) > max_abs_diff
)
11416 max_abs_diff
= std::abs(diff
);
11417 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11419 const Tp frac
= diff
/ f0
;
11420 if (std::abs(frac
) > max_abs_frac
)
11421 max_abs_frac
= std::abs(frac
);
11424 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
11427 // Test data for a=5.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
11428 testcase_hyperg
<double> data166
[] = {
11429 { 0.00063586451658060152, 5.0000000000000000, 10.000000000000000,
11430 2.0000000000000000, -0.90000000000000002 },
11431 { 0.0010334743461762443, 5.0000000000000000, 10.000000000000000,
11432 2.0000000000000000, -0.80000000000000004 },
11433 { 0.0015326246054669515, 5.0000000000000000, 10.000000000000000,
11434 2.0000000000000000, -0.69999999999999996 },
11435 { 0.0019007018181583387, 5.0000000000000000, 10.000000000000000,
11436 2.0000000000000000, -0.59999999999999998 },
11437 { 0.0012845577715431577, 5.0000000000000000, 10.000000000000000,
11438 2.0000000000000000, -0.50000000000000000 },
11439 { -0.0027213806178058826, 5.0000000000000000, 10.000000000000000,
11440 2.0000000000000000, -0.40000000000000002 },
11441 { -0.015121744574954068, 5.0000000000000000, 10.000000000000000,
11442 2.0000000000000000, -0.30000000000000004 },
11443 { -0.036637840562974443, 5.0000000000000000, 10.000000000000000,
11444 2.0000000000000000, -0.19999999999999996 },
11445 { 0.019117849062621491, 5.0000000000000000, 10.000000000000000,
11446 2.0000000000000000, -0.099999999999999978 },
11447 { 1.0000000000000000, 5.0000000000000000, 10.000000000000000,
11448 2.0000000000000000, 0.0000000000000000 },
11449 { 9.8116901852350615, 5.0000000000000000, 10.000000000000000,
11450 2.0000000000000000, 0.10000000000000009 },
11451 { 84.255589172244044, 5.0000000000000000, 10.000000000000000,
11452 2.0000000000000000, 0.19999999999999996 },
11453 { 773.87517619421294, 5.0000000000000000, 10.000000000000000,
11454 2.0000000000000000, 0.30000000000000004 },
11455 { 8556.9725363053585, 5.0000000000000000, 10.000000000000000,
11456 2.0000000000000000, 0.39999999999999991 },
11457 { 129023.99999999996, 5.0000000000000000, 10.000000000000000,
11458 2.0000000000000000, 0.50000000000000000 },
11459 { 3174543.3807373112, 5.0000000000000000, 10.000000000000000,
11460 2.0000000000000000, 0.60000000000000009 },
11461 { 175133896.95814410, 5.0000000000000000, 10.000000000000000,
11462 2.0000000000000000, 0.69999999999999996 },
11463 { 43564453125.000061, 5.0000000000000000, 10.000000000000000,
11464 2.0000000000000000, 0.80000000000000004 },
11465 { 446859999999993.50, 5.0000000000000000, 10.000000000000000,
11466 2.0000000000000000, 0.89999999999999991 },
11469 // Test function for a=5.0000000000000000, b=10.000000000000000, c=2.0000000000000000.
11470 template <typename Tp
>
11473 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11474 Tp max_abs_diff
= -Tp(1);
11475 Tp max_abs_frac
= -Tp(1);
11476 unsigned int num_datum
= sizeof(data166
)
11477 / sizeof(testcase_hyperg
<double>);
11478 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11480 const Tp f
= std::tr1::hyperg(Tp(data166
[i
].a
), Tp(data166
[i
].b
),
11481 Tp(data166
[i
].c
), Tp(data166
[i
].x
));
11482 const Tp f0
= data166
[i
].f0
;
11483 const Tp diff
= f
- f0
;
11484 if (std::abs(diff
) > max_abs_diff
)
11485 max_abs_diff
= std::abs(diff
);
11486 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11488 const Tp frac
= diff
/ f0
;
11489 if (std::abs(frac
) > max_abs_frac
)
11490 max_abs_frac
= std::abs(frac
);
11493 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-11));
11496 // Test data for a=5.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
11497 testcase_hyperg
<double> data167
[] = {
11498 { -0.00030045430691819899, 5.0000000000000000, 10.000000000000000,
11499 4.0000000000000000, -0.90000000000000002 },
11500 { -0.00031119487747328581, 5.0000000000000000, 10.000000000000000,
11501 4.0000000000000000, -0.80000000000000004 },
11502 { -0.00014589213141649274, 5.0000000000000000, 10.000000000000000,
11503 4.0000000000000000, -0.69999999999999996 },
11504 { 0.00056843418860809121, 5.0000000000000000, 10.000000000000000,
11505 4.0000000000000000, -0.59999999999999998 },
11506 { 0.0028902549859721725, 5.0000000000000000, 10.000000000000000,
11507 4.0000000000000000, -0.50000000000000000 },
11508 { 0.0098776037238877470, 5.0000000000000000, 10.000000000000000,
11509 4.0000000000000000, -0.40000000000000002 },
11510 { 0.030689217428863914, 5.0000000000000000, 10.000000000000000,
11511 4.0000000000000000, -0.30000000000000004 },
11512 { 0.094211590019076599, 5.0000000000000000, 10.000000000000000,
11513 4.0000000000000000, -0.19999999999999996 },
11514 { 0.29791981455918376, 5.0000000000000000, 10.000000000000000,
11515 4.0000000000000000, -0.099999999999999978 },
11516 { 1.0000000000000000, 5.0000000000000000, 10.000000000000000,
11517 4.0000000000000000, 0.0000000000000000 },
11518 { 3.6646308771236793, 5.0000000000000000, 10.000000000000000,
11519 4.0000000000000000, 0.10000000000000009 },
11520 { 15.133991837501521, 5.0000000000000000, 10.000000000000000,
11521 4.0000000000000000, 0.19999999999999996 },
11522 { 73.331330046144089, 5.0000000000000000, 10.000000000000000,
11523 4.0000000000000000, 0.30000000000000004 },
11524 { 441.01791167787133, 5.0000000000000000, 10.000000000000000,
11525 4.0000000000000000, 0.39999999999999991 },
11526 { 3583.9999999999991, 5.0000000000000000, 10.000000000000000,
11527 4.0000000000000000, 0.50000000000000000 },
11528 { 45299.530029296984, 5.0000000000000000, 10.000000000000000,
11529 4.0000000000000000, 0.60000000000000009 },
11530 { 1157231.0002427341, 5.0000000000000000, 10.000000000000000,
11531 4.0000000000000000, 0.69999999999999996 },
11532 { 107421875.00000016, 5.0000000000000000, 10.000000000000000,
11533 4.0000000000000000, 0.80000000000000004 },
11534 { 234999999999.99734, 5.0000000000000000, 10.000000000000000,
11535 4.0000000000000000, 0.89999999999999991 },
11538 // Test function for a=5.0000000000000000, b=10.000000000000000, c=4.0000000000000000.
11539 template <typename Tp
>
11542 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11543 Tp max_abs_diff
= -Tp(1);
11544 Tp max_abs_frac
= -Tp(1);
11545 unsigned int num_datum
= sizeof(data167
)
11546 / sizeof(testcase_hyperg
<double>);
11547 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11549 const Tp f
= std::tr1::hyperg(Tp(data167
[i
].a
), Tp(data167
[i
].b
),
11550 Tp(data167
[i
].c
), Tp(data167
[i
].x
));
11551 const Tp f0
= data167
[i
].f0
;
11552 const Tp diff
= f
- f0
;
11553 if (std::abs(diff
) > max_abs_diff
)
11554 max_abs_diff
= std::abs(diff
);
11555 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11557 const Tp frac
= diff
/ f0
;
11558 if (std::abs(frac
) > max_abs_frac
)
11559 max_abs_frac
= std::abs(frac
);
11562 VERIFY(max_abs_frac
< Tp(2.5000000000000014e-11));
11565 // Test data for a=5.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
11566 testcase_hyperg
<double> data168
[] = {
11567 { 0.0058530497315411210, 5.0000000000000000, 10.000000000000000,
11568 6.0000000000000000, -0.90000000000000002 },
11569 { 0.0088526869356855692, 5.0000000000000000, 10.000000000000000,
11570 6.0000000000000000, -0.80000000000000004 },
11571 { 0.013770987983443108, 5.0000000000000000, 10.000000000000000,
11572 6.0000000000000000, -0.69999999999999996 },
11573 { 0.022108932690960800, 5.0000000000000000, 10.000000000000000,
11574 6.0000000000000000, -0.59999999999999998 },
11575 { 0.036786236450921578, 5.0000000000000000, 10.000000000000000,
11576 6.0000000000000000, -0.50000000000000000 },
11577 { 0.063750669040426422, 5.0000000000000000, 10.000000000000000,
11578 6.0000000000000000, -0.40000000000000002 },
11579 { 0.11577228680714464, 5.0000000000000000, 10.000000000000000,
11580 6.0000000000000000, -0.30000000000000004 },
11581 { 0.22197573416125735, 5.0000000000000000, 10.000000000000000,
11582 6.0000000000000000, -0.19999999999999996 },
11583 { 0.45361312968415268, 5.0000000000000000, 10.000000000000000,
11584 6.0000000000000000, -0.099999999999999978 },
11585 { 1.0000000000000000, 5.0000000000000000, 10.000000000000000,
11586 6.0000000000000000, 0.0000000000000000 },
11587 { 2.4162889363082747, 5.0000000000000000, 10.000000000000000,
11588 6.0000000000000000, 0.10000000000000009 },
11589 { 6.5381564791240399, 5.0000000000000000, 10.000000000000000,
11590 6.0000000000000000, 0.19999999999999996 },
11591 { 20.415771011498428, 5.0000000000000000, 10.000000000000000,
11592 6.0000000000000000, 0.30000000000000004 },
11593 { 76.870682056629221, 5.0000000000000000, 10.000000000000000,
11594 6.0000000000000000, 0.39999999999999991 },
11595 { 373.58730158730162, 5.0000000000000000, 10.000000000000000,
11596 6.0000000000000000, 0.50000000000000000 },
11597 { 2626.2555803571477, 5.0000000000000000, 10.000000000000000,
11598 6.0000000000000000, 0.60000000000000009 },
11599 { 33060.960671081048, 5.0000000000000000, 10.000000000000000,
11600 6.0000000000000000, 0.69999999999999996 },
11601 { 1203521.8253968258, 5.0000000000000000, 10.000000000000000,
11602 6.0000000000000000, 0.80000000000000004 },
11603 { 584564285.71427989, 5.0000000000000000, 10.000000000000000,
11604 6.0000000000000000, 0.89999999999999991 },
11607 // Test function for a=5.0000000000000000, b=10.000000000000000, c=6.0000000000000000.
11608 template <typename Tp
>
11611 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11612 Tp max_abs_diff
= -Tp(1);
11613 Tp max_abs_frac
= -Tp(1);
11614 unsigned int num_datum
= sizeof(data168
)
11615 / sizeof(testcase_hyperg
<double>);
11616 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11618 const Tp f
= std::tr1::hyperg(Tp(data168
[i
].a
), Tp(data168
[i
].b
),
11619 Tp(data168
[i
].c
), Tp(data168
[i
].x
));
11620 const Tp f0
= data168
[i
].f0
;
11621 const Tp diff
= f
- f0
;
11622 if (std::abs(diff
) > max_abs_diff
)
11623 max_abs_diff
= std::abs(diff
);
11624 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11626 const Tp frac
= diff
/ f0
;
11627 if (std::abs(frac
) > max_abs_frac
)
11628 max_abs_frac
= std::abs(frac
);
11631 VERIFY(max_abs_frac
< Tp(2.5000000000000015e-12));
11634 // Test data for a=5.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
11635 testcase_hyperg
<double> data169
[] = {
11636 { 0.020248990107069400, 5.0000000000000000, 10.000000000000000,
11637 8.0000000000000000, -0.90000000000000002 },
11638 { 0.027876687750502421, 5.0000000000000000, 10.000000000000000,
11639 8.0000000000000000, -0.80000000000000004 },
11640 { 0.039154648888447781, 5.0000000000000000, 10.000000000000000,
11641 8.0000000000000000, -0.69999999999999996 },
11642 { 0.056251883506774923, 5.0000000000000000, 10.000000000000000,
11643 8.0000000000000000, -0.59999999999999998 },
11644 { 0.082914189910074432, 5.0000000000000000, 10.000000000000000,
11645 8.0000000000000000, -0.50000000000000000 },
11646 { 0.12585357817786477, 5.0000000000000000, 10.000000000000000,
11647 8.0000000000000000, -0.40000000000000002 },
11648 { 0.19761423206224929, 5.0000000000000000, 10.000000000000000,
11649 8.0000000000000000, -0.30000000000000004 },
11650 { 0.32280443863359243, 5.0000000000000000, 10.000000000000000,
11651 8.0000000000000000, -0.19999999999999996 },
11652 { 0.55250024062839465, 5.0000000000000000, 10.000000000000000,
11653 8.0000000000000000, -0.099999999999999978 },
11654 { 1.0000000000000000, 5.0000000000000000, 10.000000000000000,
11655 8.0000000000000000, 0.0000000000000000 },
11656 { 1.9374297986599267, 5.0000000000000000, 10.000000000000000,
11657 8.0000000000000000, 0.10000000000000009 },
11658 { 4.0849049886067696, 5.0000000000000000, 10.000000000000000,
11659 8.0000000000000000, 0.19999999999999996 },
11660 { 9.5926988633258983, 5.0000000000000000, 10.000000000000000,
11661 8.0000000000000000, 0.30000000000000004 },
11662 { 25.958314281359531, 5.0000000000000000, 10.000000000000000,
11663 8.0000000000000000, 0.39999999999999991 },
11664 { 85.333333333333300, 5.0000000000000000, 10.000000000000000,
11665 8.0000000000000000, 0.50000000000000000 },
11666 { 372.31445312500028, 5.0000000000000000, 10.000000000000000,
11667 8.0000000000000000, 0.60000000000000009 },
11668 { 2545.3436976070675, 5.0000000000000000, 10.000000000000000,
11669 8.0000000000000000, 0.69999999999999996 },
11670 { 39583.333333333343, 5.0000000000000000, 10.000000000000000,
11671 8.0000000000000000, 0.80000000000000004 },
11672 { 4599999.9999999627, 5.0000000000000000, 10.000000000000000,
11673 8.0000000000000000, 0.89999999999999991 },
11676 // Test function for a=5.0000000000000000, b=10.000000000000000, c=8.0000000000000000.
11677 template <typename Tp
>
11680 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11681 Tp max_abs_diff
= -Tp(1);
11682 Tp max_abs_frac
= -Tp(1);
11683 unsigned int num_datum
= sizeof(data169
)
11684 / sizeof(testcase_hyperg
<double>);
11685 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11687 const Tp f
= std::tr1::hyperg(Tp(data169
[i
].a
), Tp(data169
[i
].b
),
11688 Tp(data169
[i
].c
), Tp(data169
[i
].x
));
11689 const Tp f0
= data169
[i
].f0
;
11690 const Tp diff
= f
- f0
;
11691 if (std::abs(diff
) > max_abs_diff
)
11692 max_abs_diff
= std::abs(diff
);
11693 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11695 const Tp frac
= diff
/ f0
;
11696 if (std::abs(frac
) > max_abs_frac
)
11697 max_abs_frac
= std::abs(frac
);
11700 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
11703 // Test data for a=5.0000000000000000, b=10.000000000000000, c=10.000000000000000.
11704 testcase_hyperg
<double> data170
[] = {
11705 { 0.040386107340619266, 5.0000000000000000, 10.000000000000000,
11706 10.000000000000000, -0.90000000000000002 },
11707 { 0.052922149401344633, 5.0000000000000000, 10.000000000000000,
11708 10.000000000000000, -0.80000000000000004 },
11709 { 0.070429627772374270, 5.0000000000000000, 10.000000000000000,
11710 10.000000000000000, -0.69999999999999996 },
11711 { 0.095367431640624972, 5.0000000000000000, 10.000000000000000,
11712 10.000000000000000, -0.59999999999999998 },
11713 { 0.13168724279835387, 5.0000000000000000, 10.000000000000000,
11714 10.000000000000000, -0.50000000000000000 },
11715 { 0.18593443208187066, 5.0000000000000000, 10.000000000000000,
11716 10.000000000000000, -0.40000000000000002 },
11717 { 0.26932907434290437, 5.0000000000000000, 10.000000000000000,
11718 10.000000000000000, -0.30000000000000004 },
11719 { 0.40187757201646096, 5.0000000000000000, 10.000000000000000,
11720 10.000000000000000, -0.19999999999999996 },
11721 { 0.62092132305915493, 5.0000000000000000, 10.000000000000000,
11722 10.000000000000000, -0.099999999999999978 },
11723 { 1.0000000000000000, 5.0000000000000000, 10.000000000000000,
11724 10.000000000000000, 0.0000000000000000 },
11725 { 1.6935087808430296, 5.0000000000000000, 10.000000000000000,
11726 10.000000000000000, 0.10000000000000009 },
11727 { 3.0517578124999991, 5.0000000000000000, 10.000000000000000,
11728 10.000000000000000, 0.19999999999999996 },
11729 { 5.9499018266198629, 5.0000000000000000, 10.000000000000000,
11730 10.000000000000000, 0.30000000000000004 },
11731 { 12.860082304526737, 5.0000000000000000, 10.000000000000000,
11732 10.000000000000000, 0.39999999999999991 },
11733 { 32.000000000000000, 5.0000000000000000, 10.000000000000000,
11734 10.000000000000000, 0.50000000000000000 },
11735 { 97.656250000000114, 5.0000000000000000, 10.000000000000000,
11736 10.000000000000000, 0.60000000000000009 },
11737 { 411.52263374485580, 5.0000000000000000, 10.000000000000000,
11738 10.000000000000000, 0.69999999999999996 },
11739 { 3124.9999999999991, 5.0000000000000000, 10.000000000000000,
11740 10.000000000000000, 0.80000000000000004 },
11741 { 99999.999999999665, 5.0000000000000000, 10.000000000000000,
11742 10.000000000000000, 0.89999999999999991 },
11745 // Test function for a=5.0000000000000000, b=10.000000000000000, c=10.000000000000000.
11746 template <typename Tp
>
11749 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11750 Tp max_abs_diff
= -Tp(1);
11751 Tp max_abs_frac
= -Tp(1);
11752 unsigned int num_datum
= sizeof(data170
)
11753 / sizeof(testcase_hyperg
<double>);
11754 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11756 const Tp f
= std::tr1::hyperg(Tp(data170
[i
].a
), Tp(data170
[i
].b
),
11757 Tp(data170
[i
].c
), Tp(data170
[i
].x
));
11758 const Tp f0
= data170
[i
].f0
;
11759 const Tp diff
= f
- f0
;
11760 if (std::abs(diff
) > max_abs_diff
)
11761 max_abs_diff
= std::abs(diff
);
11762 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11764 const Tp frac
= diff
/ f0
;
11765 if (std::abs(frac
) > max_abs_frac
)
11766 max_abs_frac
= std::abs(frac
);
11769 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
11772 // Test data for a=5.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
11773 testcase_hyperg
<double> data171
[] = {
11774 { -1.8650300348791041e-05, 5.0000000000000000, 20.000000000000000,
11775 2.0000000000000000, -0.90000000000000002 },
11776 { -3.6488008415183135e-05, 5.0000000000000000, 20.000000000000000,
11777 2.0000000000000000, -0.80000000000000004 },
11778 { -6.4614776410999025e-05, 5.0000000000000000, 20.000000000000000,
11779 2.0000000000000000, -0.69999999999999996 },
11780 { -8.4495207102575916e-05, 5.0000000000000000, 20.000000000000000,
11781 2.0000000000000000, -0.59999999999999998 },
11782 { 2.2276197023819217e-05, 5.0000000000000000, 20.000000000000000,
11783 2.0000000000000000, -0.50000000000000000 },
11784 { 0.00070736115111467578, 5.0000000000000000, 20.000000000000000,
11785 2.0000000000000000, -0.40000000000000002 },
11786 { 0.0027829732057272809, 5.0000000000000000, 20.000000000000000,
11787 2.0000000000000000, -0.30000000000000004 },
11788 { 0.0013283545664373570, 5.0000000000000000, 20.000000000000000,
11789 2.0000000000000000, -0.19999999999999996 },
11790 { -0.041767631015048733, 5.0000000000000000, 20.000000000000000,
11791 2.0000000000000000, -0.099999999999999978 },
11792 { 1.0000000000000000, 5.0000000000000000, 20.000000000000000,
11793 2.0000000000000000, 0.0000000000000000 },
11794 { 61.311496556100003, 5.0000000000000000, 20.000000000000000,
11795 2.0000000000000000, 0.10000000000000009 },
11796 { 2397.4420539085681, 5.0000000000000000, 20.000000000000000,
11797 2.0000000000000000, 0.19999999999999996 },
11798 { 103687.60998586559, 5.0000000000000000, 20.000000000000000,
11799 2.0000000000000000, 0.30000000000000004 },
11800 { 6247196.6451068865, 5.0000000000000000, 20.000000000000000,
11801 2.0000000000000000, 0.39999999999999991 },
11802 { 656408576.00000000, 5.0000000000000000, 20.000000000000000,
11803 2.0000000000000000, 0.50000000000000000 },
11804 { 165334768098.54715, 5.0000000000000000, 20.000000000000000,
11805 2.0000000000000000, 0.60000000000000009 },
11806 { 175097125520816.81, 5.0000000000000000, 20.000000000000000,
11807 2.0000000000000000, 0.69999999999999996 },
11808 { 2.6818275451660257e+18, 5.0000000000000000, 20.000000000000000,
11809 2.0000000000000000, 0.80000000000000004 },
11810 { 2.9794599999999321e+25, 5.0000000000000000, 20.000000000000000,
11811 2.0000000000000000, 0.89999999999999991 },
11814 // Test function for a=5.0000000000000000, b=20.000000000000000, c=2.0000000000000000.
11815 template <typename Tp
>
11818 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11819 Tp max_abs_diff
= -Tp(1);
11820 Tp max_abs_frac
= -Tp(1);
11821 unsigned int num_datum
= sizeof(data171
)
11822 / sizeof(testcase_hyperg
<double>);
11823 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11825 const Tp f
= std::tr1::hyperg(Tp(data171
[i
].a
), Tp(data171
[i
].b
),
11826 Tp(data171
[i
].c
), Tp(data171
[i
].x
));
11827 const Tp f0
= data171
[i
].f0
;
11828 const Tp diff
= f
- f0
;
11829 if (std::abs(diff
) > max_abs_diff
)
11830 max_abs_diff
= std::abs(diff
);
11831 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11833 const Tp frac
= diff
/ f0
;
11834 if (std::abs(frac
) > max_abs_frac
)
11835 max_abs_frac
= std::abs(frac
);
11838 VERIFY(max_abs_frac
< Tp(5.0000000000000034e-10));
11841 // Test data for a=5.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
11842 testcase_hyperg
<double> data172
[] = {
11843 { -3.6403884515183385e-06, 5.0000000000000000, 20.000000000000000,
11844 4.0000000000000000, -0.90000000000000002 },
11845 { -9.5873829247725586e-06, 5.0000000000000000, 20.000000000000000,
11846 4.0000000000000000, -0.80000000000000004 },
11847 { -2.6052245147354694e-05, 5.0000000000000000, 20.000000000000000,
11848 4.0000000000000000, -0.69999999999999996 },
11849 { -7.2378303598294010e-05, 5.0000000000000000, 20.000000000000000,
11850 4.0000000000000000, -0.59999999999999998 },
11851 { -0.00020048577321454082, 5.0000000000000000, 20.000000000000000,
11852 4.0000000000000000, -0.50000000000000000 },
11853 { -0.00051222704046236022, 5.0000000000000000, 20.000000000000000,
11854 4.0000000000000000, -0.40000000000000002 },
11855 { -0.00080950511491911315, 5.0000000000000000, 20.000000000000000,
11856 4.0000000000000000, -0.30000000000000004 },
11857 { 0.0043473422174314449, 5.0000000000000000, 20.000000000000000,
11858 4.0000000000000000, -0.19999999999999996 },
11859 { 0.081078342558623825, 5.0000000000000000, 20.000000000000000,
11860 4.0000000000000000, -0.099999999999999978 },
11861 { 1.0000000000000000, 5.0000000000000000, 20.000000000000000,
11862 4.0000000000000000, 0.0000000000000000 },
11863 { 12.794854084397739, 5.0000000000000000, 20.000000000000000,
11864 4.0000000000000000, 0.10000000000000009 },
11865 { 195.15639104739046, 5.0000000000000000, 20.000000000000000,
11866 4.0000000000000000, 0.19999999999999996 },
11867 { 3938.7991953190131, 5.0000000000000000, 20.000000000000000,
11868 4.0000000000000000, 0.30000000000000004 },
11869 { 118521.48653762060, 5.0000000000000000, 20.000000000000000,
11870 4.0000000000000000, 0.39999999999999991 },
11871 { 6291455.9999999972, 5.0000000000000000, 20.000000000000000,
11872 4.0000000000000000, 0.50000000000000000 },
11873 { 773070496.50699198, 5.0000000000000000, 20.000000000000000,
11874 4.0000000000000000, 0.60000000000000009 },
11875 { 363276452167.04102, 5.0000000000000000, 20.000000000000000,
11876 4.0000000000000000, 0.69999999999999996 },
11877 { 2002716064453133.0, 5.0000000000000000, 20.000000000000000,
11878 4.0000000000000000, 0.80000000000000004 },
11879 { 4.5999999999999109e+21, 5.0000000000000000, 20.000000000000000,
11880 4.0000000000000000, 0.89999999999999991 },
11883 // Test function for a=5.0000000000000000, b=20.000000000000000, c=4.0000000000000000.
11884 template <typename Tp
>
11887 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11888 Tp max_abs_diff
= -Tp(1);
11889 Tp max_abs_frac
= -Tp(1);
11890 unsigned int num_datum
= sizeof(data172
)
11891 / sizeof(testcase_hyperg
<double>);
11892 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11894 const Tp f
= std::tr1::hyperg(Tp(data172
[i
].a
), Tp(data172
[i
].b
),
11895 Tp(data172
[i
].c
), Tp(data172
[i
].x
));
11896 const Tp f0
= data172
[i
].f0
;
11897 const Tp diff
= f
- f0
;
11898 if (std::abs(diff
) > max_abs_diff
)
11899 max_abs_diff
= std::abs(diff
);
11900 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11902 const Tp frac
= diff
/ f0
;
11903 if (std::abs(frac
) > max_abs_frac
)
11904 max_abs_frac
= std::abs(frac
);
11907 VERIFY(max_abs_frac
< Tp(2.5000000000000013e-09));
11910 // Test data for a=5.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
11911 testcase_hyperg
<double> data173
[] = {
11912 { 0.00014313323624069244, 5.0000000000000000, 20.000000000000000,
11913 6.0000000000000000, -0.90000000000000002 },
11914 { 0.00025426183473140697, 5.0000000000000000, 20.000000000000000,
11915 6.0000000000000000, -0.80000000000000004 },
11916 { 0.00048255612836426809, 5.0000000000000000, 20.000000000000000,
11917 6.0000000000000000, -0.69999999999999996 },
11918 { 0.00099096904674788092, 5.0000000000000000, 20.000000000000000,
11919 6.0000000000000000, -0.59999999999999998 },
11920 { 0.0022347805521915607, 5.0000000000000000, 20.000000000000000,
11921 6.0000000000000000, -0.50000000000000000 },
11922 { 0.0056271390060292376, 5.0000000000000000, 20.000000000000000,
11923 6.0000000000000000, -0.40000000000000002 },
11924 { 0.016109059519227226, 5.0000000000000000, 20.000000000000000,
11925 6.0000000000000000, -0.30000000000000004 },
11926 { 0.053453465775608999, 5.0000000000000000, 20.000000000000000,
11927 6.0000000000000000, -0.19999999999999996 },
11928 { 0.20995202901839258, 5.0000000000000000, 20.000000000000000,
11929 6.0000000000000000, -0.099999999999999978 },
11930 { 1.0000000000000000, 5.0000000000000000, 20.000000000000000,
11931 6.0000000000000000, 0.0000000000000000 },
11932 { 5.9534372167648799, 5.0000000000000000, 20.000000000000000,
11933 6.0000000000000000, 0.10000000000000009 },
11934 { 46.157632071205875, 5.0000000000000000, 20.000000000000000,
11935 6.0000000000000000, 0.19999999999999996 },
11936 { 494.32074431164915, 5.0000000000000000, 20.000000000000000,
11937 6.0000000000000000, 0.30000000000000004 },
11938 { 7989.5277611775946, 5.0000000000000000, 20.000000000000000,
11939 6.0000000000000000, 0.39999999999999991 },
11940 { 224179.55830753347, 5.0000000000000000, 20.000000000000000,
11941 6.0000000000000000, 0.50000000000000000 },
11942 { 13848144.485282511, 5.0000000000000000, 20.000000000000000,
11943 6.0000000000000000, 0.60000000000000009 },
11944 { 2948587692.8891716, 5.0000000000000000, 20.000000000000000,
11945 6.0000000000000000, 0.69999999999999996 },
11946 { 5940513286161.6602, 5.0000000000000000, 20.000000000000000,
11947 6.0000000000000000, 0.80000000000000004 },
11948 { 2.8531757655945201e+18, 5.0000000000000000, 20.000000000000000,
11949 6.0000000000000000, 0.89999999999999991 },
11952 // Test function for a=5.0000000000000000, b=20.000000000000000, c=6.0000000000000000.
11953 template <typename Tp
>
11956 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
11957 Tp max_abs_diff
= -Tp(1);
11958 Tp max_abs_frac
= -Tp(1);
11959 unsigned int num_datum
= sizeof(data173
)
11960 / sizeof(testcase_hyperg
<double>);
11961 for (unsigned int i
= 0; i
< num_datum
; ++i
)
11963 const Tp f
= std::tr1::hyperg(Tp(data173
[i
].a
), Tp(data173
[i
].b
),
11964 Tp(data173
[i
].c
), Tp(data173
[i
].x
));
11965 const Tp f0
= data173
[i
].f0
;
11966 const Tp diff
= f
- f0
;
11967 if (std::abs(diff
) > max_abs_diff
)
11968 max_abs_diff
= std::abs(diff
);
11969 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
11971 const Tp frac
= diff
/ f0
;
11972 if (std::abs(frac
) > max_abs_frac
)
11973 max_abs_frac
= std::abs(frac
);
11976 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-10));
11979 // Test data for a=5.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
11980 testcase_hyperg
<double> data174
[] = {
11981 { 0.0012492049968742865, 5.0000000000000000, 20.000000000000000,
11982 8.0000000000000000, -0.90000000000000002 },
11983 { 0.0019931241968014451, 5.0000000000000000, 20.000000000000000,
11984 8.0000000000000000, -0.80000000000000004 },
11985 { 0.0033203386861411057, 5.0000000000000000, 20.000000000000000,
11986 8.0000000000000000, -0.69999999999999996 },
11987 { 0.0058191894509855282, 5.0000000000000000, 20.000000000000000,
11988 8.0000000000000000, -0.59999999999999998 },
11989 { 0.010830090368313866, 5.0000000000000000, 20.000000000000000,
11990 8.0000000000000000, -0.50000000000000000 },
11991 { 0.021653062305193163, 5.0000000000000000, 20.000000000000000,
11992 8.0000000000000000, -0.40000000000000002 },
11993 { 0.047180821280919084, 5.0000000000000000, 20.000000000000000,
11994 8.0000000000000000, -0.30000000000000004 },
11995 { 0.11405637279736180, 5.0000000000000000, 20.000000000000000,
11996 8.0000000000000000, -0.19999999999999996 },
11997 { 0.31275468794720990, 5.0000000000000000, 20.000000000000000,
11998 8.0000000000000000, -0.099999999999999978 },
11999 { 1.0000000000000000, 5.0000000000000000, 20.000000000000000,
12000 8.0000000000000000, 0.0000000000000000 },
12001 { 3.8598904658643969, 5.0000000000000000, 20.000000000000000,
12002 8.0000000000000000, 0.10000000000000009 },
12003 { 18.806301417906667, 5.0000000000000000, 20.000000000000000,
12004 8.0000000000000000, 0.19999999999999996 },
12005 { 122.77054465017432, 5.0000000000000000, 20.000000000000000,
12006 8.0000000000000000, 0.30000000000000004 },
12007 { 1168.4762146808946, 5.0000000000000000, 20.000000000000000,
12008 8.0000000000000000, 0.39999999999999991 },
12009 { 18437.511788521082, 5.0000000000000000, 20.000000000000000,
12010 8.0000000000000000, 0.50000000000000000 },
12011 { 597441.79669264762, 5.0000000000000000, 20.000000000000000,
12012 8.0000000000000000, 0.60000000000000009 },
12013 { 59390411.369227782, 5.0000000000000000, 20.000000000000000,
12014 8.0000000000000000, 0.69999999999999996 },
12015 { 44681668993.361603, 5.0000000000000000, 20.000000000000000,
12016 8.0000000000000000, 0.80000000000000004 },
12017 { 4559673269683164.0, 5.0000000000000000, 20.000000000000000,
12018 8.0000000000000000, 0.89999999999999991 },
12021 // Test function for a=5.0000000000000000, b=20.000000000000000, c=8.0000000000000000.
12022 template <typename Tp
>
12025 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12026 Tp max_abs_diff
= -Tp(1);
12027 Tp max_abs_frac
= -Tp(1);
12028 unsigned int num_datum
= sizeof(data174
)
12029 / sizeof(testcase_hyperg
<double>);
12030 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12032 const Tp f
= std::tr1::hyperg(Tp(data174
[i
].a
), Tp(data174
[i
].b
),
12033 Tp(data174
[i
].c
), Tp(data174
[i
].x
));
12034 const Tp f0
= data174
[i
].f0
;
12035 const Tp diff
= f
- f0
;
12036 if (std::abs(diff
) > max_abs_diff
)
12037 max_abs_diff
= std::abs(diff
);
12038 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12040 const Tp frac
= diff
/ f0
;
12041 if (std::abs(frac
) > max_abs_frac
)
12042 max_abs_frac
= std::abs(frac
);
12045 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-11));
12048 // Test data for a=5.0000000000000000, b=20.000000000000000, c=10.000000000000000.
12049 testcase_hyperg
<double> data175
[] = {
12050 { 0.0038867957051371450, 5.0000000000000000, 20.000000000000000,
12051 10.000000000000000, -0.90000000000000002 },
12052 { 0.0058484892597364443, 5.0000000000000000, 20.000000000000000,
12053 10.000000000000000, -0.80000000000000004 },
12054 { 0.0090987656053757009, 5.0000000000000000, 20.000000000000000,
12055 10.000000000000000, -0.69999999999999996 },
12056 { 0.014714392537270733, 5.0000000000000000, 20.000000000000000,
12057 10.000000000000000, -0.59999999999999998 },
12058 { 0.024900404542056769, 5.0000000000000000, 20.000000000000000,
12059 10.000000000000000, -0.50000000000000000 },
12060 { 0.044460184663785055, 5.0000000000000000, 20.000000000000000,
12061 10.000000000000000, -0.40000000000000002 },
12062 { 0.084638849196356836, 5.0000000000000000, 20.000000000000000,
12063 10.000000000000000, -0.30000000000000004 },
12064 { 0.17409058241290998, 5.0000000000000000, 20.000000000000000,
12065 10.000000000000000, -0.19999999999999996 },
12066 { 0.39357055823580755, 5.0000000000000000, 20.000000000000000,
12067 10.000000000000000, -0.099999999999999978 },
12068 { 1.0000000000000000, 5.0000000000000000, 20.000000000000000,
12069 10.000000000000000, 0.0000000000000000 },
12070 { 2.9410794636226596, 5.0000000000000000, 20.000000000000000,
12071 10.000000000000000, 0.10000000000000009 },
12072 { 10.417226071414344, 5.0000000000000000, 20.000000000000000,
12073 10.000000000000000, 0.19999999999999996 },
12074 { 46.930585873140835, 5.0000000000000000, 20.000000000000000,
12075 10.000000000000000, 0.30000000000000004 },
12076 { 290.76717121814852, 5.0000000000000000, 20.000000000000000,
12077 10.000000000000000, 0.39999999999999991 },
12078 { 2788.1641083374830, 5.0000000000000000, 20.000000000000000,
12079 10.000000000000000, 0.50000000000000000 },
12080 { 50228.117718560752, 5.0000000000000000, 20.000000000000000,
12081 10.000000000000000, 0.60000000000000009 },
12082 { 2433042.3476752634, 5.0000000000000000, 20.000000000000000,
12083 10.000000000000000, 0.69999999999999996 },
12084 { 705345246.77141762, 5.0000000000000000, 20.000000000000000,
12085 10.000000000000000, 0.80000000000000004 },
12086 { 15652478868616.762, 5.0000000000000000, 20.000000000000000,
12087 10.000000000000000, 0.89999999999999991 },
12090 // Test function for a=5.0000000000000000, b=20.000000000000000, c=10.000000000000000.
12091 template <typename Tp
>
12094 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12095 Tp max_abs_diff
= -Tp(1);
12096 Tp max_abs_frac
= -Tp(1);
12097 unsigned int num_datum
= sizeof(data175
)
12098 / sizeof(testcase_hyperg
<double>);
12099 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12101 const Tp f
= std::tr1::hyperg(Tp(data175
[i
].a
), Tp(data175
[i
].b
),
12102 Tp(data175
[i
].c
), Tp(data175
[i
].x
));
12103 const Tp f0
= data175
[i
].f0
;
12104 const Tp diff
= f
- f0
;
12105 if (std::abs(diff
) > max_abs_diff
)
12106 max_abs_diff
= std::abs(diff
);
12107 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12109 const Tp frac
= diff
/ f0
;
12110 if (std::abs(frac
) > max_abs_frac
)
12111 max_abs_frac
= std::abs(frac
);
12114 VERIFY(max_abs_frac
< Tp(1.0000000000000008e-12));
12117 // Test data for a=10.000000000000000, b=0.0000000000000000, c=2.0000000000000000.
12118 testcase_hyperg
<double> data176
[] = {
12119 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12120 2.0000000000000000, -0.90000000000000002 },
12121 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12122 2.0000000000000000, -0.80000000000000004 },
12123 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12124 2.0000000000000000, -0.69999999999999996 },
12125 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12126 2.0000000000000000, -0.59999999999999998 },
12127 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12128 2.0000000000000000, -0.50000000000000000 },
12129 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12130 2.0000000000000000, -0.40000000000000002 },
12131 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12132 2.0000000000000000, -0.30000000000000004 },
12133 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12134 2.0000000000000000, -0.19999999999999996 },
12135 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12136 2.0000000000000000, -0.099999999999999978 },
12137 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12138 2.0000000000000000, 0.0000000000000000 },
12139 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12140 2.0000000000000000, 0.10000000000000009 },
12141 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12142 2.0000000000000000, 0.19999999999999996 },
12143 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12144 2.0000000000000000, 0.30000000000000004 },
12145 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12146 2.0000000000000000, 0.39999999999999991 },
12147 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12148 2.0000000000000000, 0.50000000000000000 },
12149 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12150 2.0000000000000000, 0.60000000000000009 },
12151 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12152 2.0000000000000000, 0.69999999999999996 },
12153 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12154 2.0000000000000000, 0.80000000000000004 },
12155 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12156 2.0000000000000000, 0.89999999999999991 },
12159 // Test function for a=10.000000000000000, b=0.0000000000000000, c=2.0000000000000000.
12160 template <typename Tp
>
12163 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12164 Tp max_abs_diff
= -Tp(1);
12165 Tp max_abs_frac
= -Tp(1);
12166 unsigned int num_datum
= sizeof(data176
)
12167 / sizeof(testcase_hyperg
<double>);
12168 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12170 const Tp f
= std::tr1::hyperg(Tp(data176
[i
].a
), Tp(data176
[i
].b
),
12171 Tp(data176
[i
].c
), Tp(data176
[i
].x
));
12172 const Tp f0
= data176
[i
].f0
;
12173 const Tp diff
= f
- f0
;
12174 if (std::abs(diff
) > max_abs_diff
)
12175 max_abs_diff
= std::abs(diff
);
12176 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12178 const Tp frac
= diff
/ f0
;
12179 if (std::abs(frac
) > max_abs_frac
)
12180 max_abs_frac
= std::abs(frac
);
12183 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12186 // Test data for a=10.000000000000000, b=0.0000000000000000, c=4.0000000000000000.
12187 testcase_hyperg
<double> data177
[] = {
12188 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12189 4.0000000000000000, -0.90000000000000002 },
12190 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12191 4.0000000000000000, -0.80000000000000004 },
12192 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12193 4.0000000000000000, -0.69999999999999996 },
12194 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12195 4.0000000000000000, -0.59999999999999998 },
12196 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12197 4.0000000000000000, -0.50000000000000000 },
12198 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12199 4.0000000000000000, -0.40000000000000002 },
12200 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12201 4.0000000000000000, -0.30000000000000004 },
12202 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12203 4.0000000000000000, -0.19999999999999996 },
12204 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12205 4.0000000000000000, -0.099999999999999978 },
12206 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12207 4.0000000000000000, 0.0000000000000000 },
12208 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12209 4.0000000000000000, 0.10000000000000009 },
12210 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12211 4.0000000000000000, 0.19999999999999996 },
12212 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12213 4.0000000000000000, 0.30000000000000004 },
12214 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12215 4.0000000000000000, 0.39999999999999991 },
12216 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12217 4.0000000000000000, 0.50000000000000000 },
12218 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12219 4.0000000000000000, 0.60000000000000009 },
12220 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12221 4.0000000000000000, 0.69999999999999996 },
12222 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12223 4.0000000000000000, 0.80000000000000004 },
12224 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12225 4.0000000000000000, 0.89999999999999991 },
12228 // Test function for a=10.000000000000000, b=0.0000000000000000, c=4.0000000000000000.
12229 template <typename Tp
>
12232 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12233 Tp max_abs_diff
= -Tp(1);
12234 Tp max_abs_frac
= -Tp(1);
12235 unsigned int num_datum
= sizeof(data177
)
12236 / sizeof(testcase_hyperg
<double>);
12237 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12239 const Tp f
= std::tr1::hyperg(Tp(data177
[i
].a
), Tp(data177
[i
].b
),
12240 Tp(data177
[i
].c
), Tp(data177
[i
].x
));
12241 const Tp f0
= data177
[i
].f0
;
12242 const Tp diff
= f
- f0
;
12243 if (std::abs(diff
) > max_abs_diff
)
12244 max_abs_diff
= std::abs(diff
);
12245 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12247 const Tp frac
= diff
/ f0
;
12248 if (std::abs(frac
) > max_abs_frac
)
12249 max_abs_frac
= std::abs(frac
);
12252 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12255 // Test data for a=10.000000000000000, b=0.0000000000000000, c=6.0000000000000000.
12256 testcase_hyperg
<double> data178
[] = {
12257 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12258 6.0000000000000000, -0.90000000000000002 },
12259 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12260 6.0000000000000000, -0.80000000000000004 },
12261 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12262 6.0000000000000000, -0.69999999999999996 },
12263 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12264 6.0000000000000000, -0.59999999999999998 },
12265 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12266 6.0000000000000000, -0.50000000000000000 },
12267 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12268 6.0000000000000000, -0.40000000000000002 },
12269 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12270 6.0000000000000000, -0.30000000000000004 },
12271 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12272 6.0000000000000000, -0.19999999999999996 },
12273 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12274 6.0000000000000000, -0.099999999999999978 },
12275 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12276 6.0000000000000000, 0.0000000000000000 },
12277 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12278 6.0000000000000000, 0.10000000000000009 },
12279 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12280 6.0000000000000000, 0.19999999999999996 },
12281 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12282 6.0000000000000000, 0.30000000000000004 },
12283 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12284 6.0000000000000000, 0.39999999999999991 },
12285 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12286 6.0000000000000000, 0.50000000000000000 },
12287 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12288 6.0000000000000000, 0.60000000000000009 },
12289 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12290 6.0000000000000000, 0.69999999999999996 },
12291 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12292 6.0000000000000000, 0.80000000000000004 },
12293 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12294 6.0000000000000000, 0.89999999999999991 },
12297 // Test function for a=10.000000000000000, b=0.0000000000000000, c=6.0000000000000000.
12298 template <typename Tp
>
12301 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12302 Tp max_abs_diff
= -Tp(1);
12303 Tp max_abs_frac
= -Tp(1);
12304 unsigned int num_datum
= sizeof(data178
)
12305 / sizeof(testcase_hyperg
<double>);
12306 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12308 const Tp f
= std::tr1::hyperg(Tp(data178
[i
].a
), Tp(data178
[i
].b
),
12309 Tp(data178
[i
].c
), Tp(data178
[i
].x
));
12310 const Tp f0
= data178
[i
].f0
;
12311 const Tp diff
= f
- f0
;
12312 if (std::abs(diff
) > max_abs_diff
)
12313 max_abs_diff
= std::abs(diff
);
12314 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12316 const Tp frac
= diff
/ f0
;
12317 if (std::abs(frac
) > max_abs_frac
)
12318 max_abs_frac
= std::abs(frac
);
12321 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12324 // Test data for a=10.000000000000000, b=0.0000000000000000, c=8.0000000000000000.
12325 testcase_hyperg
<double> data179
[] = {
12326 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12327 8.0000000000000000, -0.90000000000000002 },
12328 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12329 8.0000000000000000, -0.80000000000000004 },
12330 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12331 8.0000000000000000, -0.69999999999999996 },
12332 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12333 8.0000000000000000, -0.59999999999999998 },
12334 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12335 8.0000000000000000, -0.50000000000000000 },
12336 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12337 8.0000000000000000, -0.40000000000000002 },
12338 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12339 8.0000000000000000, -0.30000000000000004 },
12340 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12341 8.0000000000000000, -0.19999999999999996 },
12342 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12343 8.0000000000000000, -0.099999999999999978 },
12344 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12345 8.0000000000000000, 0.0000000000000000 },
12346 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12347 8.0000000000000000, 0.10000000000000009 },
12348 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12349 8.0000000000000000, 0.19999999999999996 },
12350 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12351 8.0000000000000000, 0.30000000000000004 },
12352 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12353 8.0000000000000000, 0.39999999999999991 },
12354 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12355 8.0000000000000000, 0.50000000000000000 },
12356 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12357 8.0000000000000000, 0.60000000000000009 },
12358 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12359 8.0000000000000000, 0.69999999999999996 },
12360 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12361 8.0000000000000000, 0.80000000000000004 },
12362 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12363 8.0000000000000000, 0.89999999999999991 },
12366 // Test function for a=10.000000000000000, b=0.0000000000000000, c=8.0000000000000000.
12367 template <typename Tp
>
12370 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12371 Tp max_abs_diff
= -Tp(1);
12372 Tp max_abs_frac
= -Tp(1);
12373 unsigned int num_datum
= sizeof(data179
)
12374 / sizeof(testcase_hyperg
<double>);
12375 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12377 const Tp f
= std::tr1::hyperg(Tp(data179
[i
].a
), Tp(data179
[i
].b
),
12378 Tp(data179
[i
].c
), Tp(data179
[i
].x
));
12379 const Tp f0
= data179
[i
].f0
;
12380 const Tp diff
= f
- f0
;
12381 if (std::abs(diff
) > max_abs_diff
)
12382 max_abs_diff
= std::abs(diff
);
12383 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12385 const Tp frac
= diff
/ f0
;
12386 if (std::abs(frac
) > max_abs_frac
)
12387 max_abs_frac
= std::abs(frac
);
12390 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12393 // Test data for a=10.000000000000000, b=0.0000000000000000, c=10.000000000000000.
12394 testcase_hyperg
<double> data180
[] = {
12395 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12396 10.000000000000000, -0.90000000000000002 },
12397 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12398 10.000000000000000, -0.80000000000000004 },
12399 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12400 10.000000000000000, -0.69999999999999996 },
12401 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12402 10.000000000000000, -0.59999999999999998 },
12403 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12404 10.000000000000000, -0.50000000000000000 },
12405 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12406 10.000000000000000, -0.40000000000000002 },
12407 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12408 10.000000000000000, -0.30000000000000004 },
12409 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12410 10.000000000000000, -0.19999999999999996 },
12411 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12412 10.000000000000000, -0.099999999999999978 },
12413 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12414 10.000000000000000, 0.0000000000000000 },
12415 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12416 10.000000000000000, 0.10000000000000009 },
12417 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12418 10.000000000000000, 0.19999999999999996 },
12419 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12420 10.000000000000000, 0.30000000000000004 },
12421 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12422 10.000000000000000, 0.39999999999999991 },
12423 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12424 10.000000000000000, 0.50000000000000000 },
12425 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12426 10.000000000000000, 0.60000000000000009 },
12427 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12428 10.000000000000000, 0.69999999999999996 },
12429 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12430 10.000000000000000, 0.80000000000000004 },
12431 { 1.0000000000000000, 10.000000000000000, 0.0000000000000000,
12432 10.000000000000000, 0.89999999999999991 },
12435 // Test function for a=10.000000000000000, b=0.0000000000000000, c=10.000000000000000.
12436 template <typename Tp
>
12439 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12440 Tp max_abs_diff
= -Tp(1);
12441 Tp max_abs_frac
= -Tp(1);
12442 unsigned int num_datum
= sizeof(data180
)
12443 / sizeof(testcase_hyperg
<double>);
12444 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12446 const Tp f
= std::tr1::hyperg(Tp(data180
[i
].a
), Tp(data180
[i
].b
),
12447 Tp(data180
[i
].c
), Tp(data180
[i
].x
));
12448 const Tp f0
= data180
[i
].f0
;
12449 const Tp diff
= f
- f0
;
12450 if (std::abs(diff
) > max_abs_diff
)
12451 max_abs_diff
= std::abs(diff
);
12452 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12454 const Tp frac
= diff
/ f0
;
12455 if (std::abs(frac
) > max_abs_frac
)
12456 max_abs_frac
= std::abs(frac
);
12459 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12462 // Test data for a=10.000000000000000, b=0.50000000000000000, c=2.0000000000000000.
12463 testcase_hyperg
<double> data181
[] = {
12464 { 0.37727530159464628, 10.000000000000000, 0.50000000000000000,
12465 2.0000000000000000, -0.90000000000000002 },
12466 { 0.39816010922169010, 10.000000000000000, 0.50000000000000000,
12467 2.0000000000000000, -0.80000000000000004 },
12468 { 0.42283703041362453, 10.000000000000000, 0.50000000000000000,
12469 2.0000000000000000, -0.69999999999999996 },
12470 { 0.45255640448730505, 10.000000000000000, 0.50000000000000000,
12471 2.0000000000000000, -0.59999999999999998 },
12472 { 0.48919507154431141, 10.000000000000000, 0.50000000000000000,
12473 2.0000000000000000, -0.50000000000000000 },
12474 { 0.53569358917731880, 10.000000000000000, 0.50000000000000000,
12475 2.0000000000000000, -0.40000000000000002 },
12476 { 0.59689778897029566, 10.000000000000000, 0.50000000000000000,
12477 2.0000000000000000, -0.30000000000000004 },
12478 { 0.68128587569875731, 10.000000000000000, 0.50000000000000000,
12479 2.0000000000000000, -0.19999999999999996 },
12480 { 0.80478739308790359, 10.000000000000000, 0.50000000000000000,
12481 2.0000000000000000, -0.099999999999999978 },
12482 { 1.0000000000000000, 10.000000000000000, 0.50000000000000000,
12483 2.0000000000000000, 0.0000000000000000 },
12484 { 1.3408664196153621, 10.000000000000000, 0.50000000000000000,
12485 2.0000000000000000, 0.10000000000000009 },
12486 { 2.0175364359923860, 10.000000000000000, 0.50000000000000000,
12487 2.0000000000000000, 0.19999999999999996 },
12488 { 3.6011214553736646, 10.000000000000000, 0.50000000000000000,
12489 2.0000000000000000, 0.30000000000000004 },
12490 { 8.1799429939495312, 10.000000000000000, 0.50000000000000000,
12491 2.0000000000000000, 0.39999999999999991 },
12492 { 25.644834637536000, 10.000000000000000, 0.50000000000000000,
12493 2.0000000000000000, 0.50000000000000000 },
12494 { 123.13738891597615, 10.000000000000000, 0.50000000000000000,
12495 2.0000000000000000, 0.60000000000000009 },
12496 { 1088.7122410321333, 10.000000000000000, 0.50000000000000000,
12497 2.0000000000000000, 0.69999999999999996 },
12498 { 27358.291704709951, 10.000000000000000, 0.50000000000000000,
12499 2.0000000000000000, 0.80000000000000004 },
12500 { 8174369.0266731177, 10.000000000000000, 0.50000000000000000,
12501 2.0000000000000000, 0.89999999999999991 },
12504 // Test function for a=10.000000000000000, b=0.50000000000000000, c=2.0000000000000000.
12505 template <typename Tp
>
12508 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12509 Tp max_abs_diff
= -Tp(1);
12510 Tp max_abs_frac
= -Tp(1);
12511 unsigned int num_datum
= sizeof(data181
)
12512 / sizeof(testcase_hyperg
<double>);
12513 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12515 const Tp f
= std::tr1::hyperg(Tp(data181
[i
].a
), Tp(data181
[i
].b
),
12516 Tp(data181
[i
].c
), Tp(data181
[i
].x
));
12517 const Tp f0
= data181
[i
].f0
;
12518 const Tp diff
= f
- f0
;
12519 if (std::abs(diff
) > max_abs_diff
)
12520 max_abs_diff
= std::abs(diff
);
12521 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12523 const Tp frac
= diff
/ f0
;
12524 if (std::abs(frac
) > max_abs_frac
)
12525 max_abs_frac
= std::abs(frac
);
12528 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12531 // Test data for a=10.000000000000000, b=0.50000000000000000, c=4.0000000000000000.
12532 testcase_hyperg
<double> data182
[] = {
12533 { 0.53905528308450834, 10.000000000000000, 0.50000000000000000,
12534 4.0000000000000000, -0.90000000000000002 },
12535 { 0.56235533974376162, 10.000000000000000, 0.50000000000000000,
12536 4.0000000000000000, -0.80000000000000004 },
12537 { 0.58887657983263575, 10.000000000000000, 0.50000000000000000,
12538 4.0000000000000000, -0.69999999999999996 },
12539 { 0.61941227047262915, 10.000000000000000, 0.50000000000000000,
12540 4.0000000000000000, -0.59999999999999998 },
12541 { 0.65504896640793853, 10.000000000000000, 0.50000000000000000,
12542 4.0000000000000000, -0.50000000000000000 },
12543 { 0.69731666644529999, 10.000000000000000, 0.50000000000000000,
12544 4.0000000000000000, -0.40000000000000002 },
12545 { 0.74844073299399128, 10.000000000000000, 0.50000000000000000,
12546 4.0000000000000000, -0.30000000000000004 },
12547 { 0.81178446800105752, 10.000000000000000, 0.50000000000000000,
12548 4.0000000000000000, -0.19999999999999996 },
12549 { 0.89266981277598023, 10.000000000000000, 0.50000000000000000,
12550 4.0000000000000000, -0.099999999999999978 },
12551 { 1.0000000000000000, 10.000000000000000, 0.50000000000000000,
12552 4.0000000000000000, 0.0000000000000000 },
12553 { 1.1497248473106778, 10.000000000000000, 0.50000000000000000,
12554 4.0000000000000000, 0.10000000000000009 },
12555 { 1.3729717112654571, 10.000000000000000, 0.50000000000000000,
12556 4.0000000000000000, 0.19999999999999996 },
12557 { 1.7374982340374392, 10.000000000000000, 0.50000000000000000,
12558 4.0000000000000000, 0.30000000000000004 },
12559 { 2.4134479340960580, 10.000000000000000, 0.50000000000000000,
12560 4.0000000000000000, 0.39999999999999991 },
12561 { 3.9191255240471192, 10.000000000000000, 0.50000000000000000,
12562 4.0000000000000000, 0.50000000000000000 },
12563 { 8.3316373077761270, 10.000000000000000, 0.50000000000000000,
12564 4.0000000000000000, 0.60000000000000009 },
12565 { 28.323020339843335, 10.000000000000000, 0.50000000000000000,
12566 4.0000000000000000, 0.69999999999999996 },
12567 { 225.84286572747891, 10.000000000000000, 0.50000000000000000,
12568 4.0000000000000000, 0.80000000000000004 },
12569 { 12757.127591286655, 10.000000000000000, 0.50000000000000000,
12570 4.0000000000000000, 0.89999999999999991 },
12573 // Test function for a=10.000000000000000, b=0.50000000000000000, c=4.0000000000000000.
12574 template <typename Tp
>
12577 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12578 Tp max_abs_diff
= -Tp(1);
12579 Tp max_abs_frac
= -Tp(1);
12580 unsigned int num_datum
= sizeof(data182
)
12581 / sizeof(testcase_hyperg
<double>);
12582 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12584 const Tp f
= std::tr1::hyperg(Tp(data182
[i
].a
), Tp(data182
[i
].b
),
12585 Tp(data182
[i
].c
), Tp(data182
[i
].x
));
12586 const Tp f0
= data182
[i
].f0
;
12587 const Tp diff
= f
- f0
;
12588 if (std::abs(diff
) > max_abs_diff
)
12589 max_abs_diff
= std::abs(diff
);
12590 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12592 const Tp frac
= diff
/ f0
;
12593 if (std::abs(frac
) > max_abs_frac
)
12594 max_abs_frac
= std::abs(frac
);
12597 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12600 // Test data for a=10.000000000000000, b=0.50000000000000000, c=6.0000000000000000.
12601 testcase_hyperg
<double> data183
[] = {
12602 { 0.62672622092226071, 10.000000000000000, 0.50000000000000000,
12603 6.0000000000000000, -0.90000000000000002 },
12604 { 0.64931010269769829, 10.000000000000000, 0.50000000000000000,
12605 6.0000000000000000, -0.80000000000000004 },
12606 { 0.67448067519076316, 10.000000000000000, 0.50000000000000000,
12607 6.0000000000000000, -0.69999999999999996 },
12608 { 0.70276306239803676, 10.000000000000000, 0.50000000000000000,
12609 6.0000000000000000, -0.59999999999999998 },
12610 { 0.73484179773087555, 10.000000000000000, 0.50000000000000000,
12611 6.0000000000000000, -0.50000000000000000 },
12612 { 0.77162761412743897, 10.000000000000000, 0.50000000000000000,
12613 6.0000000000000000, -0.40000000000000002 },
12614 { 0.81436116844816531, 10.000000000000000, 0.50000000000000000,
12615 6.0000000000000000, -0.30000000000000004 },
12616 { 0.86477994787944557, 10.000000000000000, 0.50000000000000000,
12617 6.0000000000000000, -0.19999999999999996 },
12618 { 0.92539820516603888, 10.000000000000000, 0.50000000000000000,
12619 6.0000000000000000, -0.099999999999999978 },
12620 { 1.0000000000000000, 10.000000000000000, 0.50000000000000000,
12621 6.0000000000000000, 0.0000000000000000 },
12622 { 1.0945599448210315, 10.000000000000000, 0.50000000000000000,
12623 6.0000000000000000, 0.10000000000000009 },
12624 { 1.2190897395597264, 10.000000000000000, 0.50000000000000000,
12625 6.0000000000000000, 0.19999999999999996 },
12626 { 1.3916844336856475, 10.000000000000000, 0.50000000000000000,
12627 6.0000000000000000, 0.30000000000000004 },
12628 { 1.6484497630432013, 10.000000000000000, 0.50000000000000000,
12629 6.0000000000000000, 0.39999999999999991 },
12630 { 2.0717772717131155, 10.000000000000000, 0.50000000000000000,
12631 6.0000000000000000, 0.50000000000000000 },
12632 { 2.8893613630810924, 10.000000000000000, 0.50000000000000000,
12633 6.0000000000000000, 0.60000000000000009 },
12634 { 4.9459404075413529, 10.000000000000000, 0.50000000000000000,
12635 6.0000000000000000, 0.69999999999999996 },
12636 { 13.487394149998716, 10.000000000000000, 0.50000000000000000,
12637 6.0000000000000000, 0.80000000000000004 },
12638 { 136.57616044013972, 10.000000000000000, 0.50000000000000000,
12639 6.0000000000000000, 0.89999999999999991 },
12642 // Test function for a=10.000000000000000, b=0.50000000000000000, c=6.0000000000000000.
12643 template <typename Tp
>
12646 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12647 Tp max_abs_diff
= -Tp(1);
12648 Tp max_abs_frac
= -Tp(1);
12649 unsigned int num_datum
= sizeof(data183
)
12650 / sizeof(testcase_hyperg
<double>);
12651 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12653 const Tp f
= std::tr1::hyperg(Tp(data183
[i
].a
), Tp(data183
[i
].b
),
12654 Tp(data183
[i
].c
), Tp(data183
[i
].x
));
12655 const Tp f0
= data183
[i
].f0
;
12656 const Tp diff
= f
- f0
;
12657 if (std::abs(diff
) > max_abs_diff
)
12658 max_abs_diff
= std::abs(diff
);
12659 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12661 const Tp frac
= diff
/ f0
;
12662 if (std::abs(frac
) > max_abs_frac
)
12663 max_abs_frac
= std::abs(frac
);
12666 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12669 // Test data for a=10.000000000000000, b=0.50000000000000000, c=8.0000000000000000.
12670 testcase_hyperg
<double> data184
[] = {
12671 { 0.68421604440344341, 10.000000000000000, 0.50000000000000000,
12672 8.0000000000000000, -0.90000000000000002 },
12673 { 0.70548098055548891, 10.000000000000000, 0.50000000000000000,
12674 8.0000000000000000, -0.80000000000000004 },
12675 { 0.72884342311710348, 10.000000000000000, 0.50000000000000000,
12676 8.0000000000000000, -0.69999999999999996 },
12677 { 0.75466953437856243, 10.000000000000000, 0.50000000000000000,
12678 8.0000000000000000, -0.59999999999999998 },
12679 { 0.78342090924662600, 10.000000000000000, 0.50000000000000000,
12680 8.0000000000000000, -0.50000000000000000 },
12681 { 0.81568884278645049, 10.000000000000000, 0.50000000000000000,
12682 8.0000000000000000, -0.40000000000000002 },
12683 { 0.85224480241465206, 10.000000000000000, 0.50000000000000000,
12684 8.0000000000000000, -0.30000000000000004 },
12685 { 0.89411692571131696, 10.000000000000000, 0.50000000000000000,
12686 8.0000000000000000, -0.19999999999999996 },
12687 { 0.94270986892954756, 10.000000000000000, 0.50000000000000000,
12688 8.0000000000000000, -0.099999999999999978 },
12689 { 1.0000000000000000, 10.000000000000000, 0.50000000000000000,
12690 8.0000000000000000, 0.0000000000000000 },
12691 { 1.0688682849120232, 10.000000000000000, 0.50000000000000000,
12692 8.0000000000000000, 0.10000000000000009 },
12693 { 1.1537004376097553, 10.000000000000000, 0.50000000000000000,
12694 8.0000000000000000, 0.19999999999999996 },
12695 { 1.2615455028370031, 10.000000000000000, 0.50000000000000000,
12696 8.0000000000000000, 0.30000000000000004 },
12697 { 1.4045541456153436, 10.000000000000000, 0.50000000000000000,
12698 8.0000000000000000, 0.39999999999999991 },
12699 { 1.6057216489444517, 10.000000000000000, 0.50000000000000000,
12700 8.0000000000000000, 0.50000000000000000 },
12701 { 1.9146603020550739, 10.000000000000000, 0.50000000000000000,
12702 8.0000000000000000, 0.60000000000000009 },
12703 { 2.4617931307620298, 10.000000000000000, 0.50000000000000000,
12704 8.0000000000000000, 0.69999999999999996 },
12705 { 3.7267799624996498, 10.000000000000000, 0.50000000000000000,
12706 8.0000000000000000, 0.80000000000000004 },
12707 { 9.3880118036248401, 10.000000000000000, 0.50000000000000000,
12708 8.0000000000000000, 0.89999999999999991 },
12711 // Test function for a=10.000000000000000, b=0.50000000000000000, c=8.0000000000000000.
12712 template <typename Tp
>
12715 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12716 Tp max_abs_diff
= -Tp(1);
12717 Tp max_abs_frac
= -Tp(1);
12718 unsigned int num_datum
= sizeof(data184
)
12719 / sizeof(testcase_hyperg
<double>);
12720 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12722 const Tp f
= std::tr1::hyperg(Tp(data184
[i
].a
), Tp(data184
[i
].b
),
12723 Tp(data184
[i
].c
), Tp(data184
[i
].x
));
12724 const Tp f0
= data184
[i
].f0
;
12725 const Tp diff
= f
- f0
;
12726 if (std::abs(diff
) > max_abs_diff
)
12727 max_abs_diff
= std::abs(diff
);
12728 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12730 const Tp frac
= diff
/ f0
;
12731 if (std::abs(frac
) > max_abs_frac
)
12732 max_abs_frac
= std::abs(frac
);
12735 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12738 // Test data for a=10.000000000000000, b=0.50000000000000000, c=10.000000000000000.
12739 testcase_hyperg
<double> data185
[] = {
12740 { 0.72547625011001171, 10.000000000000000, 0.50000000000000000,
12741 10.000000000000000, -0.90000000000000002 },
12742 { 0.74535599249992990, 10.000000000000000, 0.50000000000000000,
12743 10.000000000000000, -0.80000000000000004 },
12744 { 0.76696498884737041, 10.000000000000000, 0.50000000000000000,
12745 10.000000000000000, -0.69999999999999996 },
12746 { 0.79056941504209477, 10.000000000000000, 0.50000000000000000,
12747 10.000000000000000, -0.59999999999999998 },
12748 { 0.81649658092772603, 10.000000000000000, 0.50000000000000000,
12749 10.000000000000000, -0.50000000000000000 },
12750 { 0.84515425472851657, 10.000000000000000, 0.50000000000000000,
12751 10.000000000000000, -0.40000000000000002 },
12752 { 0.87705801930702920, 10.000000000000000, 0.50000000000000000,
12753 10.000000000000000, -0.30000000000000004 },
12754 { 0.91287092917527690, 10.000000000000000, 0.50000000000000000,
12755 10.000000000000000, -0.19999999999999996 },
12756 { 0.95346258924559224, 10.000000000000000, 0.50000000000000000,
12757 10.000000000000000, -0.099999999999999978 },
12758 { 1.0000000000000000, 10.000000000000000, 0.50000000000000000,
12759 10.000000000000000, 0.0000000000000000 },
12760 { 1.0540925533894598, 10.000000000000000, 0.50000000000000000,
12761 10.000000000000000, 0.10000000000000009 },
12762 { 1.1180339887498949, 10.000000000000000, 0.50000000000000000,
12763 10.000000000000000, 0.19999999999999996 },
12764 { 1.1952286093343938, 10.000000000000000, 0.50000000000000000,
12765 10.000000000000000, 0.30000000000000004 },
12766 { 1.2909944487358056, 10.000000000000000, 0.50000000000000000,
12767 10.000000000000000, 0.39999999999999991 },
12768 { 1.4142135623730949, 10.000000000000000, 0.50000000000000000,
12769 10.000000000000000, 0.50000000000000000 },
12770 { 1.5811388300841900, 10.000000000000000, 0.50000000000000000,
12771 10.000000000000000, 0.60000000000000009 },
12772 { 1.8257418583505536, 10.000000000000000, 0.50000000000000000,
12773 10.000000000000000, 0.69999999999999996 },
12774 { 2.2360679774997898, 10.000000000000000, 0.50000000000000000,
12775 10.000000000000000, 0.80000000000000004 },
12776 { 3.1622776601683782, 10.000000000000000, 0.50000000000000000,
12777 10.000000000000000, 0.89999999999999991 },
12780 // Test function for a=10.000000000000000, b=0.50000000000000000, c=10.000000000000000.
12781 template <typename Tp
>
12784 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12785 Tp max_abs_diff
= -Tp(1);
12786 Tp max_abs_frac
= -Tp(1);
12787 unsigned int num_datum
= sizeof(data185
)
12788 / sizeof(testcase_hyperg
<double>);
12789 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12791 const Tp f
= std::tr1::hyperg(Tp(data185
[i
].a
), Tp(data185
[i
].b
),
12792 Tp(data185
[i
].c
), Tp(data185
[i
].x
));
12793 const Tp f0
= data185
[i
].f0
;
12794 const Tp diff
= f
- f0
;
12795 if (std::abs(diff
) > max_abs_diff
)
12796 max_abs_diff
= std::abs(diff
);
12797 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12799 const Tp frac
= diff
/ f0
;
12800 if (std::abs(frac
) > max_abs_frac
)
12801 max_abs_frac
= std::abs(frac
);
12804 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12807 // Test data for a=10.000000000000000, b=1.0000000000000000, c=2.0000000000000000.
12808 testcase_hyperg
<double> data186
[] = {
12809 { 0.12307420104127871, 10.000000000000000, 1.0000000000000000,
12810 2.0000000000000000, -0.90000000000000002 },
12811 { 0.13818870041457423, 10.000000000000000, 1.0000000000000000,
12812 2.0000000000000000, -0.80000000000000004 },
12813 { 0.15739165631811691, 10.000000000000000, 1.0000000000000000,
12814 2.0000000000000000, -0.69999999999999996 },
12815 { 0.18249038606882068, 10.000000000000000, 1.0000000000000000,
12816 2.0000000000000000, -0.59999999999999998 },
12817 { 0.21644171225027786, 10.000000000000000, 1.0000000000000000,
12818 2.0000000000000000, -0.50000000000000000 },
12819 { 0.26433326159804160, 10.000000000000000, 1.0000000000000000,
12820 2.0000000000000000, -0.40000000000000002 },
12821 { 0.33544459430654533, 10.000000000000000, 1.0000000000000000,
12822 2.0000000000000000, -0.30000000000000004 },
12823 { 0.44788516696232517, 10.000000000000000, 1.0000000000000000,
12824 2.0000000000000000, -0.19999999999999996 },
12825 { 0.63989153514168362, 10.000000000000000, 1.0000000000000000,
12826 2.0000000000000000, -0.099999999999999978 },
12827 { 1.0000000000000000, 10.000000000000000, 1.0000000000000000,
12828 2.0000000000000000, 0.0000000000000000 },
12829 { 1.7568608796813312, 10.000000000000000, 1.0000000000000000,
12830 2.0000000000000000, 0.10000000000000009 },
12831 { 3.5836558871799027, 10.000000000000000, 1.0000000000000000,
12832 2.0000000000000000, 0.19999999999999996 },
12833 { 8.8077526749963226, 10.000000000000000, 1.0000000000000000,
12834 2.0000000000000000, 0.30000000000000004 },
12835 { 27.285841702089190, 10.000000000000000, 1.0000000000000000,
12836 2.0000000000000000, 0.39999999999999991 },
12837 { 113.55555555555557, 10.000000000000000, 1.0000000000000000,
12838 2.0000000000000000, 0.50000000000000000 },
12839 { 706.24023437500091, 10.000000000000000, 1.0000000000000000,
12840 2.0000000000000000, 0.60000000000000009 },
12841 { 8064.1687976651992, 10.000000000000000, 1.0000000000000000,
12842 2.0000000000000000, 0.69999999999999996 },
12843 { 271267.22222222196, 10.000000000000000, 1.0000000000000000,
12844 2.0000000000000000, 0.80000000000000004 },
12845 { 123456789.99999890, 10.000000000000000, 1.0000000000000000,
12846 2.0000000000000000, 0.89999999999999991 },
12849 // Test function for a=10.000000000000000, b=1.0000000000000000, c=2.0000000000000000.
12850 template <typename Tp
>
12853 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12854 Tp max_abs_diff
= -Tp(1);
12855 Tp max_abs_frac
= -Tp(1);
12856 unsigned int num_datum
= sizeof(data186
)
12857 / sizeof(testcase_hyperg
<double>);
12858 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12860 const Tp f
= std::tr1::hyperg(Tp(data186
[i
].a
), Tp(data186
[i
].b
),
12861 Tp(data186
[i
].c
), Tp(data186
[i
].x
));
12862 const Tp f0
= data186
[i
].f0
;
12863 const Tp diff
= f
- f0
;
12864 if (std::abs(diff
) > max_abs_diff
)
12865 max_abs_diff
= std::abs(diff
);
12866 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12868 const Tp frac
= diff
/ f0
;
12869 if (std::abs(frac
) > max_abs_frac
)
12870 max_abs_frac
= std::abs(frac
);
12873 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12876 // Test data for a=10.000000000000000, b=1.0000000000000000, c=4.0000000000000000.
12877 testcase_hyperg
<double> data187
[] = {
12878 { 0.28363728383055758, 10.000000000000000, 1.0000000000000000,
12879 4.0000000000000000, -0.90000000000000002 },
12880 { 0.30933003169808387, 10.000000000000000, 1.0000000000000000,
12881 4.0000000000000000, -0.80000000000000004 },
12882 { 0.33998437757128797, 10.000000000000000, 1.0000000000000000,
12883 4.0000000000000000, -0.69999999999999996 },
12884 { 0.37713553224291119, 10.000000000000000, 1.0000000000000000,
12885 4.0000000000000000, -0.59999999999999998 },
12886 { 0.42299736538419658, 10.000000000000000, 1.0000000000000000,
12887 4.0000000000000000, -0.50000000000000000 },
12888 { 0.48086597727600106, 10.000000000000000, 1.0000000000000000,
12889 4.0000000000000000, -0.40000000000000002 },
12890 { 0.55583495759293045, 10.000000000000000, 1.0000000000000000,
12891 4.0000000000000000, -0.30000000000000004 },
12892 { 0.65612850114039667, 10.000000000000000, 1.0000000000000000,
12893 4.0000000000000000, -0.19999999999999996 },
12894 { 0.79573668772968120, 10.000000000000000, 1.0000000000000000,
12895 4.0000000000000000, -0.099999999999999978 },
12896 { 1.0000000000000000, 10.000000000000000, 1.0000000000000000,
12897 4.0000000000000000, 0.0000000000000000 },
12898 { 1.3184712058058303, 10.000000000000000, 1.0000000000000000,
12899 4.0000000000000000, 0.10000000000000009 },
12900 { 1.8576958065941214, 10.000000000000000, 1.0000000000000000,
12901 4.0000000000000000, 0.19999999999999996 },
12902 { 2.8759509651764228, 10.000000000000000, 1.0000000000000000,
12903 4.0000000000000000, 0.30000000000000004 },
12904 { 5.1046225531822182, 10.000000000000000, 1.0000000000000000,
12905 4.0000000000000000, 0.39999999999999991 },
12906 { 11.095238095238095, 10.000000000000000, 1.0000000000000000,
12907 4.0000000000000000, 0.50000000000000000 },
12908 { 32.797154017857174, 10.000000000000000, 1.0000000000000000,
12909 4.0000000000000000, 0.60000000000000009 },
12910 { 158.01935680536477, 10.000000000000000, 1.0000000000000000,
12911 4.0000000000000000, 0.69999999999999996 },
12912 { 1815.9523809523814, 10.000000000000000, 1.0000000000000000,
12913 4.0000000000000000, 0.80000000000000004 },
12914 { 163302.14285714156, 10.000000000000000, 1.0000000000000000,
12915 4.0000000000000000, 0.89999999999999991 },
12918 // Test function for a=10.000000000000000, b=1.0000000000000000, c=4.0000000000000000.
12919 template <typename Tp
>
12922 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12923 Tp max_abs_diff
= -Tp(1);
12924 Tp max_abs_frac
= -Tp(1);
12925 unsigned int num_datum
= sizeof(data187
)
12926 / sizeof(testcase_hyperg
<double>);
12927 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12929 const Tp f
= std::tr1::hyperg(Tp(data187
[i
].a
), Tp(data187
[i
].b
),
12930 Tp(data187
[i
].c
), Tp(data187
[i
].x
));
12931 const Tp f0
= data187
[i
].f0
;
12932 const Tp diff
= f
- f0
;
12933 if (std::abs(diff
) > max_abs_diff
)
12934 max_abs_diff
= std::abs(diff
);
12935 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
12937 const Tp frac
= diff
/ f0
;
12938 if (std::abs(frac
) > max_abs_frac
)
12939 max_abs_frac
= std::abs(frac
);
12942 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
12945 // Test data for a=10.000000000000000, b=1.0000000000000000, c=6.0000000000000000.
12946 testcase_hyperg
<double> data188
[] = {
12947 { 0.39006633302741794, 10.000000000000000, 1.0000000000000000,
12948 6.0000000000000000, -0.90000000000000002 },
12949 { 0.41898885698103294, 10.000000000000000, 1.0000000000000000,
12950 6.0000000000000000, -0.80000000000000004 },
12951 { 0.45245557983812590, 10.000000000000000, 1.0000000000000000,
12952 6.0000000000000000, -0.69999999999999996 },
12953 { 0.49160548618861633, 10.000000000000000, 1.0000000000000000,
12954 6.0000000000000000, -0.59999999999999998 },
12955 { 0.53798419230517980, 10.000000000000000, 1.0000000000000000,
12956 6.0000000000000000, -0.50000000000000000 },
12957 { 0.59373881442067344, 10.000000000000000, 1.0000000000000000,
12958 6.0000000000000000, -0.40000000000000002 },
12959 { 0.66193391357076115, 10.000000000000000, 1.0000000000000000,
12960 6.0000000000000000, -0.30000000000000004 },
12961 { 0.74708402736952129, 10.000000000000000, 1.0000000000000000,
12962 6.0000000000000000, -0.19999999999999996 },
12963 { 0.85609281019430605, 10.000000000000000, 1.0000000000000000,
12964 6.0000000000000000, -0.099999999999999978 },
12965 { 1.0000000000000000, 10.000000000000000, 1.0000000000000000,
12966 6.0000000000000000, 0.0000000000000000 },
12967 { 1.1974451135148187, 10.000000000000000, 1.0000000000000000,
12968 6.0000000000000000, 0.10000000000000009 },
12969 { 1.4820886036706347, 10.000000000000000, 1.0000000000000000,
12970 6.0000000000000000, 0.19999999999999996 },
12971 { 1.9201183180477521, 10.000000000000000, 1.0000000000000000,
12972 6.0000000000000000, 0.30000000000000004 },
12973 { 2.6569338297733336, 10.000000000000000, 1.0000000000000000,
12974 6.0000000000000000, 0.39999999999999991 },
12975 { 4.0634920634920650, 10.000000000000000, 1.0000000000000000,
12976 6.0000000000000000, 0.50000000000000000 },
12977 { 7.3102678571428568, 10.000000000000000, 1.0000000000000000,
12978 6.0000000000000000, 0.60000000000000009 },
12979 { 17.512574302697733, 10.000000000000000, 1.0000000000000000,
12980 6.0000000000000000, 0.69999999999999996 },
12981 { 74.206349206349131, 10.000000000000000, 1.0000000000000000,
12982 6.0000000000000000, 0.80000000000000004 },
12983 { 1342.8571428571363, 10.000000000000000, 1.0000000000000000,
12984 6.0000000000000000, 0.89999999999999991 },
12987 // Test function for a=10.000000000000000, b=1.0000000000000000, c=6.0000000000000000.
12988 template <typename Tp
>
12991 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
12992 Tp max_abs_diff
= -Tp(1);
12993 Tp max_abs_frac
= -Tp(1);
12994 unsigned int num_datum
= sizeof(data188
)
12995 / sizeof(testcase_hyperg
<double>);
12996 for (unsigned int i
= 0; i
< num_datum
; ++i
)
12998 const Tp f
= std::tr1::hyperg(Tp(data188
[i
].a
), Tp(data188
[i
].b
),
12999 Tp(data188
[i
].c
), Tp(data188
[i
].x
));
13000 const Tp f0
= data188
[i
].f0
;
13001 const Tp diff
= f
- f0
;
13002 if (std::abs(diff
) > max_abs_diff
)
13003 max_abs_diff
= std::abs(diff
);
13004 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13006 const Tp frac
= diff
/ f0
;
13007 if (std::abs(frac
) > max_abs_frac
)
13008 max_abs_frac
= std::abs(frac
);
13011 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13014 // Test data for a=10.000000000000000, b=1.0000000000000000, c=8.0000000000000000.
13015 testcase_hyperg
<double> data189
[] = {
13016 { 0.46726928123633193, 10.000000000000000, 1.0000000000000000,
13017 8.0000000000000000, -0.90000000000000002 },
13018 { 0.49687547629934464, 10.000000000000000, 1.0000000000000000,
13019 8.0000000000000000, -0.80000000000000004 },
13020 { 0.53045208856322235, 10.000000000000000, 1.0000000000000000,
13021 8.0000000000000000, -0.69999999999999996 },
13022 { 0.56884765624999978, 10.000000000000000, 1.0000000000000000,
13023 8.0000000000000000, -0.59999999999999998 },
13024 { 0.61316872427983526, 10.000000000000000, 1.0000000000000000,
13025 8.0000000000000000, -0.50000000000000000 },
13026 { 0.66488500161969544, 10.000000000000000, 1.0000000000000000,
13027 8.0000000000000000, -0.40000000000000002 },
13028 { 0.72598998634501577, 10.000000000000000, 1.0000000000000000,
13029 8.0000000000000000, -0.30000000000000004 },
13030 { 0.79925411522633782, 10.000000000000000, 1.0000000000000000,
13031 8.0000000000000000, -0.19999999999999996 },
13032 { 0.88863845062192193, 10.000000000000000, 1.0000000000000000,
13033 8.0000000000000000, -0.099999999999999978 },
13034 { 1.0000000000000000, 10.000000000000000, 1.0000000000000000,
13035 8.0000000000000000, 0.0000000000000000 },
13036 { 1.1423563481176653, 10.000000000000000, 1.0000000000000000,
13037 8.0000000000000000, 0.10000000000000009 },
13038 { 1.3302951388888888, 10.000000000000000, 1.0000000000000000,
13039 8.0000000000000000, 0.19999999999999996 },
13040 { 1.5889212827988335, 10.000000000000000, 1.0000000000000000,
13041 8.0000000000000000, 0.30000000000000004 },
13042 { 1.9650205761316870, 10.000000000000000, 1.0000000000000000,
13043 8.0000000000000000, 0.39999999999999991 },
13044 { 2.5555555555555549, 10.000000000000000, 1.0000000000000000,
13045 8.0000000000000000, 0.50000000000000000 },
13046 { 3.5937500000000013, 10.000000000000000, 1.0000000000000000,
13047 8.0000000000000000, 0.60000000000000009 },
13048 { 5.7818930041152203, 10.000000000000000, 1.0000000000000000,
13049 8.0000000000000000, 0.69999999999999996 },
13050 { 12.222222222222220, 10.000000000000000, 1.0000000000000000,
13051 8.0000000000000000, 0.80000000000000004 },
13052 { 54.999999999999780, 10.000000000000000, 1.0000000000000000,
13053 8.0000000000000000, 0.89999999999999991 },
13056 // Test function for a=10.000000000000000, b=1.0000000000000000, c=8.0000000000000000.
13057 template <typename Tp
>
13060 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13061 Tp max_abs_diff
= -Tp(1);
13062 Tp max_abs_frac
= -Tp(1);
13063 unsigned int num_datum
= sizeof(data189
)
13064 / sizeof(testcase_hyperg
<double>);
13065 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13067 const Tp f
= std::tr1::hyperg(Tp(data189
[i
].a
), Tp(data189
[i
].b
),
13068 Tp(data189
[i
].c
), Tp(data189
[i
].x
));
13069 const Tp f0
= data189
[i
].f0
;
13070 const Tp diff
= f
- f0
;
13071 if (std::abs(diff
) > max_abs_diff
)
13072 max_abs_diff
= std::abs(diff
);
13073 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13075 const Tp frac
= diff
/ f0
;
13076 if (std::abs(frac
) > max_abs_frac
)
13077 max_abs_frac
= std::abs(frac
);
13080 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13083 // Test data for a=10.000000000000000, b=1.0000000000000000, c=10.000000000000000.
13084 testcase_hyperg
<double> data190
[] = {
13085 { 0.52631578947368429, 10.000000000000000, 1.0000000000000000,
13086 10.000000000000000, -0.90000000000000002 },
13087 { 0.55555555555555558, 10.000000000000000, 1.0000000000000000,
13088 10.000000000000000, -0.80000000000000004 },
13089 { 0.58823529411764708, 10.000000000000000, 1.0000000000000000,
13090 10.000000000000000, -0.69999999999999996 },
13091 { 0.62500000000000000, 10.000000000000000, 1.0000000000000000,
13092 10.000000000000000, -0.59999999999999998 },
13093 { 0.66666666666666663, 10.000000000000000, 1.0000000000000000,
13094 10.000000000000000, -0.50000000000000000 },
13095 { 0.71428571428571430, 10.000000000000000, 1.0000000000000000,
13096 10.000000000000000, -0.40000000000000002 },
13097 { 0.76923076923076927, 10.000000000000000, 1.0000000000000000,
13098 10.000000000000000, -0.30000000000000004 },
13099 { 0.83333333333333337, 10.000000000000000, 1.0000000000000000,
13100 10.000000000000000, -0.19999999999999996 },
13101 { 0.90909090909090906, 10.000000000000000, 1.0000000000000000,
13102 10.000000000000000, -0.099999999999999978 },
13103 { 1.0000000000000000, 10.000000000000000, 1.0000000000000000,
13104 10.000000000000000, 0.0000000000000000 },
13105 { 1.1111111111111112, 10.000000000000000, 1.0000000000000000,
13106 10.000000000000000, 0.10000000000000009 },
13107 { 1.2500000000000000, 10.000000000000000, 1.0000000000000000,
13108 10.000000000000000, 0.19999999999999996 },
13109 { 1.4285714285714286, 10.000000000000000, 1.0000000000000000,
13110 10.000000000000000, 0.30000000000000004 },
13111 { 1.6666666666666663, 10.000000000000000, 1.0000000000000000,
13112 10.000000000000000, 0.39999999999999991 },
13113 { 2.0000000000000000, 10.000000000000000, 1.0000000000000000,
13114 10.000000000000000, 0.50000000000000000 },
13115 { 2.5000000000000004, 10.000000000000000, 1.0000000000000000,
13116 10.000000000000000, 0.60000000000000009 },
13117 { 3.3333333333333330, 10.000000000000000, 1.0000000000000000,
13118 10.000000000000000, 0.69999999999999996 },
13119 { 5.0000000000000009, 10.000000000000000, 1.0000000000000000,
13120 10.000000000000000, 0.80000000000000004 },
13121 { 9.9999999999999929, 10.000000000000000, 1.0000000000000000,
13122 10.000000000000000, 0.89999999999999991 },
13125 // Test function for a=10.000000000000000, b=1.0000000000000000, c=10.000000000000000.
13126 template <typename Tp
>
13129 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13130 Tp max_abs_diff
= -Tp(1);
13131 Tp max_abs_frac
= -Tp(1);
13132 unsigned int num_datum
= sizeof(data190
)
13133 / sizeof(testcase_hyperg
<double>);
13134 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13136 const Tp f
= std::tr1::hyperg(Tp(data190
[i
].a
), Tp(data190
[i
].b
),
13137 Tp(data190
[i
].c
), Tp(data190
[i
].x
));
13138 const Tp f0
= data190
[i
].f0
;
13139 const Tp diff
= f
- f0
;
13140 if (std::abs(diff
) > max_abs_diff
)
13141 max_abs_diff
= std::abs(diff
);
13142 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13144 const Tp frac
= diff
/ f0
;
13145 if (std::abs(frac
) > max_abs_frac
)
13146 max_abs_frac
= std::abs(frac
);
13149 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13152 // Test data for a=10.000000000000000, b=2.0000000000000000, c=2.0000000000000000.
13153 testcase_hyperg
<double> data191
[] = {
13154 { 0.0016310376661280216, 10.000000000000000, 2.0000000000000000,
13155 2.0000000000000000, -0.90000000000000002 },
13156 { 0.0028007538972582421, 10.000000000000000, 2.0000000000000000,
13157 2.0000000000000000, -0.80000000000000004 },
13158 { 0.0049603324681551939, 10.000000000000000, 2.0000000000000000,
13159 2.0000000000000000, -0.69999999999999996 },
13160 { 0.0090949470177292789, 10.000000000000000, 2.0000000000000000,
13161 2.0000000000000000, -0.59999999999999998 },
13162 { 0.017341529915832606, 10.000000000000000, 2.0000000000000000,
13163 2.0000000000000000, -0.50000000000000000 },
13164 { 0.034571613033607777, 10.000000000000000, 2.0000000000000000,
13165 2.0000000000000000, -0.40000000000000002 },
13166 { 0.072538150286405714, 10.000000000000000, 2.0000000000000000,
13167 2.0000000000000000, -0.30000000000000004 },
13168 { 0.16150558288984579, 10.000000000000000, 2.0000000000000000,
13169 2.0000000000000000, -0.19999999999999996 },
13170 { 0.38554328942953148, 10.000000000000000, 2.0000000000000000,
13171 2.0000000000000000, -0.099999999999999978 },
13172 { 1.0000000000000000, 10.000000000000000, 2.0000000000000000,
13173 2.0000000000000000, 0.0000000000000000 },
13174 { 2.8679719907924444, 10.000000000000000, 2.0000000000000000,
13175 2.0000000000000000, 0.10000000000000009 },
13176 { 9.3132257461547816, 10.000000000000000, 2.0000000000000000,
13177 2.0000000000000000, 0.19999999999999996 },
13178 { 35.401331746414378, 10.000000000000000, 2.0000000000000000,
13179 2.0000000000000000, 0.30000000000000004 },
13180 { 165.38171687920172, 10.000000000000000, 2.0000000000000000,
13181 2.0000000000000000, 0.39999999999999991 },
13182 { 1024.0000000000000, 10.000000000000000, 2.0000000000000000,
13183 2.0000000000000000, 0.50000000000000000 },
13184 { 9536.7431640625200, 10.000000000000000, 2.0000000000000000,
13185 2.0000000000000000, 0.60000000000000009 },
13186 { 169350.87808430271, 10.000000000000000, 2.0000000000000000,
13187 2.0000000000000000, 0.69999999999999996 },
13188 { 9765624.9999999944, 10.000000000000000, 2.0000000000000000,
13189 2.0000000000000000, 0.80000000000000004 },
13190 { 9999999999.9999332, 10.000000000000000, 2.0000000000000000,
13191 2.0000000000000000, 0.89999999999999991 },
13194 // Test function for a=10.000000000000000, b=2.0000000000000000, c=2.0000000000000000.
13195 template <typename Tp
>
13198 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13199 Tp max_abs_diff
= -Tp(1);
13200 Tp max_abs_frac
= -Tp(1);
13201 unsigned int num_datum
= sizeof(data191
)
13202 / sizeof(testcase_hyperg
<double>);
13203 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13205 const Tp f
= std::tr1::hyperg(Tp(data191
[i
].a
), Tp(data191
[i
].b
),
13206 Tp(data191
[i
].c
), Tp(data191
[i
].x
));
13207 const Tp f0
= data191
[i
].f0
;
13208 const Tp diff
= f
- f0
;
13209 if (std::abs(diff
) > max_abs_diff
)
13210 max_abs_diff
= std::abs(diff
);
13211 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13213 const Tp frac
= diff
/ f0
;
13214 if (std::abs(frac
) > max_abs_frac
)
13215 max_abs_frac
= std::abs(frac
);
13218 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13221 // Test data for a=10.000000000000000, b=2.0000000000000000, c=4.0000000000000000.
13222 testcase_hyperg
<double> data192
[] = {
13223 { 0.071191280690193509, 10.000000000000000, 2.0000000000000000,
13224 4.0000000000000000, -0.90000000000000002 },
13225 { 0.085646504654238079, 10.000000000000000, 2.0000000000000000,
13226 4.0000000000000000, -0.80000000000000004 },
13227 { 0.10478215656371073, 10.000000000000000, 2.0000000000000000,
13228 4.0000000000000000, -0.69999999999999996 },
13229 { 0.13074816337653575, 10.000000000000000, 2.0000000000000000,
13230 4.0000000000000000, -0.59999999999999998 },
13231 { 0.16701141666848116, 10.000000000000000, 2.0000000000000000,
13232 4.0000000000000000, -0.50000000000000000 },
13233 { 0.21939323375313971, 10.000000000000000, 2.0000000000000000,
13234 4.0000000000000000, -0.40000000000000002 },
13235 { 0.29813515331786627, 10.000000000000000, 2.0000000000000000,
13236 4.0000000000000000, -0.30000000000000004 },
13237 { 0.42225974638874386, 10.000000000000000, 2.0000000000000000,
13238 4.0000000000000000, -0.19999999999999996 },
13239 { 0.62942145962174867, 10.000000000000000, 2.0000000000000000,
13240 4.0000000000000000, -0.099999999999999978 },
13241 { 1.0000000000000000, 10.000000000000000, 2.0000000000000000,
13242 4.0000000000000000, 0.0000000000000000 },
13243 { 1.7218685262373197, 10.000000000000000, 2.0000000000000000,
13244 4.0000000000000000, 0.10000000000000009 },
13245 { 3.2855760483514689, 10.000000000000000, 2.0000000000000000,
13246 4.0000000000000000, 0.19999999999999996 },
13247 { 7.1616652508907093, 10.000000000000000, 2.0000000000000000,
13248 4.0000000000000000, 0.30000000000000004 },
13249 { 18.612326808485907, 10.000000000000000, 2.0000000000000000,
13250 4.0000000000000000, 0.39999999999999991 },
13251 { 61.476190476190474, 10.000000000000000, 2.0000000000000000,
13252 4.0000000000000000, 0.50000000000000000 },
13253 { 286.27580915178623, 10.000000000000000, 2.0000000000000000,
13254 4.0000000000000000, 0.60000000000000009 },
13255 { 2274.9441142102296, 10.000000000000000, 2.0000000000000000,
13256 4.0000000000000000, 0.69999999999999996 },
13257 { 47229.761904761865, 10.000000000000000, 2.0000000000000000,
13258 4.0000000000000000, 0.80000000000000004 },
13259 { 9961460.7142856438, 10.000000000000000, 2.0000000000000000,
13260 4.0000000000000000, 0.89999999999999991 },
13263 // Test function for a=10.000000000000000, b=2.0000000000000000, c=4.0000000000000000.
13264 template <typename Tp
>
13267 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13268 Tp max_abs_diff
= -Tp(1);
13269 Tp max_abs_frac
= -Tp(1);
13270 unsigned int num_datum
= sizeof(data192
)
13271 / sizeof(testcase_hyperg
<double>);
13272 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13274 const Tp f
= std::tr1::hyperg(Tp(data192
[i
].a
), Tp(data192
[i
].b
),
13275 Tp(data192
[i
].c
), Tp(data192
[i
].x
));
13276 const Tp f0
= data192
[i
].f0
;
13277 const Tp diff
= f
- f0
;
13278 if (std::abs(diff
) > max_abs_diff
)
13279 max_abs_diff
= std::abs(diff
);
13280 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13282 const Tp frac
= diff
/ f0
;
13283 if (std::abs(frac
) > max_abs_frac
)
13284 max_abs_frac
= std::abs(frac
);
13287 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13290 // Test data for a=10.000000000000000, b=2.0000000000000000, c=6.0000000000000000.
13291 testcase_hyperg
<double> data193
[] = {
13292 { 0.14747230019381052, 10.000000000000000, 2.0000000000000000,
13293 6.0000000000000000, -0.90000000000000002 },
13294 { 0.17073600100690603, 10.000000000000000, 2.0000000000000000,
13295 6.0000000000000000, -0.80000000000000004 },
13296 { 0.19982795745135354, 10.000000000000000, 2.0000000000000000,
13297 6.0000000000000000, -0.69999999999999996 },
13298 { 0.23681776864188067, 10.000000000000000, 2.0000000000000000,
13299 6.0000000000000000, -0.59999999999999998 },
13300 { 0.28475624360398022, 10.000000000000000, 2.0000000000000000,
13301 6.0000000000000000, -0.50000000000000000 },
13302 { 0.34827500743063144, 10.000000000000000, 2.0000000000000000,
13303 6.0000000000000000, -0.40000000000000002 },
13304 { 0.43464829159684681, 10.000000000000000, 2.0000000000000000,
13305 6.0000000000000000, -0.30000000000000004 },
13306 { 0.55576053438064787, 10.000000000000000, 2.0000000000000000,
13307 6.0000000000000000, -0.19999999999999996 },
13308 { 0.73195020913445485, 10.000000000000000, 2.0000000000000000,
13309 6.0000000000000000, -0.099999999999999978 },
13310 { 1.0000000000000000, 10.000000000000000, 2.0000000000000000,
13311 6.0000000000000000, 0.0000000000000000 },
13312 { 1.4310223867822929, 10.000000000000000, 2.0000000000000000,
13313 6.0000000000000000, 0.10000000000000009 },
13314 { 2.1742563399057540, 10.000000000000000, 2.0000000000000000,
13315 6.0000000000000000, 0.19999999999999996 },
13316 { 3.5769231236256043, 10.000000000000000, 2.0000000000000000,
13317 6.0000000000000000, 0.30000000000000004 },
13318 { 6.5620441134844363, 10.000000000000000, 2.0000000000000000,
13319 6.0000000000000000, 0.39999999999999991 },
13320 { 14.063492063492063, 10.000000000000000, 2.0000000000000000,
13321 6.0000000000000000, 0.50000000000000000 },
13322 { 38.085937500000036, 10.000000000000000, 2.0000000000000000,
13323 6.0000000000000000, 0.60000000000000009 },
13324 { 150.92973632068282, 10.000000000000000, 2.0000000000000000,
13325 6.0000000000000000, 0.69999999999999996 },
13326 { 1212.3015873015852, 10.000000000000000, 2.0000000000000000,
13327 6.0000000000000000, 0.80000000000000004 },
13328 { 55107.142857142389, 10.000000000000000, 2.0000000000000000,
13329 6.0000000000000000, 0.89999999999999991 },
13332 // Test function for a=10.000000000000000, b=2.0000000000000000, c=6.0000000000000000.
13333 template <typename Tp
>
13336 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13337 Tp max_abs_diff
= -Tp(1);
13338 Tp max_abs_frac
= -Tp(1);
13339 unsigned int num_datum
= sizeof(data193
)
13340 / sizeof(testcase_hyperg
<double>);
13341 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13343 const Tp f
= std::tr1::hyperg(Tp(data193
[i
].a
), Tp(data193
[i
].b
),
13344 Tp(data193
[i
].c
), Tp(data193
[i
].x
));
13345 const Tp f0
= data193
[i
].f0
;
13346 const Tp diff
= f
- f0
;
13347 if (std::abs(diff
) > max_abs_diff
)
13348 max_abs_diff
= std::abs(diff
);
13349 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13351 const Tp frac
= diff
/ f0
;
13352 if (std::abs(frac
) > max_abs_frac
)
13353 max_abs_frac
= std::abs(frac
);
13356 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13359 // Test data for a=10.000000000000000, b=2.0000000000000000, c=8.0000000000000000.
13360 testcase_hyperg
<double> data194
[] = {
13361 { 0.21658059714090588, 10.000000000000000, 2.0000000000000000,
13362 8.0000000000000000, -0.90000000000000002 },
13363 { 0.24513539602702844, 10.000000000000000, 2.0000000000000000,
13364 8.0000000000000000, -0.80000000000000004 },
13365 { 0.27967018274845046, 10.000000000000000, 2.0000000000000000,
13366 8.0000000000000000, -0.69999999999999996 },
13367 { 0.32196044921874994, 10.000000000000000, 2.0000000000000000,
13368 8.0000000000000000, -0.59999999999999998 },
13369 { 0.37448559670781900, 10.000000000000000, 2.0000000000000000,
13370 8.0000000000000000, -0.50000000000000000 },
13371 { 0.44078856032208796, 10.000000000000000, 2.0000000000000000,
13372 8.0000000000000000, -0.40000000000000002 },
13373 { 0.52606701446027815, 10.000000000000000, 2.0000000000000000,
13374 8.0000000000000000, -0.30000000000000004 },
13375 { 0.63818158436214001, 10.000000000000000, 2.0000000000000000,
13376 8.0000000000000000, -0.19999999999999996 },
13377 { 0.78944971882612769, 10.000000000000000, 2.0000000000000000,
13378 8.0000000000000000, -0.099999999999999978 },
13379 { 1.0000000000000000, 10.000000000000000, 2.0000000000000000,
13380 8.0000000000000000, 0.0000000000000000 },
13381 { 1.3044251384443430, 10.000000000000000, 2.0000000000000000,
13382 8.0000000000000000, 0.10000000000000009 },
13383 { 1.7659505208333335, 10.000000000000000, 2.0000000000000000,
13384 8.0000000000000000, 0.19999999999999996 },
13385 { 2.5093710953769270, 10.000000000000000, 2.0000000000000000,
13386 8.0000000000000000, 0.30000000000000004 },
13387 { 3.8065843621399158, 10.000000000000000, 2.0000000000000000,
13388 8.0000000000000000, 0.39999999999999991 },
13389 { 6.3333333333333313, 10.000000000000000, 2.0000000000000000,
13390 8.0000000000000000, 0.50000000000000000 },
13391 { 12.109375000000004, 10.000000000000000, 2.0000000000000000,
13392 8.0000000000000000, 0.60000000000000009 },
13393 { 29.115226337448540, 10.000000000000000, 2.0000000000000000,
13394 8.0000000000000000, 0.69999999999999996 },
13395 { 108.33333333333330, 10.000000000000000, 2.0000000000000000,
13396 8.0000000000000000, 0.80000000000000004 },
13397 { 1224.9999999999923, 10.000000000000000, 2.0000000000000000,
13398 8.0000000000000000, 0.89999999999999991 },
13401 // Test function for a=10.000000000000000, b=2.0000000000000000, c=8.0000000000000000.
13402 template <typename Tp
>
13405 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13406 Tp max_abs_diff
= -Tp(1);
13407 Tp max_abs_frac
= -Tp(1);
13408 unsigned int num_datum
= sizeof(data194
)
13409 / sizeof(testcase_hyperg
<double>);
13410 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13412 const Tp f
= std::tr1::hyperg(Tp(data194
[i
].a
), Tp(data194
[i
].b
),
13413 Tp(data194
[i
].c
), Tp(data194
[i
].x
));
13414 const Tp f0
= data194
[i
].f0
;
13415 const Tp diff
= f
- f0
;
13416 if (std::abs(diff
) > max_abs_diff
)
13417 max_abs_diff
= std::abs(diff
);
13418 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13420 const Tp frac
= diff
/ f0
;
13421 if (std::abs(frac
) > max_abs_frac
)
13422 max_abs_frac
= std::abs(frac
);
13425 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13428 // Test data for a=10.000000000000000, b=2.0000000000000000, c=10.000000000000000.
13429 testcase_hyperg
<double> data195
[] = {
13430 { 0.27700831024930750, 10.000000000000000, 2.0000000000000000,
13431 10.000000000000000, -0.90000000000000002 },
13432 { 0.30864197530864196, 10.000000000000000, 2.0000000000000000,
13433 10.000000000000000, -0.80000000000000004 },
13434 { 0.34602076124567477, 10.000000000000000, 2.0000000000000000,
13435 10.000000000000000, -0.69999999999999996 },
13436 { 0.39062499999999994, 10.000000000000000, 2.0000000000000000,
13437 10.000000000000000, -0.59999999999999998 },
13438 { 0.44444444444444442, 10.000000000000000, 2.0000000000000000,
13439 10.000000000000000, -0.50000000000000000 },
13440 { 0.51020408163265307, 10.000000000000000, 2.0000000000000000,
13441 10.000000000000000, -0.40000000000000002 },
13442 { 0.59171597633136097, 10.000000000000000, 2.0000000000000000,
13443 10.000000000000000, -0.30000000000000004 },
13444 { 0.69444444444444453, 10.000000000000000, 2.0000000000000000,
13445 10.000000000000000, -0.19999999999999996 },
13446 { 0.82644628099173545, 10.000000000000000, 2.0000000000000000,
13447 10.000000000000000, -0.099999999999999978 },
13448 { 1.0000000000000000, 10.000000000000000, 2.0000000000000000,
13449 10.000000000000000, 0.0000000000000000 },
13450 { 1.2345679012345681, 10.000000000000000, 2.0000000000000000,
13451 10.000000000000000, 0.10000000000000009 },
13452 { 1.5624999999999998, 10.000000000000000, 2.0000000000000000,
13453 10.000000000000000, 0.19999999999999996 },
13454 { 2.0408163265306127, 10.000000000000000, 2.0000000000000000,
13455 10.000000000000000, 0.30000000000000004 },
13456 { 2.7777777777777768, 10.000000000000000, 2.0000000000000000,
13457 10.000000000000000, 0.39999999999999991 },
13458 { 4.0000000000000000, 10.000000000000000, 2.0000000000000000,
13459 10.000000000000000, 0.50000000000000000 },
13460 { 6.2500000000000036, 10.000000000000000, 2.0000000000000000,
13461 10.000000000000000, 0.60000000000000009 },
13462 { 11.111111111111109, 10.000000000000000, 2.0000000000000000,
13463 10.000000000000000, 0.69999999999999996 },
13464 { 25.000000000000007, 10.000000000000000, 2.0000000000000000,
13465 10.000000000000000, 0.80000000000000004 },
13466 { 99.999999999999872, 10.000000000000000, 2.0000000000000000,
13467 10.000000000000000, 0.89999999999999991 },
13470 // Test function for a=10.000000000000000, b=2.0000000000000000, c=10.000000000000000.
13471 template <typename Tp
>
13474 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13475 Tp max_abs_diff
= -Tp(1);
13476 Tp max_abs_frac
= -Tp(1);
13477 unsigned int num_datum
= sizeof(data195
)
13478 / sizeof(testcase_hyperg
<double>);
13479 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13481 const Tp f
= std::tr1::hyperg(Tp(data195
[i
].a
), Tp(data195
[i
].b
),
13482 Tp(data195
[i
].c
), Tp(data195
[i
].x
));
13483 const Tp f0
= data195
[i
].f0
;
13484 const Tp diff
= f
- f0
;
13485 if (std::abs(diff
) > max_abs_diff
)
13486 max_abs_diff
= std::abs(diff
);
13487 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13489 const Tp frac
= diff
/ f0
;
13490 if (std::abs(frac
) > max_abs_frac
)
13491 max_abs_frac
= std::abs(frac
);
13494 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13497 // Test data for a=10.000000000000000, b=5.0000000000000000, c=2.0000000000000000.
13498 testcase_hyperg
<double> data196
[] = {
13499 { 0.00063586451658060152, 10.000000000000000, 5.0000000000000000,
13500 2.0000000000000000, -0.90000000000000002 },
13501 { 0.0010334743461762443, 10.000000000000000, 5.0000000000000000,
13502 2.0000000000000000, -0.80000000000000004 },
13503 { 0.0015326246054669515, 10.000000000000000, 5.0000000000000000,
13504 2.0000000000000000, -0.69999999999999996 },
13505 { 0.0019007018181583387, 10.000000000000000, 5.0000000000000000,
13506 2.0000000000000000, -0.59999999999999998 },
13507 { 0.0012845577715431577, 10.000000000000000, 5.0000000000000000,
13508 2.0000000000000000, -0.50000000000000000 },
13509 { -0.0027213806178058826, 10.000000000000000, 5.0000000000000000,
13510 2.0000000000000000, -0.40000000000000002 },
13511 { -0.015121744574954068, 10.000000000000000, 5.0000000000000000,
13512 2.0000000000000000, -0.30000000000000004 },
13513 { -0.036637840562974443, 10.000000000000000, 5.0000000000000000,
13514 2.0000000000000000, -0.19999999999999996 },
13515 { 0.019117849062621491, 10.000000000000000, 5.0000000000000000,
13516 2.0000000000000000, -0.099999999999999978 },
13517 { 1.0000000000000000, 10.000000000000000, 5.0000000000000000,
13518 2.0000000000000000, 0.0000000000000000 },
13519 { 9.8116901852350615, 10.000000000000000, 5.0000000000000000,
13520 2.0000000000000000, 0.10000000000000009 },
13521 { 84.255589172244044, 10.000000000000000, 5.0000000000000000,
13522 2.0000000000000000, 0.19999999999999996 },
13523 { 773.87517619421294, 10.000000000000000, 5.0000000000000000,
13524 2.0000000000000000, 0.30000000000000004 },
13525 { 8556.9725363053585, 10.000000000000000, 5.0000000000000000,
13526 2.0000000000000000, 0.39999999999999991 },
13527 { 129023.99999999996, 10.000000000000000, 5.0000000000000000,
13528 2.0000000000000000, 0.50000000000000000 },
13529 { 3174543.3807373112, 10.000000000000000, 5.0000000000000000,
13530 2.0000000000000000, 0.60000000000000009 },
13531 { 175133896.95814410, 10.000000000000000, 5.0000000000000000,
13532 2.0000000000000000, 0.69999999999999996 },
13533 { 43564453125.000061, 10.000000000000000, 5.0000000000000000,
13534 2.0000000000000000, 0.80000000000000004 },
13535 { 446859999999993.50, 10.000000000000000, 5.0000000000000000,
13536 2.0000000000000000, 0.89999999999999991 },
13539 // Test function for a=10.000000000000000, b=5.0000000000000000, c=2.0000000000000000.
13540 template <typename Tp
>
13543 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13544 Tp max_abs_diff
= -Tp(1);
13545 Tp max_abs_frac
= -Tp(1);
13546 unsigned int num_datum
= sizeof(data196
)
13547 / sizeof(testcase_hyperg
<double>);
13548 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13550 const Tp f
= std::tr1::hyperg(Tp(data196
[i
].a
), Tp(data196
[i
].b
),
13551 Tp(data196
[i
].c
), Tp(data196
[i
].x
));
13552 const Tp f0
= data196
[i
].f0
;
13553 const Tp diff
= f
- f0
;
13554 if (std::abs(diff
) > max_abs_diff
)
13555 max_abs_diff
= std::abs(diff
);
13556 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13558 const Tp frac
= diff
/ f0
;
13559 if (std::abs(frac
) > max_abs_frac
)
13560 max_abs_frac
= std::abs(frac
);
13563 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-11));
13566 // Test data for a=10.000000000000000, b=5.0000000000000000, c=4.0000000000000000.
13567 testcase_hyperg
<double> data197
[] = {
13568 { -0.00030045430691819899, 10.000000000000000, 5.0000000000000000,
13569 4.0000000000000000, -0.90000000000000002 },
13570 { -0.00031119487747328581, 10.000000000000000, 5.0000000000000000,
13571 4.0000000000000000, -0.80000000000000004 },
13572 { -0.00014589213141649274, 10.000000000000000, 5.0000000000000000,
13573 4.0000000000000000, -0.69999999999999996 },
13574 { 0.00056843418860809121, 10.000000000000000, 5.0000000000000000,
13575 4.0000000000000000, -0.59999999999999998 },
13576 { 0.0028902549859721725, 10.000000000000000, 5.0000000000000000,
13577 4.0000000000000000, -0.50000000000000000 },
13578 { 0.0098776037238877470, 10.000000000000000, 5.0000000000000000,
13579 4.0000000000000000, -0.40000000000000002 },
13580 { 0.030689217428863914, 10.000000000000000, 5.0000000000000000,
13581 4.0000000000000000, -0.30000000000000004 },
13582 { 0.094211590019076599, 10.000000000000000, 5.0000000000000000,
13583 4.0000000000000000, -0.19999999999999996 },
13584 { 0.29791981455918376, 10.000000000000000, 5.0000000000000000,
13585 4.0000000000000000, -0.099999999999999978 },
13586 { 1.0000000000000000, 10.000000000000000, 5.0000000000000000,
13587 4.0000000000000000, 0.0000000000000000 },
13588 { 3.6646308771236793, 10.000000000000000, 5.0000000000000000,
13589 4.0000000000000000, 0.10000000000000009 },
13590 { 15.133991837501521, 10.000000000000000, 5.0000000000000000,
13591 4.0000000000000000, 0.19999999999999996 },
13592 { 73.331330046144089, 10.000000000000000, 5.0000000000000000,
13593 4.0000000000000000, 0.30000000000000004 },
13594 { 441.01791167787133, 10.000000000000000, 5.0000000000000000,
13595 4.0000000000000000, 0.39999999999999991 },
13596 { 3583.9999999999991, 10.000000000000000, 5.0000000000000000,
13597 4.0000000000000000, 0.50000000000000000 },
13598 { 45299.530029296984, 10.000000000000000, 5.0000000000000000,
13599 4.0000000000000000, 0.60000000000000009 },
13600 { 1157231.0002427341, 10.000000000000000, 5.0000000000000000,
13601 4.0000000000000000, 0.69999999999999996 },
13602 { 107421875.00000016, 10.000000000000000, 5.0000000000000000,
13603 4.0000000000000000, 0.80000000000000004 },
13604 { 234999999999.99734, 10.000000000000000, 5.0000000000000000,
13605 4.0000000000000000, 0.89999999999999991 },
13608 // Test function for a=10.000000000000000, b=5.0000000000000000, c=4.0000000000000000.
13609 template <typename Tp
>
13612 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13613 Tp max_abs_diff
= -Tp(1);
13614 Tp max_abs_frac
= -Tp(1);
13615 unsigned int num_datum
= sizeof(data197
)
13616 / sizeof(testcase_hyperg
<double>);
13617 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13619 const Tp f
= std::tr1::hyperg(Tp(data197
[i
].a
), Tp(data197
[i
].b
),
13620 Tp(data197
[i
].c
), Tp(data197
[i
].x
));
13621 const Tp f0
= data197
[i
].f0
;
13622 const Tp diff
= f
- f0
;
13623 if (std::abs(diff
) > max_abs_diff
)
13624 max_abs_diff
= std::abs(diff
);
13625 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13627 const Tp frac
= diff
/ f0
;
13628 if (std::abs(frac
) > max_abs_frac
)
13629 max_abs_frac
= std::abs(frac
);
13632 VERIFY(max_abs_frac
< Tp(2.5000000000000014e-11));
13635 // Test data for a=10.000000000000000, b=5.0000000000000000, c=6.0000000000000000.
13636 testcase_hyperg
<double> data198
[] = {
13637 { 0.0058530497315411210, 10.000000000000000, 5.0000000000000000,
13638 6.0000000000000000, -0.90000000000000002 },
13639 { 0.0088526869356855692, 10.000000000000000, 5.0000000000000000,
13640 6.0000000000000000, -0.80000000000000004 },
13641 { 0.013770987983443108, 10.000000000000000, 5.0000000000000000,
13642 6.0000000000000000, -0.69999999999999996 },
13643 { 0.022108932690960800, 10.000000000000000, 5.0000000000000000,
13644 6.0000000000000000, -0.59999999999999998 },
13645 { 0.036786236450921578, 10.000000000000000, 5.0000000000000000,
13646 6.0000000000000000, -0.50000000000000000 },
13647 { 0.063750669040426422, 10.000000000000000, 5.0000000000000000,
13648 6.0000000000000000, -0.40000000000000002 },
13649 { 0.11577228680714464, 10.000000000000000, 5.0000000000000000,
13650 6.0000000000000000, -0.30000000000000004 },
13651 { 0.22197573416125735, 10.000000000000000, 5.0000000000000000,
13652 6.0000000000000000, -0.19999999999999996 },
13653 { 0.45361312968415268, 10.000000000000000, 5.0000000000000000,
13654 6.0000000000000000, -0.099999999999999978 },
13655 { 1.0000000000000000, 10.000000000000000, 5.0000000000000000,
13656 6.0000000000000000, 0.0000000000000000 },
13657 { 2.4162889363082747, 10.000000000000000, 5.0000000000000000,
13658 6.0000000000000000, 0.10000000000000009 },
13659 { 6.5381564791240399, 10.000000000000000, 5.0000000000000000,
13660 6.0000000000000000, 0.19999999999999996 },
13661 { 20.415771011498428, 10.000000000000000, 5.0000000000000000,
13662 6.0000000000000000, 0.30000000000000004 },
13663 { 76.870682056629221, 10.000000000000000, 5.0000000000000000,
13664 6.0000000000000000, 0.39999999999999991 },
13665 { 373.58730158730162, 10.000000000000000, 5.0000000000000000,
13666 6.0000000000000000, 0.50000000000000000 },
13667 { 2626.2555803571477, 10.000000000000000, 5.0000000000000000,
13668 6.0000000000000000, 0.60000000000000009 },
13669 { 33060.960671081048, 10.000000000000000, 5.0000000000000000,
13670 6.0000000000000000, 0.69999999999999996 },
13671 { 1203521.8253968258, 10.000000000000000, 5.0000000000000000,
13672 6.0000000000000000, 0.80000000000000004 },
13673 { 584564285.71427989, 10.000000000000000, 5.0000000000000000,
13674 6.0000000000000000, 0.89999999999999991 },
13677 // Test function for a=10.000000000000000, b=5.0000000000000000, c=6.0000000000000000.
13678 template <typename Tp
>
13681 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13682 Tp max_abs_diff
= -Tp(1);
13683 Tp max_abs_frac
= -Tp(1);
13684 unsigned int num_datum
= sizeof(data198
)
13685 / sizeof(testcase_hyperg
<double>);
13686 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13688 const Tp f
= std::tr1::hyperg(Tp(data198
[i
].a
), Tp(data198
[i
].b
),
13689 Tp(data198
[i
].c
), Tp(data198
[i
].x
));
13690 const Tp f0
= data198
[i
].f0
;
13691 const Tp diff
= f
- f0
;
13692 if (std::abs(diff
) > max_abs_diff
)
13693 max_abs_diff
= std::abs(diff
);
13694 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13696 const Tp frac
= diff
/ f0
;
13697 if (std::abs(frac
) > max_abs_frac
)
13698 max_abs_frac
= std::abs(frac
);
13701 VERIFY(max_abs_frac
< Tp(2.5000000000000015e-12));
13704 // Test data for a=10.000000000000000, b=5.0000000000000000, c=8.0000000000000000.
13705 testcase_hyperg
<double> data199
[] = {
13706 { 0.020248990107069400, 10.000000000000000, 5.0000000000000000,
13707 8.0000000000000000, -0.90000000000000002 },
13708 { 0.027876687750502421, 10.000000000000000, 5.0000000000000000,
13709 8.0000000000000000, -0.80000000000000004 },
13710 { 0.039154648888447781, 10.000000000000000, 5.0000000000000000,
13711 8.0000000000000000, -0.69999999999999996 },
13712 { 0.056251883506774923, 10.000000000000000, 5.0000000000000000,
13713 8.0000000000000000, -0.59999999999999998 },
13714 { 0.082914189910074432, 10.000000000000000, 5.0000000000000000,
13715 8.0000000000000000, -0.50000000000000000 },
13716 { 0.12585357817786477, 10.000000000000000, 5.0000000000000000,
13717 8.0000000000000000, -0.40000000000000002 },
13718 { 0.19761423206224929, 10.000000000000000, 5.0000000000000000,
13719 8.0000000000000000, -0.30000000000000004 },
13720 { 0.32280443863359243, 10.000000000000000, 5.0000000000000000,
13721 8.0000000000000000, -0.19999999999999996 },
13722 { 0.55250024062839465, 10.000000000000000, 5.0000000000000000,
13723 8.0000000000000000, -0.099999999999999978 },
13724 { 1.0000000000000000, 10.000000000000000, 5.0000000000000000,
13725 8.0000000000000000, 0.0000000000000000 },
13726 { 1.9374297986599267, 10.000000000000000, 5.0000000000000000,
13727 8.0000000000000000, 0.10000000000000009 },
13728 { 4.0849049886067696, 10.000000000000000, 5.0000000000000000,
13729 8.0000000000000000, 0.19999999999999996 },
13730 { 9.5926988633258983, 10.000000000000000, 5.0000000000000000,
13731 8.0000000000000000, 0.30000000000000004 },
13732 { 25.958314281359531, 10.000000000000000, 5.0000000000000000,
13733 8.0000000000000000, 0.39999999999999991 },
13734 { 85.333333333333300, 10.000000000000000, 5.0000000000000000,
13735 8.0000000000000000, 0.50000000000000000 },
13736 { 372.31445312500028, 10.000000000000000, 5.0000000000000000,
13737 8.0000000000000000, 0.60000000000000009 },
13738 { 2545.3436976070675, 10.000000000000000, 5.0000000000000000,
13739 8.0000000000000000, 0.69999999999999996 },
13740 { 39583.333333333343, 10.000000000000000, 5.0000000000000000,
13741 8.0000000000000000, 0.80000000000000004 },
13742 { 4599999.9999999627, 10.000000000000000, 5.0000000000000000,
13743 8.0000000000000000, 0.89999999999999991 },
13746 // Test function for a=10.000000000000000, b=5.0000000000000000, c=8.0000000000000000.
13747 template <typename Tp
>
13750 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13751 Tp max_abs_diff
= -Tp(1);
13752 Tp max_abs_frac
= -Tp(1);
13753 unsigned int num_datum
= sizeof(data199
)
13754 / sizeof(testcase_hyperg
<double>);
13755 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13757 const Tp f
= std::tr1::hyperg(Tp(data199
[i
].a
), Tp(data199
[i
].b
),
13758 Tp(data199
[i
].c
), Tp(data199
[i
].x
));
13759 const Tp f0
= data199
[i
].f0
;
13760 const Tp diff
= f
- f0
;
13761 if (std::abs(diff
) > max_abs_diff
)
13762 max_abs_diff
= std::abs(diff
);
13763 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13765 const Tp frac
= diff
/ f0
;
13766 if (std::abs(frac
) > max_abs_frac
)
13767 max_abs_frac
= std::abs(frac
);
13770 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
13773 // Test data for a=10.000000000000000, b=5.0000000000000000, c=10.000000000000000.
13774 testcase_hyperg
<double> data200
[] = {
13775 { 0.040386107340619266, 10.000000000000000, 5.0000000000000000,
13776 10.000000000000000, -0.90000000000000002 },
13777 { 0.052922149401344633, 10.000000000000000, 5.0000000000000000,
13778 10.000000000000000, -0.80000000000000004 },
13779 { 0.070429627772374270, 10.000000000000000, 5.0000000000000000,
13780 10.000000000000000, -0.69999999999999996 },
13781 { 0.095367431640624972, 10.000000000000000, 5.0000000000000000,
13782 10.000000000000000, -0.59999999999999998 },
13783 { 0.13168724279835387, 10.000000000000000, 5.0000000000000000,
13784 10.000000000000000, -0.50000000000000000 },
13785 { 0.18593443208187066, 10.000000000000000, 5.0000000000000000,
13786 10.000000000000000, -0.40000000000000002 },
13787 { 0.26932907434290437, 10.000000000000000, 5.0000000000000000,
13788 10.000000000000000, -0.30000000000000004 },
13789 { 0.40187757201646096, 10.000000000000000, 5.0000000000000000,
13790 10.000000000000000, -0.19999999999999996 },
13791 { 0.62092132305915493, 10.000000000000000, 5.0000000000000000,
13792 10.000000000000000, -0.099999999999999978 },
13793 { 1.0000000000000000, 10.000000000000000, 5.0000000000000000,
13794 10.000000000000000, 0.0000000000000000 },
13795 { 1.6935087808430296, 10.000000000000000, 5.0000000000000000,
13796 10.000000000000000, 0.10000000000000009 },
13797 { 3.0517578124999991, 10.000000000000000, 5.0000000000000000,
13798 10.000000000000000, 0.19999999999999996 },
13799 { 5.9499018266198629, 10.000000000000000, 5.0000000000000000,
13800 10.000000000000000, 0.30000000000000004 },
13801 { 12.860082304526737, 10.000000000000000, 5.0000000000000000,
13802 10.000000000000000, 0.39999999999999991 },
13803 { 32.000000000000000, 10.000000000000000, 5.0000000000000000,
13804 10.000000000000000, 0.50000000000000000 },
13805 { 97.656250000000114, 10.000000000000000, 5.0000000000000000,
13806 10.000000000000000, 0.60000000000000009 },
13807 { 411.52263374485580, 10.000000000000000, 5.0000000000000000,
13808 10.000000000000000, 0.69999999999999996 },
13809 { 3124.9999999999991, 10.000000000000000, 5.0000000000000000,
13810 10.000000000000000, 0.80000000000000004 },
13811 { 99999.999999999665, 10.000000000000000, 5.0000000000000000,
13812 10.000000000000000, 0.89999999999999991 },
13815 // Test function for a=10.000000000000000, b=5.0000000000000000, c=10.000000000000000.
13816 template <typename Tp
>
13819 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13820 Tp max_abs_diff
= -Tp(1);
13821 Tp max_abs_frac
= -Tp(1);
13822 unsigned int num_datum
= sizeof(data200
)
13823 / sizeof(testcase_hyperg
<double>);
13824 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13826 const Tp f
= std::tr1::hyperg(Tp(data200
[i
].a
), Tp(data200
[i
].b
),
13827 Tp(data200
[i
].c
), Tp(data200
[i
].x
));
13828 const Tp f0
= data200
[i
].f0
;
13829 const Tp diff
= f
- f0
;
13830 if (std::abs(diff
) > max_abs_diff
)
13831 max_abs_diff
= std::abs(diff
);
13832 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13834 const Tp frac
= diff
/ f0
;
13835 if (std::abs(frac
) > max_abs_frac
)
13836 max_abs_frac
= std::abs(frac
);
13839 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
13842 // Test data for a=10.000000000000000, b=10.000000000000000, c=2.0000000000000000.
13843 testcase_hyperg
<double> data201
[] = {
13844 { 2.3388730079478623e-05, 10.000000000000000, 10.000000000000000,
13845 2.0000000000000000, -0.90000000000000002 },
13846 { -2.3204970759807341e-05, 10.000000000000000, 10.000000000000000,
13847 2.0000000000000000, -0.80000000000000004 },
13848 { -0.00016219730505520291, 10.000000000000000, 10.000000000000000,
13849 2.0000000000000000, -0.69999999999999996 },
13850 { -0.00044366962360925706, 10.000000000000000, 10.000000000000000,
13851 2.0000000000000000, -0.59999999999999998 },
13852 { -0.00071863577205454770, 10.000000000000000, 10.000000000000000,
13853 2.0000000000000000, -0.50000000000000000 },
13854 { 4.4378596544453810e-05, 10.000000000000000, 10.000000000000000,
13855 2.0000000000000000, -0.40000000000000002 },
13856 { 0.0044446568070623570, 10.000000000000000, 10.000000000000000,
13857 2.0000000000000000, -0.30000000000000004 },
13858 { 0.0071045155183571103, 10.000000000000000, 10.000000000000000,
13859 2.0000000000000000, -0.19999999999999996 },
13860 { -0.049961558159890146, 10.000000000000000, 10.000000000000000,
13861 2.0000000000000000, -0.099999999999999978 },
13862 { 1.0000000000000000, 10.000000000000000, 10.000000000000000,
13863 2.0000000000000000, 0.0000000000000000 },
13864 { 51.305449964107403, 10.000000000000000, 10.000000000000000,
13865 2.0000000000000000, 0.10000000000000009 },
13866 { 1435.9545414461309, 10.000000000000000, 10.000000000000000,
13867 2.0000000000000000, 0.19999999999999996 },
13868 { 39657.913058984115, 10.000000000000000, 10.000000000000000,
13869 2.0000000000000000, 0.30000000000000004 },
13870 { 1346016.4468570501, 10.000000000000000, 10.000000000000000,
13871 2.0000000000000000, 0.39999999999999991 },
13872 { 68086556.444444403, 10.000000000000000, 10.000000000000000,
13873 2.0000000000000000, 0.50000000000000000 },
13874 { 6646235808.7301531, 10.000000000000000, 10.000000000000000,
13875 2.0000000000000000, 0.60000000000000009 },
13876 { 1954852335479.9702, 10.000000000000000, 10.000000000000000,
13877 2.0000000000000000, 0.69999999999999996 },
13878 { 4573796225043418.0, 10.000000000000000, 10.000000000000000,
13879 2.0000000000000000, 0.80000000000000004 },
13880 { 1.8280190368899683e+21, 10.000000000000000, 10.000000000000000,
13881 2.0000000000000000, 0.89999999999999991 },
13884 // Test function for a=10.000000000000000, b=10.000000000000000, c=2.0000000000000000.
13885 template <typename Tp
>
13888 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13889 Tp max_abs_diff
= -Tp(1);
13890 Tp max_abs_frac
= -Tp(1);
13891 unsigned int num_datum
= sizeof(data201
)
13892 / sizeof(testcase_hyperg
<double>);
13893 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13895 const Tp f
= std::tr1::hyperg(Tp(data201
[i
].a
), Tp(data201
[i
].b
),
13896 Tp(data201
[i
].c
), Tp(data201
[i
].x
));
13897 const Tp f0
= data201
[i
].f0
;
13898 const Tp diff
= f
- f0
;
13899 if (std::abs(diff
) > max_abs_diff
)
13900 max_abs_diff
= std::abs(diff
);
13901 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13903 const Tp frac
= diff
/ f0
;
13904 if (std::abs(frac
) > max_abs_frac
)
13905 max_abs_frac
= std::abs(frac
);
13908 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-10));
13911 // Test data for a=10.000000000000000, b=10.000000000000000, c=4.0000000000000000.
13912 testcase_hyperg
<double> data202
[] = {
13913 { 1.3504013648882651e-05, 10.000000000000000, 10.000000000000000,
13914 4.0000000000000000, -0.90000000000000002 },
13915 { 3.1753432098404372e-05, 10.000000000000000, 10.000000000000000,
13916 4.0000000000000000, -0.80000000000000004 },
13917 { 6.2032098207659688e-05, 10.000000000000000, 10.000000000000000,
13918 4.0000000000000000, -0.69999999999999996 },
13919 { 8.8747213942768282e-05, 10.000000000000000, 10.000000000000000,
13920 4.0000000000000000, -0.59999999999999998 },
13921 { 1.0478094697243911e-05, 10.000000000000000, 10.000000000000000,
13922 4.0000000000000000, -0.50000000000000000 },
13923 { -0.00055998751006011325, 10.000000000000000, 10.000000000000000,
13924 4.0000000000000000, -0.40000000000000002 },
13925 { -0.0024718654966577563, 10.000000000000000, 10.000000000000000,
13926 4.0000000000000000, -0.30000000000000004 },
13927 { -0.0027000264053619817, 10.000000000000000, 10.000000000000000,
13928 4.0000000000000000, -0.19999999999999996 },
13929 { 0.066515394406810674, 10.000000000000000, 10.000000000000000,
13930 4.0000000000000000, -0.099999999999999978 },
13931 { 1.0000000000000000, 10.000000000000000, 10.000000000000000,
13932 4.0000000000000000, 0.0000000000000000 },
13933 { 11.579200866389527, 10.000000000000000, 10.000000000000000,
13934 4.0000000000000000, 0.10000000000000009 },
13935 { 137.50750548795256, 10.000000000000000, 10.000000000000000,
13936 4.0000000000000000, 0.19999999999999996 },
13937 { 1901.3196072993419, 10.000000000000000, 10.000000000000000,
13938 4.0000000000000000, 0.30000000000000004 },
13939 { 34210.659507137796, 10.000000000000000, 10.000000000000000,
13940 4.0000000000000000, 0.39999999999999991 },
13941 { 920588.19047619053, 10.000000000000000, 10.000000000000000,
13942 4.0000000000000000, 0.50000000000000000 },
13943 { 45876220.933028772, 10.000000000000000, 10.000000000000000,
13944 4.0000000000000000, 0.60000000000000009 },
13945 { 6234608574.0963297, 10.000000000000000, 10.000000000000000,
13946 4.0000000000000000, 0.69999999999999996 },
13947 { 5445391090029.7783, 10.000000000000000, 10.000000000000000,
13948 4.0000000000000000, 0.80000000000000004 },
13949 { 4.6508713107142163e+17, 10.000000000000000, 10.000000000000000,
13950 4.0000000000000000, 0.89999999999999991 },
13953 // Test function for a=10.000000000000000, b=10.000000000000000, c=4.0000000000000000.
13954 template <typename Tp
>
13957 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
13958 Tp max_abs_diff
= -Tp(1);
13959 Tp max_abs_frac
= -Tp(1);
13960 unsigned int num_datum
= sizeof(data202
)
13961 / sizeof(testcase_hyperg
<double>);
13962 for (unsigned int i
= 0; i
< num_datum
; ++i
)
13964 const Tp f
= std::tr1::hyperg(Tp(data202
[i
].a
), Tp(data202
[i
].b
),
13965 Tp(data202
[i
].c
), Tp(data202
[i
].x
));
13966 const Tp f0
= data202
[i
].f0
;
13967 const Tp diff
= f
- f0
;
13968 if (std::abs(diff
) > max_abs_diff
)
13969 max_abs_diff
= std::abs(diff
);
13970 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
13972 const Tp frac
= diff
/ f0
;
13973 if (std::abs(frac
) > max_abs_frac
)
13974 max_abs_frac
= std::abs(frac
);
13977 VERIFY(max_abs_frac
< Tp(2.5000000000000013e-09));
13980 // Test data for a=10.000000000000000, b=10.000000000000000, c=6.0000000000000000.
13981 testcase_hyperg
<double> data203
[] = {
13982 { -2.6846726901567720e-05, 10.000000000000000, 10.000000000000000,
13983 6.0000000000000000, -0.90000000000000002 },
13984 { -4.7817237144207266e-05, 10.000000000000000, 10.000000000000000,
13985 6.0000000000000000, -0.80000000000000004 },
13986 { -7.2908121941975601e-05, 10.000000000000000, 10.000000000000000,
13987 6.0000000000000000, -0.69999999999999996 },
13988 { -6.0427853197480476e-05, 10.000000000000000, 10.000000000000000,
13989 6.0000000000000000, -0.59999999999999998 },
13990 { 0.00020559720946645182, 10.000000000000000, 10.000000000000000,
13991 6.0000000000000000, -0.50000000000000000 },
13992 { 0.0017056910683365828, 10.000000000000000, 10.000000000000000,
13993 6.0000000000000000, -0.40000000000000002 },
13994 { 0.0088037230970526795, 10.000000000000000, 10.000000000000000,
13995 6.0000000000000000, -0.30000000000000004 },
13996 { 0.041510819735141674, 10.000000000000000, 10.000000000000000,
13997 6.0000000000000000, -0.19999999999999996 },
13998 { 0.19754880805677258, 10.000000000000000, 10.000000000000000,
13999 6.0000000000000000, -0.099999999999999978 },
14000 { 1.0000000000000000, 10.000000000000000, 10.000000000000000,
14001 6.0000000000000000, 0.0000000000000000 },
14002 { 5.6130947302779246, 10.000000000000000, 10.000000000000000,
14003 6.0000000000000000, 0.10000000000000009 },
14004 { 36.475357196722442, 10.000000000000000, 10.000000000000000,
14005 6.0000000000000000, 0.19999999999999996 },
14006 { 289.29483001400672, 10.000000000000000, 10.000000000000000,
14007 6.0000000000000000, 0.30000000000000004 },
14008 { 3010.8676549536503, 10.000000000000000, 10.000000000000000,
14009 6.0000000000000000, 0.39999999999999991 },
14010 { 45844.317460317419, 10.000000000000000, 10.000000000000000,
14011 6.0000000000000000, 0.50000000000000000 },
14012 { 1221852.6431492427, 10.000000000000000, 10.000000000000000,
14013 6.0000000000000000, 0.60000000000000009 },
14014 { 79585968.928968787, 10.000000000000000, 10.000000000000000,
14015 6.0000000000000000, 0.69999999999999996 },
14016 { 26733475942.460335, 10.000000000000000, 10.000000000000000,
14017 6.0000000000000000, 0.80000000000000004 },
14018 { 500206428571421.19, 10.000000000000000, 10.000000000000000,
14019 6.0000000000000000, 0.89999999999999991 },
14022 // Test function for a=10.000000000000000, b=10.000000000000000, c=6.0000000000000000.
14023 template <typename Tp
>
14026 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14027 Tp max_abs_diff
= -Tp(1);
14028 Tp max_abs_frac
= -Tp(1);
14029 unsigned int num_datum
= sizeof(data203
)
14030 / sizeof(testcase_hyperg
<double>);
14031 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14033 const Tp f
= std::tr1::hyperg(Tp(data203
[i
].a
), Tp(data203
[i
].b
),
14034 Tp(data203
[i
].c
), Tp(data203
[i
].x
));
14035 const Tp f0
= data203
[i
].f0
;
14036 const Tp diff
= f
- f0
;
14037 if (std::abs(diff
) > max_abs_diff
)
14038 max_abs_diff
= std::abs(diff
);
14039 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14041 const Tp frac
= diff
/ f0
;
14042 if (std::abs(frac
) > max_abs_frac
)
14043 max_abs_frac
= std::abs(frac
);
14046 VERIFY(max_abs_frac
< Tp(2.5000000000000017e-10));
14049 // Test data for a=10.000000000000000, b=10.000000000000000, c=8.0000000000000000.
14050 testcase_hyperg
<double> data204
[] = {
14051 { 0.00025866179054245944, 10.000000000000000, 10.000000000000000,
14052 8.0000000000000000, -0.90000000000000002 },
14053 { 0.00053402577739214288, 10.000000000000000, 10.000000000000000,
14054 8.0000000000000000, -0.80000000000000004 },
14055 { 0.0011390075227240345, 10.000000000000000, 10.000000000000000,
14056 8.0000000000000000, -0.69999999999999996 },
14057 { 0.0025224267119483192, 10.000000000000000, 10.000000000000000,
14058 8.0000000000000000, -0.59999999999999998 },
14059 { 0.0058340332124251467, 10.000000000000000, 10.000000000000000,
14060 8.0000000000000000, -0.50000000000000000 },
14061 { 0.014189256143045285, 10.000000000000000, 10.000000000000000,
14062 8.0000000000000000, -0.40000000000000002 },
14063 { 0.036590990011337567, 10.000000000000000, 10.000000000000000,
14064 8.0000000000000000, -0.30000000000000004 },
14065 { 0.10106560781146992, 10.000000000000000, 10.000000000000000,
14066 8.0000000000000000, -0.19999999999999996 },
14067 { 0.30278778538531409, 10.000000000000000, 10.000000000000000,
14068 8.0000000000000000, -0.099999999999999978 },
14069 { 1.0000000000000000, 10.000000000000000, 10.000000000000000,
14070 8.0000000000000000, 0.0000000000000000 },
14071 { 3.7187249990350599, 10.000000000000000, 10.000000000000000,
14072 8.0000000000000000, 0.10000000000000009 },
14073 { 16.023275545901704, 10.000000000000000, 10.000000000000000,
14074 8.0000000000000000, 0.19999999999999996 },
14075 { 83.265377219882822, 10.000000000000000, 10.000000000000000,
14076 8.0000000000000000, 0.30000000000000004 },
14077 { 553.31413918843987, 10.000000000000000, 10.000000000000000,
14078 8.0000000000000000, 0.39999999999999991 },
14079 { 5148.4444444444416, 10.000000000000000, 10.000000000000000,
14080 8.0000000000000000, 0.50000000000000000 },
14081 { 78082.084655761908, 10.000000000000000, 10.000000000000000,
14082 8.0000000000000000, 0.60000000000000009 },
14083 { 2565874.8781353114, 10.000000000000000, 10.000000000000000,
14084 8.0000000000000000, 0.69999999999999996 },
14085 { 346137152.77777809, 10.000000000000000, 10.000000000000000,
14086 8.0000000000000000, 0.80000000000000004 },
14087 { 1472499999999.9834, 10.000000000000000, 10.000000000000000,
14088 8.0000000000000000, 0.89999999999999991 },
14091 // Test function for a=10.000000000000000, b=10.000000000000000, c=8.0000000000000000.
14092 template <typename Tp
>
14095 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14096 Tp max_abs_diff
= -Tp(1);
14097 Tp max_abs_frac
= -Tp(1);
14098 unsigned int num_datum
= sizeof(data204
)
14099 / sizeof(testcase_hyperg
<double>);
14100 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14102 const Tp f
= std::tr1::hyperg(Tp(data204
[i
].a
), Tp(data204
[i
].b
),
14103 Tp(data204
[i
].c
), Tp(data204
[i
].x
));
14104 const Tp f0
= data204
[i
].f0
;
14105 const Tp diff
= f
- f0
;
14106 if (std::abs(diff
) > max_abs_diff
)
14107 max_abs_diff
= std::abs(diff
);
14108 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14110 const Tp frac
= diff
/ f0
;
14111 if (std::abs(frac
) > max_abs_frac
)
14112 max_abs_frac
= std::abs(frac
);
14115 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-10));
14118 // Test data for a=10.000000000000000, b=10.000000000000000, c=10.000000000000000.
14119 testcase_hyperg
<double> data205
[] = {
14120 { 0.0016310376661280216, 10.000000000000000, 10.000000000000000,
14121 10.000000000000000, -0.90000000000000002 },
14122 { 0.0028007538972582421, 10.000000000000000, 10.000000000000000,
14123 10.000000000000000, -0.80000000000000004 },
14124 { 0.0049603324681551939, 10.000000000000000, 10.000000000000000,
14125 10.000000000000000, -0.69999999999999996 },
14126 { 0.0090949470177292789, 10.000000000000000, 10.000000000000000,
14127 10.000000000000000, -0.59999999999999998 },
14128 { 0.017341529915832606, 10.000000000000000, 10.000000000000000,
14129 10.000000000000000, -0.50000000000000000 },
14130 { 0.034571613033607777, 10.000000000000000, 10.000000000000000,
14131 10.000000000000000, -0.40000000000000002 },
14132 { 0.072538150286405714, 10.000000000000000, 10.000000000000000,
14133 10.000000000000000, -0.30000000000000004 },
14134 { 0.16150558288984579, 10.000000000000000, 10.000000000000000,
14135 10.000000000000000, -0.19999999999999996 },
14136 { 0.38554328942953148, 10.000000000000000, 10.000000000000000,
14137 10.000000000000000, -0.099999999999999978 },
14138 { 1.0000000000000000, 10.000000000000000, 10.000000000000000,
14139 10.000000000000000, 0.0000000000000000 },
14140 { 2.8679719907924444, 10.000000000000000, 10.000000000000000,
14141 10.000000000000000, 0.10000000000000009 },
14142 { 9.3132257461547816, 10.000000000000000, 10.000000000000000,
14143 10.000000000000000, 0.19999999999999996 },
14144 { 35.401331746414378, 10.000000000000000, 10.000000000000000,
14145 10.000000000000000, 0.30000000000000004 },
14146 { 165.38171687920172, 10.000000000000000, 10.000000000000000,
14147 10.000000000000000, 0.39999999999999991 },
14148 { 1024.0000000000000, 10.000000000000000, 10.000000000000000,
14149 10.000000000000000, 0.50000000000000000 },
14150 { 9536.7431640625200, 10.000000000000000, 10.000000000000000,
14151 10.000000000000000, 0.60000000000000009 },
14152 { 169350.87808430271, 10.000000000000000, 10.000000000000000,
14153 10.000000000000000, 0.69999999999999996 },
14154 { 9765624.9999999944, 10.000000000000000, 10.000000000000000,
14155 10.000000000000000, 0.80000000000000004 },
14156 { 9999999999.9999332, 10.000000000000000, 10.000000000000000,
14157 10.000000000000000, 0.89999999999999991 },
14160 // Test function for a=10.000000000000000, b=10.000000000000000, c=10.000000000000000.
14161 template <typename Tp
>
14164 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14165 Tp max_abs_diff
= -Tp(1);
14166 Tp max_abs_frac
= -Tp(1);
14167 unsigned int num_datum
= sizeof(data205
)
14168 / sizeof(testcase_hyperg
<double>);
14169 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14171 const Tp f
= std::tr1::hyperg(Tp(data205
[i
].a
), Tp(data205
[i
].b
),
14172 Tp(data205
[i
].c
), Tp(data205
[i
].x
));
14173 const Tp f0
= data205
[i
].f0
;
14174 const Tp diff
= f
- f0
;
14175 if (std::abs(diff
) > max_abs_diff
)
14176 max_abs_diff
= std::abs(diff
);
14177 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14179 const Tp frac
= diff
/ f0
;
14180 if (std::abs(frac
) > max_abs_frac
)
14181 max_abs_frac
= std::abs(frac
);
14184 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14187 // Test data for a=10.000000000000000, b=20.000000000000000, c=2.0000000000000000.
14188 testcase_hyperg
<double> data206
[] = {
14189 { -2.1776535308707967e-07, 10.000000000000000, 20.000000000000000,
14190 2.0000000000000000, -0.90000000000000002 },
14191 { -2.9128833151427998e-06, 10.000000000000000, 20.000000000000000,
14192 2.0000000000000000, -0.80000000000000004 },
14193 { -9.4755553429035093e-06, 10.000000000000000, 20.000000000000000,
14194 2.0000000000000000, -0.69999999999999996 },
14195 { -1.2844297353813116e-05, 10.000000000000000, 20.000000000000000,
14196 2.0000000000000000, -0.59999999999999998 },
14197 { 3.6576965483568809e-05, 10.000000000000000, 20.000000000000000,
14198 2.0000000000000000, -0.50000000000000000 },
14199 { 0.00020847453890692649, 10.000000000000000, 20.000000000000000,
14200 2.0000000000000000, -0.40000000000000002 },
14201 { -0.00022868510398174632, 10.000000000000000, 20.000000000000000,
14202 2.0000000000000000, -0.30000000000000004 },
14203 { -0.0021855513841942732, 10.000000000000000, 20.000000000000000,
14204 2.0000000000000000, -0.19999999999999996 },
14205 { 0.014662111759334634, 10.000000000000000, 20.000000000000000,
14206 2.0000000000000000, -0.099999999999999978 },
14207 { 1.0000000000000000, 10.000000000000000, 20.000000000000000,
14208 2.0000000000000000, 0.0000000000000000 },
14209 { 746.44776348798098, 10.000000000000000, 20.000000000000000,
14210 2.0000000000000000, 0.10000000000000009 },
14211 { 136080.48445225612, 10.000000000000000, 20.000000000000000,
14212 2.0000000000000000, 0.19999999999999996 },
14213 { 23094279.597826406, 10.000000000000000, 20.000000000000000,
14214 2.0000000000000000, 0.30000000000000004 },
14215 { 5315913395.5545301, 10.000000000000000, 20.000000000000000,
14216 2.0000000000000000, 0.39999999999999991 },
14217 { 2261935718399.9990, 10.000000000000000, 20.000000000000000,
14218 2.0000000000000000, 0.50000000000000000 },
14219 { 2669150854828235.0, 10.000000000000000, 20.000000000000000,
14220 2.0000000000000000, 0.60000000000000009 },
14221 { 1.7499363099365994e+19, 10.000000000000000, 20.000000000000000,
14222 2.0000000000000000, 0.69999999999999996 },
14223 { 2.8881518494606140e+24, 10.000000000000000, 20.000000000000000,
14224 2.0000000000000000, 0.80000000000000004 },
14225 { 1.4165513933661626e+33, 10.000000000000000, 20.000000000000000,
14226 2.0000000000000000, 0.89999999999999991 },
14229 // Test function for a=10.000000000000000, b=20.000000000000000, c=2.0000000000000000.
14230 template <typename Tp
>
14233 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14234 Tp max_abs_diff
= -Tp(1);
14235 Tp max_abs_frac
= -Tp(1);
14236 unsigned int num_datum
= sizeof(data206
)
14237 / sizeof(testcase_hyperg
<double>);
14238 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14240 const Tp f
= std::tr1::hyperg(Tp(data206
[i
].a
), Tp(data206
[i
].b
),
14241 Tp(data206
[i
].c
), Tp(data206
[i
].x
));
14242 const Tp f0
= data206
[i
].f0
;
14243 const Tp diff
= f
- f0
;
14244 if (std::abs(diff
) > max_abs_diff
)
14245 max_abs_diff
= std::abs(diff
);
14246 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14248 const Tp frac
= diff
/ f0
;
14249 if (std::abs(frac
) > max_abs_frac
)
14250 max_abs_frac
= std::abs(frac
);
14253 VERIFY(max_abs_frac
< Tp(1.0000000000000005e-08));
14256 // Test data for a=10.000000000000000, b=20.000000000000000, c=4.0000000000000000.
14257 testcase_hyperg
<double> data207
[] = {
14258 { 1.7149006973860441e-07, 10.000000000000000, 20.000000000000000,
14259 4.0000000000000000, -0.90000000000000002 },
14260 { 3.2399324904088936e-07, 10.000000000000000, 20.000000000000000,
14261 4.0000000000000000, -0.80000000000000004 },
14262 { 1.6015317712089860e-07, 10.000000000000000, 20.000000000000000,
14263 4.0000000000000000, -0.69999999999999996 },
14264 { -2.0500917204199595e-06, 10.000000000000000, 20.000000000000000,
14265 4.0000000000000000, -0.59999999999999998 },
14266 { -1.0175546788599472e-05, 10.000000000000000, 20.000000000000000,
14267 4.0000000000000000, -0.50000000000000000 },
14268 { -1.1720101988202453e-05, 10.000000000000000, 20.000000000000000,
14269 4.0000000000000000, -0.40000000000000002 },
14270 { 0.00014199637113974185, 10.000000000000000, 20.000000000000000,
14271 4.0000000000000000, -0.30000000000000004 },
14272 { 0.00021263363640642297, 10.000000000000000, 20.000000000000000,
14273 4.0000000000000000, -0.19999999999999996 },
14274 { -0.0072649256698441751, 10.000000000000000, 20.000000000000000,
14275 4.0000000000000000, -0.099999999999999978 },
14276 { 1.0000000000000000, 10.000000000000000, 20.000000000000000,
14277 4.0000000000000000, 0.0000000000000000 },
14278 { 90.430293772869618, 10.000000000000000, 20.000000000000000,
14279 4.0000000000000000, 0.10000000000000009 },
14280 { 6248.1455940292308, 10.000000000000000, 20.000000000000000,
14281 4.0000000000000000, 0.19999999999999996 },
14282 { 501143.39852548984, 10.000000000000000, 20.000000000000000,
14283 4.0000000000000000, 0.30000000000000004 },
14284 { 58852027.356439680, 10.000000000000000, 20.000000000000000,
14285 4.0000000000000000, 0.39999999999999991 },
14286 { 12942923093.333330, 10.000000000000000, 20.000000000000000,
14287 4.0000000000000000, 0.50000000000000000 },
14288 { 7618073993853.6592, 10.000000000000000, 20.000000000000000,
14289 4.0000000000000000, 0.60000000000000009 },
14290 { 22630251562549288., 10.000000000000000, 20.000000000000000,
14291 4.0000000000000000, 0.69999999999999996 },
14292 { 1.3708372433980356e+21, 10.000000000000000, 20.000000000000000,
14293 4.0000000000000000, 0.80000000000000004 },
14294 { 1.4154113619999653e+29, 10.000000000000000, 20.000000000000000,
14295 4.0000000000000000, 0.89999999999999991 },
14298 // Test function for a=10.000000000000000, b=20.000000000000000, c=4.0000000000000000.
14299 template <typename Tp
>
14302 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14303 Tp max_abs_diff
= -Tp(1);
14304 Tp max_abs_frac
= -Tp(1);
14305 unsigned int num_datum
= sizeof(data207
)
14306 / sizeof(testcase_hyperg
<double>);
14307 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14309 const Tp f
= std::tr1::hyperg(Tp(data207
[i
].a
), Tp(data207
[i
].b
),
14310 Tp(data207
[i
].c
), Tp(data207
[i
].x
));
14311 const Tp f0
= data207
[i
].f0
;
14312 const Tp diff
= f
- f0
;
14313 if (std::abs(diff
) > max_abs_diff
)
14314 max_abs_diff
= std::abs(diff
);
14315 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14317 const Tp frac
= diff
/ f0
;
14318 if (std::abs(frac
) > max_abs_frac
)
14319 max_abs_frac
= std::abs(frac
);
14322 VERIFY(max_abs_frac
< Tp(5.0000000000000024e-08));
14325 // Test data for a=10.000000000000000, b=20.000000000000000, c=6.0000000000000000.
14326 testcase_hyperg
<double> data208
[] = {
14327 { -1.6667473370780257e-08, 10.000000000000000, 20.000000000000000,
14328 6.0000000000000000, -0.90000000000000002 },
14329 { 8.6214844067774863e-08, 10.000000000000000, 20.000000000000000,
14330 6.0000000000000000, -0.80000000000000004 },
14331 { 5.7778331238835108e-07, 10.000000000000000, 20.000000000000000,
14332 6.0000000000000000, -0.69999999999999996 },
14333 { 2.1911400500362969e-06, 10.000000000000000, 20.000000000000000,
14334 6.0000000000000000, -0.59999999999999998 },
14335 { 4.7440049217100417e-06, 10.000000000000000, 20.000000000000000,
14336 6.0000000000000000, -0.50000000000000000 },
14337 { -1.0564233314924258e-05, 10.000000000000000, 20.000000000000000,
14338 6.0000000000000000, -0.40000000000000002 },
14339 { -0.00017990026051856349, 10.000000000000000, 20.000000000000000,
14340 6.0000000000000000, -0.30000000000000004 },
14341 { -0.00027618146288744351, 10.000000000000000, 20.000000000000000,
14342 6.0000000000000000, -0.19999999999999996 },
14343 { 0.030606019577723392, 10.000000000000000, 20.000000000000000,
14344 6.0000000000000000, -0.099999999999999978 },
14345 { 1.0000000000000000, 10.000000000000000, 20.000000000000000,
14346 6.0000000000000000, 0.0000000000000000 },
14347 { 27.832854169493341, 10.000000000000000, 20.000000000000000,
14348 6.0000000000000000, 0.10000000000000009 },
14349 { 874.00624088575228, 10.000000000000000, 20.000000000000000,
14350 6.0000000000000000, 0.19999999999999996 },
14351 { 36049.199340831554, 10.000000000000000, 20.000000000000000,
14352 6.0000000000000000, 0.30000000000000004 },
14353 { 2270967.7298624986, 10.000000000000000, 20.000000000000000,
14354 6.0000000000000000, 0.39999999999999991 },
14355 { 266979100.44444439, 10.000000000000000, 20.000000000000000,
14356 6.0000000000000000, 0.50000000000000000 },
14357 { 80311224337.493027, 10.000000000000000, 20.000000000000000,
14358 6.0000000000000000, 0.60000000000000009 },
14359 { 110111693103799.72, 10.000000000000000, 20.000000000000000,
14360 6.0000000000000000, 0.69999999999999996 },
14361 { 2.4838871426052618e+18, 10.000000000000000, 20.000000000000000,
14362 6.0000000000000000, 0.80000000000000004 },
14363 { 5.4626349999998603e+25, 10.000000000000000, 20.000000000000000,
14364 6.0000000000000000, 0.89999999999999991 },
14367 // Test function for a=10.000000000000000, b=20.000000000000000, c=6.0000000000000000.
14368 template <typename Tp
>
14371 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14372 Tp max_abs_diff
= -Tp(1);
14373 Tp max_abs_frac
= -Tp(1);
14374 unsigned int num_datum
= sizeof(data208
)
14375 / sizeof(testcase_hyperg
<double>);
14376 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14378 const Tp f
= std::tr1::hyperg(Tp(data208
[i
].a
), Tp(data208
[i
].b
),
14379 Tp(data208
[i
].c
), Tp(data208
[i
].x
));
14380 const Tp f0
= data208
[i
].f0
;
14381 const Tp diff
= f
- f0
;
14382 if (std::abs(diff
) > max_abs_diff
)
14383 max_abs_diff
= std::abs(diff
);
14384 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14386 const Tp frac
= diff
/ f0
;
14387 if (std::abs(frac
) > max_abs_frac
)
14388 max_abs_frac
= std::abs(frac
);
14391 VERIFY(max_abs_frac
< Tp(5.0000000000000019e-07));
14394 // Test data for a=10.000000000000000, b=20.000000000000000, c=8.0000000000000000.
14395 testcase_hyperg
<double> data209
[] = {
14396 { -1.5843795893321480e-07, 10.000000000000000, 20.000000000000000,
14397 8.0000000000000000, -0.90000000000000002 },
14398 { -5.4877275994033766e-07, 10.000000000000000, 20.000000000000000,
14399 8.0000000000000000, -0.80000000000000004 },
14400 { -1.7169507967745992e-06, 10.000000000000000, 20.000000000000000,
14401 8.0000000000000000, -0.69999999999999996 },
14402 { -4.5236439748752000e-06, 10.000000000000000, 20.000000000000000,
14403 8.0000000000000000, -0.59999999999999998 },
14404 { -5.5690492560325806e-06, 10.000000000000000, 20.000000000000000,
14405 8.0000000000000000, -0.50000000000000000 },
14406 { 5.6914115606934911e-05, 10.000000000000000, 20.000000000000000,
14407 8.0000000000000000, -0.40000000000000002 },
14408 { 0.00082507252097519922, 10.000000000000000, 20.000000000000000,
14409 8.0000000000000000, -0.30000000000000004 },
14410 { 0.0085739249288229857, 10.000000000000000, 20.000000000000000,
14411 8.0000000000000000, -0.19999999999999996 },
14412 { 0.088244357683754757, 10.000000000000000, 20.000000000000000,
14413 8.0000000000000000, -0.099999999999999978 },
14414 { 1.0000000000000000, 10.000000000000000, 20.000000000000000,
14415 8.0000000000000000, 0.0000000000000000 },
14416 { 13.387208440156897, 10.000000000000000, 20.000000000000000,
14417 8.0000000000000000, 0.10000000000000009 },
14418 { 226.77895441155110, 10.000000000000000, 20.000000000000000,
14419 8.0000000000000000, 0.19999999999999996 },
14420 { 5281.5716482686785, 10.000000000000000, 20.000000000000000,
14421 8.0000000000000000, 0.30000000000000004 },
14422 { 189431.77762850464, 10.000000000000000, 20.000000000000000,
14423 8.0000000000000000, 0.39999999999999991 },
14424 { 12408149.333333332, 10.000000000000000, 20.000000000000000,
14425 8.0000000000000000, 0.50000000000000000 },
14426 { 1966782292.5839682, 10.000000000000000, 20.000000000000000,
14427 8.0000000000000000, 0.60000000000000009 },
14428 { 1274123112205.7495, 10.000000000000000, 20.000000000000000,
14429 8.0000000000000000, 0.69999999999999996 },
14430 { 10903676350911508., 10.000000000000000, 20.000000000000000,
14431 8.0000000000000000, 0.80000000000000004 },
14432 { 5.1849999999998819e+22, 10.000000000000000, 20.000000000000000,
14433 8.0000000000000000, 0.89999999999999991 },
14436 // Test function for a=10.000000000000000, b=20.000000000000000, c=8.0000000000000000.
14437 template <typename Tp
>
14440 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14441 Tp max_abs_diff
= -Tp(1);
14442 Tp max_abs_frac
= -Tp(1);
14443 unsigned int num_datum
= sizeof(data209
)
14444 / sizeof(testcase_hyperg
<double>);
14445 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14447 const Tp f
= std::tr1::hyperg(Tp(data209
[i
].a
), Tp(data209
[i
].b
),
14448 Tp(data209
[i
].c
), Tp(data209
[i
].x
));
14449 const Tp f0
= data209
[i
].f0
;
14450 const Tp diff
= f
- f0
;
14451 if (std::abs(diff
) > max_abs_diff
)
14452 max_abs_diff
= std::abs(diff
);
14453 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14455 const Tp frac
= diff
/ f0
;
14456 if (std::abs(frac
) > max_abs_frac
)
14457 max_abs_frac
= std::abs(frac
);
14460 VERIFY(max_abs_frac
< Tp(2.5000000000000012e-08));
14463 // Test data for a=10.000000000000000, b=20.000000000000000, c=10.000000000000000.
14464 testcase_hyperg
<double> data210
[] = {
14465 { 2.6602838683283435e-06, 10.000000000000000, 20.000000000000000,
14466 10.000000000000000, -0.90000000000000002 },
14467 { 7.8442223930072316e-06, 10.000000000000000, 20.000000000000000,
14468 10.000000000000000, -0.80000000000000004 },
14469 { 2.4604898194634598e-05, 10.000000000000000, 20.000000000000000,
14470 10.000000000000000, -0.69999999999999996 },
14471 { 8.2718061255302686e-05, 10.000000000000000, 20.000000000000000,
14472 10.000000000000000, -0.59999999999999998 },
14473 { 0.00030072865982171723, 10.000000000000000, 20.000000000000000,
14474 10.000000000000000, -0.50000000000000000 },
14475 { 0.0011951964277455193, 10.000000000000000, 20.000000000000000,
14476 10.000000000000000, -0.40000000000000002 },
14477 { 0.0052617832469731814, 10.000000000000000, 20.000000000000000,
14478 10.000000000000000, -0.30000000000000004 },
14479 { 0.026084053304588847, 10.000000000000000, 20.000000000000000,
14480 10.000000000000000, -0.19999999999999996 },
14481 { 0.14864362802414346, 10.000000000000000, 20.000000000000000,
14482 10.000000000000000, -0.099999999999999978 },
14483 { 1.0000000000000000, 10.000000000000000, 20.000000000000000,
14484 10.000000000000000, 0.0000000000000000 },
14485 { 8.2252633399699757, 10.000000000000000, 20.000000000000000,
14486 10.000000000000000, 0.10000000000000009 },
14487 { 86.736173798840269, 10.000000000000000, 20.000000000000000,
14488 10.000000000000000, 0.19999999999999996 },
14489 { 1253.2542894196865, 10.000000000000000, 20.000000000000000,
14490 10.000000000000000, 0.30000000000000004 },
14491 { 27351.112277912434, 10.000000000000000, 20.000000000000000,
14492 10.000000000000000, 0.39999999999999991 },
14493 { 1048576.0000000000, 10.000000000000000, 20.000000000000000,
14494 10.000000000000000, 0.50000000000000000 },
14495 { 90949470.177293226, 10.000000000000000, 20.000000000000000,
14496 10.000000000000000, 0.60000000000000009 },
14497 { 28679719907.924358, 10.000000000000000, 20.000000000000000,
14498 10.000000000000000, 0.69999999999999996 },
14499 { 95367431640624.906, 10.000000000000000, 20.000000000000000,
14500 10.000000000000000, 0.80000000000000004 },
14501 { 9.9999999999998657e+19, 10.000000000000000, 20.000000000000000,
14502 10.000000000000000, 0.89999999999999991 },
14505 // Test function for a=10.000000000000000, b=20.000000000000000, c=10.000000000000000.
14506 template <typename Tp
>
14509 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14510 Tp max_abs_diff
= -Tp(1);
14511 Tp max_abs_frac
= -Tp(1);
14512 unsigned int num_datum
= sizeof(data210
)
14513 / sizeof(testcase_hyperg
<double>);
14514 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14516 const Tp f
= std::tr1::hyperg(Tp(data210
[i
].a
), Tp(data210
[i
].b
),
14517 Tp(data210
[i
].c
), Tp(data210
[i
].x
));
14518 const Tp f0
= data210
[i
].f0
;
14519 const Tp diff
= f
- f0
;
14520 if (std::abs(diff
) > max_abs_diff
)
14521 max_abs_diff
= std::abs(diff
);
14522 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14524 const Tp frac
= diff
/ f0
;
14525 if (std::abs(frac
) > max_abs_frac
)
14526 max_abs_frac
= std::abs(frac
);
14529 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
14532 // Test data for a=20.000000000000000, b=0.0000000000000000, c=2.0000000000000000.
14533 testcase_hyperg
<double> data211
[] = {
14534 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14535 2.0000000000000000, -0.90000000000000002 },
14536 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14537 2.0000000000000000, -0.80000000000000004 },
14538 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14539 2.0000000000000000, -0.69999999999999996 },
14540 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14541 2.0000000000000000, -0.59999999999999998 },
14542 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14543 2.0000000000000000, -0.50000000000000000 },
14544 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14545 2.0000000000000000, -0.40000000000000002 },
14546 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14547 2.0000000000000000, -0.30000000000000004 },
14548 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14549 2.0000000000000000, -0.19999999999999996 },
14550 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14551 2.0000000000000000, -0.099999999999999978 },
14552 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14553 2.0000000000000000, 0.0000000000000000 },
14554 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14555 2.0000000000000000, 0.10000000000000009 },
14556 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14557 2.0000000000000000, 0.19999999999999996 },
14558 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14559 2.0000000000000000, 0.30000000000000004 },
14560 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14561 2.0000000000000000, 0.39999999999999991 },
14562 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14563 2.0000000000000000, 0.50000000000000000 },
14564 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14565 2.0000000000000000, 0.60000000000000009 },
14566 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14567 2.0000000000000000, 0.69999999999999996 },
14568 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14569 2.0000000000000000, 0.80000000000000004 },
14570 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14571 2.0000000000000000, 0.89999999999999991 },
14574 // Test function for a=20.000000000000000, b=0.0000000000000000, c=2.0000000000000000.
14575 template <typename Tp
>
14578 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14579 Tp max_abs_diff
= -Tp(1);
14580 Tp max_abs_frac
= -Tp(1);
14581 unsigned int num_datum
= sizeof(data211
)
14582 / sizeof(testcase_hyperg
<double>);
14583 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14585 const Tp f
= std::tr1::hyperg(Tp(data211
[i
].a
), Tp(data211
[i
].b
),
14586 Tp(data211
[i
].c
), Tp(data211
[i
].x
));
14587 const Tp f0
= data211
[i
].f0
;
14588 const Tp diff
= f
- f0
;
14589 if (std::abs(diff
) > max_abs_diff
)
14590 max_abs_diff
= std::abs(diff
);
14591 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14593 const Tp frac
= diff
/ f0
;
14594 if (std::abs(frac
) > max_abs_frac
)
14595 max_abs_frac
= std::abs(frac
);
14598 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14601 // Test data for a=20.000000000000000, b=0.0000000000000000, c=4.0000000000000000.
14602 testcase_hyperg
<double> data212
[] = {
14603 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14604 4.0000000000000000, -0.90000000000000002 },
14605 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14606 4.0000000000000000, -0.80000000000000004 },
14607 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14608 4.0000000000000000, -0.69999999999999996 },
14609 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14610 4.0000000000000000, -0.59999999999999998 },
14611 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14612 4.0000000000000000, -0.50000000000000000 },
14613 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14614 4.0000000000000000, -0.40000000000000002 },
14615 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14616 4.0000000000000000, -0.30000000000000004 },
14617 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14618 4.0000000000000000, -0.19999999999999996 },
14619 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14620 4.0000000000000000, -0.099999999999999978 },
14621 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14622 4.0000000000000000, 0.0000000000000000 },
14623 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14624 4.0000000000000000, 0.10000000000000009 },
14625 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14626 4.0000000000000000, 0.19999999999999996 },
14627 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14628 4.0000000000000000, 0.30000000000000004 },
14629 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14630 4.0000000000000000, 0.39999999999999991 },
14631 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14632 4.0000000000000000, 0.50000000000000000 },
14633 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14634 4.0000000000000000, 0.60000000000000009 },
14635 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14636 4.0000000000000000, 0.69999999999999996 },
14637 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14638 4.0000000000000000, 0.80000000000000004 },
14639 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14640 4.0000000000000000, 0.89999999999999991 },
14643 // Test function for a=20.000000000000000, b=0.0000000000000000, c=4.0000000000000000.
14644 template <typename Tp
>
14647 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14648 Tp max_abs_diff
= -Tp(1);
14649 Tp max_abs_frac
= -Tp(1);
14650 unsigned int num_datum
= sizeof(data212
)
14651 / sizeof(testcase_hyperg
<double>);
14652 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14654 const Tp f
= std::tr1::hyperg(Tp(data212
[i
].a
), Tp(data212
[i
].b
),
14655 Tp(data212
[i
].c
), Tp(data212
[i
].x
));
14656 const Tp f0
= data212
[i
].f0
;
14657 const Tp diff
= f
- f0
;
14658 if (std::abs(diff
) > max_abs_diff
)
14659 max_abs_diff
= std::abs(diff
);
14660 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14662 const Tp frac
= diff
/ f0
;
14663 if (std::abs(frac
) > max_abs_frac
)
14664 max_abs_frac
= std::abs(frac
);
14667 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14670 // Test data for a=20.000000000000000, b=0.0000000000000000, c=6.0000000000000000.
14671 testcase_hyperg
<double> data213
[] = {
14672 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14673 6.0000000000000000, -0.90000000000000002 },
14674 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14675 6.0000000000000000, -0.80000000000000004 },
14676 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14677 6.0000000000000000, -0.69999999999999996 },
14678 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14679 6.0000000000000000, -0.59999999999999998 },
14680 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14681 6.0000000000000000, -0.50000000000000000 },
14682 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14683 6.0000000000000000, -0.40000000000000002 },
14684 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14685 6.0000000000000000, -0.30000000000000004 },
14686 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14687 6.0000000000000000, -0.19999999999999996 },
14688 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14689 6.0000000000000000, -0.099999999999999978 },
14690 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14691 6.0000000000000000, 0.0000000000000000 },
14692 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14693 6.0000000000000000, 0.10000000000000009 },
14694 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14695 6.0000000000000000, 0.19999999999999996 },
14696 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14697 6.0000000000000000, 0.30000000000000004 },
14698 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14699 6.0000000000000000, 0.39999999999999991 },
14700 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14701 6.0000000000000000, 0.50000000000000000 },
14702 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14703 6.0000000000000000, 0.60000000000000009 },
14704 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14705 6.0000000000000000, 0.69999999999999996 },
14706 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14707 6.0000000000000000, 0.80000000000000004 },
14708 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14709 6.0000000000000000, 0.89999999999999991 },
14712 // Test function for a=20.000000000000000, b=0.0000000000000000, c=6.0000000000000000.
14713 template <typename Tp
>
14716 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14717 Tp max_abs_diff
= -Tp(1);
14718 Tp max_abs_frac
= -Tp(1);
14719 unsigned int num_datum
= sizeof(data213
)
14720 / sizeof(testcase_hyperg
<double>);
14721 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14723 const Tp f
= std::tr1::hyperg(Tp(data213
[i
].a
), Tp(data213
[i
].b
),
14724 Tp(data213
[i
].c
), Tp(data213
[i
].x
));
14725 const Tp f0
= data213
[i
].f0
;
14726 const Tp diff
= f
- f0
;
14727 if (std::abs(diff
) > max_abs_diff
)
14728 max_abs_diff
= std::abs(diff
);
14729 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14731 const Tp frac
= diff
/ f0
;
14732 if (std::abs(frac
) > max_abs_frac
)
14733 max_abs_frac
= std::abs(frac
);
14736 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14739 // Test data for a=20.000000000000000, b=0.0000000000000000, c=8.0000000000000000.
14740 testcase_hyperg
<double> data214
[] = {
14741 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14742 8.0000000000000000, -0.90000000000000002 },
14743 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14744 8.0000000000000000, -0.80000000000000004 },
14745 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14746 8.0000000000000000, -0.69999999999999996 },
14747 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14748 8.0000000000000000, -0.59999999999999998 },
14749 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14750 8.0000000000000000, -0.50000000000000000 },
14751 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14752 8.0000000000000000, -0.40000000000000002 },
14753 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14754 8.0000000000000000, -0.30000000000000004 },
14755 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14756 8.0000000000000000, -0.19999999999999996 },
14757 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14758 8.0000000000000000, -0.099999999999999978 },
14759 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14760 8.0000000000000000, 0.0000000000000000 },
14761 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14762 8.0000000000000000, 0.10000000000000009 },
14763 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14764 8.0000000000000000, 0.19999999999999996 },
14765 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14766 8.0000000000000000, 0.30000000000000004 },
14767 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14768 8.0000000000000000, 0.39999999999999991 },
14769 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14770 8.0000000000000000, 0.50000000000000000 },
14771 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14772 8.0000000000000000, 0.60000000000000009 },
14773 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14774 8.0000000000000000, 0.69999999999999996 },
14775 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14776 8.0000000000000000, 0.80000000000000004 },
14777 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14778 8.0000000000000000, 0.89999999999999991 },
14781 // Test function for a=20.000000000000000, b=0.0000000000000000, c=8.0000000000000000.
14782 template <typename Tp
>
14785 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14786 Tp max_abs_diff
= -Tp(1);
14787 Tp max_abs_frac
= -Tp(1);
14788 unsigned int num_datum
= sizeof(data214
)
14789 / sizeof(testcase_hyperg
<double>);
14790 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14792 const Tp f
= std::tr1::hyperg(Tp(data214
[i
].a
), Tp(data214
[i
].b
),
14793 Tp(data214
[i
].c
), Tp(data214
[i
].x
));
14794 const Tp f0
= data214
[i
].f0
;
14795 const Tp diff
= f
- f0
;
14796 if (std::abs(diff
) > max_abs_diff
)
14797 max_abs_diff
= std::abs(diff
);
14798 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14800 const Tp frac
= diff
/ f0
;
14801 if (std::abs(frac
) > max_abs_frac
)
14802 max_abs_frac
= std::abs(frac
);
14805 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14808 // Test data for a=20.000000000000000, b=0.0000000000000000, c=10.000000000000000.
14809 testcase_hyperg
<double> data215
[] = {
14810 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14811 10.000000000000000, -0.90000000000000002 },
14812 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14813 10.000000000000000, -0.80000000000000004 },
14814 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14815 10.000000000000000, -0.69999999999999996 },
14816 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14817 10.000000000000000, -0.59999999999999998 },
14818 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14819 10.000000000000000, -0.50000000000000000 },
14820 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14821 10.000000000000000, -0.40000000000000002 },
14822 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14823 10.000000000000000, -0.30000000000000004 },
14824 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14825 10.000000000000000, -0.19999999999999996 },
14826 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14827 10.000000000000000, -0.099999999999999978 },
14828 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14829 10.000000000000000, 0.0000000000000000 },
14830 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14831 10.000000000000000, 0.10000000000000009 },
14832 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14833 10.000000000000000, 0.19999999999999996 },
14834 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14835 10.000000000000000, 0.30000000000000004 },
14836 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14837 10.000000000000000, 0.39999999999999991 },
14838 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14839 10.000000000000000, 0.50000000000000000 },
14840 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14841 10.000000000000000, 0.60000000000000009 },
14842 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14843 10.000000000000000, 0.69999999999999996 },
14844 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14845 10.000000000000000, 0.80000000000000004 },
14846 { 1.0000000000000000, 20.000000000000000, 0.0000000000000000,
14847 10.000000000000000, 0.89999999999999991 },
14850 // Test function for a=20.000000000000000, b=0.0000000000000000, c=10.000000000000000.
14851 template <typename Tp
>
14854 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14855 Tp max_abs_diff
= -Tp(1);
14856 Tp max_abs_frac
= -Tp(1);
14857 unsigned int num_datum
= sizeof(data215
)
14858 / sizeof(testcase_hyperg
<double>);
14859 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14861 const Tp f
= std::tr1::hyperg(Tp(data215
[i
].a
), Tp(data215
[i
].b
),
14862 Tp(data215
[i
].c
), Tp(data215
[i
].x
));
14863 const Tp f0
= data215
[i
].f0
;
14864 const Tp diff
= f
- f0
;
14865 if (std::abs(diff
) > max_abs_diff
)
14866 max_abs_diff
= std::abs(diff
);
14867 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14869 const Tp frac
= diff
/ f0
;
14870 if (std::abs(frac
) > max_abs_frac
)
14871 max_abs_frac
= std::abs(frac
);
14874 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14877 // Test data for a=20.000000000000000, b=0.50000000000000000, c=2.0000000000000000.
14878 testcase_hyperg
<double> data216
[] = {
14879 { 0.26690449940521566, 20.000000000000000, 0.50000000000000000,
14880 2.0000000000000000, -0.90000000000000002 },
14881 { 0.28252302866181805, 20.000000000000000, 0.50000000000000000,
14882 2.0000000000000000, -0.80000000000000004 },
14883 { 0.30123616141153819, 20.000000000000000, 0.50000000000000000,
14884 2.0000000000000000, -0.69999999999999996 },
14885 { 0.32421384687602628, 20.000000000000000, 0.50000000000000000,
14886 2.0000000000000000, -0.59999999999999998 },
14887 { 0.35334630811776752, 20.000000000000000, 0.50000000000000000,
14888 2.0000000000000000, -0.50000000000000000 },
14889 { 0.39191793127467034, 20.000000000000000, 0.50000000000000000,
14890 2.0000000000000000, -0.40000000000000002 },
14891 { 0.44620488618129206, 20.000000000000000, 0.50000000000000000,
14892 2.0000000000000000, -0.30000000000000004 },
14893 { 0.52980896919265685, 20.000000000000000, 0.50000000000000000,
14894 2.0000000000000000, -0.19999999999999996 },
14895 { 0.67754711477562357, 20.000000000000000, 0.50000000000000000,
14896 2.0000000000000000, -0.099999999999999978 },
14897 { 1.0000000000000000, 20.000000000000000, 0.50000000000000000,
14898 2.0000000000000000, 0.0000000000000000 },
14899 { 1.9567557771780317, 20.000000000000000, 0.50000000000000000,
14900 2.0000000000000000, 0.10000000000000009 },
14901 { 6.1816042148333086, 20.000000000000000, 0.50000000000000000,
14902 2.0000000000000000, 0.19999999999999996 },
14903 { 35.653088618561227, 20.000000000000000, 0.50000000000000000,
14904 2.0000000000000000, 0.30000000000000004 },
14905 { 377.51482843179906, 20.000000000000000, 0.50000000000000000,
14906 2.0000000000000000, 0.39999999999999991 },
14907 { 7645.8816551195359, 20.000000000000000, 0.50000000000000000,
14908 2.0000000000000000, 0.50000000000000000 },
14909 { 354791.74537980522, 20.000000000000000, 0.50000000000000000,
14910 2.0000000000000000, 0.60000000000000009 },
14911 { 57009889.966638684, 20.000000000000000, 0.50000000000000000,
14912 2.0000000000000000, 0.69999999999999996 },
14913 { 83771357024.863937, 20.000000000000000, 0.50000000000000000,
14914 2.0000000000000000, 0.80000000000000004 },
14915 { 25866972896376408., 20.000000000000000, 0.50000000000000000,
14916 2.0000000000000000, 0.89999999999999991 },
14919 // Test function for a=20.000000000000000, b=0.50000000000000000, c=2.0000000000000000.
14920 template <typename Tp
>
14923 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14924 Tp max_abs_diff
= -Tp(1);
14925 Tp max_abs_frac
= -Tp(1);
14926 unsigned int num_datum
= sizeof(data216
)
14927 / sizeof(testcase_hyperg
<double>);
14928 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14930 const Tp f
= std::tr1::hyperg(Tp(data216
[i
].a
), Tp(data216
[i
].b
),
14931 Tp(data216
[i
].c
), Tp(data216
[i
].x
));
14932 const Tp f0
= data216
[i
].f0
;
14933 const Tp diff
= f
- f0
;
14934 if (std::abs(diff
) > max_abs_diff
)
14935 max_abs_diff
= std::abs(diff
);
14936 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
14938 const Tp frac
= diff
/ f0
;
14939 if (std::abs(frac
) > max_abs_frac
)
14940 max_abs_frac
= std::abs(frac
);
14943 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
14946 // Test data for a=20.000000000000000, b=0.50000000000000000, c=4.0000000000000000.
14947 testcase_hyperg
<double> data217
[] = {
14948 { 0.40342659436153405, 20.000000000000000, 0.50000000000000000,
14949 4.0000000000000000, -0.90000000000000002 },
14950 { 0.42420571192034318, 20.000000000000000, 0.50000000000000000,
14951 4.0000000000000000, -0.80000000000000004 },
14952 { 0.44852768286073008, 20.000000000000000, 0.50000000000000000,
14953 4.0000000000000000, -0.69999999999999996 },
14954 { 0.47751245808592863, 20.000000000000000, 0.50000000000000000,
14955 4.0000000000000000, -0.59999999999999998 },
14956 { 0.51283632632707754, 20.000000000000000, 0.50000000000000000,
14957 4.0000000000000000, -0.50000000000000000 },
14958 { 0.55713468814894307, 20.000000000000000, 0.50000000000000000,
14959 4.0000000000000000, -0.40000000000000002 },
14960 { 0.61481320817757312, 20.000000000000000, 0.50000000000000000,
14961 4.0000000000000000, -0.30000000000000004 },
14962 { 0.69383483410097202, 20.000000000000000, 0.50000000000000000,
14963 4.0000000000000000, -0.19999999999999996 },
14964 { 0.81012002526006033, 20.000000000000000, 0.50000000000000000,
14965 4.0000000000000000, -0.099999999999999978 },
14966 { 1.0000000000000000, 20.000000000000000, 0.50000000000000000,
14967 4.0000000000000000, 0.0000000000000000 },
14968 { 1.3622225506603911, 20.000000000000000, 0.50000000000000000,
14969 4.0000000000000000, 0.10000000000000009 },
14970 { 2.2349513086109001, 20.000000000000000, 0.50000000000000000,
14971 4.0000000000000000, 0.19999999999999996 },
14972 { 5.1864917536761723, 20.000000000000000, 0.50000000000000000,
14973 4.0000000000000000, 0.30000000000000004 },
14974 { 21.020560423779411, 20.000000000000000, 0.50000000000000000,
14975 4.0000000000000000, 0.39999999999999991 },
14976 { 175.19649997100612, 20.000000000000000, 0.50000000000000000,
14977 4.0000000000000000, 0.50000000000000000 },
14978 { 3467.1587803688708, 20.000000000000000, 0.50000000000000000,
14979 4.0000000000000000, 0.60000000000000009 },
14980 { 225003.88683445856, 20.000000000000000, 0.50000000000000000,
14981 4.0000000000000000, 0.69999999999999996 },
14982 { 110837674.65652709, 20.000000000000000, 0.50000000000000000,
14983 4.0000000000000000, 0.80000000000000004 },
14984 { 6688966964170.6807, 20.000000000000000, 0.50000000000000000,
14985 4.0000000000000000, 0.89999999999999991 },
14988 // Test function for a=20.000000000000000, b=0.50000000000000000, c=4.0000000000000000.
14989 template <typename Tp
>
14992 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
14993 Tp max_abs_diff
= -Tp(1);
14994 Tp max_abs_frac
= -Tp(1);
14995 unsigned int num_datum
= sizeof(data217
)
14996 / sizeof(testcase_hyperg
<double>);
14997 for (unsigned int i
= 0; i
< num_datum
; ++i
)
14999 const Tp f
= std::tr1::hyperg(Tp(data217
[i
].a
), Tp(data217
[i
].b
),
15000 Tp(data217
[i
].c
), Tp(data217
[i
].x
));
15001 const Tp f0
= data217
[i
].f0
;
15002 const Tp diff
= f
- f0
;
15003 if (std::abs(diff
) > max_abs_diff
)
15004 max_abs_diff
= std::abs(diff
);
15005 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15007 const Tp frac
= diff
/ f0
;
15008 if (std::abs(frac
) > max_abs_frac
)
15009 max_abs_frac
= std::abs(frac
);
15012 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15015 // Test data for a=20.000000000000000, b=0.50000000000000000, c=6.0000000000000000.
15016 testcase_hyperg
<double> data218
[] = {
15017 { 0.48716309885816761, 20.000000000000000, 0.50000000000000000,
15018 6.0000000000000000, -0.90000000000000002 },
15019 { 0.50965859152542281, 20.000000000000000, 0.50000000000000000,
15020 6.0000000000000000, -0.80000000000000004 },
15021 { 0.53554809210658971, 20.000000000000000, 0.50000000000000000,
15022 6.0000000000000000, -0.69999999999999996 },
15023 { 0.56576689207507136, 20.000000000000000, 0.50000000000000000,
15024 6.0000000000000000, -0.59999999999999998 },
15025 { 0.60164849637133688, 20.000000000000000, 0.50000000000000000,
15026 6.0000000000000000, -0.50000000000000000 },
15027 { 0.64516711595404375, 20.000000000000000, 0.50000000000000000,
15028 6.0000000000000000, -0.40000000000000002 },
15029 { 0.69938278735493542, 20.000000000000000, 0.50000000000000000,
15030 6.0000000000000000, -0.30000000000000004 },
15031 { 0.76931621518401860, 20.000000000000000, 0.50000000000000000,
15032 6.0000000000000000, -0.19999999999999996 },
15033 { 0.86381808725530695, 20.000000000000000, 0.50000000000000000,
15034 6.0000000000000000, -0.099999999999999978 },
15035 { 1.0000000000000000, 20.000000000000000, 0.50000000000000000,
15036 6.0000000000000000, 0.0000000000000000 },
15037 { 1.2152051956815531, 20.000000000000000, 0.50000000000000000,
15038 6.0000000000000000, 0.10000000000000009 },
15039 { 1.6052546785425543, 20.000000000000000, 0.50000000000000000,
15040 6.0000000000000000, 0.19999999999999996 },
15041 { 2.4765586046012635, 20.000000000000000, 0.50000000000000000,
15042 6.0000000000000000, 0.30000000000000004 },
15043 { 5.1564492216997486, 20.000000000000000, 0.50000000000000000,
15044 6.0000000000000000, 0.39999999999999991 },
15045 { 18.446158392136365, 20.000000000000000, 0.50000000000000000,
15046 6.0000000000000000, 0.50000000000000000 },
15047 { 150.44577670123971, 20.000000000000000, 0.50000000000000000,
15048 6.0000000000000000, 0.60000000000000009 },
15049 { 3862.6317400115768, 20.000000000000000, 0.50000000000000000,
15050 6.0000000000000000, 0.69999999999999996 },
15051 { 632428.34833625401, 20.000000000000000, 0.50000000000000000,
15052 6.0000000000000000, 0.80000000000000004 },
15053 { 7426927663.3808765, 20.000000000000000, 0.50000000000000000,
15054 6.0000000000000000, 0.89999999999999991 },
15057 // Test function for a=20.000000000000000, b=0.50000000000000000, c=6.0000000000000000.
15058 template <typename Tp
>
15061 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15062 Tp max_abs_diff
= -Tp(1);
15063 Tp max_abs_frac
= -Tp(1);
15064 unsigned int num_datum
= sizeof(data218
)
15065 / sizeof(testcase_hyperg
<double>);
15066 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15068 const Tp f
= std::tr1::hyperg(Tp(data218
[i
].a
), Tp(data218
[i
].b
),
15069 Tp(data218
[i
].c
), Tp(data218
[i
].x
));
15070 const Tp f0
= data218
[i
].f0
;
15071 const Tp diff
= f
- f0
;
15072 if (std::abs(diff
) > max_abs_diff
)
15073 max_abs_diff
= std::abs(diff
);
15074 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15076 const Tp frac
= diff
/ f0
;
15077 if (std::abs(frac
) > max_abs_frac
)
15078 max_abs_frac
= std::abs(frac
);
15081 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15084 // Test data for a=20.000000000000000, b=0.50000000000000000, c=8.0000000000000000.
15085 testcase_hyperg
<double> data219
[] = {
15086 { 0.54703266209548362, 20.000000000000000, 0.50000000000000000,
15087 8.0000000000000000, -0.90000000000000002 },
15088 { 0.56997321774144971, 20.000000000000000, 0.50000000000000000,
15089 8.0000000000000000, -0.80000000000000004 },
15090 { 0.59603026159654970, 20.000000000000000, 0.50000000000000000,
15091 8.0000000000000000, -0.69999999999999996 },
15092 { 0.62596978851120511, 20.000000000000000, 0.50000000000000000,
15093 8.0000000000000000, -0.59999999999999998 },
15094 { 0.66084565876898926, 20.000000000000000, 0.50000000000000000,
15095 8.0000000000000000, -0.50000000000000000 },
15096 { 0.70215256667232839, 20.000000000000000, 0.50000000000000000,
15097 8.0000000000000000, -0.40000000000000002 },
15098 { 0.75208916592008568, 20.000000000000000, 0.50000000000000000,
15099 8.0000000000000000, -0.30000000000000004 },
15100 { 0.81403631111658648, 20.000000000000000, 0.50000000000000000,
15101 8.0000000000000000, -0.19999999999999996 },
15102 { 0.89348608489854608, 20.000000000000000, 0.50000000000000000,
15103 8.0000000000000000, -0.099999999999999978 },
15104 { 1.0000000000000000, 20.000000000000000, 0.50000000000000000,
15105 8.0000000000000000, 0.0000000000000000 },
15106 { 1.1517793185139173, 20.000000000000000, 0.50000000000000000,
15107 8.0000000000000000, 0.10000000000000009 },
15108 { 1.3878110313656598, 20.000000000000000, 0.50000000000000000,
15109 8.0000000000000000, 0.19999999999999996 },
15110 { 1.8061071794572381, 20.000000000000000, 0.50000000000000000,
15111 8.0000000000000000, 0.30000000000000004 },
15112 { 2.7148594517859586, 20.000000000000000, 0.50000000000000000,
15113 8.0000000000000000, 0.39999999999999991 },
15114 { 5.4529435709049361, 20.000000000000000, 0.50000000000000000,
15115 8.0000000000000000, 0.50000000000000000 },
15116 { 19.487310275377109, 20.000000000000000, 0.50000000000000000,
15117 8.0000000000000000, 0.60000000000000009 },
15118 { 191.69079165937470, 20.000000000000000, 0.50000000000000000,
15119 8.0000000000000000, 0.69999999999999996 },
15120 { 10218.543981792311, 20.000000000000000, 0.50000000000000000,
15121 8.0000000000000000, 0.80000000000000004 },
15122 { 23160836.646583911, 20.000000000000000, 0.50000000000000000,
15123 8.0000000000000000, 0.89999999999999991 },
15126 // Test function for a=20.000000000000000, b=0.50000000000000000, c=8.0000000000000000.
15127 template <typename Tp
>
15130 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15131 Tp max_abs_diff
= -Tp(1);
15132 Tp max_abs_frac
= -Tp(1);
15133 unsigned int num_datum
= sizeof(data219
)
15134 / sizeof(testcase_hyperg
<double>);
15135 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15137 const Tp f
= std::tr1::hyperg(Tp(data219
[i
].a
), Tp(data219
[i
].b
),
15138 Tp(data219
[i
].c
), Tp(data219
[i
].x
));
15139 const Tp f0
= data219
[i
].f0
;
15140 const Tp diff
= f
- f0
;
15141 if (std::abs(diff
) > max_abs_diff
)
15142 max_abs_diff
= std::abs(diff
);
15143 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15145 const Tp frac
= diff
/ f0
;
15146 if (std::abs(frac
) > max_abs_frac
)
15147 max_abs_frac
= std::abs(frac
);
15150 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15153 // Test data for a=20.000000000000000, b=0.50000000000000000, c=10.000000000000000.
15154 testcase_hyperg
<double> data220
[] = {
15155 { 0.59292067298616002, 20.000000000000000, 0.50000000000000000,
15156 10.000000000000000, -0.90000000000000002 },
15157 { 0.61572496720679915, 20.000000000000000, 0.50000000000000000,
15158 10.000000000000000, -0.80000000000000004 },
15159 { 0.64135339122875623, 20.000000000000000, 0.50000000000000000,
15160 10.000000000000000, -0.69999999999999996 },
15161 { 0.67043457419280483, 20.000000000000000, 0.50000000000000000,
15162 10.000000000000000, -0.59999999999999998 },
15163 { 0.70380956268170980, 20.000000000000000, 0.50000000000000000,
15164 10.000000000000000, -0.50000000000000000 },
15165 { 0.74263251901495231, 20.000000000000000, 0.50000000000000000,
15166 10.000000000000000, -0.40000000000000002 },
15167 { 0.78853555445528278, 20.000000000000000, 0.50000000000000000,
15168 10.000000000000000, -0.30000000000000004 },
15169 { 0.84391122775673766, 20.000000000000000, 0.50000000000000000,
15170 10.000000000000000, -0.19999999999999996 },
15171 { 0.91242401018807406, 20.000000000000000, 0.50000000000000000,
15172 10.000000000000000, -0.099999999999999978 },
15173 { 1.0000000000000000, 20.000000000000000, 0.50000000000000000,
15174 10.000000000000000, 0.0000000000000000 },
15175 { 1.1169059681274873, 20.000000000000000, 0.50000000000000000,
15176 10.000000000000000, 0.10000000000000009 },
15177 { 1.2825928301302667, 20.000000000000000, 0.50000000000000000,
15178 10.000000000000000, 0.19999999999999996 },
15179 { 1.5385937789924939, 20.000000000000000, 0.50000000000000000,
15180 10.000000000000000, 0.30000000000000004 },
15181 { 1.9895771187893898, 20.000000000000000, 0.50000000000000000,
15182 10.000000000000000, 0.39999999999999991 },
15183 { 2.9707335806970168, 20.000000000000000, 0.50000000000000000,
15184 10.000000000000000, 0.50000000000000000 },
15185 { 6.0299506157180467, 20.000000000000000, 0.50000000000000000,
15186 10.000000000000000, 0.60000000000000009 },
15187 { 24.259090336955577, 20.000000000000000, 0.50000000000000000,
15188 10.000000000000000, 0.69999999999999996 },
15189 { 406.27267173257223, 20.000000000000000, 0.50000000000000000,
15190 10.000000000000000, 0.80000000000000004 },
15191 { 174330.03997220192, 20.000000000000000, 0.50000000000000000,
15192 10.000000000000000, 0.89999999999999991 },
15195 // Test function for a=20.000000000000000, b=0.50000000000000000, c=10.000000000000000.
15196 template <typename Tp
>
15199 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15200 Tp max_abs_diff
= -Tp(1);
15201 Tp max_abs_frac
= -Tp(1);
15202 unsigned int num_datum
= sizeof(data220
)
15203 / sizeof(testcase_hyperg
<double>);
15204 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15206 const Tp f
= std::tr1::hyperg(Tp(data220
[i
].a
), Tp(data220
[i
].b
),
15207 Tp(data220
[i
].c
), Tp(data220
[i
].x
));
15208 const Tp f0
= data220
[i
].f0
;
15209 const Tp diff
= f
- f0
;
15210 if (std::abs(diff
) > max_abs_diff
)
15211 max_abs_diff
= std::abs(diff
);
15212 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15214 const Tp frac
= diff
/ f0
;
15215 if (std::abs(frac
) > max_abs_frac
)
15216 max_abs_frac
= std::abs(frac
);
15219 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15222 // Test data for a=20.000000000000000, b=1.0000000000000000, c=2.0000000000000000.
15223 testcase_hyperg
<double> data221
[] = {
15224 { 0.058479236576646373, 20.000000000000000, 1.0000000000000000,
15225 2.0000000000000000, -0.90000000000000002 },
15226 { 0.065788544763137669, 20.000000000000000, 1.0000000000000000,
15227 2.0000000000000000, -0.80000000000000004 },
15228 { 0.075184824937824662, 20.000000000000000, 1.0000000000000000,
15229 2.0000000000000000, -0.69999999999999996 },
15230 { 0.087707688693157260, 20.000000000000000, 1.0000000000000000,
15231 2.0000000000000000, -0.59999999999999998 },
15232 { 0.10521567442213345, 20.000000000000000, 1.0000000000000000,
15233 2.0000000000000000, -0.50000000000000000 },
15234 { 0.13135877960541525, 20.000000000000000, 1.0000000000000000,
15235 2.0000000000000000, -0.40000000000000002 },
15236 { 0.17423854066297104, 20.000000000000000, 1.0000000000000000,
15237 2.0000000000000000, -0.30000000000000004 },
15238 { 0.25492082527223525, 20.000000000000000, 1.0000000000000000,
15239 2.0000000000000000, -0.19999999999999996 },
15240 { 0.44025895219654843, 20.000000000000000, 1.0000000000000000,
15241 2.0000000000000000, -0.099999999999999978 },
15242 { 1.0000000000000000, 20.000000000000000, 1.0000000000000000,
15243 2.0000000000000000, 0.0000000000000000 },
15244 { 3.3698615820910360, 20.000000000000000, 1.0000000000000000,
15245 2.0000000000000000, 0.10000000000000009 },
15246 { 17.997089220808483, 20.000000000000000, 1.0000000000000000,
15247 2.0000000000000000, 0.19999999999999996 },
15248 { 153.73298291118951, 20.000000000000000, 1.0000000000000000,
15249 2.0000000000000000, 0.30000000000000004 },
15250 { 2159.1667587825627, 20.000000000000000, 1.0000000000000000,
15251 2.0000000000000000, 0.39999999999999991 },
15252 { 55188.105263157879, 20.000000000000000, 1.0000000000000000,
15253 2.0000000000000000, 0.50000000000000000 },
15254 { 3191209.3921857267, 20.000000000000000, 1.0000000000000000,
15255 2.0000000000000000, 0.60000000000000009 },
15256 { 646910975.29152656, 20.000000000000000, 1.0000000000000000,
15257 2.0000000000000000, 0.69999999999999996 },
15258 { 1254834626850.2659, 20.000000000000000, 1.0000000000000000,
15259 2.0000000000000000, 0.80000000000000004 },
15260 { 5.8479532163741414e+17, 20.000000000000000, 1.0000000000000000,
15261 2.0000000000000000, 0.89999999999999991 },
15264 // Test function for a=20.000000000000000, b=1.0000000000000000, c=2.0000000000000000.
15265 template <typename Tp
>
15268 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15269 Tp max_abs_diff
= -Tp(1);
15270 Tp max_abs_frac
= -Tp(1);
15271 unsigned int num_datum
= sizeof(data221
)
15272 / sizeof(testcase_hyperg
<double>);
15273 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15275 const Tp f
= std::tr1::hyperg(Tp(data221
[i
].a
), Tp(data221
[i
].b
),
15276 Tp(data221
[i
].c
), Tp(data221
[i
].x
));
15277 const Tp f0
= data221
[i
].f0
;
15278 const Tp diff
= f
- f0
;
15279 if (std::abs(diff
) > max_abs_diff
)
15280 max_abs_diff
= std::abs(diff
);
15281 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15283 const Tp frac
= diff
/ f0
;
15284 if (std::abs(frac
) > max_abs_frac
)
15285 max_abs_frac
= std::abs(frac
);
15288 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15291 // Test data for a=20.000000000000000, b=1.0000000000000000, c=4.0000000000000000.
15292 testcase_hyperg
<double> data222
[] = {
15293 { 0.15519511120894947, 20.000000000000000, 1.0000000000000000,
15294 4.0000000000000000, -0.90000000000000002 },
15295 { 0.17197165701692899, 20.000000000000000, 1.0000000000000000,
15296 4.0000000000000000, -0.80000000000000004 },
15297 { 0.19276847315207363, 20.000000000000000, 1.0000000000000000,
15298 4.0000000000000000, -0.69999999999999996 },
15299 { 0.21920107206179093, 20.000000000000000, 1.0000000000000000,
15300 4.0000000000000000, -0.59999999999999998 },
15301 { 0.25386158960390581, 20.000000000000000, 1.0000000000000000,
15302 4.0000000000000000, -0.50000000000000000 },
15303 { 0.30115970686600657, 20.000000000000000, 1.0000000000000000,
15304 4.0000000000000000, -0.40000000000000002 },
15305 { 0.36916408142057117, 20.000000000000000, 1.0000000000000000,
15306 4.0000000000000000, -0.30000000000000004 },
15307 { 0.47406175901569558, 20.000000000000000, 1.0000000000000000,
15308 4.0000000000000000, -0.19999999999999996 },
15309 { 0.65237908266239919, 20.000000000000000, 1.0000000000000000,
15310 4.0000000000000000, -0.099999999999999978 },
15311 { 1.0000000000000000, 20.000000000000000, 1.0000000000000000,
15312 4.0000000000000000, 0.0000000000000000 },
15313 { 1.8227213362622299, 20.000000000000000, 1.0000000000000000,
15314 4.0000000000000000, 0.10000000000000009 },
15315 { 4.3716358339791332, 20.000000000000000, 1.0000000000000000,
15316 4.0000000000000000, 0.19999999999999996 },
15317 { 15.670841312959222, 20.000000000000000, 1.0000000000000000,
15318 4.0000000000000000, 0.30000000000000004 },
15319 { 94.742651122760179, 20.000000000000000, 1.0000000000000000,
15320 4.0000000000000000, 0.39999999999999991 },
15321 { 1081.7275541795671, 20.000000000000000, 1.0000000000000000,
15322 4.0000000000000000, 0.50000000000000000 },
15323 { 27809.787731465960, 20.000000000000000, 1.0000000000000000,
15324 4.0000000000000000, 0.60000000000000009 },
15325 { 2329811.1715181042, 20.000000000000000, 1.0000000000000000,
15326 4.0000000000000000, 0.69999999999999996 },
15327 { 1537787532.6780224, 20.000000000000000, 1.0000000000000000,
15328 4.0000000000000000, 0.80000000000000004 },
15329 { 141562653506999.88, 20.000000000000000, 1.0000000000000000,
15330 4.0000000000000000, 0.89999999999999991 },
15333 // Test function for a=20.000000000000000, b=1.0000000000000000, c=4.0000000000000000.
15334 template <typename Tp
>
15337 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15338 Tp max_abs_diff
= -Tp(1);
15339 Tp max_abs_frac
= -Tp(1);
15340 unsigned int num_datum
= sizeof(data222
)
15341 / sizeof(testcase_hyperg
<double>);
15342 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15344 const Tp f
= std::tr1::hyperg(Tp(data222
[i
].a
), Tp(data222
[i
].b
),
15345 Tp(data222
[i
].c
), Tp(data222
[i
].x
));
15346 const Tp f0
= data222
[i
].f0
;
15347 const Tp diff
= f
- f0
;
15348 if (std::abs(diff
) > max_abs_diff
)
15349 max_abs_diff
= std::abs(diff
);
15350 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15352 const Tp frac
= diff
/ f0
;
15353 if (std::abs(frac
) > max_abs_frac
)
15354 max_abs_frac
= std::abs(frac
);
15357 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15360 // Test data for a=20.000000000000000, b=1.0000000000000000, c=6.0000000000000000.
15361 testcase_hyperg
<double> data223
[] = {
15362 { 0.23253645591196570, 20.000000000000000, 1.0000000000000000,
15363 6.0000000000000000, -0.90000000000000002 },
15364 { 0.25484220947068353, 20.000000000000000, 1.0000000000000000,
15365 6.0000000000000000, -0.80000000000000004 },
15366 { 0.28181987881113829, 20.000000000000000, 1.0000000000000000,
15367 6.0000000000000000, -0.69999999999999996 },
15368 { 0.31508211677735765, 20.000000000000000, 1.0000000000000000,
15369 6.0000000000000000, -0.59999999999999998 },
15370 { 0.35706285886959599, 20.000000000000000, 1.0000000000000000,
15371 6.0000000000000000, -0.50000000000000000 },
15372 { 0.41160053409238195, 20.000000000000000, 1.0000000000000000,
15373 6.0000000000000000, -0.40000000000000002 },
15374 { 0.48508083111181949, 20.000000000000000, 1.0000000000000000,
15375 6.0000000000000000, -0.30000000000000004 },
15376 { 0.58885194371375260, 20.000000000000000, 1.0000000000000000,
15377 6.0000000000000000, -0.19999999999999996 },
15378 { 0.74482241684585748, 20.000000000000000, 1.0000000000000000,
15379 6.0000000000000000, -0.099999999999999978 },
15380 { 1.0000000000000000, 20.000000000000000, 1.0000000000000000,
15381 6.0000000000000000, 0.0000000000000000 },
15382 { 1.4700356864367146, 20.000000000000000, 1.0000000000000000,
15383 6.0000000000000000, 0.10000000000000009 },
15384 { 2.4955144453055143, 20.000000000000000, 1.0000000000000000,
15385 6.0000000000000000, 0.19999999999999996 },
15386 { 5.3506594845833471, 20.000000000000000, 1.0000000000000000,
15387 6.0000000000000000, 0.30000000000000004 },
15388 { 16.618413752184221, 20.000000000000000, 1.0000000000000000,
15389 6.0000000000000000, 0.39999999999999991 },
15390 { 89.310629514963878, 20.000000000000000, 1.0000000000000000,
15391 6.0000000000000000, 0.50000000000000000 },
15392 { 1029.3439900542960, 20.000000000000000, 1.0000000000000000,
15393 6.0000000000000000, 0.60000000000000009 },
15394 { 35659.847863372350, 20.000000000000000, 1.0000000000000000,
15395 6.0000000000000000, 0.69999999999999996 },
15396 { 8009309.6233230168, 20.000000000000000, 1.0000000000000000,
15397 6.0000000000000000, 0.80000000000000004 },
15398 { 145640590027.39731, 20.000000000000000, 1.0000000000000000,
15399 6.0000000000000000, 0.89999999999999991 },
15402 // Test function for a=20.000000000000000, b=1.0000000000000000, c=6.0000000000000000.
15403 template <typename Tp
>
15406 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15407 Tp max_abs_diff
= -Tp(1);
15408 Tp max_abs_frac
= -Tp(1);
15409 unsigned int num_datum
= sizeof(data223
)
15410 / sizeof(testcase_hyperg
<double>);
15411 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15413 const Tp f
= std::tr1::hyperg(Tp(data223
[i
].a
), Tp(data223
[i
].b
),
15414 Tp(data223
[i
].c
), Tp(data223
[i
].x
));
15415 const Tp f0
= data223
[i
].f0
;
15416 const Tp diff
= f
- f0
;
15417 if (std::abs(diff
) > max_abs_diff
)
15418 max_abs_diff
= std::abs(diff
);
15419 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15421 const Tp frac
= diff
/ f0
;
15422 if (std::abs(frac
) > max_abs_frac
)
15423 max_abs_frac
= std::abs(frac
);
15426 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15429 // Test data for a=20.000000000000000, b=1.0000000000000000, c=8.0000000000000000.
15430 testcase_hyperg
<double> data224
[] = {
15431 { 0.29614148314592498, 20.000000000000000, 1.0000000000000000,
15432 8.0000000000000000, -0.90000000000000002 },
15433 { 0.32176277356430810, 20.000000000000000, 1.0000000000000000,
15434 8.0000000000000000, -0.80000000000000004 },
15435 { 0.35217870475550522, 20.000000000000000, 1.0000000000000000,
15436 8.0000000000000000, -0.69999999999999996 },
15437 { 0.38885270445515091, 20.000000000000000, 1.0000000000000000,
15438 8.0000000000000000, -0.59999999999999998 },
15439 { 0.43389978380608424, 20.000000000000000, 1.0000000000000000,
15440 8.0000000000000000, -0.50000000000000000 },
15441 { 0.49048612522269436, 20.000000000000000, 1.0000000000000000,
15442 8.0000000000000000, -0.40000000000000002 },
15443 { 0.56355539635634611, 20.000000000000000, 1.0000000000000000,
15444 8.0000000000000000, -0.30000000000000004 },
15445 { 0.66123153239117682, 20.000000000000000, 1.0000000000000000,
15446 8.0000000000000000, -0.19999999999999996 },
15447 { 0.79773363961895427, 20.000000000000000, 1.0000000000000000,
15448 8.0000000000000000, -0.099999999999999978 },
15449 { 1.0000000000000000, 20.000000000000000, 1.0000000000000000,
15450 8.0000000000000000, 0.0000000000000000 },
15451 { 1.3245132157016595, 20.000000000000000, 1.0000000000000000,
15452 8.0000000000000000, 0.10000000000000009 },
15453 { 1.9065148749742076, 20.000000000000000, 1.0000000000000000,
15454 8.0000000000000000, 0.19999999999999996 },
15455 { 3.1328798652457452, 20.000000000000000, 1.0000000000000000,
15456 8.0000000000000000, 0.30000000000000004 },
15457 { 6.4172532944033476, 20.000000000000000, 1.0000000000000000,
15458 8.0000000000000000, 0.39999999999999991 },
15459 { 19.071683734222436, 20.000000000000000, 1.0000000000000000,
15460 8.0000000000000000, 0.50000000000000000 },
15461 { 104.41989641582512, 20.000000000000000, 1.0000000000000000,
15462 8.0000000000000000, 0.60000000000000009 },
15463 { 1510.5743992324240, 20.000000000000000, 1.0000000000000000,
15464 8.0000000000000000, 0.69999999999999996 },
15465 { 115518.14360562043, 20.000000000000000, 1.0000000000000000,
15466 8.0000000000000000, 0.80000000000000004 },
15467 { 414930455.29173034, 20.000000000000000, 1.0000000000000000,
15468 8.0000000000000000, 0.89999999999999991 },
15471 // Test function for a=20.000000000000000, b=1.0000000000000000, c=8.0000000000000000.
15472 template <typename Tp
>
15475 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15476 Tp max_abs_diff
= -Tp(1);
15477 Tp max_abs_frac
= -Tp(1);
15478 unsigned int num_datum
= sizeof(data224
)
15479 / sizeof(testcase_hyperg
<double>);
15480 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15482 const Tp f
= std::tr1::hyperg(Tp(data224
[i
].a
), Tp(data224
[i
].b
),
15483 Tp(data224
[i
].c
), Tp(data224
[i
].x
));
15484 const Tp f0
= data224
[i
].f0
;
15485 const Tp diff
= f
- f0
;
15486 if (std::abs(diff
) > max_abs_diff
)
15487 max_abs_diff
= std::abs(diff
);
15488 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15490 const Tp frac
= diff
/ f0
;
15491 if (std::abs(frac
) > max_abs_frac
)
15492 max_abs_frac
= std::abs(frac
);
15495 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15498 // Test data for a=20.000000000000000, b=1.0000000000000000, c=10.000000000000000.
15499 testcase_hyperg
<double> data225
[] = {
15500 { 0.34954259539177696, 20.000000000000000, 1.0000000000000000,
15501 10.000000000000000, -0.90000000000000002 },
15502 { 0.37714038609235123, 20.000000000000000, 1.0000000000000000,
15503 10.000000000000000, -0.80000000000000004 },
15504 { 0.40942091659748725, 20.000000000000000, 1.0000000000000000,
15505 10.000000000000000, -0.69999999999999996 },
15506 { 0.44767109606846428, 20.000000000000000, 1.0000000000000000,
15507 10.000000000000000, -0.59999999999999998 },
15508 { 0.49368984777532254, 20.000000000000000, 1.0000000000000000,
15509 10.000000000000000, -0.50000000000000000 },
15510 { 0.55006638216982318, 20.000000000000000, 1.0000000000000000,
15511 10.000000000000000, -0.40000000000000002 },
15512 { 0.62065830207408912, 20.000000000000000, 1.0000000000000000,
15513 10.000000000000000, -0.30000000000000004 },
15514 { 0.71145554513583786, 20.000000000000000, 1.0000000000000000,
15515 10.000000000000000, -0.19999999999999996 },
15516 { 0.83223839666914623, 20.000000000000000, 1.0000000000000000,
15517 10.000000000000000, -0.099999999999999978 },
15518 { 1.0000000000000000, 20.000000000000000, 1.0000000000000000,
15519 10.000000000000000, 0.0000000000000000 },
15520 { 1.2466748028187731, 20.000000000000000, 1.0000000000000000,
15521 10.000000000000000, 0.10000000000000009 },
15522 { 1.6386752725021749, 20.000000000000000, 1.0000000000000000,
15523 10.000000000000000, 0.19999999999999996 },
15524 { 2.3340068725479681, 20.000000000000000, 1.0000000000000000,
15525 10.000000000000000, 0.30000000000000004 },
15526 { 3.7848108613132054, 20.000000000000000, 1.0000000000000000,
15527 10.000000000000000, 0.39999999999999991 },
15528 { 7.6754638550304133, 20.000000000000000, 1.0000000000000000,
15529 10.000000000000000, 0.50000000000000000 },
15530 { 23.344217312927277, 20.000000000000000, 1.0000000000000000,
15531 10.000000000000000, 0.60000000000000009 },
15532 { 149.83491198246921, 20.000000000000000, 1.0000000000000000,
15533 10.000000000000000, 0.69999999999999996 },
15534 { 3936.9253501916060, 20.000000000000000, 1.0000000000000000,
15535 10.000000000000000, 0.80000000000000004 },
15536 { 2794143.5036480185, 20.000000000000000, 1.0000000000000000,
15537 10.000000000000000, 0.89999999999999991 },
15540 // Test function for a=20.000000000000000, b=1.0000000000000000, c=10.000000000000000.
15541 template <typename Tp
>
15544 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15545 Tp max_abs_diff
= -Tp(1);
15546 Tp max_abs_frac
= -Tp(1);
15547 unsigned int num_datum
= sizeof(data225
)
15548 / sizeof(testcase_hyperg
<double>);
15549 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15551 const Tp f
= std::tr1::hyperg(Tp(data225
[i
].a
), Tp(data225
[i
].b
),
15552 Tp(data225
[i
].c
), Tp(data225
[i
].x
));
15553 const Tp f0
= data225
[i
].f0
;
15554 const Tp diff
= f
- f0
;
15555 if (std::abs(diff
) > max_abs_diff
)
15556 max_abs_diff
= std::abs(diff
);
15557 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15559 const Tp frac
= diff
/ f0
;
15560 if (std::abs(frac
) > max_abs_frac
)
15561 max_abs_frac
= std::abs(frac
);
15564 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15567 // Test data for a=20.000000000000000, b=2.0000000000000000, c=2.0000000000000000.
15568 testcase_hyperg
<double> data226
[] = {
15569 { 2.6602838683283435e-06, 20.000000000000000, 2.0000000000000000,
15570 2.0000000000000000, -0.90000000000000002 },
15571 { 7.8442223930072316e-06, 20.000000000000000, 2.0000000000000000,
15572 2.0000000000000000, -0.80000000000000004 },
15573 { 2.4604898194634598e-05, 20.000000000000000, 2.0000000000000000,
15574 2.0000000000000000, -0.69999999999999996 },
15575 { 8.2718061255302686e-05, 20.000000000000000, 2.0000000000000000,
15576 2.0000000000000000, -0.59999999999999998 },
15577 { 0.00030072865982171723, 20.000000000000000, 2.0000000000000000,
15578 2.0000000000000000, -0.50000000000000000 },
15579 { 0.0011951964277455193, 20.000000000000000, 2.0000000000000000,
15580 2.0000000000000000, -0.40000000000000002 },
15581 { 0.0052617832469731814, 20.000000000000000, 2.0000000000000000,
15582 2.0000000000000000, -0.30000000000000004 },
15583 { 0.026084053304588847, 20.000000000000000, 2.0000000000000000,
15584 2.0000000000000000, -0.19999999999999996 },
15585 { 0.14864362802414346, 20.000000000000000, 2.0000000000000000,
15586 2.0000000000000000, -0.099999999999999978 },
15587 { 1.0000000000000000, 20.000000000000000, 2.0000000000000000,
15588 2.0000000000000000, 0.0000000000000000 },
15589 { 8.2252633399699757, 20.000000000000000, 2.0000000000000000,
15590 2.0000000000000000, 0.10000000000000009 },
15591 { 86.736173798840269, 20.000000000000000, 2.0000000000000000,
15592 2.0000000000000000, 0.19999999999999996 },
15593 { 1253.2542894196865, 20.000000000000000, 2.0000000000000000,
15594 2.0000000000000000, 0.30000000000000004 },
15595 { 27351.112277912434, 20.000000000000000, 2.0000000000000000,
15596 2.0000000000000000, 0.39999999999999991 },
15597 { 1048576.0000000000, 20.000000000000000, 2.0000000000000000,
15598 2.0000000000000000, 0.50000000000000000 },
15599 { 90949470.177293226, 20.000000000000000, 2.0000000000000000,
15600 2.0000000000000000, 0.60000000000000009 },
15601 { 28679719907.924358, 20.000000000000000, 2.0000000000000000,
15602 2.0000000000000000, 0.69999999999999996 },
15603 { 95367431640624.906, 20.000000000000000, 2.0000000000000000,
15604 2.0000000000000000, 0.80000000000000004 },
15605 { 9.9999999999998657e+19, 20.000000000000000, 2.0000000000000000,
15606 2.0000000000000000, 0.89999999999999991 },
15609 // Test function for a=20.000000000000000, b=2.0000000000000000, c=2.0000000000000000.
15610 template <typename Tp
>
15613 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15614 Tp max_abs_diff
= -Tp(1);
15615 Tp max_abs_frac
= -Tp(1);
15616 unsigned int num_datum
= sizeof(data226
)
15617 / sizeof(testcase_hyperg
<double>);
15618 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15620 const Tp f
= std::tr1::hyperg(Tp(data226
[i
].a
), Tp(data226
[i
].b
),
15621 Tp(data226
[i
].c
), Tp(data226
[i
].x
));
15622 const Tp f0
= data226
[i
].f0
;
15623 const Tp diff
= f
- f0
;
15624 if (std::abs(diff
) > max_abs_diff
)
15625 max_abs_diff
= std::abs(diff
);
15626 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15628 const Tp frac
= diff
/ f0
;
15629 if (std::abs(frac
) > max_abs_frac
)
15630 max_abs_frac
= std::abs(frac
);
15633 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
15636 // Test data for a=20.000000000000000, b=2.0000000000000000, c=4.0000000000000000.
15637 testcase_hyperg
<double> data227
[] = {
15638 { 0.018828092583720951, 20.000000000000000, 2.0000000000000000,
15639 4.0000000000000000, -0.90000000000000002 },
15640 { 0.023381944060455316, 20.000000000000000, 2.0000000000000000,
15641 4.0000000000000000, -0.80000000000000004 },
15642 { 0.029789623984280793, 20.000000000000000, 2.0000000000000000,
15643 4.0000000000000000, -0.69999999999999996 },
15644 { 0.039191021482500497, 20.000000000000000, 2.0000000000000000,
15645 4.0000000000000000, -0.59999999999999998 },
15646 { 0.053727813036721514, 20.000000000000000, 2.0000000000000000,
15647 4.0000000000000000, -0.50000000000000000 },
15648 { 0.077762010061669024, 20.000000000000000, 2.0000000000000000,
15649 4.0000000000000000, -0.40000000000000002 },
15650 { 0.12110505620123302, 20.000000000000000, 2.0000000000000000,
15651 4.0000000000000000, -0.30000000000000004 },
15652 { 0.20870149809080590, 20.000000000000000, 2.0000000000000000,
15653 4.0000000000000000, -0.19999999999999996 },
15654 { 0.41429234328785769, 20.000000000000000, 2.0000000000000000,
15655 4.0000000000000000, -0.099999999999999978 },
15656 { 1.0000000000000000, 20.000000000000000, 2.0000000000000000,
15657 4.0000000000000000, 0.0000000000000000 },
15658 { 3.1308087404153113, 20.000000000000000, 2.0000000000000000,
15659 4.0000000000000000, 0.10000000000000009 },
15660 { 13.586180626453050, 20.000000000000000, 2.0000000000000000,
15661 4.0000000000000000, 0.19999999999999996 },
15662 { 87.117304082784415, 20.000000000000000, 2.0000000000000000,
15663 4.0000000000000000, 0.30000000000000004 },
15664 { 889.26474381242826, 20.000000000000000, 2.0000000000000000,
15665 4.0000000000000000, 0.39999999999999991 },
15666 { 16231.913312693494, 20.000000000000000, 2.0000000000000000,
15667 4.0000000000000000, 0.50000000000000000 },
15668 { 653537.51168945129, 20.000000000000000, 2.0000000000000000,
15669 4.0000000000000000, 0.60000000000000009 },
15670 { 87756230.793848589, 20.000000000000000, 2.0000000000000000,
15671 4.0000000000000000, 0.69999999999999996 },
15672 { 101493977171.74945, 20.000000000000000, 2.0000000000000000,
15673 4.0000000000000000, 0.80000000000000004 },
15674 { 21375960679556916., 20.000000000000000, 2.0000000000000000,
15675 4.0000000000000000, 0.89999999999999991 },
15678 // Test function for a=20.000000000000000, b=2.0000000000000000, c=4.0000000000000000.
15679 template <typename Tp
>
15682 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15683 Tp max_abs_diff
= -Tp(1);
15684 Tp max_abs_frac
= -Tp(1);
15685 unsigned int num_datum
= sizeof(data227
)
15686 / sizeof(testcase_hyperg
<double>);
15687 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15689 const Tp f
= std::tr1::hyperg(Tp(data227
[i
].a
), Tp(data227
[i
].b
),
15690 Tp(data227
[i
].c
), Tp(data227
[i
].x
));
15691 const Tp f0
= data227
[i
].f0
;
15692 const Tp diff
= f
- f0
;
15693 if (std::abs(diff
) > max_abs_diff
)
15694 max_abs_diff
= std::abs(diff
);
15695 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15697 const Tp frac
= diff
/ f0
;
15698 if (std::abs(frac
) > max_abs_frac
)
15699 max_abs_frac
= std::abs(frac
);
15702 VERIFY(max_abs_frac
< Tp(1.0000000000000008e-12));
15705 // Test data for a=20.000000000000000, b=2.0000000000000000, c=6.0000000000000000.
15706 testcase_hyperg
<double> data228
[] = {
15707 { 0.049200410661854252, 20.000000000000000, 2.0000000000000000,
15708 6.0000000000000000, -0.90000000000000002 },
15709 { 0.059460876757152226, 20.000000000000000, 2.0000000000000000,
15710 6.0000000000000000, -0.80000000000000004 },
15711 { 0.073244762686653350, 20.000000000000000, 2.0000000000000000,
15712 6.0000000000000000, -0.69999999999999996 },
15713 { 0.092334626017932922, 20.000000000000000, 2.0000000000000000,
15714 6.0000000000000000, -0.59999999999999998 },
15715 { 0.11976760350696837, 20.000000000000000, 2.0000000000000000,
15716 6.0000000000000000, -0.50000000000000000 },
15717 { 0.16102414609169383, 20.000000000000000, 2.0000000000000000,
15718 6.0000000000000000, -0.40000000000000002 },
15719 { 0.22670456785796222, 20.000000000000000, 2.0000000000000000,
15720 6.0000000000000000, -0.30000000000000004 },
15721 { 0.33912903252727361, 20.000000000000000, 2.0000000000000000,
15722 6.0000000000000000, -0.19999999999999996 },
15723 { 0.55049794600858060, 20.000000000000000, 2.0000000000000000,
15724 6.0000000000000000, -0.099999999999999978 },
15725 { 1.0000000000000000, 20.000000000000000, 2.0000000000000000,
15726 6.0000000000000000, 0.0000000000000000 },
15727 { 2.1254722872032232, 20.000000000000000, 2.0000000000000000,
15728 6.0000000000000000, 0.10000000000000009 },
15729 { 5.6261213886736172, 20.000000000000000, 2.0000000000000000,
15730 6.0000000000000000, 0.19999999999999996 },
15731 { 20.137315891130996, 20.000000000000000, 2.0000000000000000,
15732 6.0000000000000000, 0.30000000000000004 },
15733 { 108.04381584643853, 20.000000000000000, 2.0000000000000000,
15734 6.0000000000000000, 0.39999999999999991 },
15735 { 992.41692466460245, 20.000000000000000, 2.0000000000000000,
15736 6.0000000000000000, 0.50000000000000000 },
15737 { 19055.363816004465, 20.000000000000000, 2.0000000000000000,
15738 6.0000000000000000, 0.60000000000000009 },
15739 { 1105471.9504312086, 20.000000000000000, 2.0000000000000000,
15740 6.0000000000000000, 0.69999999999999996 },
15741 { 448521363.90608919, 20.000000000000000, 2.0000000000000000,
15742 6.0000000000000000, 0.80000000000000004 },
15743 { 19078917293639.004, 20.000000000000000, 2.0000000000000000,
15744 6.0000000000000000, 0.89999999999999991 },
15747 // Test function for a=20.000000000000000, b=2.0000000000000000, c=6.0000000000000000.
15748 template <typename Tp
>
15751 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15752 Tp max_abs_diff
= -Tp(1);
15753 Tp max_abs_frac
= -Tp(1);
15754 unsigned int num_datum
= sizeof(data228
)
15755 / sizeof(testcase_hyperg
<double>);
15756 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15758 const Tp f
= std::tr1::hyperg(Tp(data228
[i
].a
), Tp(data228
[i
].b
),
15759 Tp(data228
[i
].c
), Tp(data228
[i
].x
));
15760 const Tp f0
= data228
[i
].f0
;
15761 const Tp diff
= f
- f0
;
15762 if (std::abs(diff
) > max_abs_diff
)
15763 max_abs_diff
= std::abs(diff
);
15764 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15766 const Tp frac
= diff
/ f0
;
15767 if (std::abs(frac
) > max_abs_frac
)
15768 max_abs_frac
= std::abs(frac
);
15771 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
15774 // Test data for a=20.000000000000000, b=2.0000000000000000, c=8.0000000000000000.
15775 testcase_hyperg
<double> data229
[] = {
15776 { 0.083753547015334745, 20.000000000000000, 2.0000000000000000,
15777 8.0000000000000000, -0.90000000000000002 },
15778 { 0.099238444687035701, 20.000000000000000, 2.0000000000000000,
15779 8.0000000000000000, -0.80000000000000004 },
15780 { 0.11938294012867758, 20.000000000000000, 2.0000000000000000,
15781 8.0000000000000000, -0.69999999999999996 },
15782 { 0.14622683905023326, 20.000000000000000, 2.0000000000000000,
15783 8.0000000000000000, -0.59999999999999998 },
15784 { 0.18303556733713025, 20.000000000000000, 2.0000000000000000,
15785 8.0000000000000000, -0.50000000000000000 },
15786 { 0.23527764069382409, 20.000000000000000, 2.0000000000000000,
15787 8.0000000000000000, -0.40000000000000002 },
15788 { 0.31261681740827085, 20.000000000000000, 2.0000000000000000,
15789 8.0000000000000000, -0.30000000000000004 },
15790 { 0.43327581880538862, 20.000000000000000, 2.0000000000000000,
15791 8.0000000000000000, -0.19999999999999996 },
15792 { 0.63445840637296658, 20.000000000000000, 2.0000000000000000,
15793 8.0000000000000000, -0.099999999999999978 },
15794 { 1.0000000000000000, 20.000000000000000, 2.0000000000000000,
15795 8.0000000000000000, 0.0000000000000000 },
15796 { 1.7438842395813297, 20.000000000000000, 2.0000000000000000,
15797 8.0000000000000000, 0.10000000000000009 },
15798 { 3.5070840938209269, 20.000000000000000, 2.0000000000000000,
15799 8.0000000000000000, 0.19999999999999996 },
15800 { 8.6573372006089713, 20.000000000000000, 2.0000000000000000,
15801 8.0000000000000000, 0.30000000000000004 },
15802 { 28.779342118408906, 20.000000000000000, 2.0000000000000000,
15803 8.0000000000000000, 0.39999999999999991 },
15804 { 147.50178613955714, 20.000000000000000, 2.0000000000000000,
15805 8.0000000000000000, 0.50000000000000000 },
15806 { 1427.1686016136398, 20.000000000000000, 2.0000000000000000,
15807 8.0000000000000000, 0.60000000000000009 },
15808 { 36780.643714655642, 20.000000000000000, 2.0000000000000000,
15809 8.0000000000000000, 0.69999999999999996 },
15810 { 5313869.6058585485, 20.000000000000000, 2.0000000000000000,
15811 8.0000000000000000, 0.80000000000000004 },
15812 { 46057280607.381966, 20.000000000000000, 2.0000000000000000,
15813 8.0000000000000000, 0.89999999999999991 },
15816 // Test function for a=20.000000000000000, b=2.0000000000000000, c=8.0000000000000000.
15817 template <typename Tp
>
15820 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15821 Tp max_abs_diff
= -Tp(1);
15822 Tp max_abs_frac
= -Tp(1);
15823 unsigned int num_datum
= sizeof(data229
)
15824 / sizeof(testcase_hyperg
<double>);
15825 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15827 const Tp f
= std::tr1::hyperg(Tp(data229
[i
].a
), Tp(data229
[i
].b
),
15828 Tp(data229
[i
].c
), Tp(data229
[i
].x
));
15829 const Tp f0
= data229
[i
].f0
;
15830 const Tp diff
= f
- f0
;
15831 if (std::abs(diff
) > max_abs_diff
)
15832 max_abs_diff
= std::abs(diff
);
15833 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15835 const Tp frac
= diff
/ f0
;
15836 if (std::abs(frac
) > max_abs_frac
)
15837 max_abs_frac
= std::abs(frac
);
15840 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15843 // Test data for a=20.000000000000000, b=2.0000000000000000, c=10.000000000000000.
15844 testcase_hyperg
<double> data230
[] = {
15845 { 0.11920045035073683, 20.000000000000000, 2.0000000000000000,
15846 10.000000000000000, -0.90000000000000002 },
15847 { 0.13907946814302774, 20.000000000000000, 2.0000000000000000,
15848 10.000000000000000, -0.80000000000000004 },
15849 { 0.16431439792559688, 20.000000000000000, 2.0000000000000000,
15850 10.000000000000000, -0.69999999999999996 },
15851 { 0.19698796016987008, 20.000000000000000, 2.0000000000000000,
15852 10.000000000000000, -0.59999999999999998 },
15853 { 0.24028510928790570, 20.000000000000000, 2.0000000000000000,
15854 10.000000000000000, -0.50000000000000000 },
15855 { 0.29926031296483119, 20.000000000000000, 2.0000000000000000,
15856 10.000000000000000, -0.40000000000000002 },
15857 { 0.38229327814229169, 20.000000000000000, 2.0000000000000000,
15858 10.000000000000000, -0.30000000000000004 },
15859 { 0.50402047283093110, 20.000000000000000, 2.0000000000000000,
15860 10.000000000000000, -0.19999999999999996 },
15861 { 0.69167261179586503, 20.000000000000000, 2.0000000000000000,
15862 10.000000000000000, -0.099999999999999978 },
15863 { 1.0000000000000000, 20.000000000000000, 2.0000000000000000,
15864 10.000000000000000, 0.0000000000000000 },
15865 { 1.5503152253394308, 20.000000000000000, 2.0000000000000000,
15866 10.000000000000000, 0.10000000000000009 },
15867 { 2.6469548193635797, 20.000000000000000, 2.0000000000000000,
15868 10.000000000000000, 0.19999999999999996 },
15869 { 5.1882631330566813, 20.000000000000000, 2.0000000000000000,
15870 10.000000000000000, 0.30000000000000004 },
15871 { 12.476792759124516, 20.000000000000000, 2.0000000000000000,
15872 10.000000000000000, 0.39999999999999991 },
15873 { 41.026391565091259, 20.000000000000000, 2.0000000000000000,
15874 10.000000000000000, 0.50000000000000000 },
15875 { 220.92584715988204, 20.000000000000000, 2.0000000000000000,
15876 10.000000000000000, 0.60000000000000009 },
15877 { 2677.0834450236207, 20.000000000000000, 2.0000000000000000,
15878 10.000000000000000, 0.69999999999999996 },
15879 { 141774.31260689779, 20.000000000000000, 2.0000000000000000,
15880 10.000000000000000, 0.80000000000000004 },
15881 { 254267148.83196995, 20.000000000000000, 2.0000000000000000,
15882 10.000000000000000, 0.89999999999999991 },
15885 // Test function for a=20.000000000000000, b=2.0000000000000000, c=10.000000000000000.
15886 template <typename Tp
>
15889 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15890 Tp max_abs_diff
= -Tp(1);
15891 Tp max_abs_frac
= -Tp(1);
15892 unsigned int num_datum
= sizeof(data230
)
15893 / sizeof(testcase_hyperg
<double>);
15894 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15896 const Tp f
= std::tr1::hyperg(Tp(data230
[i
].a
), Tp(data230
[i
].b
),
15897 Tp(data230
[i
].c
), Tp(data230
[i
].x
));
15898 const Tp f0
= data230
[i
].f0
;
15899 const Tp diff
= f
- f0
;
15900 if (std::abs(diff
) > max_abs_diff
)
15901 max_abs_diff
= std::abs(diff
);
15902 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15904 const Tp frac
= diff
/ f0
;
15905 if (std::abs(frac
) > max_abs_frac
)
15906 max_abs_frac
= std::abs(frac
);
15909 VERIFY(max_abs_frac
< Tp(2.5000000000000020e-13));
15912 // Test data for a=20.000000000000000, b=5.0000000000000000, c=2.0000000000000000.
15913 testcase_hyperg
<double> data231
[] = {
15914 { -1.8650300348791041e-05, 20.000000000000000, 5.0000000000000000,
15915 2.0000000000000000, -0.90000000000000002 },
15916 { -3.6488008415183135e-05, 20.000000000000000, 5.0000000000000000,
15917 2.0000000000000000, -0.80000000000000004 },
15918 { -6.4614776410999025e-05, 20.000000000000000, 5.0000000000000000,
15919 2.0000000000000000, -0.69999999999999996 },
15920 { -8.4495207102575916e-05, 20.000000000000000, 5.0000000000000000,
15921 2.0000000000000000, -0.59999999999999998 },
15922 { 2.2276197023819217e-05, 20.000000000000000, 5.0000000000000000,
15923 2.0000000000000000, -0.50000000000000000 },
15924 { 0.00070736115111467578, 20.000000000000000, 5.0000000000000000,
15925 2.0000000000000000, -0.40000000000000002 },
15926 { 0.0027829732057272809, 20.000000000000000, 5.0000000000000000,
15927 2.0000000000000000, -0.30000000000000004 },
15928 { 0.0013283545664373570, 20.000000000000000, 5.0000000000000000,
15929 2.0000000000000000, -0.19999999999999996 },
15930 { -0.041767631015048733, 20.000000000000000, 5.0000000000000000,
15931 2.0000000000000000, -0.099999999999999978 },
15932 { 1.0000000000000000, 20.000000000000000, 5.0000000000000000,
15933 2.0000000000000000, 0.0000000000000000 },
15934 { 61.311496556100003, 20.000000000000000, 5.0000000000000000,
15935 2.0000000000000000, 0.10000000000000009 },
15936 { 2397.4420539085681, 20.000000000000000, 5.0000000000000000,
15937 2.0000000000000000, 0.19999999999999996 },
15938 { 103687.60998586559, 20.000000000000000, 5.0000000000000000,
15939 2.0000000000000000, 0.30000000000000004 },
15940 { 6247196.6451068865, 20.000000000000000, 5.0000000000000000,
15941 2.0000000000000000, 0.39999999999999991 },
15942 { 656408576.00000000, 20.000000000000000, 5.0000000000000000,
15943 2.0000000000000000, 0.50000000000000000 },
15944 { 165334768098.54715, 20.000000000000000, 5.0000000000000000,
15945 2.0000000000000000, 0.60000000000000009 },
15946 { 175097125520816.81, 20.000000000000000, 5.0000000000000000,
15947 2.0000000000000000, 0.69999999999999996 },
15948 { 2.6818275451660257e+18, 20.000000000000000, 5.0000000000000000,
15949 2.0000000000000000, 0.80000000000000004 },
15950 { 2.9794599999999321e+25, 20.000000000000000, 5.0000000000000000,
15951 2.0000000000000000, 0.89999999999999991 },
15954 // Test function for a=20.000000000000000, b=5.0000000000000000, c=2.0000000000000000.
15955 template <typename Tp
>
15958 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
15959 Tp max_abs_diff
= -Tp(1);
15960 Tp max_abs_frac
= -Tp(1);
15961 unsigned int num_datum
= sizeof(data231
)
15962 / sizeof(testcase_hyperg
<double>);
15963 for (unsigned int i
= 0; i
< num_datum
; ++i
)
15965 const Tp f
= std::tr1::hyperg(Tp(data231
[i
].a
), Tp(data231
[i
].b
),
15966 Tp(data231
[i
].c
), Tp(data231
[i
].x
));
15967 const Tp f0
= data231
[i
].f0
;
15968 const Tp diff
= f
- f0
;
15969 if (std::abs(diff
) > max_abs_diff
)
15970 max_abs_diff
= std::abs(diff
);
15971 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
15973 const Tp frac
= diff
/ f0
;
15974 if (std::abs(frac
) > max_abs_frac
)
15975 max_abs_frac
= std::abs(frac
);
15978 VERIFY(max_abs_frac
< Tp(5.0000000000000034e-10));
15981 // Test data for a=20.000000000000000, b=5.0000000000000000, c=4.0000000000000000.
15982 testcase_hyperg
<double> data232
[] = {
15983 { -3.6403884515183385e-06, 20.000000000000000, 5.0000000000000000,
15984 4.0000000000000000, -0.90000000000000002 },
15985 { -9.5873829247725586e-06, 20.000000000000000, 5.0000000000000000,
15986 4.0000000000000000, -0.80000000000000004 },
15987 { -2.6052245147354694e-05, 20.000000000000000, 5.0000000000000000,
15988 4.0000000000000000, -0.69999999999999996 },
15989 { -7.2378303598294010e-05, 20.000000000000000, 5.0000000000000000,
15990 4.0000000000000000, -0.59999999999999998 },
15991 { -0.00020048577321454082, 20.000000000000000, 5.0000000000000000,
15992 4.0000000000000000, -0.50000000000000000 },
15993 { -0.00051222704046236022, 20.000000000000000, 5.0000000000000000,
15994 4.0000000000000000, -0.40000000000000002 },
15995 { -0.00080950511491911315, 20.000000000000000, 5.0000000000000000,
15996 4.0000000000000000, -0.30000000000000004 },
15997 { 0.0043473422174314449, 20.000000000000000, 5.0000000000000000,
15998 4.0000000000000000, -0.19999999999999996 },
15999 { 0.081078342558623825, 20.000000000000000, 5.0000000000000000,
16000 4.0000000000000000, -0.099999999999999978 },
16001 { 1.0000000000000000, 20.000000000000000, 5.0000000000000000,
16002 4.0000000000000000, 0.0000000000000000 },
16003 { 12.794854084397739, 20.000000000000000, 5.0000000000000000,
16004 4.0000000000000000, 0.10000000000000009 },
16005 { 195.15639104739046, 20.000000000000000, 5.0000000000000000,
16006 4.0000000000000000, 0.19999999999999996 },
16007 { 3938.7991953190131, 20.000000000000000, 5.0000000000000000,
16008 4.0000000000000000, 0.30000000000000004 },
16009 { 118521.48653762060, 20.000000000000000, 5.0000000000000000,
16010 4.0000000000000000, 0.39999999999999991 },
16011 { 6291455.9999999972, 20.000000000000000, 5.0000000000000000,
16012 4.0000000000000000, 0.50000000000000000 },
16013 { 773070496.50699198, 20.000000000000000, 5.0000000000000000,
16014 4.0000000000000000, 0.60000000000000009 },
16015 { 363276452167.04102, 20.000000000000000, 5.0000000000000000,
16016 4.0000000000000000, 0.69999999999999996 },
16017 { 2002716064453133.0, 20.000000000000000, 5.0000000000000000,
16018 4.0000000000000000, 0.80000000000000004 },
16019 { 4.5999999999999109e+21, 20.000000000000000, 5.0000000000000000,
16020 4.0000000000000000, 0.89999999999999991 },
16023 // Test function for a=20.000000000000000, b=5.0000000000000000, c=4.0000000000000000.
16024 template <typename Tp
>
16027 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16028 Tp max_abs_diff
= -Tp(1);
16029 Tp max_abs_frac
= -Tp(1);
16030 unsigned int num_datum
= sizeof(data232
)
16031 / sizeof(testcase_hyperg
<double>);
16032 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16034 const Tp f
= std::tr1::hyperg(Tp(data232
[i
].a
), Tp(data232
[i
].b
),
16035 Tp(data232
[i
].c
), Tp(data232
[i
].x
));
16036 const Tp f0
= data232
[i
].f0
;
16037 const Tp diff
= f
- f0
;
16038 if (std::abs(diff
) > max_abs_diff
)
16039 max_abs_diff
= std::abs(diff
);
16040 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16042 const Tp frac
= diff
/ f0
;
16043 if (std::abs(frac
) > max_abs_frac
)
16044 max_abs_frac
= std::abs(frac
);
16047 VERIFY(max_abs_frac
< Tp(2.5000000000000013e-09));
16050 // Test data for a=20.000000000000000, b=5.0000000000000000, c=6.0000000000000000.
16051 testcase_hyperg
<double> data233
[] = {
16052 { 0.00014313323624069244, 20.000000000000000, 5.0000000000000000,
16053 6.0000000000000000, -0.90000000000000002 },
16054 { 0.00025426183473140697, 20.000000000000000, 5.0000000000000000,
16055 6.0000000000000000, -0.80000000000000004 },
16056 { 0.00048255612836426809, 20.000000000000000, 5.0000000000000000,
16057 6.0000000000000000, -0.69999999999999996 },
16058 { 0.00099096904674788092, 20.000000000000000, 5.0000000000000000,
16059 6.0000000000000000, -0.59999999999999998 },
16060 { 0.0022347805521915607, 20.000000000000000, 5.0000000000000000,
16061 6.0000000000000000, -0.50000000000000000 },
16062 { 0.0056271390060292376, 20.000000000000000, 5.0000000000000000,
16063 6.0000000000000000, -0.40000000000000002 },
16064 { 0.016109059519227226, 20.000000000000000, 5.0000000000000000,
16065 6.0000000000000000, -0.30000000000000004 },
16066 { 0.053453465775608999, 20.000000000000000, 5.0000000000000000,
16067 6.0000000000000000, -0.19999999999999996 },
16068 { 0.20995202901839258, 20.000000000000000, 5.0000000000000000,
16069 6.0000000000000000, -0.099999999999999978 },
16070 { 1.0000000000000000, 20.000000000000000, 5.0000000000000000,
16071 6.0000000000000000, 0.0000000000000000 },
16072 { 5.9534372167648799, 20.000000000000000, 5.0000000000000000,
16073 6.0000000000000000, 0.10000000000000009 },
16074 { 46.157632071205875, 20.000000000000000, 5.0000000000000000,
16075 6.0000000000000000, 0.19999999999999996 },
16076 { 494.32074431164915, 20.000000000000000, 5.0000000000000000,
16077 6.0000000000000000, 0.30000000000000004 },
16078 { 7989.5277611775946, 20.000000000000000, 5.0000000000000000,
16079 6.0000000000000000, 0.39999999999999991 },
16080 { 224179.55830753347, 20.000000000000000, 5.0000000000000000,
16081 6.0000000000000000, 0.50000000000000000 },
16082 { 13848144.485282511, 20.000000000000000, 5.0000000000000000,
16083 6.0000000000000000, 0.60000000000000009 },
16084 { 2948587692.8891716, 20.000000000000000, 5.0000000000000000,
16085 6.0000000000000000, 0.69999999999999996 },
16086 { 5940513286161.6602, 20.000000000000000, 5.0000000000000000,
16087 6.0000000000000000, 0.80000000000000004 },
16088 { 2.8531757655945201e+18, 20.000000000000000, 5.0000000000000000,
16089 6.0000000000000000, 0.89999999999999991 },
16092 // Test function for a=20.000000000000000, b=5.0000000000000000, c=6.0000000000000000.
16093 template <typename Tp
>
16096 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16097 Tp max_abs_diff
= -Tp(1);
16098 Tp max_abs_frac
= -Tp(1);
16099 unsigned int num_datum
= sizeof(data233
)
16100 / sizeof(testcase_hyperg
<double>);
16101 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16103 const Tp f
= std::tr1::hyperg(Tp(data233
[i
].a
), Tp(data233
[i
].b
),
16104 Tp(data233
[i
].c
), Tp(data233
[i
].x
));
16105 const Tp f0
= data233
[i
].f0
;
16106 const Tp diff
= f
- f0
;
16107 if (std::abs(diff
) > max_abs_diff
)
16108 max_abs_diff
= std::abs(diff
);
16109 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16111 const Tp frac
= diff
/ f0
;
16112 if (std::abs(frac
) > max_abs_frac
)
16113 max_abs_frac
= std::abs(frac
);
16116 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-10));
16119 // Test data for a=20.000000000000000, b=5.0000000000000000, c=8.0000000000000000.
16120 testcase_hyperg
<double> data234
[] = {
16121 { 0.0012492049968742865, 20.000000000000000, 5.0000000000000000,
16122 8.0000000000000000, -0.90000000000000002 },
16123 { 0.0019931241968014451, 20.000000000000000, 5.0000000000000000,
16124 8.0000000000000000, -0.80000000000000004 },
16125 { 0.0033203386861411057, 20.000000000000000, 5.0000000000000000,
16126 8.0000000000000000, -0.69999999999999996 },
16127 { 0.0058191894509855282, 20.000000000000000, 5.0000000000000000,
16128 8.0000000000000000, -0.59999999999999998 },
16129 { 0.010830090368313866, 20.000000000000000, 5.0000000000000000,
16130 8.0000000000000000, -0.50000000000000000 },
16131 { 0.021653062305193163, 20.000000000000000, 5.0000000000000000,
16132 8.0000000000000000, -0.40000000000000002 },
16133 { 0.047180821280919084, 20.000000000000000, 5.0000000000000000,
16134 8.0000000000000000, -0.30000000000000004 },
16135 { 0.11405637279736180, 20.000000000000000, 5.0000000000000000,
16136 8.0000000000000000, -0.19999999999999996 },
16137 { 0.31275468794720990, 20.000000000000000, 5.0000000000000000,
16138 8.0000000000000000, -0.099999999999999978 },
16139 { 1.0000000000000000, 20.000000000000000, 5.0000000000000000,
16140 8.0000000000000000, 0.0000000000000000 },
16141 { 3.8598904658643969, 20.000000000000000, 5.0000000000000000,
16142 8.0000000000000000, 0.10000000000000009 },
16143 { 18.806301417906667, 20.000000000000000, 5.0000000000000000,
16144 8.0000000000000000, 0.19999999999999996 },
16145 { 122.77054465017432, 20.000000000000000, 5.0000000000000000,
16146 8.0000000000000000, 0.30000000000000004 },
16147 { 1168.4762146808946, 20.000000000000000, 5.0000000000000000,
16148 8.0000000000000000, 0.39999999999999991 },
16149 { 18437.511788521082, 20.000000000000000, 5.0000000000000000,
16150 8.0000000000000000, 0.50000000000000000 },
16151 { 597441.79669264762, 20.000000000000000, 5.0000000000000000,
16152 8.0000000000000000, 0.60000000000000009 },
16153 { 59390411.369227782, 20.000000000000000, 5.0000000000000000,
16154 8.0000000000000000, 0.69999999999999996 },
16155 { 44681668993.361603, 20.000000000000000, 5.0000000000000000,
16156 8.0000000000000000, 0.80000000000000004 },
16157 { 4559673269683164.0, 20.000000000000000, 5.0000000000000000,
16158 8.0000000000000000, 0.89999999999999991 },
16161 // Test function for a=20.000000000000000, b=5.0000000000000000, c=8.0000000000000000.
16162 template <typename Tp
>
16165 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16166 Tp max_abs_diff
= -Tp(1);
16167 Tp max_abs_frac
= -Tp(1);
16168 unsigned int num_datum
= sizeof(data234
)
16169 / sizeof(testcase_hyperg
<double>);
16170 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16172 const Tp f
= std::tr1::hyperg(Tp(data234
[i
].a
), Tp(data234
[i
].b
),
16173 Tp(data234
[i
].c
), Tp(data234
[i
].x
));
16174 const Tp f0
= data234
[i
].f0
;
16175 const Tp diff
= f
- f0
;
16176 if (std::abs(diff
) > max_abs_diff
)
16177 max_abs_diff
= std::abs(diff
);
16178 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16180 const Tp frac
= diff
/ f0
;
16181 if (std::abs(frac
) > max_abs_frac
)
16182 max_abs_frac
= std::abs(frac
);
16185 VERIFY(max_abs_frac
< Tp(1.0000000000000006e-11));
16188 // Test data for a=20.000000000000000, b=5.0000000000000000, c=10.000000000000000.
16189 testcase_hyperg
<double> data235
[] = {
16190 { 0.0038867957051371450, 20.000000000000000, 5.0000000000000000,
16191 10.000000000000000, -0.90000000000000002 },
16192 { 0.0058484892597364443, 20.000000000000000, 5.0000000000000000,
16193 10.000000000000000, -0.80000000000000004 },
16194 { 0.0090987656053757009, 20.000000000000000, 5.0000000000000000,
16195 10.000000000000000, -0.69999999999999996 },
16196 { 0.014714392537270733, 20.000000000000000, 5.0000000000000000,
16197 10.000000000000000, -0.59999999999999998 },
16198 { 0.024900404542056769, 20.000000000000000, 5.0000000000000000,
16199 10.000000000000000, -0.50000000000000000 },
16200 { 0.044460184663785055, 20.000000000000000, 5.0000000000000000,
16201 10.000000000000000, -0.40000000000000002 },
16202 { 0.084638849196356836, 20.000000000000000, 5.0000000000000000,
16203 10.000000000000000, -0.30000000000000004 },
16204 { 0.17409058241290998, 20.000000000000000, 5.0000000000000000,
16205 10.000000000000000, -0.19999999999999996 },
16206 { 0.39357055823580755, 20.000000000000000, 5.0000000000000000,
16207 10.000000000000000, -0.099999999999999978 },
16208 { 1.0000000000000000, 20.000000000000000, 5.0000000000000000,
16209 10.000000000000000, 0.0000000000000000 },
16210 { 2.9410794636226596, 20.000000000000000, 5.0000000000000000,
16211 10.000000000000000, 0.10000000000000009 },
16212 { 10.417226071414344, 20.000000000000000, 5.0000000000000000,
16213 10.000000000000000, 0.19999999999999996 },
16214 { 46.930585873140835, 20.000000000000000, 5.0000000000000000,
16215 10.000000000000000, 0.30000000000000004 },
16216 { 290.76717121814852, 20.000000000000000, 5.0000000000000000,
16217 10.000000000000000, 0.39999999999999991 },
16218 { 2788.1641083374830, 20.000000000000000, 5.0000000000000000,
16219 10.000000000000000, 0.50000000000000000 },
16220 { 50228.117718560752, 20.000000000000000, 5.0000000000000000,
16221 10.000000000000000, 0.60000000000000009 },
16222 { 2433042.3476752634, 20.000000000000000, 5.0000000000000000,
16223 10.000000000000000, 0.69999999999999996 },
16224 { 705345246.77141762, 20.000000000000000, 5.0000000000000000,
16225 10.000000000000000, 0.80000000000000004 },
16226 { 15652478868616.762, 20.000000000000000, 5.0000000000000000,
16227 10.000000000000000, 0.89999999999999991 },
16230 // Test function for a=20.000000000000000, b=5.0000000000000000, c=10.000000000000000.
16231 template <typename Tp
>
16234 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16235 Tp max_abs_diff
= -Tp(1);
16236 Tp max_abs_frac
= -Tp(1);
16237 unsigned int num_datum
= sizeof(data235
)
16238 / sizeof(testcase_hyperg
<double>);
16239 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16241 const Tp f
= std::tr1::hyperg(Tp(data235
[i
].a
), Tp(data235
[i
].b
),
16242 Tp(data235
[i
].c
), Tp(data235
[i
].x
));
16243 const Tp f0
= data235
[i
].f0
;
16244 const Tp diff
= f
- f0
;
16245 if (std::abs(diff
) > max_abs_diff
)
16246 max_abs_diff
= std::abs(diff
);
16247 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16249 const Tp frac
= diff
/ f0
;
16250 if (std::abs(frac
) > max_abs_frac
)
16251 max_abs_frac
= std::abs(frac
);
16254 VERIFY(max_abs_frac
< Tp(1.0000000000000008e-12));
16257 // Test data for a=20.000000000000000, b=10.000000000000000, c=2.0000000000000000.
16258 testcase_hyperg
<double> data236
[] = {
16259 { -2.1776535308707967e-07, 20.000000000000000, 10.000000000000000,
16260 2.0000000000000000, -0.90000000000000002 },
16261 { -2.9128833151427998e-06, 20.000000000000000, 10.000000000000000,
16262 2.0000000000000000, -0.80000000000000004 },
16263 { -9.4755553429035093e-06, 20.000000000000000, 10.000000000000000,
16264 2.0000000000000000, -0.69999999999999996 },
16265 { -1.2844297353813116e-05, 20.000000000000000, 10.000000000000000,
16266 2.0000000000000000, -0.59999999999999998 },
16267 { 3.6576965483568809e-05, 20.000000000000000, 10.000000000000000,
16268 2.0000000000000000, -0.50000000000000000 },
16269 { 0.00020847453890692649, 20.000000000000000, 10.000000000000000,
16270 2.0000000000000000, -0.40000000000000002 },
16271 { -0.00022868510398174632, 20.000000000000000, 10.000000000000000,
16272 2.0000000000000000, -0.30000000000000004 },
16273 { -0.0021855513841942732, 20.000000000000000, 10.000000000000000,
16274 2.0000000000000000, -0.19999999999999996 },
16275 { 0.014662111759334634, 20.000000000000000, 10.000000000000000,
16276 2.0000000000000000, -0.099999999999999978 },
16277 { 1.0000000000000000, 20.000000000000000, 10.000000000000000,
16278 2.0000000000000000, 0.0000000000000000 },
16279 { 746.44776348798098, 20.000000000000000, 10.000000000000000,
16280 2.0000000000000000, 0.10000000000000009 },
16281 { 136080.48445225612, 20.000000000000000, 10.000000000000000,
16282 2.0000000000000000, 0.19999999999999996 },
16283 { 23094279.597826406, 20.000000000000000, 10.000000000000000,
16284 2.0000000000000000, 0.30000000000000004 },
16285 { 5315913395.5545301, 20.000000000000000, 10.000000000000000,
16286 2.0000000000000000, 0.39999999999999991 },
16287 { 2261935718399.9990, 20.000000000000000, 10.000000000000000,
16288 2.0000000000000000, 0.50000000000000000 },
16289 { 2669150854828235.0, 20.000000000000000, 10.000000000000000,
16290 2.0000000000000000, 0.60000000000000009 },
16291 { 1.7499363099365994e+19, 20.000000000000000, 10.000000000000000,
16292 2.0000000000000000, 0.69999999999999996 },
16293 { 2.8881518494606140e+24, 20.000000000000000, 10.000000000000000,
16294 2.0000000000000000, 0.80000000000000004 },
16295 { 1.4165513933661626e+33, 20.000000000000000, 10.000000000000000,
16296 2.0000000000000000, 0.89999999999999991 },
16299 // Test function for a=20.000000000000000, b=10.000000000000000, c=2.0000000000000000.
16300 template <typename Tp
>
16303 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16304 Tp max_abs_diff
= -Tp(1);
16305 Tp max_abs_frac
= -Tp(1);
16306 unsigned int num_datum
= sizeof(data236
)
16307 / sizeof(testcase_hyperg
<double>);
16308 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16310 const Tp f
= std::tr1::hyperg(Tp(data236
[i
].a
), Tp(data236
[i
].b
),
16311 Tp(data236
[i
].c
), Tp(data236
[i
].x
));
16312 const Tp f0
= data236
[i
].f0
;
16313 const Tp diff
= f
- f0
;
16314 if (std::abs(diff
) > max_abs_diff
)
16315 max_abs_diff
= std::abs(diff
);
16316 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16318 const Tp frac
= diff
/ f0
;
16319 if (std::abs(frac
) > max_abs_frac
)
16320 max_abs_frac
= std::abs(frac
);
16323 VERIFY(max_abs_frac
< Tp(1.0000000000000005e-08));
16326 // Test data for a=20.000000000000000, b=10.000000000000000, c=4.0000000000000000.
16327 testcase_hyperg
<double> data237
[] = {
16328 { 1.7149006973860441e-07, 20.000000000000000, 10.000000000000000,
16329 4.0000000000000000, -0.90000000000000002 },
16330 { 3.2399324904088936e-07, 20.000000000000000, 10.000000000000000,
16331 4.0000000000000000, -0.80000000000000004 },
16332 { 1.6015317712089860e-07, 20.000000000000000, 10.000000000000000,
16333 4.0000000000000000, -0.69999999999999996 },
16334 { -2.0500917204199595e-06, 20.000000000000000, 10.000000000000000,
16335 4.0000000000000000, -0.59999999999999998 },
16336 { -1.0175546788599472e-05, 20.000000000000000, 10.000000000000000,
16337 4.0000000000000000, -0.50000000000000000 },
16338 { -1.1720101988202453e-05, 20.000000000000000, 10.000000000000000,
16339 4.0000000000000000, -0.40000000000000002 },
16340 { 0.00014199637113974185, 20.000000000000000, 10.000000000000000,
16341 4.0000000000000000, -0.30000000000000004 },
16342 { 0.00021263363640642297, 20.000000000000000, 10.000000000000000,
16343 4.0000000000000000, -0.19999999999999996 },
16344 { -0.0072649256698441751, 20.000000000000000, 10.000000000000000,
16345 4.0000000000000000, -0.099999999999999978 },
16346 { 1.0000000000000000, 20.000000000000000, 10.000000000000000,
16347 4.0000000000000000, 0.0000000000000000 },
16348 { 90.430293772869618, 20.000000000000000, 10.000000000000000,
16349 4.0000000000000000, 0.10000000000000009 },
16350 { 6248.1455940292308, 20.000000000000000, 10.000000000000000,
16351 4.0000000000000000, 0.19999999999999996 },
16352 { 501143.39852548984, 20.000000000000000, 10.000000000000000,
16353 4.0000000000000000, 0.30000000000000004 },
16354 { 58852027.356439680, 20.000000000000000, 10.000000000000000,
16355 4.0000000000000000, 0.39999999999999991 },
16356 { 12942923093.333330, 20.000000000000000, 10.000000000000000,
16357 4.0000000000000000, 0.50000000000000000 },
16358 { 7618073993853.6592, 20.000000000000000, 10.000000000000000,
16359 4.0000000000000000, 0.60000000000000009 },
16360 { 22630251562549288., 20.000000000000000, 10.000000000000000,
16361 4.0000000000000000, 0.69999999999999996 },
16362 { 1.3708372433980356e+21, 20.000000000000000, 10.000000000000000,
16363 4.0000000000000000, 0.80000000000000004 },
16364 { 1.4154113619999653e+29, 20.000000000000000, 10.000000000000000,
16365 4.0000000000000000, 0.89999999999999991 },
16368 // Test function for a=20.000000000000000, b=10.000000000000000, c=4.0000000000000000.
16369 template <typename Tp
>
16372 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16373 Tp max_abs_diff
= -Tp(1);
16374 Tp max_abs_frac
= -Tp(1);
16375 unsigned int num_datum
= sizeof(data237
)
16376 / sizeof(testcase_hyperg
<double>);
16377 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16379 const Tp f
= std::tr1::hyperg(Tp(data237
[i
].a
), Tp(data237
[i
].b
),
16380 Tp(data237
[i
].c
), Tp(data237
[i
].x
));
16381 const Tp f0
= data237
[i
].f0
;
16382 const Tp diff
= f
- f0
;
16383 if (std::abs(diff
) > max_abs_diff
)
16384 max_abs_diff
= std::abs(diff
);
16385 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16387 const Tp frac
= diff
/ f0
;
16388 if (std::abs(frac
) > max_abs_frac
)
16389 max_abs_frac
= std::abs(frac
);
16392 VERIFY(max_abs_frac
< Tp(5.0000000000000024e-08));
16395 // Test data for a=20.000000000000000, b=10.000000000000000, c=6.0000000000000000.
16396 testcase_hyperg
<double> data238
[] = {
16397 { -1.6667473370780257e-08, 20.000000000000000, 10.000000000000000,
16398 6.0000000000000000, -0.90000000000000002 },
16399 { 8.6214844067774863e-08, 20.000000000000000, 10.000000000000000,
16400 6.0000000000000000, -0.80000000000000004 },
16401 { 5.7778331238835108e-07, 20.000000000000000, 10.000000000000000,
16402 6.0000000000000000, -0.69999999999999996 },
16403 { 2.1911400500362969e-06, 20.000000000000000, 10.000000000000000,
16404 6.0000000000000000, -0.59999999999999998 },
16405 { 4.7440049217100417e-06, 20.000000000000000, 10.000000000000000,
16406 6.0000000000000000, -0.50000000000000000 },
16407 { -1.0564233314924258e-05, 20.000000000000000, 10.000000000000000,
16408 6.0000000000000000, -0.40000000000000002 },
16409 { -0.00017990026051856349, 20.000000000000000, 10.000000000000000,
16410 6.0000000000000000, -0.30000000000000004 },
16411 { -0.00027618146288744351, 20.000000000000000, 10.000000000000000,
16412 6.0000000000000000, -0.19999999999999996 },
16413 { 0.030606019577723392, 20.000000000000000, 10.000000000000000,
16414 6.0000000000000000, -0.099999999999999978 },
16415 { 1.0000000000000000, 20.000000000000000, 10.000000000000000,
16416 6.0000000000000000, 0.0000000000000000 },
16417 { 27.832854169493341, 20.000000000000000, 10.000000000000000,
16418 6.0000000000000000, 0.10000000000000009 },
16419 { 874.00624088575228, 20.000000000000000, 10.000000000000000,
16420 6.0000000000000000, 0.19999999999999996 },
16421 { 36049.199340831554, 20.000000000000000, 10.000000000000000,
16422 6.0000000000000000, 0.30000000000000004 },
16423 { 2270967.7298624986, 20.000000000000000, 10.000000000000000,
16424 6.0000000000000000, 0.39999999999999991 },
16425 { 266979100.44444439, 20.000000000000000, 10.000000000000000,
16426 6.0000000000000000, 0.50000000000000000 },
16427 { 80311224337.493027, 20.000000000000000, 10.000000000000000,
16428 6.0000000000000000, 0.60000000000000009 },
16429 { 110111693103799.72, 20.000000000000000, 10.000000000000000,
16430 6.0000000000000000, 0.69999999999999996 },
16431 { 2.4838871426052618e+18, 20.000000000000000, 10.000000000000000,
16432 6.0000000000000000, 0.80000000000000004 },
16433 { 5.4626349999998603e+25, 20.000000000000000, 10.000000000000000,
16434 6.0000000000000000, 0.89999999999999991 },
16437 // Test function for a=20.000000000000000, b=10.000000000000000, c=6.0000000000000000.
16438 template <typename Tp
>
16441 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16442 Tp max_abs_diff
= -Tp(1);
16443 Tp max_abs_frac
= -Tp(1);
16444 unsigned int num_datum
= sizeof(data238
)
16445 / sizeof(testcase_hyperg
<double>);
16446 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16448 const Tp f
= std::tr1::hyperg(Tp(data238
[i
].a
), Tp(data238
[i
].b
),
16449 Tp(data238
[i
].c
), Tp(data238
[i
].x
));
16450 const Tp f0
= data238
[i
].f0
;
16451 const Tp diff
= f
- f0
;
16452 if (std::abs(diff
) > max_abs_diff
)
16453 max_abs_diff
= std::abs(diff
);
16454 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16456 const Tp frac
= diff
/ f0
;
16457 if (std::abs(frac
) > max_abs_frac
)
16458 max_abs_frac
= std::abs(frac
);
16461 VERIFY(max_abs_frac
< Tp(5.0000000000000019e-07));
16464 // Test data for a=20.000000000000000, b=10.000000000000000, c=8.0000000000000000.
16465 testcase_hyperg
<double> data239
[] = {
16466 { -1.5843795893321480e-07, 20.000000000000000, 10.000000000000000,
16467 8.0000000000000000, -0.90000000000000002 },
16468 { -5.4877275994033766e-07, 20.000000000000000, 10.000000000000000,
16469 8.0000000000000000, -0.80000000000000004 },
16470 { -1.7169507967745992e-06, 20.000000000000000, 10.000000000000000,
16471 8.0000000000000000, -0.69999999999999996 },
16472 { -4.5236439748752000e-06, 20.000000000000000, 10.000000000000000,
16473 8.0000000000000000, -0.59999999999999998 },
16474 { -5.5690492560325806e-06, 20.000000000000000, 10.000000000000000,
16475 8.0000000000000000, -0.50000000000000000 },
16476 { 5.6914115606934911e-05, 20.000000000000000, 10.000000000000000,
16477 8.0000000000000000, -0.40000000000000002 },
16478 { 0.00082507252097519922, 20.000000000000000, 10.000000000000000,
16479 8.0000000000000000, -0.30000000000000004 },
16480 { 0.0085739249288229857, 20.000000000000000, 10.000000000000000,
16481 8.0000000000000000, -0.19999999999999996 },
16482 { 0.088244357683754757, 20.000000000000000, 10.000000000000000,
16483 8.0000000000000000, -0.099999999999999978 },
16484 { 1.0000000000000000, 20.000000000000000, 10.000000000000000,
16485 8.0000000000000000, 0.0000000000000000 },
16486 { 13.387208440156897, 20.000000000000000, 10.000000000000000,
16487 8.0000000000000000, 0.10000000000000009 },
16488 { 226.77895441155110, 20.000000000000000, 10.000000000000000,
16489 8.0000000000000000, 0.19999999999999996 },
16490 { 5281.5716482686785, 20.000000000000000, 10.000000000000000,
16491 8.0000000000000000, 0.30000000000000004 },
16492 { 189431.77762850464, 20.000000000000000, 10.000000000000000,
16493 8.0000000000000000, 0.39999999999999991 },
16494 { 12408149.333333332, 20.000000000000000, 10.000000000000000,
16495 8.0000000000000000, 0.50000000000000000 },
16496 { 1966782292.5839682, 20.000000000000000, 10.000000000000000,
16497 8.0000000000000000, 0.60000000000000009 },
16498 { 1274123112205.7495, 20.000000000000000, 10.000000000000000,
16499 8.0000000000000000, 0.69999999999999996 },
16500 { 10903676350911508., 20.000000000000000, 10.000000000000000,
16501 8.0000000000000000, 0.80000000000000004 },
16502 { 5.1849999999998819e+22, 20.000000000000000, 10.000000000000000,
16503 8.0000000000000000, 0.89999999999999991 },
16506 // Test function for a=20.000000000000000, b=10.000000000000000, c=8.0000000000000000.
16507 template <typename Tp
>
16510 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16511 Tp max_abs_diff
= -Tp(1);
16512 Tp max_abs_frac
= -Tp(1);
16513 unsigned int num_datum
= sizeof(data239
)
16514 / sizeof(testcase_hyperg
<double>);
16515 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16517 const Tp f
= std::tr1::hyperg(Tp(data239
[i
].a
), Tp(data239
[i
].b
),
16518 Tp(data239
[i
].c
), Tp(data239
[i
].x
));
16519 const Tp f0
= data239
[i
].f0
;
16520 const Tp diff
= f
- f0
;
16521 if (std::abs(diff
) > max_abs_diff
)
16522 max_abs_diff
= std::abs(diff
);
16523 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16525 const Tp frac
= diff
/ f0
;
16526 if (std::abs(frac
) > max_abs_frac
)
16527 max_abs_frac
= std::abs(frac
);
16530 VERIFY(max_abs_frac
< Tp(2.5000000000000012e-08));
16533 // Test data for a=20.000000000000000, b=10.000000000000000, c=10.000000000000000.
16534 testcase_hyperg
<double> data240
[] = {
16535 { 2.6602838683283435e-06, 20.000000000000000, 10.000000000000000,
16536 10.000000000000000, -0.90000000000000002 },
16537 { 7.8442223930072316e-06, 20.000000000000000, 10.000000000000000,
16538 10.000000000000000, -0.80000000000000004 },
16539 { 2.4604898194634598e-05, 20.000000000000000, 10.000000000000000,
16540 10.000000000000000, -0.69999999999999996 },
16541 { 8.2718061255302686e-05, 20.000000000000000, 10.000000000000000,
16542 10.000000000000000, -0.59999999999999998 },
16543 { 0.00030072865982171723, 20.000000000000000, 10.000000000000000,
16544 10.000000000000000, -0.50000000000000000 },
16545 { 0.0011951964277455193, 20.000000000000000, 10.000000000000000,
16546 10.000000000000000, -0.40000000000000002 },
16547 { 0.0052617832469731814, 20.000000000000000, 10.000000000000000,
16548 10.000000000000000, -0.30000000000000004 },
16549 { 0.026084053304588847, 20.000000000000000, 10.000000000000000,
16550 10.000000000000000, -0.19999999999999996 },
16551 { 0.14864362802414346, 20.000000000000000, 10.000000000000000,
16552 10.000000000000000, -0.099999999999999978 },
16553 { 1.0000000000000000, 20.000000000000000, 10.000000000000000,
16554 10.000000000000000, 0.0000000000000000 },
16555 { 8.2252633399699757, 20.000000000000000, 10.000000000000000,
16556 10.000000000000000, 0.10000000000000009 },
16557 { 86.736173798840269, 20.000000000000000, 10.000000000000000,
16558 10.000000000000000, 0.19999999999999996 },
16559 { 1253.2542894196865, 20.000000000000000, 10.000000000000000,
16560 10.000000000000000, 0.30000000000000004 },
16561 { 27351.112277912434, 20.000000000000000, 10.000000000000000,
16562 10.000000000000000, 0.39999999999999991 },
16563 { 1048576.0000000000, 20.000000000000000, 10.000000000000000,
16564 10.000000000000000, 0.50000000000000000 },
16565 { 90949470.177293226, 20.000000000000000, 10.000000000000000,
16566 10.000000000000000, 0.60000000000000009 },
16567 { 28679719907.924358, 20.000000000000000, 10.000000000000000,
16568 10.000000000000000, 0.69999999999999996 },
16569 { 95367431640624.906, 20.000000000000000, 10.000000000000000,
16570 10.000000000000000, 0.80000000000000004 },
16571 { 9.9999999999998657e+19, 20.000000000000000, 10.000000000000000,
16572 10.000000000000000, 0.89999999999999991 },
16575 // Test function for a=20.000000000000000, b=10.000000000000000, c=10.000000000000000.
16576 template <typename Tp
>
16579 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16580 Tp max_abs_diff
= -Tp(1);
16581 Tp max_abs_frac
= -Tp(1);
16582 unsigned int num_datum
= sizeof(data240
)
16583 / sizeof(testcase_hyperg
<double>);
16584 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16586 const Tp f
= std::tr1::hyperg(Tp(data240
[i
].a
), Tp(data240
[i
].b
),
16587 Tp(data240
[i
].c
), Tp(data240
[i
].x
));
16588 const Tp f0
= data240
[i
].f0
;
16589 const Tp diff
= f
- f0
;
16590 if (std::abs(diff
) > max_abs_diff
)
16591 max_abs_diff
= std::abs(diff
);
16592 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16594 const Tp frac
= diff
/ f0
;
16595 if (std::abs(frac
) > max_abs_frac
)
16596 max_abs_frac
= std::abs(frac
);
16599 VERIFY(max_abs_frac
< Tp(5.0000000000000039e-13));
16602 // Test data for a=20.000000000000000, b=20.000000000000000, c=2.0000000000000000.
16603 testcase_hyperg
<double> data241
[] = {
16604 { 7.4612991101768883e-09, 20.000000000000000, 20.000000000000000,
16605 2.0000000000000000, -0.90000000000000002 },
16606 { 1.1006588946889981e-07, 20.000000000000000, 20.000000000000000,
16607 2.0000000000000000, -0.80000000000000004 },
16608 { 2.0126933743389316e-07, 20.000000000000000, 20.000000000000000,
16609 2.0000000000000000, -0.69999999999999996 },
16610 { -1.0013775379801016e-06, 20.000000000000000, 20.000000000000000,
16611 2.0000000000000000, -0.59999999999999998 },
16612 { -3.0371956856472516e-06, 20.000000000000000, 20.000000000000000,
16613 2.0000000000000000, -0.50000000000000000 },
16614 { 2.2012669924527286e-05, 20.000000000000000, 20.000000000000000,
16615 2.0000000000000000, -0.40000000000000002 },
16616 { -6.2415598025417670e-05, 20.000000000000000, 20.000000000000000,
16617 2.0000000000000000, -0.30000000000000004 },
16618 { 0.00033551320394378602, 20.000000000000000, 20.000000000000000,
16619 2.0000000000000000, -0.19999999999999996 },
16620 { -0.0062342152641436353, 20.000000000000000, 20.000000000000000,
16621 2.0000000000000000, -0.099999999999999978 },
16622 { 1.0000000000000000, 20.000000000000000, 20.000000000000000,
16623 2.0000000000000000, 0.0000000000000000 },
16624 { 34830.688900741610, 20.000000000000000, 20.000000000000000,
16625 2.0000000000000000, 0.10000000000000009 },
16626 { 67626221.263030857, 20.000000000000000, 20.000000000000000,
16627 2.0000000000000000, 0.19999999999999996 },
16628 { 102764604848.69762, 20.000000000000000, 20.000000000000000,
16629 2.0000000000000000, 0.30000000000000004 },
16630 { 220278355222373.38, 20.000000000000000, 20.000000000000000,
16631 2.0000000000000000, 0.39999999999999991 },
16632 { 1.0422324699794536e+18, 20.000000000000000, 20.000000000000000,
16633 2.0000000000000000, 0.50000000000000000 },
16634 { 1.9128731788368004e+22, 20.000000000000000, 20.000000000000000,
16635 2.0000000000000000, 0.60000000000000009 },
16636 { 3.5234592919485287e+27, 20.000000000000000, 20.000000000000000,
16637 2.0000000000000000, 0.69999999999999996 },
16638 { 5.0867023209025249e+34, 20.000000000000000, 20.000000000000000,
16639 2.0000000000000000, 0.80000000000000004 },
16640 { 3.7461088506658564e+46, 20.000000000000000, 20.000000000000000,
16641 2.0000000000000000, 0.89999999999999991 },
16644 // Test function for a=20.000000000000000, b=20.000000000000000, c=2.0000000000000000.
16645 template <typename Tp
>
16648 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16649 Tp max_abs_diff
= -Tp(1);
16650 Tp max_abs_frac
= -Tp(1);
16651 unsigned int num_datum
= sizeof(data241
)
16652 / sizeof(testcase_hyperg
<double>);
16653 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16655 const Tp f
= std::tr1::hyperg(Tp(data241
[i
].a
), Tp(data241
[i
].b
),
16656 Tp(data241
[i
].c
), Tp(data241
[i
].x
));
16657 const Tp f0
= data241
[i
].f0
;
16658 const Tp diff
= f
- f0
;
16659 if (std::abs(diff
) > max_abs_diff
)
16660 max_abs_diff
= std::abs(diff
);
16661 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16663 const Tp frac
= diff
/ f0
;
16664 if (std::abs(frac
) > max_abs_frac
)
16665 max_abs_frac
= std::abs(frac
);
16668 VERIFY(max_abs_frac
< Tp(1.0000000000000005e-07));
16671 // Test data for a=20.000000000000000, b=20.000000000000000, c=4.0000000000000000.
16672 testcase_hyperg
<double> data242
[] = {
16673 { -1.5895900796973045e-09, 20.000000000000000, 20.000000000000000,
16674 4.0000000000000000, -0.90000000000000002 },
16675 { -2.4403576837293198e-09, 20.000000000000000, 20.000000000000000,
16676 4.0000000000000000, -0.80000000000000004 },
16677 { 1.1622915290732117e-08, 20.000000000000000, 20.000000000000000,
16678 4.0000000000000000, -0.69999999999999996 },
16679 { 6.3899796307731726e-08, 20.000000000000000, 20.000000000000000,
16680 4.0000000000000000, -0.59999999999999998 },
16681 { -1.3503608352807462e-07, 20.000000000000000, 20.000000000000000,
16682 4.0000000000000000, -0.50000000000000000 },
16683 { -1.2198533623899163e-06, 20.000000000000000, 20.000000000000000,
16684 4.0000000000000000, -0.40000000000000002 },
16685 { 9.9086618119129001e-06, 20.000000000000000, 20.000000000000000,
16686 4.0000000000000000, -0.30000000000000004 },
16687 { -7.6797020080162010e-05, 20.000000000000000, 20.000000000000000,
16688 4.0000000000000000, -0.19999999999999996 },
16689 { 0.0013196405087170875, 20.000000000000000, 20.000000000000000,
16690 4.0000000000000000, -0.099999999999999978 },
16691 { 1.0000000000000000, 20.000000000000000, 20.000000000000000,
16692 4.0000000000000000, 0.0000000000000000 },
16693 { 2274.2044768143564, 20.000000000000000, 20.000000000000000,
16694 4.0000000000000000, 0.10000000000000009 },
16695 { 1611640.1560475440, 20.000000000000000, 20.000000000000000,
16696 4.0000000000000000, 0.19999999999999996 },
16697 { 1147063984.7359734, 20.000000000000000, 20.000000000000000,
16698 4.0000000000000000, 0.30000000000000004 },
16699 { 1253162497163.8311, 20.000000000000000, 20.000000000000000,
16700 4.0000000000000000, 0.39999999999999991 },
16701 { 3071321673390476.0, 20.000000000000000, 20.000000000000000,
16702 4.0000000000000000, 0.50000000000000000 },
16703 { 2.8221123559124324e+19, 20.000000000000000, 20.000000000000000,
16704 4.0000000000000000, 0.60000000000000009 },
16705 { 2.3658463807419519e+24, 20.000000000000000, 20.000000000000000,
16706 4.0000000000000000, 0.69999999999999996 },
16707 { 1.2596553731345468e+31, 20.000000000000000, 20.000000000000000,
16708 4.0000000000000000, 0.80000000000000004 },
16709 { 1.9627175792062075e+42, 20.000000000000000, 20.000000000000000,
16710 4.0000000000000000, 0.89999999999999991 },
16713 // Test function for a=20.000000000000000, b=20.000000000000000, c=4.0000000000000000.
16714 template <typename Tp
>
16717 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16718 Tp max_abs_diff
= -Tp(1);
16719 Tp max_abs_frac
= -Tp(1);
16720 unsigned int num_datum
= sizeof(data242
)
16721 / sizeof(testcase_hyperg
<double>);
16722 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16724 const Tp f
= std::tr1::hyperg(Tp(data242
[i
].a
), Tp(data242
[i
].b
),
16725 Tp(data242
[i
].c
), Tp(data242
[i
].x
));
16726 const Tp f0
= data242
[i
].f0
;
16727 const Tp diff
= f
- f0
;
16728 if (std::abs(diff
) > max_abs_diff
)
16729 max_abs_diff
= std::abs(diff
);
16730 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16732 const Tp frac
= diff
/ f0
;
16733 if (std::abs(frac
) > max_abs_frac
)
16734 max_abs_frac
= std::abs(frac
);
16737 VERIFY(max_abs_frac
< Tp(2.5000000000000006e-06));
16740 // Test data for a=20.000000000000000, b=20.000000000000000, c=6.0000000000000000.
16741 testcase_hyperg
<double> data243
[] = {
16742 { 8.0159808156941562e-11, 20.000000000000000, 20.000000000000000,
16743 6.0000000000000000, -0.90000000000000002 },
16744 { -6.4422687845093557e-10, 20.000000000000000, 20.000000000000000,
16745 6.0000000000000000, -0.80000000000000004 },
16746 { -3.7526134186308981e-09, 20.000000000000000, 20.000000000000000,
16747 6.0000000000000000, -0.69999999999999996 },
16748 { -1.7692034167897114e-09, 20.000000000000000, 20.000000000000000,
16749 6.0000000000000000, -0.59999999999999998 },
16750 { 7.9304558772837909e-08, 20.000000000000000, 20.000000000000000,
16751 6.0000000000000000, -0.50000000000000000 },
16752 { 5.9348070318594204e-08, 20.000000000000000, 20.000000000000000,
16753 6.0000000000000000, -0.40000000000000002 },
16754 { -3.5827694517425210e-06, 20.000000000000000, 20.000000000000000,
16755 6.0000000000000000, -0.30000000000000004 },
16756 { 4.4951490418284159e-05, 20.000000000000000, 20.000000000000000,
16757 6.0000000000000000, -0.19999999999999996 },
16758 { -0.0013716249406310486, 20.000000000000000, 20.000000000000000,
16759 6.0000000000000000, -0.099999999999999978 },
16760 { 1.0000000000000000, 20.000000000000000, 20.000000000000000,
16761 6.0000000000000000, 0.0000000000000000 },
16762 { 415.32493304415505, 20.000000000000000, 20.000000000000000,
16763 6.0000000000000000, 0.10000000000000009 },
16764 { 121300.42991518594, 20.000000000000000, 20.000000000000000,
16765 6.0000000000000000, 0.19999999999999996 },
16766 { 42725673.833462097, 20.000000000000000, 20.000000000000000,
16767 6.0000000000000000, 0.30000000000000004 },
16768 { 24588915328.261719, 20.000000000000000, 20.000000000000000,
16769 6.0000000000000000, 0.39999999999999991 },
16770 { 31929082412503.652, 20.000000000000000, 20.000000000000000,
16771 6.0000000000000000, 0.50000000000000000 },
16772 { 1.4934954443280477e+17, 20.000000000000000, 20.000000000000000,
16773 6.0000000000000000, 0.60000000000000009 },
16774 { 5.7726220597696125e+21, 20.000000000000000, 20.000000000000000,
16775 6.0000000000000000, 0.69999999999999996 },
16776 { 1.1454387824049374e+28, 20.000000000000000, 20.000000000000000,
16777 6.0000000000000000, 0.80000000000000004 },
16778 { 3.8088637321581534e+38, 20.000000000000000, 20.000000000000000,
16779 6.0000000000000000, 0.89999999999999991 },
16782 // Test function for a=20.000000000000000, b=20.000000000000000, c=6.0000000000000000.
16783 template <typename Tp
>
16786 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16787 Tp max_abs_diff
= -Tp(1);
16788 Tp max_abs_frac
= -Tp(1);
16789 unsigned int num_datum
= sizeof(data243
)
16790 / sizeof(testcase_hyperg
<double>);
16791 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16793 const Tp f
= std::tr1::hyperg(Tp(data243
[i
].a
), Tp(data243
[i
].b
),
16794 Tp(data243
[i
].c
), Tp(data243
[i
].x
));
16795 const Tp f0
= data243
[i
].f0
;
16796 const Tp diff
= f
- f0
;
16797 if (std::abs(diff
) > max_abs_diff
)
16798 max_abs_diff
= std::abs(diff
);
16799 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16801 const Tp frac
= diff
/ f0
;
16802 if (std::abs(frac
) > max_abs_frac
)
16803 max_abs_frac
= std::abs(frac
);
16806 VERIFY(max_abs_frac
< Tp(2.5000000000000005e-05));
16809 // Test data for a=20.000000000000000, b=20.000000000000000, c=8.0000000000000000.
16810 testcase_hyperg
<double> data244
[] = {
16811 { 1.0699072529874453e-10, 20.000000000000000, 20.000000000000000,
16812 8.0000000000000000, -0.90000000000000002 },
16813 { 5.4297753417228627e-10, 20.000000000000000, 20.000000000000000,
16814 8.0000000000000000, -0.80000000000000004 },
16815 { 9.7625471266824426e-10, 20.000000000000000, 20.000000000000000,
16816 8.0000000000000000, -0.69999999999999996 },
16817 { -6.7257762867770348e-09, 20.000000000000000, 20.000000000000000,
16818 8.0000000000000000, -0.59999999999999998 },
16819 { -5.4634571496175302e-08, 20.000000000000000, 20.000000000000000,
16820 8.0000000000000000, -0.50000000000000000 },
16821 { 1.4595644213893387e-07, 20.000000000000000, 20.000000000000000,
16822 8.0000000000000000, -0.40000000000000002 },
16823 { 3.3515966497049909e-06, 20.000000000000000, 20.000000000000000,
16824 8.0000000000000000, -0.30000000000000004 },
16825 { -6.5848086985914887e-05, 20.000000000000000, 20.000000000000000,
16826 8.0000000000000000, -0.19999999999999996 },
16827 { 0.0034800171306214813, 20.000000000000000, 20.000000000000000,
16828 8.0000000000000000, -0.099999999999999978 },
16829 { 1.0000000000000000, 20.000000000000000, 20.000000000000000,
16830 8.0000000000000000, 0.0000000000000000 },
16831 { 130.93865856750304, 20.000000000000000, 20.000000000000000,
16832 8.0000000000000000, 0.10000000000000009 },
16833 { 17850.203502975532, 20.000000000000000, 20.000000000000000,
16834 8.0000000000000000, 0.19999999999999996 },
16835 { 3307058.5655149994, 20.000000000000000, 20.000000000000000,
16836 8.0000000000000000, 0.30000000000000004 },
16837 { 1041065396.2302787, 20.000000000000000, 20.000000000000000,
16838 8.0000000000000000, 0.39999999999999991 },
16839 { 735221357488.41736, 20.000000000000000, 20.000000000000000,
16840 8.0000000000000000, 0.50000000000000000 },
16841 { 1785176805049585.2, 20.000000000000000, 20.000000000000000,
16842 8.0000000000000000, 0.60000000000000009 },
16843 { 3.2302829930269192e+19, 20.000000000000000, 20.000000000000000,
16844 8.0000000000000000, 0.69999999999999996 },
16845 { 2.4184909805178299e+25, 20.000000000000000, 20.000000000000000,
16846 8.0000000000000000, 0.80000000000000004 },
16847 { 1.7340021007794567e+35, 20.000000000000000, 20.000000000000000,
16848 8.0000000000000000, 0.89999999999999991 },
16851 // Test function for a=20.000000000000000, b=20.000000000000000, c=8.0000000000000000.
16852 template <typename Tp
>
16855 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16856 Tp max_abs_diff
= -Tp(1);
16857 Tp max_abs_frac
= -Tp(1);
16858 unsigned int num_datum
= sizeof(data244
)
16859 / sizeof(testcase_hyperg
<double>);
16860 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16862 const Tp f
= std::tr1::hyperg(Tp(data244
[i
].a
), Tp(data244
[i
].b
),
16863 Tp(data244
[i
].c
), Tp(data244
[i
].x
));
16864 const Tp f0
= data244
[i
].f0
;
16865 const Tp diff
= f
- f0
;
16866 if (std::abs(diff
) > max_abs_diff
)
16867 max_abs_diff
= std::abs(diff
);
16868 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16870 const Tp frac
= diff
/ f0
;
16871 if (std::abs(frac
) > max_abs_frac
)
16872 max_abs_frac
= std::abs(frac
);
16875 VERIFY(max_abs_frac
< Tp(2.5000000000000005e-05));
16878 // Test data for a=20.000000000000000, b=20.000000000000000, c=10.000000000000000.
16879 testcase_hyperg
<double> data245
[] = {
16880 { -1.7945363894141429e-10, 20.000000000000000, 20.000000000000000,
16881 10.000000000000000, -0.90000000000000002 },
16882 { -4.4440666675421800e-10, 20.000000000000000, 20.000000000000000,
16883 10.000000000000000, -0.80000000000000004 },
16884 { 6.6171630913717945e-10, 20.000000000000000, 20.000000000000000,
16885 10.000000000000000, -0.69999999999999996 },
16886 { 1.5453889642199650e-08, 20.000000000000000, 20.000000000000000,
16887 10.000000000000000, -0.59999999999999998 },
16888 { 7.5754083860094422e-08, 20.000000000000000, 20.000000000000000,
16889 10.000000000000000, -0.50000000000000000 },
16890 { -4.1113628639873710e-07, 20.000000000000000, 20.000000000000000,
16891 10.000000000000000, -0.40000000000000002 },
16892 { -9.5300704265214247e-06, 20.000000000000000, 20.000000000000000,
16893 10.000000000000000, -0.30000000000000004 },
16894 { 0.00016081533175785109, 20.000000000000000, 20.000000000000000,
16895 10.000000000000000, -0.19999999999999996 },
16896 { 0.017684650940379486, 20.000000000000000, 20.000000000000000,
16897 10.000000000000000, -0.099999999999999978 },
16898 { 1.0000000000000000, 20.000000000000000, 20.000000000000000,
16899 10.000000000000000, 0.0000000000000000 },
16900 { 57.562247312454403, 20.000000000000000, 20.000000000000000,
16901 10.000000000000000, 0.10000000000000009 },
16902 { 4124.4159820362511, 20.000000000000000, 20.000000000000000,
16903 10.000000000000000, 0.19999999999999996 },
16904 { 428774.21436196787, 20.000000000000000, 20.000000000000000,
16905 10.000000000000000, 0.30000000000000004 },
16906 { 76996819.900892526, 20.000000000000000, 20.000000000000000,
16907 10.000000000000000, 0.39999999999999991 },
16908 { 30473174828.943691, 20.000000000000000, 20.000000000000000,
16909 10.000000000000000, 0.50000000000000000 },
16910 { 39291970835753.094, 20.000000000000000, 20.000000000000000,
16911 10.000000000000000, 0.60000000000000009 },
16912 { 3.3890331048069018e+17, 20.000000000000000, 20.000000000000000,
16913 10.000000000000000, 0.69999999999999996 },
16914 { 9.7157373454594049e+22, 20.000000000000000, 20.000000000000000,
16915 10.000000000000000, 0.80000000000000004 },
16916 { 1.5205808288860858e+32, 20.000000000000000, 20.000000000000000,
16917 10.000000000000000, 0.89999999999999991 },
16920 // Test function for a=20.000000000000000, b=20.000000000000000, c=10.000000000000000.
16921 template <typename Tp
>
16924 const Tp eps
= std::numeric_limits
<Tp
>::epsilon();
16925 Tp max_abs_diff
= -Tp(1);
16926 Tp max_abs_frac
= -Tp(1);
16927 unsigned int num_datum
= sizeof(data245
)
16928 / sizeof(testcase_hyperg
<double>);
16929 for (unsigned int i
= 0; i
< num_datum
; ++i
)
16931 const Tp f
= std::tr1::hyperg(Tp(data245
[i
].a
), Tp(data245
[i
].b
),
16932 Tp(data245
[i
].c
), Tp(data245
[i
].x
));
16933 const Tp f0
= data245
[i
].f0
;
16934 const Tp diff
= f
- f0
;
16935 if (std::abs(diff
) > max_abs_diff
)
16936 max_abs_diff
= std::abs(diff
);
16937 if (std::abs(f0
) > Tp(10) * eps
&& std::abs(f
) > Tp(10) * eps
)
16939 const Tp frac
= diff
/ f0
;
16940 if (std::abs(frac
) > max_abs_frac
)
16941 max_abs_frac
= std::abs(frac
);
16944 VERIFY(max_abs_frac
< Tp(2.5000000000000005e-05));
16947 int main(int, char**)