]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/math/test/test_rational_instances/test_rational.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / math / test / test_rational_instances / test_rational.hpp
1 // (C) Copyright John Maddock 2006-7.
2 // Use, modification and distribution are subject to the
3 // Boost Software License, Version 1.0. (See accompanying file
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6
7 #ifndef BOOST_MATH_TEST_RATIONAL_HPP
8 #define BOOST_MATH_TEST_RATIONAL_HPP
9
10 #include <boost/test/tools/floating_point_comparison.hpp>
11 #include <boost/test/unit_test.hpp>
12 #include <boost/array.hpp>
13 #include <boost/math/tools/rational.hpp>
14 #include <boost/math/tools/precision.hpp>
15
16 template <class T, class U>
17 void do_test_spots1(T, U)
18 {
19 //
20 // Tolerance is 4 eps expressed as a persentage:
21 //
22 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
23
24 //
25 // Everything past this point is generated by the program
26 // ../tools/generate_rational_test.cpp
27 //
28
29 //
30 // Polynomials of order 0
31 //
32 static const U n1c[1] = { 2 };
33 static const boost::array<U, 1> n1a = {{ 2 }};
34 BOOST_CHECK_CLOSE(
35 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.125), 1),
36 static_cast<T>(0.2e1L),
37 tolerance);
38 BOOST_CHECK_CLOSE(
39 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.25), 1),
40 static_cast<T>(0.2e1L),
41 tolerance);
42 BOOST_CHECK_CLOSE(
43 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.75), 1),
44 static_cast<T>(0.2e1L),
45 tolerance);
46 BOOST_CHECK_CLOSE(
47 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f), 1),
48 static_cast<T>(0.2e1L),
49 tolerance);
50 BOOST_CHECK_CLOSE(
51 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(6.5), 1),
52 static_cast<T>(0.2e1L),
53 tolerance);
54 BOOST_CHECK_CLOSE(
55 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(10247.25), 1),
56 static_cast<T>(0.2e1L),
57 tolerance);
58
59 BOOST_CHECK_CLOSE(
60 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.125)),
61 static_cast<T>(0.2e1L),
62 tolerance);
63 BOOST_CHECK_CLOSE(
64 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.25)),
65 static_cast<T>(0.2e1L),
66 tolerance);
67 BOOST_CHECK_CLOSE(
68 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(0.75)),
69 static_cast<T>(0.2e1L),
70 tolerance);
71 BOOST_CHECK_CLOSE(
72 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f)),
73 static_cast<T>(0.2e1L),
74 tolerance);
75 BOOST_CHECK_CLOSE(
76 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(6.5)),
77 static_cast<T>(0.2e1L),
78 tolerance);
79 BOOST_CHECK_CLOSE(
80 boost::math::tools::evaluate_polynomial(n1c, static_cast<T>(10247.25)),
81 static_cast<T>(0.2e1L),
82 tolerance);
83
84 BOOST_CHECK_CLOSE(
85 boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(0.125)),
86 static_cast<T>(0.2e1L),
87 tolerance);
88 BOOST_CHECK_CLOSE(
89 boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(0.25)),
90 static_cast<T>(0.2e1L),
91 tolerance);
92 BOOST_CHECK_CLOSE(
93 boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(0.75)),
94 static_cast<T>(0.2e1L),
95 tolerance);
96 BOOST_CHECK_CLOSE(
97 boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(1.0f - 1.0f/64.0f)),
98 static_cast<T>(0.2e1L),
99 tolerance);
100 BOOST_CHECK_CLOSE(
101 boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(6.5)),
102 static_cast<T>(0.2e1L),
103 tolerance);
104 BOOST_CHECK_CLOSE(
105 boost::math::tools::evaluate_polynomial(n1a, static_cast<T>(10247.25)),
106 static_cast<T>(0.2e1L),
107 tolerance);
108
109 BOOST_CHECK_CLOSE(
110 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.125), 1),
111 static_cast<T>(0.2e1L),
112 tolerance);
113 BOOST_CHECK_CLOSE(
114 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.25), 1),
115 static_cast<T>(0.2e1L),
116 tolerance);
117 BOOST_CHECK_CLOSE(
118 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.75), 1),
119 static_cast<T>(0.2e1L),
120 tolerance);
121 BOOST_CHECK_CLOSE(
122 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f), 1),
123 static_cast<T>(0.2e1L),
124 tolerance);
125 BOOST_CHECK_CLOSE(
126 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(6.5f), 1),
127 static_cast<T>(0.2e1L),
128 tolerance);
129 BOOST_CHECK_CLOSE(
130 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(10247.25f), 1),
131 static_cast<T>(0.2e1L),
132 tolerance);
133
134 BOOST_CHECK_CLOSE(
135 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.125)),
136 static_cast<T>(0.2e1L),
137 tolerance);
138 BOOST_CHECK_CLOSE(
139 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.25)),
140 static_cast<T>(0.2e1L),
141 tolerance);
142 BOOST_CHECK_CLOSE(
143 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(0.75)),
144 static_cast<T>(0.2e1L),
145 tolerance);
146 BOOST_CHECK_CLOSE(
147 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(1.0f - 1.0f/64.0f)),
148 static_cast<T>(0.2e1L),
149 tolerance);
150 BOOST_CHECK_CLOSE(
151 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(6.5f)),
152 static_cast<T>(0.2e1L),
153 tolerance);
154 BOOST_CHECK_CLOSE(
155 boost::math::tools::evaluate_even_polynomial(n1c, static_cast<T>(10247.25f)),
156 static_cast<T>(0.2e1L),
157 tolerance);
158
159 BOOST_CHECK_CLOSE(
160 boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(0.125)),
161 static_cast<T>(0.2e1L),
162 tolerance);
163 BOOST_CHECK_CLOSE(
164 boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(0.25)),
165 static_cast<T>(0.2e1L),
166 tolerance);
167 BOOST_CHECK_CLOSE(
168 boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(0.75)),
169 static_cast<T>(0.2e1L),
170 tolerance);
171 BOOST_CHECK_CLOSE(
172 boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(1.0f - 1.0f/64.0f)),
173 static_cast<T>(0.2e1L),
174 tolerance);
175 BOOST_CHECK_CLOSE(
176 boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(6.5f)),
177 static_cast<T>(0.2e1L),
178 tolerance);
179 BOOST_CHECK_CLOSE(
180 boost::math::tools::evaluate_even_polynomial(n1a, static_cast<T>(10247.25f)),
181 static_cast<T>(0.2e1L),
182 tolerance);
183
184 //
185 // Rational functions of order 0
186 //
187 static const U d1c[1] = { 3 };
188 static const boost::array<U, 1> d1a = {{ 3 }};
189 BOOST_CHECK_CLOSE(
190 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.125), 1),
191 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
192 tolerance);
193 BOOST_CHECK_CLOSE(
194 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.25), 1),
195 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
196 tolerance);
197 BOOST_CHECK_CLOSE(
198 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.75), 1),
199 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
200 tolerance);
201 BOOST_CHECK_CLOSE(
202 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(1.0f - 1.0f/64.0f), 1),
203 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
204 tolerance);
205 BOOST_CHECK_CLOSE(
206 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(6.5f), 1),
207 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
208 tolerance);
209 BOOST_CHECK_CLOSE(
210 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(10247.25f), 1),
211 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
212 tolerance);
213
214 BOOST_CHECK_CLOSE(
215 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.125)),
216 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
217 tolerance);
218 BOOST_CHECK_CLOSE(
219 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.25)),
220 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
221 tolerance);
222 BOOST_CHECK_CLOSE(
223 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(0.75)),
224 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
225 tolerance);
226 BOOST_CHECK_CLOSE(
227 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(1.0f - 1.0f/64.0f)),
228 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
229 tolerance);
230 BOOST_CHECK_CLOSE(
231 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(6.5f)),
232 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
233 tolerance);
234 BOOST_CHECK_CLOSE(
235 boost::math::tools::evaluate_rational(n1c, d1c, static_cast<T>(10247.25f)),
236 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
237 tolerance);
238
239 BOOST_CHECK_CLOSE(
240 boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(0.125)),
241 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
242 tolerance);
243 BOOST_CHECK_CLOSE(
244 boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(0.25)),
245 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
246 tolerance);
247 BOOST_CHECK_CLOSE(
248 boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(0.75)),
249 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
250 tolerance);
251 BOOST_CHECK_CLOSE(
252 boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(1.0f - 1.0f/64.0f)),
253 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
254 tolerance);
255 BOOST_CHECK_CLOSE(
256 boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(6.5f)),
257 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
258 tolerance);
259 BOOST_CHECK_CLOSE(
260 boost::math::tools::evaluate_rational(n1a, d1a, static_cast<T>(10247.25f)),
261 static_cast<T>(0.6666666666666666666666666666666666666667e0L),
262 tolerance);
263
264 //
265 // Polynomials of order 1
266 //
267 static const U n2c[2] = { 3, 1 };
268 static const boost::array<U, 2> n2a = {{ 3, 1 }};
269 BOOST_CHECK_CLOSE(
270 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.125), 2),
271 static_cast<T>(0.3125e1L),
272 tolerance);
273 BOOST_CHECK_CLOSE(
274 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.25), 2),
275 static_cast<T>(0.325e1L),
276 tolerance);
277 BOOST_CHECK_CLOSE(
278 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.75), 2),
279 static_cast<T>(0.375e1L),
280 tolerance);
281 BOOST_CHECK_CLOSE(
282 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
283 static_cast<T>(0.3984375e1L),
284 tolerance);
285 BOOST_CHECK_CLOSE(
286 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(6.5), 2),
287 static_cast<T>(0.95e1L),
288 tolerance);
289 BOOST_CHECK_CLOSE(
290 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(10247.25), 2),
291 static_cast<T>(0.1025025e5L),
292 tolerance);
293
294 BOOST_CHECK_CLOSE(
295 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.125)),
296 static_cast<T>(0.3125e1L),
297 tolerance);
298 BOOST_CHECK_CLOSE(
299 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.25)),
300 static_cast<T>(0.325e1L),
301 tolerance);
302 BOOST_CHECK_CLOSE(
303 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(0.75)),
304 static_cast<T>(0.375e1L),
305 tolerance);
306 BOOST_CHECK_CLOSE(
307 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)),
308 static_cast<T>(0.3984375e1L),
309 tolerance);
310 BOOST_CHECK_CLOSE(
311 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(6.5)),
312 static_cast<T>(0.95e1L),
313 tolerance);
314 BOOST_CHECK_CLOSE(
315 boost::math::tools::evaluate_polynomial(n2c, static_cast<T>(10247.25)),
316 static_cast<T>(0.1025025e5L),
317 tolerance);
318
319 BOOST_CHECK_CLOSE(
320 boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(0.125)),
321 static_cast<T>(0.3125e1L),
322 tolerance);
323 BOOST_CHECK_CLOSE(
324 boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(0.25)),
325 static_cast<T>(0.325e1L),
326 tolerance);
327 BOOST_CHECK_CLOSE(
328 boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(0.75)),
329 static_cast<T>(0.375e1L),
330 tolerance);
331 BOOST_CHECK_CLOSE(
332 boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)),
333 static_cast<T>(0.3984375e1L),
334 tolerance);
335 BOOST_CHECK_CLOSE(
336 boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(6.5)),
337 static_cast<T>(0.95e1L),
338 tolerance);
339 BOOST_CHECK_CLOSE(
340 boost::math::tools::evaluate_polynomial(n2a, static_cast<T>(10247.25)),
341 static_cast<T>(0.1025025e5L),
342 tolerance);
343
344 BOOST_CHECK_CLOSE(
345 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.125), 2),
346 static_cast<T>(0.3015625e1L),
347 tolerance);
348 BOOST_CHECK_CLOSE(
349 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.25), 2),
350 static_cast<T>(0.30625e1L),
351 tolerance);
352 BOOST_CHECK_CLOSE(
353 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.75), 2),
354 static_cast<T>(0.35625e1L),
355 tolerance);
356 BOOST_CHECK_CLOSE(
357 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
358 static_cast<T>(0.3968994140625e1L),
359 tolerance);
360 BOOST_CHECK_CLOSE(
361 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(6.5f), 2),
362 static_cast<T>(0.4525e2L),
363 tolerance);
364 BOOST_CHECK_CLOSE(
365 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(10247.25f), 2),
366 static_cast<T>(0.1050061355625e9L),
367 tolerance);
368
369 BOOST_CHECK_CLOSE(
370 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.125)),
371 static_cast<T>(0.3015625e1L),
372 tolerance);
373 BOOST_CHECK_CLOSE(
374 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.25)),
375 static_cast<T>(0.30625e1L),
376 tolerance);
377 BOOST_CHECK_CLOSE(
378 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(0.75)),
379 static_cast<T>(0.35625e1L),
380 tolerance);
381 BOOST_CHECK_CLOSE(
382 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)),
383 static_cast<T>(0.3968994140625e1L),
384 tolerance);
385 BOOST_CHECK_CLOSE(
386 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(6.5f)),
387 static_cast<T>(0.4525e2L),
388 tolerance);
389 BOOST_CHECK_CLOSE(
390 boost::math::tools::evaluate_even_polynomial(n2c, static_cast<T>(10247.25f)),
391 static_cast<T>(0.1050061355625e9L),
392 tolerance);
393
394 BOOST_CHECK_CLOSE(
395 boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.125)),
396 static_cast<T>(0.3015625e1L),
397 tolerance);
398 BOOST_CHECK_CLOSE(
399 boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.25)),
400 static_cast<T>(0.30625e1L),
401 tolerance);
402 BOOST_CHECK_CLOSE(
403 boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(0.75)),
404 static_cast<T>(0.35625e1L),
405 tolerance);
406 BOOST_CHECK_CLOSE(
407 boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)),
408 static_cast<T>(0.3968994140625e1L),
409 tolerance);
410 BOOST_CHECK_CLOSE(
411 boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(6.5f)),
412 static_cast<T>(0.4525e2L),
413 tolerance);
414 BOOST_CHECK_CLOSE(
415 boost::math::tools::evaluate_even_polynomial(n2a, static_cast<T>(10247.25f)),
416 static_cast<T>(0.1050061355625e9L),
417 tolerance);
418
419 BOOST_CHECK_CLOSE(
420 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.125), 2),
421 static_cast<T>(0.3125e1L),
422 tolerance);
423 BOOST_CHECK_CLOSE(
424 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.25), 2),
425 static_cast<T>(0.325e1L),
426 tolerance);
427 BOOST_CHECK_CLOSE(
428 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.75), 2),
429 static_cast<T>(0.375e1L),
430 tolerance);
431 BOOST_CHECK_CLOSE(
432 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
433 static_cast<T>(0.3984375e1L),
434 tolerance);
435 BOOST_CHECK_CLOSE(
436 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(6.5f), 2),
437 static_cast<T>(0.95e1L),
438 tolerance);
439 BOOST_CHECK_CLOSE(
440 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(10247.25f), 2),
441 static_cast<T>(0.1025025e5L),
442 tolerance);
443
444 BOOST_CHECK_CLOSE(
445 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.125)),
446 static_cast<T>(0.3125e1L),
447 tolerance);
448 BOOST_CHECK_CLOSE(
449 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.25)),
450 static_cast<T>(0.325e1L),
451 tolerance);
452 BOOST_CHECK_CLOSE(
453 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(0.75)),
454 static_cast<T>(0.375e1L),
455 tolerance);
456 BOOST_CHECK_CLOSE(
457 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(1.0f - 1.0f/64.0f)),
458 static_cast<T>(0.3984375e1L),
459 tolerance);
460 BOOST_CHECK_CLOSE(
461 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(6.5f)),
462 static_cast<T>(0.95e1L),
463 tolerance);
464 BOOST_CHECK_CLOSE(
465 boost::math::tools::evaluate_odd_polynomial(n2c, static_cast<T>(10247.25f)),
466 static_cast<T>(0.1025025e5L),
467 tolerance);
468
469 BOOST_CHECK_CLOSE(
470 boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.125)),
471 static_cast<T>(0.3125e1L),
472 tolerance);
473 BOOST_CHECK_CLOSE(
474 boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.25)),
475 static_cast<T>(0.325e1L),
476 tolerance);
477 BOOST_CHECK_CLOSE(
478 boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(0.75)),
479 static_cast<T>(0.375e1L),
480 tolerance);
481 BOOST_CHECK_CLOSE(
482 boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(1.0f - 1.0f/64.0f)),
483 static_cast<T>(0.3984375e1L),
484 tolerance);
485 BOOST_CHECK_CLOSE(
486 boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(6.5f)),
487 static_cast<T>(0.95e1L),
488 tolerance);
489 BOOST_CHECK_CLOSE(
490 boost::math::tools::evaluate_odd_polynomial(n2a, static_cast<T>(10247.25f)),
491 static_cast<T>(0.1025025e5L),
492 tolerance);
493
494 //
495 // Rational functions of order 1
496 //
497 static const U d2c[2] = { 5, 9 };
498 static const boost::array<U, 2> d2a = {{ 5, 9 }};
499 BOOST_CHECK_CLOSE(
500 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.125), 2),
501 static_cast<T>(0.5102040816326530612244897959183673469388e0L),
502 tolerance);
503 BOOST_CHECK_CLOSE(
504 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.25), 2),
505 static_cast<T>(0.4482758620689655172413793103448275862069e0L),
506 tolerance);
507 BOOST_CHECK_CLOSE(
508 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.75), 2),
509 static_cast<T>(0.3191489361702127659574468085106382978723e0L),
510 tolerance);
511 BOOST_CHECK_CLOSE(
512 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(1.0f - 1.0f/64.0f), 2),
513 static_cast<T>(0.2874859075535512965050732807215332581736e0L),
514 tolerance);
515 BOOST_CHECK_CLOSE(
516 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(6.5f), 2),
517 static_cast<T>(0.1496062992125984251968503937007874015748e0L),
518 tolerance);
519 BOOST_CHECK_CLOSE(
520 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(10247.25f), 2),
521 static_cast<T>(0.1111376148281068304596377002122405609873e0L),
522 tolerance);
523
524 BOOST_CHECK_CLOSE(
525 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.125)),
526 static_cast<T>(0.5102040816326530612244897959183673469388e0L),
527 tolerance);
528 BOOST_CHECK_CLOSE(
529 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.25)),
530 static_cast<T>(0.4482758620689655172413793103448275862069e0L),
531 tolerance);
532 BOOST_CHECK_CLOSE(
533 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(0.75)),
534 static_cast<T>(0.3191489361702127659574468085106382978723e0L),
535 tolerance);
536 BOOST_CHECK_CLOSE(
537 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(1.0f - 1.0f/64.0f)),
538 static_cast<T>(0.2874859075535512965050732807215332581736e0L),
539 tolerance);
540 BOOST_CHECK_CLOSE(
541 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(6.5f)),
542 static_cast<T>(0.1496062992125984251968503937007874015748e0L),
543 tolerance);
544 BOOST_CHECK_CLOSE(
545 boost::math::tools::evaluate_rational(n2c, d2c, static_cast<T>(10247.25f)),
546 static_cast<T>(0.1111376148281068304596377002122405609873e0L),
547 tolerance);
548
549 BOOST_CHECK_CLOSE(
550 boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.125)),
551 static_cast<T>(0.5102040816326530612244897959183673469388e0L),
552 tolerance);
553 BOOST_CHECK_CLOSE(
554 boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.25)),
555 static_cast<T>(0.4482758620689655172413793103448275862069e0L),
556 tolerance);
557 BOOST_CHECK_CLOSE(
558 boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(0.75)),
559 static_cast<T>(0.3191489361702127659574468085106382978723e0L),
560 tolerance);
561 BOOST_CHECK_CLOSE(
562 boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(1.0f - 1.0f/64.0f)),
563 static_cast<T>(0.2874859075535512965050732807215332581736e0L),
564 tolerance);
565 BOOST_CHECK_CLOSE(
566 boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(6.5f)),
567 static_cast<T>(0.1496062992125984251968503937007874015748e0L),
568 tolerance);
569 BOOST_CHECK_CLOSE(
570 boost::math::tools::evaluate_rational(n2a, d2a, static_cast<T>(10247.25f)),
571 static_cast<T>(0.1111376148281068304596377002122405609873e0L),
572 tolerance);
573 }
574
575 template <class T, class U>
576 void do_test_spots2(T, U)
577 {
578 //
579 // Tolerance is 4 eps expressed as a persentage:
580 //
581 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
582
583 //
584 // Polynomials of order 2
585 //
586 static const U n3c[3] = { 10, 6, 11 };
587 static const boost::array<U, 3> n3a = {{ 10, 6, 11 }};
588 BOOST_CHECK_CLOSE(
589 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.125), 3),
590 static_cast<T>(0.10921875e2L),
591 tolerance);
592 BOOST_CHECK_CLOSE(
593 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.25), 3),
594 static_cast<T>(0.121875e2L),
595 tolerance);
596 BOOST_CHECK_CLOSE(
597 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.75), 3),
598 static_cast<T>(0.206875e2L),
599 tolerance);
600 BOOST_CHECK_CLOSE(
601 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
602 static_cast<T>(0.26565185546875e2L),
603 tolerance);
604 BOOST_CHECK_CLOSE(
605 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(6.5), 3),
606 static_cast<T>(0.51375e3L),
607 tolerance);
608 BOOST_CHECK_CLOSE(
609 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(10247.25), 3),
610 static_cast<T>(0.11551289516875e10L),
611 tolerance);
612
613 BOOST_CHECK_CLOSE(
614 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.125)),
615 static_cast<T>(0.10921875e2L),
616 tolerance);
617 BOOST_CHECK_CLOSE(
618 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.25)),
619 static_cast<T>(0.121875e2L),
620 tolerance);
621 BOOST_CHECK_CLOSE(
622 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(0.75)),
623 static_cast<T>(0.206875e2L),
624 tolerance);
625 BOOST_CHECK_CLOSE(
626 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)),
627 static_cast<T>(0.26565185546875e2L),
628 tolerance);
629 BOOST_CHECK_CLOSE(
630 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(6.5)),
631 static_cast<T>(0.51375e3L),
632 tolerance);
633 BOOST_CHECK_CLOSE(
634 boost::math::tools::evaluate_polynomial(n3c, static_cast<T>(10247.25)),
635 static_cast<T>(0.11551289516875e10L),
636 tolerance);
637
638 BOOST_CHECK_CLOSE(
639 boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.125)),
640 static_cast<T>(0.10921875e2L),
641 tolerance);
642 BOOST_CHECK_CLOSE(
643 boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.25)),
644 static_cast<T>(0.121875e2L),
645 tolerance);
646 BOOST_CHECK_CLOSE(
647 boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(0.75)),
648 static_cast<T>(0.206875e2L),
649 tolerance);
650 BOOST_CHECK_CLOSE(
651 boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)),
652 static_cast<T>(0.26565185546875e2L),
653 tolerance);
654 BOOST_CHECK_CLOSE(
655 boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(6.5)),
656 static_cast<T>(0.51375e3L),
657 tolerance);
658 BOOST_CHECK_CLOSE(
659 boost::math::tools::evaluate_polynomial(n3a, static_cast<T>(10247.25)),
660 static_cast<T>(0.11551289516875e10L),
661 tolerance);
662
663 BOOST_CHECK_CLOSE(
664 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.125), 3),
665 static_cast<T>(0.10096435546875e2L),
666 tolerance);
667 BOOST_CHECK_CLOSE(
668 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.25), 3),
669 static_cast<T>(0.1041796875e2L),
670 tolerance);
671 BOOST_CHECK_CLOSE(
672 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.75), 3),
673 static_cast<T>(0.1685546875e2L),
674 tolerance);
675 BOOST_CHECK_CLOSE(
676 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
677 static_cast<T>(0.26142410933971405029296875e2L),
678 tolerance);
679 BOOST_CHECK_CLOSE(
680 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(6.5f), 3),
681 static_cast<T>(0.198991875e5L),
682 tolerance);
683 BOOST_CHECK_CLOSE(
684 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(10247.25f), 3),
685 static_cast<T>(0.12128916726310335635546875e18L),
686 tolerance);
687
688 BOOST_CHECK_CLOSE(
689 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.125)),
690 static_cast<T>(0.10096435546875e2L),
691 tolerance);
692 BOOST_CHECK_CLOSE(
693 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.25)),
694 static_cast<T>(0.1041796875e2L),
695 tolerance);
696 BOOST_CHECK_CLOSE(
697 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(0.75)),
698 static_cast<T>(0.1685546875e2L),
699 tolerance);
700 BOOST_CHECK_CLOSE(
701 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)),
702 static_cast<T>(0.26142410933971405029296875e2L),
703 tolerance);
704 BOOST_CHECK_CLOSE(
705 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(6.5f)),
706 static_cast<T>(0.198991875e5L),
707 tolerance);
708 BOOST_CHECK_CLOSE(
709 boost::math::tools::evaluate_even_polynomial(n3c, static_cast<T>(10247.25f)),
710 static_cast<T>(0.12128916726310335635546875e18L),
711 tolerance);
712
713 BOOST_CHECK_CLOSE(
714 boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(0.125)),
715 static_cast<T>(0.10096435546875e2L),
716 tolerance);
717 BOOST_CHECK_CLOSE(
718 boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(0.25)),
719 static_cast<T>(0.1041796875e2L),
720 tolerance);
721 BOOST_CHECK_CLOSE(
722 boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(0.75)),
723 static_cast<T>(0.1685546875e2L),
724 tolerance);
725 BOOST_CHECK_CLOSE(
726 boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)),
727 static_cast<T>(0.26142410933971405029296875e2L),
728 tolerance);
729 BOOST_CHECK_CLOSE(
730 boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(6.5f)),
731 static_cast<T>(0.198991875e5L),
732 tolerance);
733 BOOST_CHECK_CLOSE(
734 boost::math::tools::evaluate_even_polynomial(n3a, static_cast<T>(10247.25f)),
735 static_cast<T>(0.12128916726310335635546875e18L),
736 tolerance);
737
738 BOOST_CHECK_CLOSE(
739 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.125), 3),
740 static_cast<T>(0.10771484375e2L),
741 tolerance);
742 BOOST_CHECK_CLOSE(
743 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.25), 3),
744 static_cast<T>(0.11671875e2L),
745 tolerance);
746 BOOST_CHECK_CLOSE(
747 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.75), 3),
748 static_cast<T>(0.19140625e2L),
749 tolerance);
750 BOOST_CHECK_CLOSE(
751 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
752 static_cast<T>(0.26398639678955078125e2L),
753 tolerance);
754 BOOST_CHECK_CLOSE(
755 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(6.5f), 3),
756 static_cast<T>(0.3069875e4L),
757 tolerance);
758 BOOST_CHECK_CLOSE(
759 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(10247.25f), 3),
760 static_cast<T>(0.11836265072405359375e14L),
761 tolerance);
762
763 BOOST_CHECK_CLOSE(
764 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.125)),
765 static_cast<T>(0.10771484375e2L),
766 tolerance);
767 BOOST_CHECK_CLOSE(
768 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.25)),
769 static_cast<T>(0.11671875e2L),
770 tolerance);
771 BOOST_CHECK_CLOSE(
772 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(0.75)),
773 static_cast<T>(0.19140625e2L),
774 tolerance);
775 BOOST_CHECK_CLOSE(
776 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(1.0f - 1.0f/64.0f)),
777 static_cast<T>(0.26398639678955078125e2L),
778 tolerance);
779 BOOST_CHECK_CLOSE(
780 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(6.5f)),
781 static_cast<T>(0.3069875e4L),
782 tolerance);
783 BOOST_CHECK_CLOSE(
784 boost::math::tools::evaluate_odd_polynomial(n3c, static_cast<T>(10247.25f)),
785 static_cast<T>(0.11836265072405359375e14L),
786 tolerance);
787
788 BOOST_CHECK_CLOSE(
789 boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(0.125)),
790 static_cast<T>(0.10771484375e2L),
791 tolerance);
792 BOOST_CHECK_CLOSE(
793 boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(0.25)),
794 static_cast<T>(0.11671875e2L),
795 tolerance);
796 BOOST_CHECK_CLOSE(
797 boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(0.75)),
798 static_cast<T>(0.19140625e2L),
799 tolerance);
800 BOOST_CHECK_CLOSE(
801 boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(1.0f - 1.0f/64.0f)),
802 static_cast<T>(0.26398639678955078125e2L),
803 tolerance);
804 BOOST_CHECK_CLOSE(
805 boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(6.5f)),
806 static_cast<T>(0.3069875e4L),
807 tolerance);
808 BOOST_CHECK_CLOSE(
809 boost::math::tools::evaluate_odd_polynomial(n3a, static_cast<T>(10247.25f)),
810 static_cast<T>(0.11836265072405359375e14L),
811 tolerance);
812
813 //
814 // Rational functions of order 2
815 //
816 static const U d3c[3] = { 3, 4, 10 };
817 static const boost::array<U, 3> d3a = {{ 3, 4, 10 }};
818 BOOST_CHECK_CLOSE(
819 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.125), 3),
820 static_cast<T>(0.2987179487179487179487179487179487179487e1L),
821 tolerance);
822 BOOST_CHECK_CLOSE(
823 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.25), 3),
824 static_cast<T>(0.2635135135135135135135135135135135135135e1L),
825 tolerance);
826 BOOST_CHECK_CLOSE(
827 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.75), 3),
828 static_cast<T>(0.1779569892473118279569892473118279569892e1L),
829 tolerance);
830 BOOST_CHECK_CLOSE(
831 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(1.0f - 1.0f/64.0f), 3),
832 static_cast<T>(0.1597671277126831703520981998649164537633e1L),
833 tolerance);
834 BOOST_CHECK_CLOSE(
835 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(6.5f), 3),
836 static_cast<T>(0.1137873754152823920265780730897009966777e1L),
837 tolerance);
838 BOOST_CHECK_CLOSE(
839 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(10247.25f), 3),
840 static_cast<T>(0.1100015619716026431429617996316152069115e1L),
841 tolerance);
842
843 BOOST_CHECK_CLOSE(
844 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.125)),
845 static_cast<T>(0.2987179487179487179487179487179487179487e1L),
846 tolerance);
847 BOOST_CHECK_CLOSE(
848 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.25)),
849 static_cast<T>(0.2635135135135135135135135135135135135135e1L),
850 tolerance);
851 BOOST_CHECK_CLOSE(
852 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(0.75)),
853 static_cast<T>(0.1779569892473118279569892473118279569892e1L),
854 tolerance);
855 BOOST_CHECK_CLOSE(
856 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(1.0f - 1.0f/64.0f)),
857 static_cast<T>(0.1597671277126831703520981998649164537633e1L),
858 tolerance);
859 BOOST_CHECK_CLOSE(
860 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(6.5f)),
861 static_cast<T>(0.1137873754152823920265780730897009966777e1L),
862 tolerance);
863 BOOST_CHECK_CLOSE(
864 boost::math::tools::evaluate_rational(n3c, d3c, static_cast<T>(10247.25f)),
865 static_cast<T>(0.1100015619716026431429617996316152069115e1L),
866 tolerance);
867
868 BOOST_CHECK_CLOSE(
869 boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(0.125)),
870 static_cast<T>(0.2987179487179487179487179487179487179487e1L),
871 tolerance);
872 BOOST_CHECK_CLOSE(
873 boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(0.25)),
874 static_cast<T>(0.2635135135135135135135135135135135135135e1L),
875 tolerance);
876 BOOST_CHECK_CLOSE(
877 boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(0.75)),
878 static_cast<T>(0.1779569892473118279569892473118279569892e1L),
879 tolerance);
880 BOOST_CHECK_CLOSE(
881 boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(1.0f - 1.0f/64.0f)),
882 static_cast<T>(0.1597671277126831703520981998649164537633e1L),
883 tolerance);
884 BOOST_CHECK_CLOSE(
885 boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(6.5f)),
886 static_cast<T>(0.1137873754152823920265780730897009966777e1L),
887 tolerance);
888 BOOST_CHECK_CLOSE(
889 boost::math::tools::evaluate_rational(n3a, d3a, static_cast<T>(10247.25f)),
890 static_cast<T>(0.1100015619716026431429617996316152069115e1L),
891 tolerance);
892 }
893
894 template <class T, class U>
895 void do_test_spots3(T, U)
896 {
897 //
898 // Tolerance is 4 eps expressed as a persentage:
899 //
900 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
901
902 //
903 // Polynomials of order 3
904 //
905 static const U n4c[4] = { 1, 4, 9, 11 };
906 static const boost::array<U, 4> n4a = {{ 1, 4, 9, 11 }};
907 BOOST_CHECK_CLOSE(
908 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.125), 4),
909 static_cast<T>(0.1662109375e1L),
910 tolerance);
911 BOOST_CHECK_CLOSE(
912 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.25), 4),
913 static_cast<T>(0.2734375e1L),
914 tolerance);
915 BOOST_CHECK_CLOSE(
916 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.75), 4),
917 static_cast<T>(0.13703125e2L),
918 tolerance);
919 BOOST_CHECK_CLOSE(
920 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
921 static_cast<T>(0.24150836944580078125e2L),
922 tolerance);
923 BOOST_CHECK_CLOSE(
924 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(6.5), 4),
925 static_cast<T>(0.3428125e4L),
926 tolerance);
927 BOOST_CHECK_CLOSE(
928 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(10247.25), 4),
929 static_cast<T>(0.11837210107094921875e14L),
930 tolerance);
931
932 BOOST_CHECK_CLOSE(
933 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.125)),
934 static_cast<T>(0.1662109375e1L),
935 tolerance);
936 BOOST_CHECK_CLOSE(
937 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.25)),
938 static_cast<T>(0.2734375e1L),
939 tolerance);
940 BOOST_CHECK_CLOSE(
941 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(0.75)),
942 static_cast<T>(0.13703125e2L),
943 tolerance);
944 BOOST_CHECK_CLOSE(
945 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f)),
946 static_cast<T>(0.24150836944580078125e2L),
947 tolerance);
948 BOOST_CHECK_CLOSE(
949 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(6.5)),
950 static_cast<T>(0.3428125e4L),
951 tolerance);
952 BOOST_CHECK_CLOSE(
953 boost::math::tools::evaluate_polynomial(n4c, static_cast<T>(10247.25)),
954 static_cast<T>(0.11837210107094921875e14L),
955 tolerance);
956
957 BOOST_CHECK_CLOSE(
958 boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(0.125)),
959 static_cast<T>(0.1662109375e1L),
960 tolerance);
961 BOOST_CHECK_CLOSE(
962 boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(0.25)),
963 static_cast<T>(0.2734375e1L),
964 tolerance);
965 BOOST_CHECK_CLOSE(
966 boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(0.75)),
967 static_cast<T>(0.13703125e2L),
968 tolerance);
969 BOOST_CHECK_CLOSE(
970 boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(1.0f - 1.0f/64.0f)),
971 static_cast<T>(0.24150836944580078125e2L),
972 tolerance);
973 BOOST_CHECK_CLOSE(
974 boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(6.5)),
975 static_cast<T>(0.3428125e4L),
976 tolerance);
977 BOOST_CHECK_CLOSE(
978 boost::math::tools::evaluate_polynomial(n4a, static_cast<T>(10247.25)),
979 static_cast<T>(0.11837210107094921875e14L),
980 tolerance);
981
982 BOOST_CHECK_CLOSE(
983 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.125), 4),
984 static_cast<T>(0.1064739227294921875e1L),
985 tolerance);
986 BOOST_CHECK_CLOSE(
987 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.25), 4),
988 static_cast<T>(0.1287841796875e1L),
989 tolerance);
990 BOOST_CHECK_CLOSE(
991 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.75), 4),
992 static_cast<T>(0.8055419921875e1L),
993 tolerance);
994 BOOST_CHECK_CLOSE(
995 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
996 static_cast<T>(0.23334727106775972060859203338623046875e2L),
997 tolerance);
998 BOOST_CHECK_CLOSE(
999 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(6.5f), 4),
1000 static_cast<T>(0.845843359375e6L),
1001 tolerance);
1002 BOOST_CHECK_CLOSE(
1003 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(10247.25f), 4),
1004 static_cast<T>(0.12736106409103529349764202508544921875e26L),
1005 tolerance);
1006
1007 BOOST_CHECK_CLOSE(
1008 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.125)),
1009 static_cast<T>(0.1064739227294921875e1L),
1010 tolerance);
1011 BOOST_CHECK_CLOSE(
1012 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.25)),
1013 static_cast<T>(0.1287841796875e1L),
1014 tolerance);
1015 BOOST_CHECK_CLOSE(
1016 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(0.75)),
1017 static_cast<T>(0.8055419921875e1L),
1018 tolerance);
1019 BOOST_CHECK_CLOSE(
1020 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f)),
1021 static_cast<T>(0.23334727106775972060859203338623046875e2L),
1022 tolerance);
1023 BOOST_CHECK_CLOSE(
1024 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(6.5f)),
1025 static_cast<T>(0.845843359375e6L),
1026 tolerance);
1027 BOOST_CHECK_CLOSE(
1028 boost::math::tools::evaluate_even_polynomial(n4c, static_cast<T>(10247.25f)),
1029 static_cast<T>(0.12736106409103529349764202508544921875e26L),
1030 tolerance);
1031
1032 BOOST_CHECK_CLOSE(
1033 boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(0.125)),
1034 static_cast<T>(0.1064739227294921875e1L),
1035 tolerance);
1036 BOOST_CHECK_CLOSE(
1037 boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(0.25)),
1038 static_cast<T>(0.1287841796875e1L),
1039 tolerance);
1040 BOOST_CHECK_CLOSE(
1041 boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(0.75)),
1042 static_cast<T>(0.8055419921875e1L),
1043 tolerance);
1044 BOOST_CHECK_CLOSE(
1045 boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(1.0f - 1.0f/64.0f)),
1046 static_cast<T>(0.23334727106775972060859203338623046875e2L),
1047 tolerance);
1048 BOOST_CHECK_CLOSE(
1049 boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(6.5f)),
1050 static_cast<T>(0.845843359375e6L),
1051 tolerance);
1052 BOOST_CHECK_CLOSE(
1053 boost::math::tools::evaluate_even_polynomial(n4a, static_cast<T>(10247.25f)),
1054 static_cast<T>(0.12736106409103529349764202508544921875e26L),
1055 tolerance);
1056
1057 BOOST_CHECK_CLOSE(
1058 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.125), 4),
1059 static_cast<T>(0.1517913818359375e1L),
1060 tolerance);
1061 BOOST_CHECK_CLOSE(
1062 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.25), 4),
1063 static_cast<T>(0.21513671875e1L),
1064 tolerance);
1065 BOOST_CHECK_CLOSE(
1066 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.75), 4),
1067 static_cast<T>(0.104072265625e2L),
1068 tolerance);
1069 BOOST_CHECK_CLOSE(
1070 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
1071 static_cast<T>(0.23689246584661304950714111328125e2L),
1072 tolerance);
1073 BOOST_CHECK_CLOSE(
1074 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(6.5f), 4),
1075 static_cast<T>(0.13013059375e6L),
1076 tolerance);
1077 BOOST_CHECK_CLOSE(
1078 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(10247.25f), 4),
1079 static_cast<T>(0.12428804224649080826343115234375e22L),
1080 tolerance);
1081
1082 BOOST_CHECK_CLOSE(
1083 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.125)),
1084 static_cast<T>(0.1517913818359375e1L),
1085 tolerance);
1086 BOOST_CHECK_CLOSE(
1087 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.25)),
1088 static_cast<T>(0.21513671875e1L),
1089 tolerance);
1090 BOOST_CHECK_CLOSE(
1091 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(0.75)),
1092 static_cast<T>(0.104072265625e2L),
1093 tolerance);
1094 BOOST_CHECK_CLOSE(
1095 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(1.0f - 1.0f/64.0f)),
1096 static_cast<T>(0.23689246584661304950714111328125e2L),
1097 tolerance);
1098 BOOST_CHECK_CLOSE(
1099 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(6.5f)),
1100 static_cast<T>(0.13013059375e6L),
1101 tolerance);
1102 BOOST_CHECK_CLOSE(
1103 boost::math::tools::evaluate_odd_polynomial(n4c, static_cast<T>(10247.25f)),
1104 static_cast<T>(0.12428804224649080826343115234375e22L),
1105 tolerance);
1106
1107 BOOST_CHECK_CLOSE(
1108 boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(0.125)),
1109 static_cast<T>(0.1517913818359375e1L),
1110 tolerance);
1111 BOOST_CHECK_CLOSE(
1112 boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(0.25)),
1113 static_cast<T>(0.21513671875e1L),
1114 tolerance);
1115 BOOST_CHECK_CLOSE(
1116 boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(0.75)),
1117 static_cast<T>(0.104072265625e2L),
1118 tolerance);
1119 BOOST_CHECK_CLOSE(
1120 boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(1.0f - 1.0f/64.0f)),
1121 static_cast<T>(0.23689246584661304950714111328125e2L),
1122 tolerance);
1123 BOOST_CHECK_CLOSE(
1124 boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(6.5f)),
1125 static_cast<T>(0.13013059375e6L),
1126 tolerance);
1127 BOOST_CHECK_CLOSE(
1128 boost::math::tools::evaluate_odd_polynomial(n4a, static_cast<T>(10247.25f)),
1129 static_cast<T>(0.12428804224649080826343115234375e22L),
1130 tolerance);
1131
1132 //
1133 // Rational functions of order 3
1134 //
1135 static const U d4c[4] = { 10, 2, 5, 4 };
1136 static const boost::array<U, 4> d4a = {{ 10, 2, 5, 4 }};
1137 BOOST_CHECK_CLOSE(
1138 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.125), 4),
1139 static_cast<T>(0.1608087679516250944822373393801965230537e0L),
1140 tolerance);
1141 BOOST_CHECK_CLOSE(
1142 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.25), 4),
1143 static_cast<T>(0.2514367816091954022988505747126436781609e0L),
1144 tolerance);
1145 BOOST_CHECK_CLOSE(
1146 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.75), 4),
1147 static_cast<T>(0.8564453125e0L),
1148 tolerance);
1149 BOOST_CHECK_CLOSE(
1150 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(1.0f - 1.0f/64.0f), 4),
1151 static_cast<T>(0.1170714951947222939292918160495461743806e1L),
1152 tolerance);
1153 BOOST_CHECK_CLOSE(
1154 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(6.5f), 4),
1155 static_cast<T>(0.2572219095854436315888201087975989495404e1L),
1156 tolerance);
1157 BOOST_CHECK_CLOSE(
1158 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(10247.25f), 4),
1159 static_cast<T>(0.2749884125808399380227005558292823797886e1L),
1160 tolerance);
1161
1162 BOOST_CHECK_CLOSE(
1163 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.125)),
1164 static_cast<T>(0.1608087679516250944822373393801965230537e0L),
1165 tolerance);
1166 BOOST_CHECK_CLOSE(
1167 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.25)),
1168 static_cast<T>(0.2514367816091954022988505747126436781609e0L),
1169 tolerance);
1170 BOOST_CHECK_CLOSE(
1171 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(0.75)),
1172 static_cast<T>(0.8564453125e0L),
1173 tolerance);
1174 BOOST_CHECK_CLOSE(
1175 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(1.0f - 1.0f/64.0f)),
1176 static_cast<T>(0.1170714951947222939292918160495461743806e1L),
1177 tolerance);
1178 BOOST_CHECK_CLOSE(
1179 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(6.5f)),
1180 static_cast<T>(0.2572219095854436315888201087975989495404e1L),
1181 tolerance);
1182 BOOST_CHECK_CLOSE(
1183 boost::math::tools::evaluate_rational(n4c, d4c, static_cast<T>(10247.25f)),
1184 static_cast<T>(0.2749884125808399380227005558292823797886e1L),
1185 tolerance);
1186
1187 BOOST_CHECK_CLOSE(
1188 boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(0.125)),
1189 static_cast<T>(0.1608087679516250944822373393801965230537e0L),
1190 tolerance);
1191 BOOST_CHECK_CLOSE(
1192 boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(0.25)),
1193 static_cast<T>(0.2514367816091954022988505747126436781609e0L),
1194 tolerance);
1195 BOOST_CHECK_CLOSE(
1196 boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(0.75)),
1197 static_cast<T>(0.8564453125e0L),
1198 tolerance);
1199 BOOST_CHECK_CLOSE(
1200 boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(1.0f - 1.0f/64.0f)),
1201 static_cast<T>(0.1170714951947222939292918160495461743806e1L),
1202 tolerance);
1203 BOOST_CHECK_CLOSE(
1204 boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(6.5f)),
1205 static_cast<T>(0.2572219095854436315888201087975989495404e1L),
1206 tolerance);
1207 BOOST_CHECK_CLOSE(
1208 boost::math::tools::evaluate_rational(n4a, d4a, static_cast<T>(10247.25f)),
1209 static_cast<T>(0.2749884125808399380227005558292823797886e1L),
1210 tolerance);
1211 }
1212
1213 template <class T, class U>
1214 void do_test_spots4(T, U)
1215 {
1216 //
1217 // Tolerance is 4 eps expressed as a persentage:
1218 //
1219 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
1220
1221 //
1222 // Polynomials of order 4
1223 //
1224 static const U n5c[5] = { 10, 10, 4, 11, 9 };
1225 static const boost::array<U, 5> n5a = {{ 10, 10, 4, 11, 9 }};
1226 BOOST_CHECK_CLOSE(
1227 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.125), 5),
1228 static_cast<T>(0.11336181640625e2L),
1229 tolerance);
1230 BOOST_CHECK_CLOSE(
1231 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.25), 5),
1232 static_cast<T>(0.1295703125e2L),
1233 tolerance);
1234 BOOST_CHECK_CLOSE(
1235 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.75), 5),
1236 static_cast<T>(0.2723828125e2L),
1237 tolerance);
1238 BOOST_CHECK_CLOSE(
1239 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
1240 static_cast<T>(0.42662663042545318603515625e2L),
1241 tolerance);
1242 BOOST_CHECK_CLOSE(
1243 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(6.5), 5),
1244 static_cast<T>(0.193304375e5L),
1245 tolerance);
1246 BOOST_CHECK_CLOSE(
1247 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(10247.25), 5),
1248 static_cast<T>(0.9924842756673782995703125e17L),
1249 tolerance);
1250
1251 BOOST_CHECK_CLOSE(
1252 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.125)),
1253 static_cast<T>(0.11336181640625e2L),
1254 tolerance);
1255 BOOST_CHECK_CLOSE(
1256 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.25)),
1257 static_cast<T>(0.1295703125e2L),
1258 tolerance);
1259 BOOST_CHECK_CLOSE(
1260 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(0.75)),
1261 static_cast<T>(0.2723828125e2L),
1262 tolerance);
1263 BOOST_CHECK_CLOSE(
1264 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f)),
1265 static_cast<T>(0.42662663042545318603515625e2L),
1266 tolerance);
1267 BOOST_CHECK_CLOSE(
1268 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(6.5)),
1269 static_cast<T>(0.193304375e5L),
1270 tolerance);
1271 BOOST_CHECK_CLOSE(
1272 boost::math::tools::evaluate_polynomial(n5c, static_cast<T>(10247.25)),
1273 static_cast<T>(0.9924842756673782995703125e17L),
1274 tolerance);
1275
1276 BOOST_CHECK_CLOSE(
1277 boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(0.125)),
1278 static_cast<T>(0.11336181640625e2L),
1279 tolerance);
1280 BOOST_CHECK_CLOSE(
1281 boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(0.25)),
1282 static_cast<T>(0.1295703125e2L),
1283 tolerance);
1284 BOOST_CHECK_CLOSE(
1285 boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(0.75)),
1286 static_cast<T>(0.2723828125e2L),
1287 tolerance);
1288 BOOST_CHECK_CLOSE(
1289 boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(1.0f - 1.0f/64.0f)),
1290 static_cast<T>(0.42662663042545318603515625e2L),
1291 tolerance);
1292 BOOST_CHECK_CLOSE(
1293 boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(6.5)),
1294 static_cast<T>(0.193304375e5L),
1295 tolerance);
1296 BOOST_CHECK_CLOSE(
1297 boost::math::tools::evaluate_polynomial(n5a, static_cast<T>(10247.25)),
1298 static_cast<T>(0.9924842756673782995703125e17L),
1299 tolerance);
1300
1301 BOOST_CHECK_CLOSE(
1302 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.125), 5),
1303 static_cast<T>(0.10157269060611724853515625e2L),
1304 tolerance);
1305 BOOST_CHECK_CLOSE(
1306 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.25), 5),
1307 static_cast<T>(0.106434478759765625e2L),
1308 tolerance);
1309 BOOST_CHECK_CLOSE(
1310 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.75), 5),
1311 static_cast<T>(0.197494049072265625e2L),
1312 tolerance);
1313 BOOST_CHECK_CLOSE(
1314 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
1315 static_cast<T>(0.4138858164296656028113829961512237787247e2L),
1316 tolerance);
1317 BOOST_CHECK_CLOSE(
1318 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(6.5f), 5),
1319 static_cast<T>(0.2951521370703125e8L),
1320 tolerance);
1321 BOOST_CHECK_CLOSE(
1322 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(10247.25f), 5),
1323 static_cast<T>(0.1094211231602999407223950000397888253311e34L),
1324 tolerance);
1325
1326 BOOST_CHECK_CLOSE(
1327 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.125)),
1328 static_cast<T>(0.10157269060611724853515625e2L),
1329 tolerance);
1330 BOOST_CHECK_CLOSE(
1331 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.25)),
1332 static_cast<T>(0.106434478759765625e2L),
1333 tolerance);
1334 BOOST_CHECK_CLOSE(
1335 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(0.75)),
1336 static_cast<T>(0.197494049072265625e2L),
1337 tolerance);
1338 BOOST_CHECK_CLOSE(
1339 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f)),
1340 static_cast<T>(0.4138858164296656028113829961512237787247e2L),
1341 tolerance);
1342 BOOST_CHECK_CLOSE(
1343 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(6.5f)),
1344 static_cast<T>(0.2951521370703125e8L),
1345 tolerance);
1346 BOOST_CHECK_CLOSE(
1347 boost::math::tools::evaluate_even_polynomial(n5c, static_cast<T>(10247.25f)),
1348 static_cast<T>(0.1094211231602999407223950000397888253311e34L),
1349 tolerance);
1350
1351 BOOST_CHECK_CLOSE(
1352 boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(0.125)),
1353 static_cast<T>(0.10157269060611724853515625e2L),
1354 tolerance);
1355 BOOST_CHECK_CLOSE(
1356 boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(0.25)),
1357 static_cast<T>(0.106434478759765625e2L),
1358 tolerance);
1359 BOOST_CHECK_CLOSE(
1360 boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(0.75)),
1361 static_cast<T>(0.197494049072265625e2L),
1362 tolerance);
1363 BOOST_CHECK_CLOSE(
1364 boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(1.0f - 1.0f/64.0f)),
1365 static_cast<T>(0.4138858164296656028113829961512237787247e2L),
1366 tolerance);
1367 BOOST_CHECK_CLOSE(
1368 boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(6.5f)),
1369 static_cast<T>(0.2951521370703125e8L),
1370 tolerance);
1371 BOOST_CHECK_CLOSE(
1372 boost::math::tools::evaluate_even_polynomial(n5a, static_cast<T>(10247.25f)),
1373 static_cast<T>(0.1094211231602999407223950000397888253311e34L),
1374 tolerance);
1375
1376 BOOST_CHECK_CLOSE(
1377 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.125), 5),
1378 static_cast<T>(0.11258152484893798828125e2L),
1379 tolerance);
1380 BOOST_CHECK_CLOSE(
1381 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.25), 5),
1382 static_cast<T>(0.1257379150390625e2L),
1383 tolerance);
1384 BOOST_CHECK_CLOSE(
1385 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.75), 5),
1386 static_cast<T>(0.2299920654296875e2L),
1387 tolerance);
1388 BOOST_CHECK_CLOSE(
1389 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
1390 static_cast<T>(0.4188681309761682314274366945028305053711e2L),
1391 tolerance);
1392 BOOST_CHECK_CLOSE(
1393 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(6.5f), 5),
1394 static_cast<T>(0.45408105703125e7L),
1395 tolerance);
1396 BOOST_CHECK_CLOSE(
1397 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(10247.25f), 5),
1398 static_cast<T>(0.106780963829612765105169679718983215332e30L),
1399 tolerance);
1400
1401 BOOST_CHECK_CLOSE(
1402 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.125)),
1403 static_cast<T>(0.11258152484893798828125e2L),
1404 tolerance);
1405 BOOST_CHECK_CLOSE(
1406 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.25)),
1407 static_cast<T>(0.1257379150390625e2L),
1408 tolerance);
1409 BOOST_CHECK_CLOSE(
1410 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(0.75)),
1411 static_cast<T>(0.2299920654296875e2L),
1412 tolerance);
1413 BOOST_CHECK_CLOSE(
1414 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(1.0f - 1.0f/64.0f)),
1415 static_cast<T>(0.4188681309761682314274366945028305053711e2L),
1416 tolerance);
1417 BOOST_CHECK_CLOSE(
1418 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(6.5f)),
1419 static_cast<T>(0.45408105703125e7L),
1420 tolerance);
1421 BOOST_CHECK_CLOSE(
1422 boost::math::tools::evaluate_odd_polynomial(n5c, static_cast<T>(10247.25f)),
1423 static_cast<T>(0.106780963829612765105169679718983215332e30L),
1424 tolerance);
1425
1426 BOOST_CHECK_CLOSE(
1427 boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(0.125)),
1428 static_cast<T>(0.11258152484893798828125e2L),
1429 tolerance);
1430 BOOST_CHECK_CLOSE(
1431 boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(0.25)),
1432 static_cast<T>(0.1257379150390625e2L),
1433 tolerance);
1434 BOOST_CHECK_CLOSE(
1435 boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(0.75)),
1436 static_cast<T>(0.2299920654296875e2L),
1437 tolerance);
1438 BOOST_CHECK_CLOSE(
1439 boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(1.0f - 1.0f/64.0f)),
1440 static_cast<T>(0.4188681309761682314274366945028305053711e2L),
1441 tolerance);
1442 BOOST_CHECK_CLOSE(
1443 boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(6.5f)),
1444 static_cast<T>(0.45408105703125e7L),
1445 tolerance);
1446 BOOST_CHECK_CLOSE(
1447 boost::math::tools::evaluate_odd_polynomial(n5a, static_cast<T>(10247.25f)),
1448 static_cast<T>(0.106780963829612765105169679718983215332e30L),
1449 tolerance);
1450
1451 //
1452 // Rational functions of order 4
1453 //
1454 static const U d5c[5] = { 6, 9, 6, 2, 5 };
1455 static const boost::array<U, 5> d5a = {{ 6, 9, 6, 2, 5 }};
1456 BOOST_CHECK_CLOSE(
1457 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.125), 5),
1458 static_cast<T>(0.1569265605461489066882963263374902835513e1L),
1459 tolerance);
1460 BOOST_CHECK_CLOSE(
1461 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.25), 5),
1462 static_cast<T>(0.1493471409275101305718144979738856371004e1L),
1463 tolerance);
1464 BOOST_CHECK_CLOSE(
1465 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.75), 5),
1466 static_cast<T>(0.1468309117708991366603495472731101284481e1L),
1467 tolerance);
1468 BOOST_CHECK_CLOSE(
1469 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(1.0f - 1.0f/64.0f), 5),
1470 static_cast<T>(0.1564121691159921277310988862398683772017e1L),
1471 tolerance);
1472 BOOST_CHECK_CLOSE(
1473 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(6.5f), 5),
1474 static_cast<T>(0.1973991741181125982091000185089449263153e1L),
1475 tolerance);
1476 BOOST_CHECK_CLOSE(
1477 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(10247.25f), 5),
1478 static_cast<T>(0.1800144410401676792233921448870747965702e1L),
1479 tolerance);
1480
1481 BOOST_CHECK_CLOSE(
1482 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.125)),
1483 static_cast<T>(0.1569265605461489066882963263374902835513e1L),
1484 tolerance);
1485 BOOST_CHECK_CLOSE(
1486 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.25)),
1487 static_cast<T>(0.1493471409275101305718144979738856371004e1L),
1488 tolerance);
1489 BOOST_CHECK_CLOSE(
1490 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(0.75)),
1491 static_cast<T>(0.1468309117708991366603495472731101284481e1L),
1492 tolerance);
1493 BOOST_CHECK_CLOSE(
1494 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(1.0f - 1.0f/64.0f)),
1495 static_cast<T>(0.1564121691159921277310988862398683772017e1L),
1496 tolerance);
1497 BOOST_CHECK_CLOSE(
1498 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(6.5f)),
1499 static_cast<T>(0.1973991741181125982091000185089449263153e1L),
1500 tolerance);
1501 BOOST_CHECK_CLOSE(
1502 boost::math::tools::evaluate_rational(n5c, d5c, static_cast<T>(10247.25f)),
1503 static_cast<T>(0.1800144410401676792233921448870747965702e1L),
1504 tolerance);
1505
1506 BOOST_CHECK_CLOSE(
1507 boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(0.125)),
1508 static_cast<T>(0.1569265605461489066882963263374902835513e1L),
1509 tolerance);
1510 BOOST_CHECK_CLOSE(
1511 boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(0.25)),
1512 static_cast<T>(0.1493471409275101305718144979738856371004e1L),
1513 tolerance);
1514 BOOST_CHECK_CLOSE(
1515 boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(0.75)),
1516 static_cast<T>(0.1468309117708991366603495472731101284481e1L),
1517 tolerance);
1518 BOOST_CHECK_CLOSE(
1519 boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(1.0f - 1.0f/64.0f)),
1520 static_cast<T>(0.1564121691159921277310988862398683772017e1L),
1521 tolerance);
1522 BOOST_CHECK_CLOSE(
1523 boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(6.5f)),
1524 static_cast<T>(0.1973991741181125982091000185089449263153e1L),
1525 tolerance);
1526 BOOST_CHECK_CLOSE(
1527 boost::math::tools::evaluate_rational(n5a, d5a, static_cast<T>(10247.25f)),
1528 static_cast<T>(0.1800144410401676792233921448870747965702e1L),
1529 tolerance);
1530 }
1531
1532 template <class T, class U>
1533 void do_test_spots5(T, U)
1534 {
1535 //
1536 // Tolerance is 4 eps expressed as a persentage:
1537 //
1538 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
1539
1540 //
1541 // Polynomials of order 5
1542 //
1543 static const U n6c[6] = { 6, 8, 12, 5, 7, 5 };
1544 static const boost::array<U, 6> n6a = {{ 6, 8, 12, 5, 7, 5 }};
1545 BOOST_CHECK_CLOSE(
1546 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.125), 6),
1547 static_cast<T>(0.7199127197265625e1L),
1548 tolerance);
1549 BOOST_CHECK_CLOSE(
1550 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.25), 6),
1551 static_cast<T>(0.88603515625e1L),
1552 tolerance);
1553 BOOST_CHECK_CLOSE(
1554 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.75), 6),
1555 static_cast<T>(0.242607421875e2L),
1556 tolerance);
1557 BOOST_CHECK_CLOSE(
1558 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
1559 static_cast<T>(0.41466238017193973064422607421875e2L),
1560 tolerance);
1561 BOOST_CHECK_CLOSE(
1562 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(6.5), 6),
1563 static_cast<T>(0.7244809375e5L),
1564 tolerance);
1565 BOOST_CHECK_CLOSE(
1566 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(10247.25), 6),
1567 static_cast<T>(0.5650228315695522094919501953125e21L),
1568 tolerance);
1569
1570 BOOST_CHECK_CLOSE(
1571 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.125)),
1572 static_cast<T>(0.7199127197265625e1L),
1573 tolerance);
1574 BOOST_CHECK_CLOSE(
1575 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.25)),
1576 static_cast<T>(0.88603515625e1L),
1577 tolerance);
1578 BOOST_CHECK_CLOSE(
1579 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(0.75)),
1580 static_cast<T>(0.242607421875e2L),
1581 tolerance);
1582 BOOST_CHECK_CLOSE(
1583 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f)),
1584 static_cast<T>(0.41466238017193973064422607421875e2L),
1585 tolerance);
1586 BOOST_CHECK_CLOSE(
1587 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(6.5)),
1588 static_cast<T>(0.7244809375e5L),
1589 tolerance);
1590 BOOST_CHECK_CLOSE(
1591 boost::math::tools::evaluate_polynomial(n6c, static_cast<T>(10247.25)),
1592 static_cast<T>(0.5650228315695522094919501953125e21L),
1593 tolerance);
1594
1595 BOOST_CHECK_CLOSE(
1596 boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(0.125)),
1597 static_cast<T>(0.7199127197265625e1L),
1598 tolerance);
1599 BOOST_CHECK_CLOSE(
1600 boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(0.25)),
1601 static_cast<T>(0.88603515625e1L),
1602 tolerance);
1603 BOOST_CHECK_CLOSE(
1604 boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(0.75)),
1605 static_cast<T>(0.242607421875e2L),
1606 tolerance);
1607 BOOST_CHECK_CLOSE(
1608 boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(1.0f - 1.0f/64.0f)),
1609 static_cast<T>(0.41466238017193973064422607421875e2L),
1610 tolerance);
1611 BOOST_CHECK_CLOSE(
1612 boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(6.5)),
1613 static_cast<T>(0.7244809375e5L),
1614 tolerance);
1615 BOOST_CHECK_CLOSE(
1616 boost::math::tools::evaluate_polynomial(n6a, static_cast<T>(10247.25)),
1617 static_cast<T>(0.5650228315695522094919501953125e21L),
1618 tolerance);
1619
1620 BOOST_CHECK_CLOSE(
1621 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.125), 6),
1622 static_cast<T>(0.6127949182875454425811767578125e1L),
1623 tolerance);
1624 BOOST_CHECK_CLOSE(
1625 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.25), 6),
1626 static_cast<T>(0.654820728302001953125e1L),
1627 tolerance);
1628 BOOST_CHECK_CLOSE(
1629 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.75), 6),
1630 static_cast<T>(0.1616912555694580078125e2L),
1631 tolerance);
1632 BOOST_CHECK_CLOSE(
1633 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
1634 static_cast<T>(0.4001137167344577683526091194110563264985e2L),
1635 tolerance);
1636 BOOST_CHECK_CLOSE(
1637 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(6.5f), 6),
1638 static_cast<T>(0.6958411633369140625e9L),
1639 tolerance);
1640 BOOST_CHECK_CLOSE(
1641 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.125)),
1642 static_cast<T>(0.6127949182875454425811767578125e1L),
1643 tolerance);
1644 BOOST_CHECK_CLOSE(
1645 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.25)),
1646 static_cast<T>(0.654820728302001953125e1L),
1647 tolerance);
1648 BOOST_CHECK_CLOSE(
1649 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(0.75)),
1650 static_cast<T>(0.1616912555694580078125e2L),
1651 tolerance);
1652 BOOST_CHECK_CLOSE(
1653 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f)),
1654 static_cast<T>(0.4001137167344577683526091194110563264985e2L),
1655 tolerance);
1656 BOOST_CHECK_CLOSE(
1657 boost::math::tools::evaluate_even_polynomial(n6c, static_cast<T>(6.5f)),
1658 static_cast<T>(0.6958411633369140625e9L),
1659 tolerance);
1660 BOOST_CHECK_CLOSE(
1661 boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(0.125)),
1662 static_cast<T>(0.6127949182875454425811767578125e1L),
1663 tolerance);
1664 BOOST_CHECK_CLOSE(
1665 boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(0.25)),
1666 static_cast<T>(0.654820728302001953125e1L),
1667 tolerance);
1668 BOOST_CHECK_CLOSE(
1669 boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(0.75)),
1670 static_cast<T>(0.1616912555694580078125e2L),
1671 tolerance);
1672 BOOST_CHECK_CLOSE(
1673 boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(1.0f - 1.0f/64.0f)),
1674 static_cast<T>(0.4001137167344577683526091194110563264985e2L),
1675 tolerance);
1676 BOOST_CHECK_CLOSE(
1677 boost::math::tools::evaluate_even_polynomial(n6a, static_cast<T>(6.5f)),
1678 static_cast<T>(0.6958411633369140625e9L),
1679 tolerance);
1680 BOOST_CHECK_CLOSE(
1681 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.125), 6),
1682 static_cast<T>(0.7023593463003635406494140625e1L),
1683 tolerance);
1684 BOOST_CHECK_CLOSE(
1685 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.25), 6),
1686 static_cast<T>(0.8192829132080078125e1L),
1687 tolerance);
1688 BOOST_CHECK_CLOSE(
1689 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.75), 6),
1690 static_cast<T>(0.19558834075927734375e2L),
1691 tolerance);
1692 BOOST_CHECK_CLOSE(
1693 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
1694 static_cast<T>(0.4055123471588142408661425974969461094588e2L),
1695 tolerance);
1696 BOOST_CHECK_CLOSE(
1697 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(6.5f), 6),
1698 static_cast<T>(0.107052491744140625e9L),
1699 tolerance);
1700 BOOST_CHECK_CLOSE(
1701 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(10247.25f), 6),
1702 static_cast<T>(0.6229253367792843599034768117351560896265e37L),
1703 tolerance);
1704
1705 BOOST_CHECK_CLOSE(
1706 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.125)),
1707 static_cast<T>(0.7023593463003635406494140625e1L),
1708 tolerance);
1709 BOOST_CHECK_CLOSE(
1710 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.25)),
1711 static_cast<T>(0.8192829132080078125e1L),
1712 tolerance);
1713 BOOST_CHECK_CLOSE(
1714 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(0.75)),
1715 static_cast<T>(0.19558834075927734375e2L),
1716 tolerance);
1717 BOOST_CHECK_CLOSE(
1718 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(1.0f - 1.0f/64.0f)),
1719 static_cast<T>(0.4055123471588142408661425974969461094588e2L),
1720 tolerance);
1721 BOOST_CHECK_CLOSE(
1722 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(6.5f)),
1723 static_cast<T>(0.107052491744140625e9L),
1724 tolerance);
1725 BOOST_CHECK_CLOSE(
1726 boost::math::tools::evaluate_odd_polynomial(n6c, static_cast<T>(10247.25f)),
1727 static_cast<T>(0.6229253367792843599034768117351560896265e37L),
1728 tolerance);
1729
1730 BOOST_CHECK_CLOSE(
1731 boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(0.125)),
1732 static_cast<T>(0.7023593463003635406494140625e1L),
1733 tolerance);
1734 BOOST_CHECK_CLOSE(
1735 boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(0.25)),
1736 static_cast<T>(0.8192829132080078125e1L),
1737 tolerance);
1738 BOOST_CHECK_CLOSE(
1739 boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(0.75)),
1740 static_cast<T>(0.19558834075927734375e2L),
1741 tolerance);
1742 BOOST_CHECK_CLOSE(
1743 boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(1.0f - 1.0f/64.0f)),
1744 static_cast<T>(0.4055123471588142408661425974969461094588e2L),
1745 tolerance);
1746 BOOST_CHECK_CLOSE(
1747 boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(6.5f)),
1748 static_cast<T>(0.107052491744140625e9L),
1749 tolerance);
1750 BOOST_CHECK_CLOSE(
1751 boost::math::tools::evaluate_odd_polynomial(n6a, static_cast<T>(10247.25f)),
1752 static_cast<T>(0.6229253367792843599034768117351560896265e37L),
1753 tolerance);
1754
1755 //
1756 // Rational functions of order 5
1757 //
1758 static const U d6c[6] = { 5, 11, 7, 12, 10, 5 };
1759 static const boost::array<U, 6> d6a = {{ 5, 11, 7, 12, 10, 5 }};
1760 BOOST_CHECK_CLOSE(
1761 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.125), 6),
1762 static_cast<T>(0.1105787665293227020667219792530925829572e1L),
1763 tolerance);
1764 BOOST_CHECK_CLOSE(
1765 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.25), 6),
1766 static_cast<T>(0.1052430112515949425820670455863588910799e1L),
1767 tolerance);
1768 BOOST_CHECK_CLOSE(
1769 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.75), 6),
1770 static_cast<T>(0.9120378868534087154447666948125848966555e0L),
1771 tolerance);
1772 BOOST_CHECK_CLOSE(
1773 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(1.0f - 1.0f/64.0f), 6),
1774 static_cast<T>(0.8626539746676637108178973543021882567334e0L),
1775 tolerance);
1776 BOOST_CHECK_CLOSE(
1777 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(6.5f), 6),
1778 static_cast<T>(0.9109197333022141385660730837432462113756e0L),
1779 tolerance);
1780 BOOST_CHECK_CLOSE(
1781 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(10247.25f), 6),
1782 static_cast<T>(0.9999414458034701919327379302959430043671e0L),
1783 tolerance);
1784
1785 BOOST_CHECK_CLOSE(
1786 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.125)),
1787 static_cast<T>(0.1105787665293227020667219792530925829572e1L),
1788 tolerance);
1789 BOOST_CHECK_CLOSE(
1790 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.25)),
1791 static_cast<T>(0.1052430112515949425820670455863588910799e1L),
1792 tolerance);
1793 BOOST_CHECK_CLOSE(
1794 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(0.75)),
1795 static_cast<T>(0.9120378868534087154447666948125848966555e0L),
1796 tolerance);
1797 BOOST_CHECK_CLOSE(
1798 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(1.0f - 1.0f/64.0f)),
1799 static_cast<T>(0.8626539746676637108178973543021882567334e0L),
1800 tolerance);
1801 BOOST_CHECK_CLOSE(
1802 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(6.5f)),
1803 static_cast<T>(0.9109197333022141385660730837432462113756e0L),
1804 tolerance);
1805 BOOST_CHECK_CLOSE(
1806 boost::math::tools::evaluate_rational(n6c, d6c, static_cast<T>(10247.25f)),
1807 static_cast<T>(0.9999414458034701919327379302959430043671e0L),
1808 tolerance);
1809
1810 BOOST_CHECK_CLOSE(
1811 boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(0.125)),
1812 static_cast<T>(0.1105787665293227020667219792530925829572e1L),
1813 tolerance);
1814 BOOST_CHECK_CLOSE(
1815 boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(0.25)),
1816 static_cast<T>(0.1052430112515949425820670455863588910799e1L),
1817 tolerance);
1818 BOOST_CHECK_CLOSE(
1819 boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(0.75)),
1820 static_cast<T>(0.9120378868534087154447666948125848966555e0L),
1821 tolerance);
1822 BOOST_CHECK_CLOSE(
1823 boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(1.0f - 1.0f/64.0f)),
1824 static_cast<T>(0.8626539746676637108178973543021882567334e0L),
1825 tolerance);
1826 BOOST_CHECK_CLOSE(
1827 boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(6.5f)),
1828 static_cast<T>(0.9109197333022141385660730837432462113756e0L),
1829 tolerance);
1830 BOOST_CHECK_CLOSE(
1831 boost::math::tools::evaluate_rational(n6a, d6a, static_cast<T>(10247.25f)),
1832 static_cast<T>(0.9999414458034701919327379302959430043671e0L),
1833 tolerance);
1834 }
1835
1836 template <class T, class U>
1837 void do_test_spots6(T, U)
1838 {
1839 //
1840 // Tolerance is 4 eps expressed as a persentage:
1841 //
1842 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
1843
1844 //
1845 // Polynomials of order 6
1846 //
1847 static const U n7c[7] = { 3, 4, 11, 5, 10, 7, 9 };
1848 static const boost::array<U, 7> n7a = {{ 3, 4, 11, 5, 10, 7, 9 }};
1849 BOOST_CHECK_CLOSE(
1850 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.125), 7),
1851 static_cast<T>(0.3684329986572265625e1L),
1852 tolerance);
1853 BOOST_CHECK_CLOSE(
1854 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.25), 7),
1855 static_cast<T>(0.4813720703125e1L),
1856 tolerance);
1857 BOOST_CHECK_CLOSE(
1858 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.75), 7),
1859 static_cast<T>(0.20723876953125e2L),
1860 tolerance);
1861 BOOST_CHECK_CLOSE(
1862 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
1863 static_cast<T>(0.46413680258337990380823612213134765625e2L),
1864 tolerance);
1865 BOOST_CHECK_CLOSE(
1866 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(6.5), 7),
1867 static_cast<T>(0.779707859375e6L),
1868 tolerance);
1869 BOOST_CHECK_CLOSE(
1870 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(10247.25), 7),
1871 static_cast<T>(0.10421241651331160693970241510986328125e26L),
1872 tolerance);
1873
1874 BOOST_CHECK_CLOSE(
1875 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.125)),
1876 static_cast<T>(0.3684329986572265625e1L),
1877 tolerance);
1878 BOOST_CHECK_CLOSE(
1879 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.25)),
1880 static_cast<T>(0.4813720703125e1L),
1881 tolerance);
1882 BOOST_CHECK_CLOSE(
1883 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(0.75)),
1884 static_cast<T>(0.20723876953125e2L),
1885 tolerance);
1886 BOOST_CHECK_CLOSE(
1887 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f)),
1888 static_cast<T>(0.46413680258337990380823612213134765625e2L),
1889 tolerance);
1890 BOOST_CHECK_CLOSE(
1891 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(6.5)),
1892 static_cast<T>(0.779707859375e6L),
1893 tolerance);
1894 BOOST_CHECK_CLOSE(
1895 boost::math::tools::evaluate_polynomial(n7c, static_cast<T>(10247.25)),
1896 static_cast<T>(0.10421241651331160693970241510986328125e26L),
1897 tolerance);
1898
1899 BOOST_CHECK_CLOSE(
1900 boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(0.125)),
1901 static_cast<T>(0.3684329986572265625e1L),
1902 tolerance);
1903 BOOST_CHECK_CLOSE(
1904 boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(0.25)),
1905 static_cast<T>(0.4813720703125e1L),
1906 tolerance);
1907 BOOST_CHECK_CLOSE(
1908 boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(0.75)),
1909 static_cast<T>(0.20723876953125e2L),
1910 tolerance);
1911 BOOST_CHECK_CLOSE(
1912 boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(1.0f - 1.0f/64.0f)),
1913 static_cast<T>(0.46413680258337990380823612213134765625e2L),
1914 tolerance);
1915 BOOST_CHECK_CLOSE(
1916 boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(6.5)),
1917 static_cast<T>(0.779707859375e6L),
1918 tolerance);
1919 BOOST_CHECK_CLOSE(
1920 boost::math::tools::evaluate_polynomial(n7a, static_cast<T>(10247.25)),
1921 static_cast<T>(0.10421241651331160693970241510986328125e26L),
1922 tolerance);
1923
1924 BOOST_CHECK_CLOSE(
1925 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.125), 7),
1926 static_cast<T>(0.3065205223058001138269901275634765625e1L),
1927 tolerance);
1928 BOOST_CHECK_CLOSE(
1929 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.25), 7),
1930 static_cast<T>(0.3294349253177642822265625e1L),
1931 tolerance);
1932 BOOST_CHECK_CLOSE(
1933 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.75), 7),
1934 static_cast<T>(0.11300772249698638916015625e2L),
1935 tolerance);
1936 BOOST_CHECK_CLOSE(
1937 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
1938 static_cast<T>(0.4400013192129567626077980251194602528964e2L),
1939 tolerance);
1940 BOOST_CHECK_CLOSE(
1941 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(6.5f), 7),
1942 static_cast<T>(0.52166734985505126953125e11L),
1943 tolerance);
1944 BOOST_CHECK_CLOSE(
1945 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.125)),
1946 static_cast<T>(0.3065205223058001138269901275634765625e1L),
1947 tolerance);
1948 BOOST_CHECK_CLOSE(
1949 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.25)),
1950 static_cast<T>(0.3294349253177642822265625e1L),
1951 tolerance);
1952 BOOST_CHECK_CLOSE(
1953 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(0.75)),
1954 static_cast<T>(0.11300772249698638916015625e2L),
1955 tolerance);
1956 BOOST_CHECK_CLOSE(
1957 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f)),
1958 static_cast<T>(0.4400013192129567626077980251194602528964e2L),
1959 tolerance);
1960 BOOST_CHECK_CLOSE(
1961 boost::math::tools::evaluate_even_polynomial(n7c, static_cast<T>(6.5f)),
1962 static_cast<T>(0.52166734985505126953125e11L),
1963 tolerance);
1964 BOOST_CHECK_CLOSE(
1965 boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(0.125)),
1966 static_cast<T>(0.3065205223058001138269901275634765625e1L),
1967 tolerance);
1968 BOOST_CHECK_CLOSE(
1969 boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(0.25)),
1970 static_cast<T>(0.3294349253177642822265625e1L),
1971 tolerance);
1972 BOOST_CHECK_CLOSE(
1973 boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(0.75)),
1974 static_cast<T>(0.11300772249698638916015625e2L),
1975 tolerance);
1976 BOOST_CHECK_CLOSE(
1977 boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(1.0f - 1.0f/64.0f)),
1978 static_cast<T>(0.4400013192129567626077980251194602528964e2L),
1979 tolerance);
1980 BOOST_CHECK_CLOSE(
1981 boost::math::tools::evaluate_even_polynomial(n7a, static_cast<T>(6.5f)),
1982 static_cast<T>(0.52166734985505126953125e11L),
1983 tolerance);
1984 BOOST_CHECK_CLOSE(
1985 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.125), 7),
1986 static_cast<T>(0.3521641784464009106159210205078125e1L),
1987 tolerance);
1988 BOOST_CHECK_CLOSE(
1989 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.25), 7),
1990 static_cast<T>(0.41773970127105712890625e1L),
1991 tolerance);
1992 BOOST_CHECK_CLOSE(
1993 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.75), 7),
1994 static_cast<T>(0.140676963329315185546875e2L),
1995 tolerance);
1996 BOOST_CHECK_CLOSE(
1997 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
1998 static_cast<T>(0.4465092766607814731253821207562770823074e2L),
1999 tolerance);
2000 BOOST_CHECK_CLOSE(
2001 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(6.5f), 7),
2002 static_cast<T>(0.802565153877001953125e10L),
2003 tolerance);
2004 BOOST_CHECK_CLOSE(
2005 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.125)),
2006 static_cast<T>(0.3521641784464009106159210205078125e1L),
2007 tolerance);
2008 BOOST_CHECK_CLOSE(
2009 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.25)),
2010 static_cast<T>(0.41773970127105712890625e1L),
2011 tolerance);
2012 BOOST_CHECK_CLOSE(
2013 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(0.75)),
2014 static_cast<T>(0.140676963329315185546875e2L),
2015 tolerance);
2016 BOOST_CHECK_CLOSE(
2017 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(1.0f - 1.0f/64.0f)),
2018 static_cast<T>(0.4465092766607814731253821207562770823074e2L),
2019 tolerance);
2020 BOOST_CHECK_CLOSE(
2021 boost::math::tools::evaluate_odd_polynomial(n7c, static_cast<T>(6.5f)),
2022 static_cast<T>(0.802565153877001953125e10L),
2023 tolerance);
2024 BOOST_CHECK_CLOSE(
2025 boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(0.125)),
2026 static_cast<T>(0.3521641784464009106159210205078125e1L),
2027 tolerance);
2028 BOOST_CHECK_CLOSE(
2029 boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(0.25)),
2030 static_cast<T>(0.41773970127105712890625e1L),
2031 tolerance);
2032 BOOST_CHECK_CLOSE(
2033 boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(0.75)),
2034 static_cast<T>(0.140676963329315185546875e2L),
2035 tolerance);
2036 BOOST_CHECK_CLOSE(
2037 boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(1.0f - 1.0f/64.0f)),
2038 static_cast<T>(0.4465092766607814731253821207562770823074e2L),
2039 tolerance);
2040 BOOST_CHECK_CLOSE(
2041 boost::math::tools::evaluate_odd_polynomial(n7a, static_cast<T>(6.5f)),
2042 static_cast<T>(0.802565153877001953125e10L),
2043 tolerance);
2044 //
2045 // Rational functions of order 6
2046 //
2047 static const U d7c[7] = { 2, 8, 10, 8, 1, 11, 1 };
2048 static const boost::array<U, 7> d7a = {{ 2, 8, 10, 8, 1, 11, 1 }};
2049 BOOST_CHECK_CLOSE(
2050 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.125), 7),
2051 static_cast<T>(0.1161348466465698540596242849979738853664e1L),
2052 tolerance);
2053 BOOST_CHECK_CLOSE(
2054 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.25), 7),
2055 static_cast<T>(0.1010247476558897371522262642824204539632e1L),
2056 tolerance);
2057 BOOST_CHECK_CLOSE(
2058 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.75), 7),
2059 static_cast<T>(0.103079575951134804308491906398377636644e1L),
2060 tolerance);
2061 BOOST_CHECK_CLOSE(
2062 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(1.0f - 1.0f/64.0f), 7),
2063 static_cast<T>(0.1183671559390403425417413542214181025989e1L),
2064 tolerance);
2065 BOOST_CHECK_CLOSE(
2066 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(6.5f), 7),
2067 static_cast<T>(0.3757457624476840396478985178609736319955e1L),
2068 tolerance);
2069 BOOST_CHECK_CLOSE(
2070 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(10247.25f), 7),
2071 static_cast<T>(0.8991031618241406513349732955332873069556e1L),
2072 tolerance);
2073
2074 BOOST_CHECK_CLOSE(
2075 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.125)),
2076 static_cast<T>(0.1161348466465698540596242849979738853664e1L),
2077 tolerance);
2078 BOOST_CHECK_CLOSE(
2079 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.25)),
2080 static_cast<T>(0.1010247476558897371522262642824204539632e1L),
2081 tolerance);
2082 BOOST_CHECK_CLOSE(
2083 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(0.75)),
2084 static_cast<T>(0.103079575951134804308491906398377636644e1L),
2085 tolerance);
2086 BOOST_CHECK_CLOSE(
2087 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(1.0f - 1.0f/64.0f)),
2088 static_cast<T>(0.1183671559390403425417413542214181025989e1L),
2089 tolerance);
2090 BOOST_CHECK_CLOSE(
2091 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(6.5f)),
2092 static_cast<T>(0.3757457624476840396478985178609736319955e1L),
2093 tolerance);
2094 BOOST_CHECK_CLOSE(
2095 boost::math::tools::evaluate_rational(n7c, d7c, static_cast<T>(10247.25f)),
2096 static_cast<T>(0.8991031618241406513349732955332873069556e1L),
2097 tolerance);
2098
2099 BOOST_CHECK_CLOSE(
2100 boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(0.125)),
2101 static_cast<T>(0.1161348466465698540596242849979738853664e1L),
2102 tolerance);
2103 BOOST_CHECK_CLOSE(
2104 boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(0.25)),
2105 static_cast<T>(0.1010247476558897371522262642824204539632e1L),
2106 tolerance);
2107 BOOST_CHECK_CLOSE(
2108 boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(0.75)),
2109 static_cast<T>(0.103079575951134804308491906398377636644e1L),
2110 tolerance);
2111 BOOST_CHECK_CLOSE(
2112 boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(1.0f - 1.0f/64.0f)),
2113 static_cast<T>(0.1183671559390403425417413542214181025989e1L),
2114 tolerance);
2115 BOOST_CHECK_CLOSE(
2116 boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(6.5f)),
2117 static_cast<T>(0.3757457624476840396478985178609736319955e1L),
2118 tolerance);
2119 BOOST_CHECK_CLOSE(
2120 boost::math::tools::evaluate_rational(n7a, d7a, static_cast<T>(10247.25f)),
2121 static_cast<T>(0.8991031618241406513349732955332873069556e1L),
2122 tolerance);
2123 }
2124
2125 template <class T, class U>
2126 void do_test_spots7(T, U)
2127 {
2128 //
2129 // Tolerance is 4 eps expressed as a persentage:
2130 //
2131 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
2132
2133 //
2134 // Polynomials of order 7
2135 //
2136 static const U n8c[8] = { 9, 5, 6, 1, 12, 2, 11, 1 };
2137 static const boost::array<U, 8> n8a = {{ 9, 5, 6, 1, 12, 2, 11, 1 }};
2138 BOOST_CHECK_CLOSE(
2139 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.125), 8),
2140 static_cast<T>(0.9723736286163330078125e1L),
2141 tolerance);
2142 BOOST_CHECK_CLOSE(
2143 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.25), 8),
2144 static_cast<T>(0.1069219970703125e2L),
2145 tolerance);
2146 BOOST_CHECK_CLOSE(
2147 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.75), 8),
2148 static_cast<T>(0.2290960693359375e2L),
2149 tolerance);
2150 BOOST_CHECK_CLOSE(
2151 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
2152 static_cast<T>(0.4470947054706607559637632220983505249023e2L),
2153 tolerance);
2154 BOOST_CHECK_CLOSE(
2155 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(6.5), 8),
2156 static_cast<T>(0.13650267734375e7L),
2157 tolerance);
2158 BOOST_CHECK_CLOSE(
2159 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(10247.25), 8),
2160 static_cast<T>(0.1187728773094625678513681460864459228516e29L),
2161 tolerance);
2162
2163 BOOST_CHECK_CLOSE(
2164 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.125)),
2165 static_cast<T>(0.9723736286163330078125e1L),
2166 tolerance);
2167 BOOST_CHECK_CLOSE(
2168 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.25)),
2169 static_cast<T>(0.1069219970703125e2L),
2170 tolerance);
2171 BOOST_CHECK_CLOSE(
2172 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(0.75)),
2173 static_cast<T>(0.2290960693359375e2L),
2174 tolerance);
2175 BOOST_CHECK_CLOSE(
2176 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f)),
2177 static_cast<T>(0.4470947054706607559637632220983505249023e2L),
2178 tolerance);
2179 BOOST_CHECK_CLOSE(
2180 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(6.5)),
2181 static_cast<T>(0.13650267734375e7L),
2182 tolerance);
2183 BOOST_CHECK_CLOSE(
2184 boost::math::tools::evaluate_polynomial(n8c, static_cast<T>(10247.25)),
2185 static_cast<T>(0.1187728773094625678513681460864459228516e29L),
2186 tolerance);
2187
2188 BOOST_CHECK_CLOSE(
2189 boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(0.125)),
2190 static_cast<T>(0.9723736286163330078125e1L),
2191 tolerance);
2192 BOOST_CHECK_CLOSE(
2193 boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(0.25)),
2194 static_cast<T>(0.1069219970703125e2L),
2195 tolerance);
2196 BOOST_CHECK_CLOSE(
2197 boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(0.75)),
2198 static_cast<T>(0.2290960693359375e2L),
2199 tolerance);
2200 BOOST_CHECK_CLOSE(
2201 boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(1.0f - 1.0f/64.0f)),
2202 static_cast<T>(0.4470947054706607559637632220983505249023e2L),
2203 tolerance);
2204 BOOST_CHECK_CLOSE(
2205 boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(6.5)),
2206 static_cast<T>(0.13650267734375e7L),
2207 tolerance);
2208 BOOST_CHECK_CLOSE(
2209 boost::math::tools::evaluate_polynomial(n8a, static_cast<T>(10247.25)),
2210 static_cast<T>(0.1187728773094625678513681460864459228516e29L),
2211 tolerance);
2212
2213 BOOST_CHECK_CLOSE(
2214 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.125), 8),
2215 static_cast<T>(0.9079594375725946520105935633182525634766e1L),
2216 tolerance);
2217 BOOST_CHECK_CLOSE(
2218 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.25), 8),
2219 static_cast<T>(0.93363673128187656402587890625e1L),
2220 tolerance);
2221 BOOST_CHECK_CLOSE(
2222 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.75), 8),
2223 static_cast<T>(0.155691558457911014556884765625e2L),
2224 tolerance);
2225 BOOST_CHECK_CLOSE(
2226 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
2227 static_cast<T>(0.4258457138999176910226338119632657870077e2L),
2228 tolerance);
2229 BOOST_CHECK_CLOSE(
2230 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(6.5f), 8),
2231 static_cast<T>(0.30319406120433428955078125e12L),
2232 tolerance);
2233 BOOST_CHECK_CLOSE(
2234 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.125)),
2235 static_cast<T>(0.9079594375725946520105935633182525634766e1L),
2236 tolerance);
2237 BOOST_CHECK_CLOSE(
2238 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.25)),
2239 static_cast<T>(0.93363673128187656402587890625e1L),
2240 tolerance);
2241 BOOST_CHECK_CLOSE(
2242 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(0.75)),
2243 static_cast<T>(0.155691558457911014556884765625e2L),
2244 tolerance);
2245 BOOST_CHECK_CLOSE(
2246 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f)),
2247 static_cast<T>(0.4258457138999176910226338119632657870077e2L),
2248 tolerance);
2249 BOOST_CHECK_CLOSE(
2250 boost::math::tools::evaluate_even_polynomial(n8c, static_cast<T>(6.5f)),
2251 static_cast<T>(0.30319406120433428955078125e12L),
2252 tolerance);
2253 BOOST_CHECK_CLOSE(
2254 boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(0.125)),
2255 static_cast<T>(0.9079594375725946520105935633182525634766e1L),
2256 tolerance);
2257 BOOST_CHECK_CLOSE(
2258 boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(0.25)),
2259 static_cast<T>(0.93363673128187656402587890625e1L),
2260 tolerance);
2261 BOOST_CHECK_CLOSE(
2262 boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(0.75)),
2263 static_cast<T>(0.155691558457911014556884765625e2L),
2264 tolerance);
2265 BOOST_CHECK_CLOSE(
2266 boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(1.0f - 1.0f/64.0f)),
2267 static_cast<T>(0.4258457138999176910226338119632657870077e2L),
2268 tolerance);
2269 BOOST_CHECK_CLOSE(
2270 boost::math::tools::evaluate_even_polynomial(n8a, static_cast<T>(6.5f)),
2271 static_cast<T>(0.30319406120433428955078125e12L),
2272 tolerance);
2273 BOOST_CHECK_CLOSE(
2274 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.125), 8),
2275 static_cast<T>(0.9636755005807572160847485065460205078125e1L),
2276 tolerance);
2277 BOOST_CHECK_CLOSE(
2278 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.25), 8),
2279 static_cast<T>(0.1034546925127506256103515625e2L),
2280 tolerance);
2281 BOOST_CHECK_CLOSE(
2282 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.75), 8),
2283 static_cast<T>(0.1775887446105480194091796875e2L),
2284 tolerance);
2285 BOOST_CHECK_CLOSE(
2286 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
2287 static_cast<T>(0.4311765982475354321499772058039525455316e2L),
2288 tolerance);
2289 BOOST_CHECK_CLOSE(
2290 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(6.5f), 8),
2291 static_cast<T>(0.466452401928975830078125e11L),
2292 tolerance);
2293 BOOST_CHECK_CLOSE(
2294 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.125)),
2295 static_cast<T>(0.9636755005807572160847485065460205078125e1L),
2296 tolerance);
2297 BOOST_CHECK_CLOSE(
2298 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.25)),
2299 static_cast<T>(0.1034546925127506256103515625e2L),
2300 tolerance);
2301 BOOST_CHECK_CLOSE(
2302 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(0.75)),
2303 static_cast<T>(0.1775887446105480194091796875e2L),
2304 tolerance);
2305 BOOST_CHECK_CLOSE(
2306 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(1.0f - 1.0f/64.0f)),
2307 static_cast<T>(0.4311765982475354321499772058039525455316e2L),
2308 tolerance);
2309 BOOST_CHECK_CLOSE(
2310 boost::math::tools::evaluate_odd_polynomial(n8c, static_cast<T>(6.5f)),
2311 static_cast<T>(0.466452401928975830078125e11L),
2312 tolerance);
2313 BOOST_CHECK_CLOSE(
2314 boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(0.125)),
2315 static_cast<T>(0.9636755005807572160847485065460205078125e1L),
2316 tolerance);
2317 BOOST_CHECK_CLOSE(
2318 boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(0.25)),
2319 static_cast<T>(0.1034546925127506256103515625e2L),
2320 tolerance);
2321 BOOST_CHECK_CLOSE(
2322 boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(0.75)),
2323 static_cast<T>(0.1775887446105480194091796875e2L),
2324 tolerance);
2325 BOOST_CHECK_CLOSE(
2326 boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(1.0f - 1.0f/64.0f)),
2327 static_cast<T>(0.4311765982475354321499772058039525455316e2L),
2328 tolerance);
2329 BOOST_CHECK_CLOSE(
2330 boost::math::tools::evaluate_odd_polynomial(n8a, static_cast<T>(6.5f)),
2331 static_cast<T>(0.466452401928975830078125e11L),
2332 tolerance);
2333 //
2334 // Rational functions of order 7
2335 //
2336 static const U d8c[8] = { 7, 10, 10, 11, 2, 4, 1, 7 };
2337 static const boost::array<U, 8> d8a = {{ 7, 10, 10, 11, 2, 4, 1, 7 }};
2338 BOOST_CHECK_CLOSE(
2339 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.125), 8),
2340 static_cast<T>(0.1153693678861771369296601206130394355814e1L),
2341 tolerance);
2342 BOOST_CHECK_CLOSE(
2343 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.25), 8),
2344 static_cast<T>(0.103714470093009762768860970830101771981e1L),
2345 tolerance);
2346 BOOST_CHECK_CLOSE(
2347 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.75), 8),
2348 static_cast<T>(0.834289461108456229648481346061946410909e0L),
2349 tolerance);
2350 BOOST_CHECK_CLOSE(
2351 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(1.0f - 1.0f/64.0f), 8),
2352 static_cast<T>(0.8981362736388035283180082845549732926578e0L),
2353 tolerance);
2354 BOOST_CHECK_CLOSE(
2355 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(6.5f), 8),
2356 static_cast<T>(0.383383275200627223098571833372266642165e0L),
2357 tolerance);
2358 BOOST_CHECK_CLOSE(
2359 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(10247.25f), 8),
2360 static_cast<T>(0.1430085023641929377426860779365964126311e0L),
2361 tolerance);
2362
2363 BOOST_CHECK_CLOSE(
2364 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.125)),
2365 static_cast<T>(0.1153693678861771369296601206130394355814e1L),
2366 tolerance);
2367 BOOST_CHECK_CLOSE(
2368 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.25)),
2369 static_cast<T>(0.103714470093009762768860970830101771981e1L),
2370 tolerance);
2371 BOOST_CHECK_CLOSE(
2372 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(0.75)),
2373 static_cast<T>(0.834289461108456229648481346061946410909e0L),
2374 tolerance);
2375 BOOST_CHECK_CLOSE(
2376 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(1.0f - 1.0f/64.0f)),
2377 static_cast<T>(0.8981362736388035283180082845549732926578e0L),
2378 tolerance);
2379 BOOST_CHECK_CLOSE(
2380 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(6.5f)),
2381 static_cast<T>(0.383383275200627223098571833372266642165e0L),
2382 tolerance);
2383 BOOST_CHECK_CLOSE(
2384 boost::math::tools::evaluate_rational(n8c, d8c, static_cast<T>(10247.25f)),
2385 static_cast<T>(0.1430085023641929377426860779365964126311e0L),
2386 tolerance);
2387
2388 BOOST_CHECK_CLOSE(
2389 boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(0.125)),
2390 static_cast<T>(0.1153693678861771369296601206130394355814e1L),
2391 tolerance);
2392 BOOST_CHECK_CLOSE(
2393 boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(0.25)),
2394 static_cast<T>(0.103714470093009762768860970830101771981e1L),
2395 tolerance);
2396 BOOST_CHECK_CLOSE(
2397 boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(0.75)),
2398 static_cast<T>(0.834289461108456229648481346061946410909e0L),
2399 tolerance);
2400 BOOST_CHECK_CLOSE(
2401 boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(1.0f - 1.0f/64.0f)),
2402 static_cast<T>(0.8981362736388035283180082845549732926578e0L),
2403 tolerance);
2404 BOOST_CHECK_CLOSE(
2405 boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(6.5f)),
2406 static_cast<T>(0.383383275200627223098571833372266642165e0L),
2407 tolerance);
2408 BOOST_CHECK_CLOSE(
2409 boost::math::tools::evaluate_rational(n8a, d8a, static_cast<T>(10247.25f)),
2410 static_cast<T>(0.1430085023641929377426860779365964126311e0L),
2411 tolerance);
2412 }
2413
2414 template <class T, class U>
2415 void do_test_spots8(T, U)
2416 {
2417 //
2418 // Tolerance is 4 eps expressed as a persentage:
2419 //
2420 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
2421
2422 //
2423 // Polynomials of order 8
2424 //
2425 static const U n9c[9] = { 3, 9, 3, 9, 5, 6, 10, 7, 10 };
2426 static const boost::array<U, 9> n9a = {{ 3, 9, 3, 9, 5, 6, 10, 7, 10 }};
2427 BOOST_CHECK_CLOSE(
2428 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.125), 9),
2429 static_cast<T>(0.419089901447296142578125e1L),
2430 tolerance);
2431 BOOST_CHECK_CLOSE(
2432 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.25), 9),
2433 static_cast<T>(0.5606536865234375e1L),
2434 tolerance);
2435 BOOST_CHECK_CLOSE(
2436 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.75), 9),
2437 static_cast<T>(0.21955535888671875e2L),
2438 tolerance);
2439 BOOST_CHECK_CLOSE(
2440 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
2441 static_cast<T>(0.577754343750660055434309470001608133316e2L),
2442 tolerance);
2443 BOOST_CHECK_CLOSE(
2444 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(6.5), 9),
2445 static_cast<T>(0.3613143234375e8L),
2446 tolerance);
2447 BOOST_CHECK_CLOSE(
2448 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(10247.25), 9),
2449 static_cast<T>(0.1215873306624182859977656082228297326996e34L),
2450 tolerance);
2451
2452 BOOST_CHECK_CLOSE(
2453 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.125)),
2454 static_cast<T>(0.419089901447296142578125e1L),
2455 tolerance);
2456 BOOST_CHECK_CLOSE(
2457 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.25)),
2458 static_cast<T>(0.5606536865234375e1L),
2459 tolerance);
2460 BOOST_CHECK_CLOSE(
2461 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(0.75)),
2462 static_cast<T>(0.21955535888671875e2L),
2463 tolerance);
2464 BOOST_CHECK_CLOSE(
2465 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f)),
2466 static_cast<T>(0.577754343750660055434309470001608133316e2L),
2467 tolerance);
2468 BOOST_CHECK_CLOSE(
2469 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(6.5)),
2470 static_cast<T>(0.3613143234375e8L),
2471 tolerance);
2472 BOOST_CHECK_CLOSE(
2473 boost::math::tools::evaluate_polynomial(n9c, static_cast<T>(10247.25)),
2474 static_cast<T>(0.1215873306624182859977656082228297326996e34L),
2475 tolerance);
2476
2477 BOOST_CHECK_CLOSE(
2478 boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(0.125)),
2479 static_cast<T>(0.419089901447296142578125e1L),
2480 tolerance);
2481 BOOST_CHECK_CLOSE(
2482 boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(0.25)),
2483 static_cast<T>(0.5606536865234375e1L),
2484 tolerance);
2485 BOOST_CHECK_CLOSE(
2486 boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(0.75)),
2487 static_cast<T>(0.21955535888671875e2L),
2488 tolerance);
2489 BOOST_CHECK_CLOSE(
2490 boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(1.0f - 1.0f/64.0f)),
2491 static_cast<T>(0.577754343750660055434309470001608133316e2L),
2492 tolerance);
2493 BOOST_CHECK_CLOSE(
2494 boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(6.5)),
2495 static_cast<T>(0.3613143234375e8L),
2496 tolerance);
2497 BOOST_CHECK_CLOSE(
2498 boost::math::tools::evaluate_polynomial(n9a, static_cast<T>(10247.25)),
2499 static_cast<T>(0.1215873306624182859977656082228297326996e34L),
2500 tolerance);
2501
2502 BOOST_CHECK_CLOSE(
2503 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.125), 9),
2504 static_cast<T>(0.3141392057908696244794555241242051124573e1L),
2505 tolerance);
2506 BOOST_CHECK_CLOSE(
2507 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.25), 9),
2508 static_cast<T>(0.35764986560679972171783447265625e1L),
2509 tolerance);
2510 BOOST_CHECK_CLOSE(
2511 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.75), 9),
2512 static_cast<T>(0.119936861679889261722564697265625e2L),
2513 tolerance);
2514 BOOST_CHECK_CLOSE(
2515 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
2516 static_cast<T>(0.5392583642412261279423815221065846904997e2L),
2517 tolerance);
2518 BOOST_CHECK_CLOSE(
2519 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(6.5f), 9),
2520 static_cast<T>(0.103274449934495763275146484375e15L),
2521 tolerance);
2522 BOOST_CHECK_CLOSE(
2523 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.125)),
2524 static_cast<T>(0.3141392057908696244794555241242051124573e1L),
2525 tolerance);
2526 BOOST_CHECK_CLOSE(
2527 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.25)),
2528 static_cast<T>(0.35764986560679972171783447265625e1L),
2529 tolerance);
2530 BOOST_CHECK_CLOSE(
2531 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(0.75)),
2532 static_cast<T>(0.119936861679889261722564697265625e2L),
2533 tolerance);
2534 BOOST_CHECK_CLOSE(
2535 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f)),
2536 static_cast<T>(0.5392583642412261279423815221065846904997e2L),
2537 tolerance);
2538 BOOST_CHECK_CLOSE(
2539 boost::math::tools::evaluate_even_polynomial(n9c, static_cast<T>(6.5f)),
2540 static_cast<T>(0.103274449934495763275146484375e15L),
2541 tolerance);
2542 BOOST_CHECK_CLOSE(
2543 boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(0.125)),
2544 static_cast<T>(0.3141392057908696244794555241242051124573e1L),
2545 tolerance);
2546 BOOST_CHECK_CLOSE(
2547 boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(0.25)),
2548 static_cast<T>(0.35764986560679972171783447265625e1L),
2549 tolerance);
2550 BOOST_CHECK_CLOSE(
2551 boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(0.75)),
2552 static_cast<T>(0.119936861679889261722564697265625e2L),
2553 tolerance);
2554 BOOST_CHECK_CLOSE(
2555 boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(1.0f - 1.0f/64.0f)),
2556 static_cast<T>(0.5392583642412261279423815221065846904997e2L),
2557 tolerance);
2558 BOOST_CHECK_CLOSE(
2559 boost::math::tools::evaluate_even_polynomial(n9a, static_cast<T>(6.5f)),
2560 static_cast<T>(0.103274449934495763275146484375e15L),
2561 tolerance);
2562 BOOST_CHECK_CLOSE(
2563 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.125), 9),
2564 static_cast<T>(0.4131136463269569958356441929936408996582e1L),
2565 tolerance);
2566 BOOST_CHECK_CLOSE(
2567 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.25), 9),
2568 static_cast<T>(0.530599462427198886871337890625e1L),
2569 tolerance);
2570 BOOST_CHECK_CLOSE(
2571 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.75), 9),
2572 static_cast<T>(0.1499158155731856822967529296875e2L),
2573 tolerance);
2574 BOOST_CHECK_CLOSE(
2575 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
2576 static_cast<T>(0.5473418303402932093382923399178003205076e2L),
2577 tolerance);
2578 BOOST_CHECK_CLOSE(
2579 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(6.5f), 9),
2580 static_cast<T>(0.1588837691300188665771484375e14L),
2581 tolerance);
2582 BOOST_CHECK_CLOSE(
2583 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.125)),
2584 static_cast<T>(0.4131136463269569958356441929936408996582e1L),
2585 tolerance);
2586 BOOST_CHECK_CLOSE(
2587 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.25)),
2588 static_cast<T>(0.530599462427198886871337890625e1L),
2589 tolerance);
2590 BOOST_CHECK_CLOSE(
2591 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(0.75)),
2592 static_cast<T>(0.1499158155731856822967529296875e2L),
2593 tolerance);
2594 BOOST_CHECK_CLOSE(
2595 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(1.0f - 1.0f/64.0f)),
2596 static_cast<T>(0.5473418303402932093382923399178003205076e2L),
2597 tolerance);
2598 BOOST_CHECK_CLOSE(
2599 boost::math::tools::evaluate_odd_polynomial(n9c, static_cast<T>(6.5f)),
2600 static_cast<T>(0.1588837691300188665771484375e14L),
2601 tolerance);
2602 BOOST_CHECK_CLOSE(
2603 boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(0.125)),
2604 static_cast<T>(0.4131136463269569958356441929936408996582e1L),
2605 tolerance);
2606 BOOST_CHECK_CLOSE(
2607 boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(0.25)),
2608 static_cast<T>(0.530599462427198886871337890625e1L),
2609 tolerance);
2610 BOOST_CHECK_CLOSE(
2611 boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(0.75)),
2612 static_cast<T>(0.1499158155731856822967529296875e2L),
2613 tolerance);
2614 BOOST_CHECK_CLOSE(
2615 boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(1.0f - 1.0f/64.0f)),
2616 static_cast<T>(0.5473418303402932093382923399178003205076e2L),
2617 tolerance);
2618 BOOST_CHECK_CLOSE(
2619 boost::math::tools::evaluate_odd_polynomial(n9a, static_cast<T>(6.5f)),
2620 static_cast<T>(0.1588837691300188665771484375e14L),
2621 tolerance);
2622 //
2623 // Rational functions of order 8
2624 //
2625 static const U d9c[9] = { 12, 3, 10, 4, 6, 6, 6, 10, 7 };
2626 static const boost::array<U, 9> d9a = {{ 12, 3, 10, 4, 6, 6, 6, 10, 7 }};
2627 BOOST_CHECK_CLOSE(
2628 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.125), 9),
2629 static_cast<T>(0.3341827920887278954826517708316980450243e0L),
2630 tolerance);
2631 BOOST_CHECK_CLOSE(
2632 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.25), 9),
2633 static_cast<T>(0.4162555242250224594229316089330159747956e0L),
2634 tolerance);
2635 BOOST_CHECK_CLOSE(
2636 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.75), 9),
2637 static_cast<T>(0.7844550246723573100342976024389406178802e0L),
2638 tolerance);
2639 BOOST_CHECK_CLOSE(
2640 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(1.0f - 1.0f/64.0f), 9),
2641 static_cast<T>(0.959335028097323235424759017468360386113e0L),
2642 tolerance);
2643 BOOST_CHECK_CLOSE(
2644 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(6.5f), 9),
2645 static_cast<T>(0.1302420407483849169746727326286868117535e1L),
2646 tolerance);
2647 BOOST_CHECK_CLOSE(
2648 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(10247.25f), 9),
2649 static_cast<T>(0.1428469874366314841691622991213446692856e1L),
2650 tolerance);
2651
2652 BOOST_CHECK_CLOSE(
2653 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.125)),
2654 static_cast<T>(0.3341827920887278954826517708316980450243e0L),
2655 tolerance);
2656 BOOST_CHECK_CLOSE(
2657 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.25)),
2658 static_cast<T>(0.4162555242250224594229316089330159747956e0L),
2659 tolerance);
2660 BOOST_CHECK_CLOSE(
2661 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(0.75)),
2662 static_cast<T>(0.7844550246723573100342976024389406178802e0L),
2663 tolerance);
2664 BOOST_CHECK_CLOSE(
2665 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(1.0f - 1.0f/64.0f)),
2666 static_cast<T>(0.959335028097323235424759017468360386113e0L),
2667 tolerance);
2668 BOOST_CHECK_CLOSE(
2669 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(6.5f)),
2670 static_cast<T>(0.1302420407483849169746727326286868117535e1L),
2671 tolerance);
2672 BOOST_CHECK_CLOSE(
2673 boost::math::tools::evaluate_rational(n9c, d9c, static_cast<T>(10247.25f)),
2674 static_cast<T>(0.1428469874366314841691622991213446692856e1L),
2675 tolerance);
2676
2677 BOOST_CHECK_CLOSE(
2678 boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(0.125)),
2679 static_cast<T>(0.3341827920887278954826517708316980450243e0L),
2680 tolerance);
2681 BOOST_CHECK_CLOSE(
2682 boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(0.25)),
2683 static_cast<T>(0.4162555242250224594229316089330159747956e0L),
2684 tolerance);
2685 BOOST_CHECK_CLOSE(
2686 boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(0.75)),
2687 static_cast<T>(0.7844550246723573100342976024389406178802e0L),
2688 tolerance);
2689 BOOST_CHECK_CLOSE(
2690 boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(1.0f - 1.0f/64.0f)),
2691 static_cast<T>(0.959335028097323235424759017468360386113e0L),
2692 tolerance);
2693 BOOST_CHECK_CLOSE(
2694 boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(6.5f)),
2695 static_cast<T>(0.1302420407483849169746727326286868117535e1L),
2696 tolerance);
2697 BOOST_CHECK_CLOSE(
2698 boost::math::tools::evaluate_rational(n9a, d9a, static_cast<T>(10247.25f)),
2699 static_cast<T>(0.1428469874366314841691622991213446692856e1L),
2700 tolerance);
2701 }
2702
2703 template <class T, class U>
2704 void do_test_spots9(T, U)
2705 {
2706 //
2707 // Tolerance is 4 eps expressed as a persentage:
2708 //
2709 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
2710
2711 //
2712 // Polynomials of order 9
2713 //
2714 static const U n10c[10] = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 };
2715 static const boost::array<U, 10> n10a = {{ 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 }};
2716 BOOST_CHECK_CLOSE(
2717 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.125), 10),
2718 static_cast<T>(0.3544962465763092041015625e1L),
2719 tolerance);
2720 BOOST_CHECK_CLOSE(
2721 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.25), 10),
2722 static_cast<T>(0.4251861572265625e1L),
2723 tolerance);
2724 BOOST_CHECK_CLOSE(
2725 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.75), 10),
2726 static_cast<T>(0.14716278076171875e2L),
2727 tolerance);
2728 BOOST_CHECK_CLOSE(
2729 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
2730 static_cast<T>(0.4243246072286939307716124858416151255369e2L),
2731 tolerance);
2732 BOOST_CHECK_CLOSE(
2733 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(6.5), 10),
2734 static_cast<T>(0.193326261328125e9L),
2735 tolerance);
2736 BOOST_CHECK_CLOSE(
2737 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(10247.25), 10),
2738 static_cast<T>(0.9967777935240642903307419028007759631098e37L),
2739 tolerance);
2740
2741 BOOST_CHECK_CLOSE(
2742 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.125)),
2743 static_cast<T>(0.3544962465763092041015625e1L),
2744 tolerance);
2745 BOOST_CHECK_CLOSE(
2746 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.25)),
2747 static_cast<T>(0.4251861572265625e1L),
2748 tolerance);
2749 BOOST_CHECK_CLOSE(
2750 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(0.75)),
2751 static_cast<T>(0.14716278076171875e2L),
2752 tolerance);
2753 BOOST_CHECK_CLOSE(
2754 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f)),
2755 static_cast<T>(0.4243246072286939307716124858416151255369e2L),
2756 tolerance);
2757 BOOST_CHECK_CLOSE(
2758 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(6.5)),
2759 static_cast<T>(0.193326261328125e9L),
2760 tolerance);
2761 BOOST_CHECK_CLOSE(
2762 boost::math::tools::evaluate_polynomial(n10c, static_cast<T>(10247.25)),
2763 static_cast<T>(0.9967777935240642903307419028007759631098e37L),
2764 tolerance);
2765
2766 BOOST_CHECK_CLOSE(
2767 boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(0.125)),
2768 static_cast<T>(0.3544962465763092041015625e1L),
2769 tolerance);
2770 BOOST_CHECK_CLOSE(
2771 boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(0.25)),
2772 static_cast<T>(0.4251861572265625e1L),
2773 tolerance);
2774 BOOST_CHECK_CLOSE(
2775 boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(0.75)),
2776 static_cast<T>(0.14716278076171875e2L),
2777 tolerance);
2778 BOOST_CHECK_CLOSE(
2779 boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(1.0f - 1.0f/64.0f)),
2780 static_cast<T>(0.4243246072286939307716124858416151255369e2L),
2781 tolerance);
2782 BOOST_CHECK_CLOSE(
2783 boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(6.5)),
2784 static_cast<T>(0.193326261328125e9L),
2785 tolerance);
2786 BOOST_CHECK_CLOSE(
2787 boost::math::tools::evaluate_polynomial(n10a, static_cast<T>(10247.25)),
2788 static_cast<T>(0.9967777935240642903307419028007759631098e37L),
2789 tolerance);
2790
2791 BOOST_CHECK_CLOSE(
2792 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.125), 10),
2793 static_cast<T>(0.3063011647232116718697625401546247303486e1L),
2794 tolerance);
2795 BOOST_CHECK_CLOSE(
2796 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.25), 10),
2797 static_cast<T>(0.3259400503826327621936798095703125e1L),
2798 tolerance);
2799 BOOST_CHECK_CLOSE(
2800 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.75), 10),
2801 static_cast<T>(0.8067807371844537556171417236328125e1L),
2802 tolerance);
2803 BOOST_CHECK_CLOSE(
2804 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
2805 static_cast<T>(0.3922779295817342542834377568121069117613e2L),
2806 tolerance);
2807 BOOST_CHECK_CLOSE(
2808 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(6.5f), 10),
2809 static_cast<T>(0.3514067090785774022613525390625e16L),
2810 tolerance);
2811 BOOST_CHECK_CLOSE(
2812 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.125)),
2813 static_cast<T>(0.3063011647232116718697625401546247303486e1L),
2814 tolerance);
2815 BOOST_CHECK_CLOSE(
2816 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.25)),
2817 static_cast<T>(0.3259400503826327621936798095703125e1L),
2818 tolerance);
2819 BOOST_CHECK_CLOSE(
2820 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(0.75)),
2821 static_cast<T>(0.8067807371844537556171417236328125e1L),
2822 tolerance);
2823 BOOST_CHECK_CLOSE(
2824 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f)),
2825 static_cast<T>(0.3922779295817342542834377568121069117613e2L),
2826 tolerance);
2827 BOOST_CHECK_CLOSE(
2828 boost::math::tools::evaluate_even_polynomial(n10c, static_cast<T>(6.5f)),
2829 static_cast<T>(0.3514067090785774022613525390625e16L),
2830 tolerance);
2831 BOOST_CHECK_CLOSE(
2832 boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(0.125)),
2833 static_cast<T>(0.3063011647232116718697625401546247303486e1L),
2834 tolerance);
2835 BOOST_CHECK_CLOSE(
2836 boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(0.25)),
2837 static_cast<T>(0.3259400503826327621936798095703125e1L),
2838 tolerance);
2839 BOOST_CHECK_CLOSE(
2840 boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(0.75)),
2841 static_cast<T>(0.8067807371844537556171417236328125e1L),
2842 tolerance);
2843 BOOST_CHECK_CLOSE(
2844 boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(1.0f - 1.0f/64.0f)),
2845 static_cast<T>(0.3922779295817342542834377568121069117613e2L),
2846 tolerance);
2847 BOOST_CHECK_CLOSE(
2848 boost::math::tools::evaluate_even_polynomial(n10a, static_cast<T>(6.5f)),
2849 static_cast<T>(0.3514067090785774022613525390625e16L),
2850 tolerance);
2851 BOOST_CHECK_CLOSE(
2852 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.125), 10),
2853 static_cast<T>(0.3504093177856933749581003212369978427887e1L),
2854 tolerance);
2855 BOOST_CHECK_CLOSE(
2856 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.25), 10),
2857 static_cast<T>(0.40376020153053104877471923828125e1L),
2858 tolerance);
2859 BOOST_CHECK_CLOSE(
2860 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.75), 10),
2861 static_cast<T>(0.97570764957927167415618896484375e1L),
2862 tolerance);
2863 BOOST_CHECK_CLOSE(
2864 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
2865 static_cast<T>(0.3980283729084284487958732767615054341702e2L),
2866 tolerance);
2867 BOOST_CHECK_CLOSE(
2868 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(6.5f), 10),
2869 static_cast<T>(0.54062570627473700347900390625e15L),
2870 tolerance);
2871 BOOST_CHECK_CLOSE(
2872 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.125)),
2873 static_cast<T>(0.3504093177856933749581003212369978427887e1L),
2874 tolerance);
2875 BOOST_CHECK_CLOSE(
2876 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.25)),
2877 static_cast<T>(0.40376020153053104877471923828125e1L),
2878 tolerance);
2879 BOOST_CHECK_CLOSE(
2880 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(0.75)),
2881 static_cast<T>(0.97570764957927167415618896484375e1L),
2882 tolerance);
2883 BOOST_CHECK_CLOSE(
2884 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(1.0f - 1.0f/64.0f)),
2885 static_cast<T>(0.3980283729084284487958732767615054341702e2L),
2886 tolerance);
2887 BOOST_CHECK_CLOSE(
2888 boost::math::tools::evaluate_odd_polynomial(n10c, static_cast<T>(6.5f)),
2889 static_cast<T>(0.54062570627473700347900390625e15L),
2890 tolerance);
2891 BOOST_CHECK_CLOSE(
2892 boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(0.125)),
2893 static_cast<T>(0.3504093177856933749581003212369978427887e1L),
2894 tolerance);
2895 BOOST_CHECK_CLOSE(
2896 boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(0.25)),
2897 static_cast<T>(0.40376020153053104877471923828125e1L),
2898 tolerance);
2899 BOOST_CHECK_CLOSE(
2900 boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(0.75)),
2901 static_cast<T>(0.97570764957927167415618896484375e1L),
2902 tolerance);
2903 BOOST_CHECK_CLOSE(
2904 boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(1.0f - 1.0f/64.0f)),
2905 static_cast<T>(0.3980283729084284487958732767615054341702e2L),
2906 tolerance);
2907 BOOST_CHECK_CLOSE(
2908 boost::math::tools::evaluate_odd_polynomial(n10a, static_cast<T>(6.5f)),
2909 static_cast<T>(0.54062570627473700347900390625e15L),
2910 tolerance);
2911 //
2912 // Rational functions of order 9
2913 //
2914 static const U d10c[10] = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 };
2915 static const boost::array<U, 10> d10a = {{ 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 }};
2916 BOOST_CHECK_CLOSE(
2917 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.125), 10),
2918 static_cast<T>(0.8027011456035955638016996485812217742707e0L),
2919 tolerance);
2920 BOOST_CHECK_CLOSE(
2921 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.25), 10),
2922 static_cast<T>(0.7037718026559713894599659542655668311705e0L),
2923 tolerance);
2924 BOOST_CHECK_CLOSE(
2925 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.75), 10),
2926 static_cast<T>(0.5819711007563332500606442409694389231031e0L),
2927 tolerance);
2928 BOOST_CHECK_CLOSE(
2929 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(1.0f - 1.0f/64.0f), 10),
2930 static_cast<T>(0.6021345078884753739086911192013079405483e0L),
2931 tolerance);
2932 BOOST_CHECK_CLOSE(
2933 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(6.5f), 10),
2934 static_cast<T>(0.9827105949744728065574239430024037810213e0L),
2935 tolerance);
2936 BOOST_CHECK_CLOSE(
2937 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(10247.25f), 10),
2938 static_cast<T>(0.9999999928576761766405011572543053028339e0L),
2939 tolerance);
2940
2941 BOOST_CHECK_CLOSE(
2942 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.125)),
2943 static_cast<T>(0.8027011456035955638016996485812217742707e0L),
2944 tolerance);
2945 BOOST_CHECK_CLOSE(
2946 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.25)),
2947 static_cast<T>(0.7037718026559713894599659542655668311705e0L),
2948 tolerance);
2949 BOOST_CHECK_CLOSE(
2950 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(0.75)),
2951 static_cast<T>(0.5819711007563332500606442409694389231031e0L),
2952 tolerance);
2953 BOOST_CHECK_CLOSE(
2954 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(1.0f - 1.0f/64.0f)),
2955 static_cast<T>(0.6021345078884753739086911192013079405483e0L),
2956 tolerance);
2957 BOOST_CHECK_CLOSE(
2958 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(6.5f)),
2959 static_cast<T>(0.9827105949744728065574239430024037810213e0L),
2960 tolerance);
2961 BOOST_CHECK_CLOSE(
2962 boost::math::tools::evaluate_rational(n10c, d10c, static_cast<T>(10247.25f)),
2963 static_cast<T>(0.9999999928576761766405011572543053028339e0L),
2964 tolerance);
2965
2966 BOOST_CHECK_CLOSE(
2967 boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(0.125)),
2968 static_cast<T>(0.8027011456035955638016996485812217742707e0L),
2969 tolerance);
2970 BOOST_CHECK_CLOSE(
2971 boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(0.25)),
2972 static_cast<T>(0.7037718026559713894599659542655668311705e0L),
2973 tolerance);
2974 BOOST_CHECK_CLOSE(
2975 boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(0.75)),
2976 static_cast<T>(0.5819711007563332500606442409694389231031e0L),
2977 tolerance);
2978 BOOST_CHECK_CLOSE(
2979 boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(1.0f - 1.0f/64.0f)),
2980 static_cast<T>(0.6021345078884753739086911192013079405483e0L),
2981 tolerance);
2982 BOOST_CHECK_CLOSE(
2983 boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(6.5f)),
2984 static_cast<T>(0.9827105949744728065574239430024037810213e0L),
2985 tolerance);
2986 BOOST_CHECK_CLOSE(
2987 boost::math::tools::evaluate_rational(n10a, d10a, static_cast<T>(10247.25f)),
2988 static_cast<T>(0.9999999928576761766405011572543053028339e0L),
2989 tolerance);
2990 }
2991
2992 template <class T, class U>
2993 void do_test_spots10(T, U)
2994 {
2995 //
2996 // Tolerance is 4 eps expressed as a persentage:
2997 //
2998 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
2999
3000 //
3001 // Polynomials of order 10
3002 //
3003 static const U n11c[11] = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 };
3004 static const boost::array<U, 11> n11a = {{ 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 }};
3005 BOOST_CHECK_CLOSE(
3006 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.125), 11),
3007 static_cast<T>(0.239738257043063640594482421875e1L),
3008 tolerance);
3009 BOOST_CHECK_CLOSE(
3010 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.25), 11),
3011 static_cast<T>(0.31906986236572265625e1L),
3012 tolerance);
3013 BOOST_CHECK_CLOSE(
3014 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.75), 11),
3015 static_cast<T>(0.187007007598876953125e2L),
3016 tolerance);
3017 BOOST_CHECK_CLOSE(
3018 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
3019 static_cast<T>(0.5807897685780276847943015550157497273176e2L),
3020 tolerance);
3021 BOOST_CHECK_CLOSE(
3022 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(6.5), 11),
3023 static_cast<T>(0.85061053443359375e9L),
3024 tolerance);
3025 BOOST_CHECK_CLOSE(
3026 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.125)),
3027 static_cast<T>(0.239738257043063640594482421875e1L),
3028 tolerance);
3029 BOOST_CHECK_CLOSE(
3030 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.25)),
3031 static_cast<T>(0.31906986236572265625e1L),
3032 tolerance);
3033 BOOST_CHECK_CLOSE(
3034 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(0.75)),
3035 static_cast<T>(0.187007007598876953125e2L),
3036 tolerance);
3037 BOOST_CHECK_CLOSE(
3038 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f)),
3039 static_cast<T>(0.5807897685780276847943015550157497273176e2L),
3040 tolerance);
3041 BOOST_CHECK_CLOSE(
3042 boost::math::tools::evaluate_polynomial(n11c, static_cast<T>(6.5)),
3043 static_cast<T>(0.85061053443359375e9L),
3044 tolerance);
3045 BOOST_CHECK_CLOSE(
3046 boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(0.125)),
3047 static_cast<T>(0.239738257043063640594482421875e1L),
3048 tolerance);
3049 BOOST_CHECK_CLOSE(
3050 boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(0.25)),
3051 static_cast<T>(0.31906986236572265625e1L),
3052 tolerance);
3053 BOOST_CHECK_CLOSE(
3054 boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(0.75)),
3055 static_cast<T>(0.187007007598876953125e2L),
3056 tolerance);
3057 BOOST_CHECK_CLOSE(
3058 boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(1.0f - 1.0f/64.0f)),
3059 static_cast<T>(0.5807897685780276847943015550157497273176e2L),
3060 tolerance);
3061 BOOST_CHECK_CLOSE(
3062 boost::math::tools::evaluate_polynomial(n11a, static_cast<T>(6.5)),
3063 static_cast<T>(0.85061053443359375e9L),
3064 tolerance);
3065 BOOST_CHECK_CLOSE(
3066 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.125), 11),
3067 static_cast<T>(0.2033245269357184586631048794913567689946e1L),
3068 tolerance);
3069 BOOST_CHECK_CLOSE(
3070 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.25), 11),
3071 static_cast<T>(0.2158985776148256263695657253265380859375e1L),
3072 tolerance);
3073 BOOST_CHECK_CLOSE(
3074 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.75), 11),
3075 static_cast<T>(0.8727145384755203849636018276214599609375e1L),
3076 tolerance);
3077 BOOST_CHECK_CLOSE(
3078 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
3079 static_cast<T>(0.5363972553738812062759598952966094072427e2L),
3080 tolerance);
3081 BOOST_CHECK_CLOSE(
3082 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(6.5f), 11),
3083 static_cast<T>(0.1092297265410211371166019439697265625e18L),
3084 tolerance);
3085 BOOST_CHECK_CLOSE(
3086 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.125)),
3087 static_cast<T>(0.2033245269357184586631048794913567689946e1L),
3088 tolerance);
3089 BOOST_CHECK_CLOSE(
3090 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.25)),
3091 static_cast<T>(0.2158985776148256263695657253265380859375e1L),
3092 tolerance);
3093 BOOST_CHECK_CLOSE(
3094 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(0.75)),
3095 static_cast<T>(0.8727145384755203849636018276214599609375e1L),
3096 tolerance);
3097 BOOST_CHECK_CLOSE(
3098 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f)),
3099 static_cast<T>(0.5363972553738812062759598952966094072427e2L),
3100 tolerance);
3101 BOOST_CHECK_CLOSE(
3102 boost::math::tools::evaluate_even_polynomial(n11c, static_cast<T>(6.5f)),
3103 static_cast<T>(0.1092297265410211371166019439697265625e18L),
3104 tolerance);
3105 BOOST_CHECK_CLOSE(
3106 boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(0.125)),
3107 static_cast<T>(0.2033245269357184586631048794913567689946e1L),
3108 tolerance);
3109 BOOST_CHECK_CLOSE(
3110 boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(0.25)),
3111 static_cast<T>(0.2158985776148256263695657253265380859375e1L),
3112 tolerance);
3113 BOOST_CHECK_CLOSE(
3114 boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(0.75)),
3115 static_cast<T>(0.8727145384755203849636018276214599609375e1L),
3116 tolerance);
3117 BOOST_CHECK_CLOSE(
3118 boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(1.0f - 1.0f/64.0f)),
3119 static_cast<T>(0.5363972553738812062759598952966094072427e2L),
3120 tolerance);
3121 BOOST_CHECK_CLOSE(
3122 boost::math::tools::evaluate_even_polynomial(n11a, static_cast<T>(6.5f)),
3123 static_cast<T>(0.1092297265410211371166019439697265625e18L),
3124 tolerance);
3125 BOOST_CHECK_CLOSE(
3126 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.125), 11),
3127 static_cast<T>(0.2265962154857476693048390359308541519567e1L),
3128 tolerance);
3129 BOOST_CHECK_CLOSE(
3130 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.25), 11),
3131 static_cast<T>(0.26359431045930250547826290130615234375e1L),
3132 tolerance);
3133 BOOST_CHECK_CLOSE(
3134 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.75), 11),
3135 static_cast<T>(0.109695271796736051328480243682861328125e2L),
3136 tolerance);
3137 BOOST_CHECK_CLOSE(
3138 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
3139 static_cast<T>(0.544594037205212653994625925380682572437e2L),
3140 tolerance);
3141 BOOST_CHECK_CLOSE(
3142 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(6.5f), 11),
3143 static_cast<T>(0.16804573314003253556400299072265625e17L),
3144 tolerance);
3145 BOOST_CHECK_CLOSE(
3146 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.125)),
3147 static_cast<T>(0.2265962154857476693048390359308541519567e1L),
3148 tolerance);
3149 BOOST_CHECK_CLOSE(
3150 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.25)),
3151 static_cast<T>(0.26359431045930250547826290130615234375e1L),
3152 tolerance);
3153 BOOST_CHECK_CLOSE(
3154 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(0.75)),
3155 static_cast<T>(0.109695271796736051328480243682861328125e2L),
3156 tolerance);
3157 BOOST_CHECK_CLOSE(
3158 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(1.0f - 1.0f/64.0f)),
3159 static_cast<T>(0.544594037205212653994625925380682572437e2L),
3160 tolerance);
3161 BOOST_CHECK_CLOSE(
3162 boost::math::tools::evaluate_odd_polynomial(n11c, static_cast<T>(6.5f)),
3163 static_cast<T>(0.16804573314003253556400299072265625e17L),
3164 tolerance);
3165 BOOST_CHECK_CLOSE(
3166 boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(0.125)),
3167 static_cast<T>(0.2265962154857476693048390359308541519567e1L),
3168 tolerance);
3169 BOOST_CHECK_CLOSE(
3170 boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(0.25)),
3171 static_cast<T>(0.26359431045930250547826290130615234375e1L),
3172 tolerance);
3173 BOOST_CHECK_CLOSE(
3174 boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(0.75)),
3175 static_cast<T>(0.109695271796736051328480243682861328125e2L),
3176 tolerance);
3177 BOOST_CHECK_CLOSE(
3178 boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(1.0f - 1.0f/64.0f)),
3179 static_cast<T>(0.544594037205212653994625925380682572437e2L),
3180 tolerance);
3181 BOOST_CHECK_CLOSE(
3182 boost::math::tools::evaluate_odd_polynomial(n11a, static_cast<T>(6.5f)),
3183 static_cast<T>(0.16804573314003253556400299072265625e17L),
3184 tolerance);
3185 //
3186 // Rational functions of order 10
3187 //
3188 static const U d11c[11] = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 };
3189 static const boost::array<U, 11> d11a = {{ 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 }};
3190 BOOST_CHECK_CLOSE(
3191 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.125), 11),
3192 static_cast<T>(0.5718365676248588095654568811483084403598e0L),
3193 tolerance);
3194 BOOST_CHECK_CLOSE(
3195 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.25), 11),
3196 static_cast<T>(0.6888631839546304707516922567568791812269e0L),
3197 tolerance);
3198 BOOST_CHECK_CLOSE(
3199 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.75), 11),
3200 static_cast<T>(0.9783539912974912482969079012097816310129e0L),
3201 tolerance);
3202 BOOST_CHECK_CLOSE(
3203 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(1.0f - 1.0f/64.0f), 11),
3204 static_cast<T>(0.9694017102874332007392886881642471036972e0L),
3205 tolerance);
3206 BOOST_CHECK_CLOSE(
3207 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(6.5f), 11),
3208 static_cast<T>(0.1243900864392932237542421996384079347041e1L),
3209 tolerance);
3210 BOOST_CHECK_CLOSE(
3211 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(10247.25f), 11),
3212 static_cast<T>(0.1499804844733304585200728061706913399511e1L),
3213 tolerance);
3214
3215 BOOST_CHECK_CLOSE(
3216 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.125)),
3217 static_cast<T>(0.5718365676248588095654568811483084403598e0L),
3218 tolerance);
3219 BOOST_CHECK_CLOSE(
3220 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.25)),
3221 static_cast<T>(0.6888631839546304707516922567568791812269e0L),
3222 tolerance);
3223 BOOST_CHECK_CLOSE(
3224 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(0.75)),
3225 static_cast<T>(0.9783539912974912482969079012097816310129e0L),
3226 tolerance);
3227 BOOST_CHECK_CLOSE(
3228 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(1.0f - 1.0f/64.0f)),
3229 static_cast<T>(0.9694017102874332007392886881642471036972e0L),
3230 tolerance);
3231 BOOST_CHECK_CLOSE(
3232 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(6.5f)),
3233 static_cast<T>(0.1243900864392932237542421996384079347041e1L),
3234 tolerance);
3235 BOOST_CHECK_CLOSE(
3236 boost::math::tools::evaluate_rational(n11c, d11c, static_cast<T>(10247.25f)),
3237 static_cast<T>(0.1499804844733304585200728061706913399511e1L),
3238 tolerance);
3239
3240 BOOST_CHECK_CLOSE(
3241 boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(0.125)),
3242 static_cast<T>(0.5718365676248588095654568811483084403598e0L),
3243 tolerance);
3244 BOOST_CHECK_CLOSE(
3245 boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(0.25)),
3246 static_cast<T>(0.6888631839546304707516922567568791812269e0L),
3247 tolerance);
3248 BOOST_CHECK_CLOSE(
3249 boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(0.75)),
3250 static_cast<T>(0.9783539912974912482969079012097816310129e0L),
3251 tolerance);
3252 BOOST_CHECK_CLOSE(
3253 boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(1.0f - 1.0f/64.0f)),
3254 static_cast<T>(0.9694017102874332007392886881642471036972e0L),
3255 tolerance);
3256 BOOST_CHECK_CLOSE(
3257 boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(6.5f)),
3258 static_cast<T>(0.1243900864392932237542421996384079347041e1L),
3259 tolerance);
3260 BOOST_CHECK_CLOSE(
3261 boost::math::tools::evaluate_rational(n11a, d11a, static_cast<T>(10247.25f)),
3262 static_cast<T>(0.1499804844733304585200728061706913399511e1L),
3263 tolerance);
3264 }
3265
3266 template <class T, class U>
3267 void do_test_spots11(T, U)
3268 {
3269 //
3270 // Tolerance is 4 eps expressed as a persentage:
3271 //
3272 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
3273
3274 //
3275 // Polynomials of order 11
3276 //
3277 static const U n12c[12] = { 10, 12, 4, 1, 12, 7, 11, 5, 12, 5, 10, 6 };
3278 static const boost::array<U, 12> n12a = {{ 10, 12, 4, 1, 12, 7, 11, 5, 12, 5, 10, 6 }};
3279 BOOST_CHECK_CLOSE(
3280 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(0.125), 12),
3281 static_cast<T>(0.1156764154392294585704803466796875e2L),
3282 tolerance);
3283 BOOST_CHECK_CLOSE(
3284 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(0.25), 12),
3285 static_cast<T>(0.13322539806365966796875e2L),
3286 tolerance);
3287 BOOST_CHECK_CLOSE(
3288 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(0.75), 12),
3289 static_cast<T>(0.32148390293121337890625e2L),
3290 tolerance);
3291 BOOST_CHECK_CLOSE(
3292 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(1.0f - 1.0f/64.0f), 12),
3293 static_cast<T>(0.8737331822870016474402916385744166660743e2L),
3294 tolerance);
3295 BOOST_CHECK_CLOSE(
3296 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(6.5), 12),
3297 static_cast<T>(0.67419250750654296875e10L),
3298 tolerance);
3299 BOOST_CHECK_CLOSE(
3300 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(0.125)),
3301 static_cast<T>(0.1156764154392294585704803466796875e2L),
3302 tolerance);
3303 BOOST_CHECK_CLOSE(
3304 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(0.25)),
3305 static_cast<T>(0.13322539806365966796875e2L),
3306 tolerance);
3307 BOOST_CHECK_CLOSE(
3308 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(0.75)),
3309 static_cast<T>(0.32148390293121337890625e2L),
3310 tolerance);
3311 BOOST_CHECK_CLOSE(
3312 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(1.0f - 1.0f/64.0f)),
3313 static_cast<T>(0.8737331822870016474402916385744166660743e2L),
3314 tolerance);
3315 BOOST_CHECK_CLOSE(
3316 boost::math::tools::evaluate_polynomial(n12c, static_cast<T>(6.5)),
3317 static_cast<T>(0.67419250750654296875e10L),
3318 tolerance);
3319 BOOST_CHECK_CLOSE(
3320 boost::math::tools::evaluate_polynomial(n12a, static_cast<T>(0.125)),
3321 static_cast<T>(0.1156764154392294585704803466796875e2L),
3322 tolerance);
3323 BOOST_CHECK_CLOSE(
3324 boost::math::tools::evaluate_polynomial(n12a, static_cast<T>(0.25)),
3325 static_cast<T>(0.13322539806365966796875e2L),
3326 tolerance);
3327 BOOST_CHECK_CLOSE(
3328 boost::math::tools::evaluate_polynomial(n12a, static_cast<T>(0.75)),
3329 static_cast<T>(0.32148390293121337890625e2L),
3330 tolerance);
3331 BOOST_CHECK_CLOSE(
3332 boost::math::tools::evaluate_polynomial(n12a, static_cast<T>(1.0f - 1.0f/64.0f)),
3333 static_cast<T>(0.8737331822870016474402916385744166660743e2L),
3334 tolerance);
3335 BOOST_CHECK_CLOSE(
3336 boost::math::tools::evaluate_polynomial(n12a, static_cast<T>(6.5)),
3337 static_cast<T>(0.67419250750654296875e10L),
3338 tolerance);
3339 BOOST_CHECK_CLOSE(
3340 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(0.125), 12),
3341 static_cast<T>(0.101884810991335118067599354446661763518e2L),
3342 tolerance);
3343 BOOST_CHECK_CLOSE(
3344 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(0.25), 12),
3345 static_cast<T>(0.1076605959896767217287560924887657165527e2L),
3346 tolerance);
3347 BOOST_CHECK_CLOSE(
3348 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(0.75), 12),
3349 static_cast<T>(0.2041755737073560794669901952147483825684e2L),
3350 tolerance);
3351 BOOST_CHECK_CLOSE(
3352 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(1.0f - 1.0f/64.0f), 12),
3353 static_cast<T>(0.8060387357327405373376954971672611741429e2L),
3354 tolerance);
3355 BOOST_CHECK_CLOSE(
3356 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(6.5f), 12),
3357 static_cast<T>(0.4778085851102157284559772014617919921875e19L),
3358 tolerance);
3359 BOOST_CHECK_CLOSE(
3360 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(0.125)),
3361 static_cast<T>(0.101884810991335118067599354446661763518e2L),
3362 tolerance);
3363 BOOST_CHECK_CLOSE(
3364 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(0.25)),
3365 static_cast<T>(0.1076605959896767217287560924887657165527e2L),
3366 tolerance);
3367 BOOST_CHECK_CLOSE(
3368 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(0.75)),
3369 static_cast<T>(0.2041755737073560794669901952147483825684e2L),
3370 tolerance);
3371 BOOST_CHECK_CLOSE(
3372 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(1.0f - 1.0f/64.0f)),
3373 static_cast<T>(0.8060387357327405373376954971672611741429e2L),
3374 tolerance);
3375 BOOST_CHECK_CLOSE(
3376 boost::math::tools::evaluate_even_polynomial(n12c, static_cast<T>(6.5f)),
3377 static_cast<T>(0.4778085851102157284559772014617919921875e19L),
3378 tolerance);
3379 BOOST_CHECK_CLOSE(
3380 boost::math::tools::evaluate_even_polynomial(n12a, static_cast<T>(0.125)),
3381 static_cast<T>(0.101884810991335118067599354446661763518e2L),
3382 tolerance);
3383 BOOST_CHECK_CLOSE(
3384 boost::math::tools::evaluate_even_polynomial(n12a, static_cast<T>(0.25)),
3385 static_cast<T>(0.1076605959896767217287560924887657165527e2L),
3386 tolerance);
3387 BOOST_CHECK_CLOSE(
3388 boost::math::tools::evaluate_even_polynomial(n12a, static_cast<T>(0.75)),
3389 static_cast<T>(0.2041755737073560794669901952147483825684e2L),
3390 tolerance);
3391 BOOST_CHECK_CLOSE(
3392 boost::math::tools::evaluate_even_polynomial(n12a, static_cast<T>(1.0f - 1.0f/64.0f)),
3393 static_cast<T>(0.8060387357327405373376954971672611741429e2L),
3394 tolerance);
3395 BOOST_CHECK_CLOSE(
3396 boost::math::tools::evaluate_even_polynomial(n12a, static_cast<T>(6.5f)),
3397 static_cast<T>(0.4778085851102157284559772014617919921875e19L),
3398 tolerance);
3399 BOOST_CHECK_CLOSE(
3400 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(0.125), 12),
3401 static_cast<T>(0.1150784879306809445407948355732941081442e2L),
3402 tolerance);
3403 BOOST_CHECK_CLOSE(
3404 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(0.25), 12),
3405 static_cast<T>(0.1306423839587068869150243699550628662109e2L),
3406 tolerance);
3407 BOOST_CHECK_CLOSE(
3408 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(0.75), 12),
3409 static_cast<T>(0.2389007649431414392893202602863311767578e2L),
3410 tolerance);
3411 BOOST_CHECK_CLOSE(
3412 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(1.0f - 1.0f/64.0f), 12),
3413 static_cast<T>(0.8172456997919903871367065368048367483356e2L),
3414 tolerance);
3415 BOOST_CHECK_CLOSE(
3416 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(6.5f), 12),
3417 static_cast<T>(0.73509013093879343685534954071044921875e18L),
3418 tolerance);
3419 BOOST_CHECK_CLOSE(
3420 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(0.125)),
3421 static_cast<T>(0.1150784879306809445407948355732941081442e2L),
3422 tolerance);
3423 BOOST_CHECK_CLOSE(
3424 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(0.25)),
3425 static_cast<T>(0.1306423839587068869150243699550628662109e2L),
3426 tolerance);
3427 BOOST_CHECK_CLOSE(
3428 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(0.75)),
3429 static_cast<T>(0.2389007649431414392893202602863311767578e2L),
3430 tolerance);
3431 BOOST_CHECK_CLOSE(
3432 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(1.0f - 1.0f/64.0f)),
3433 static_cast<T>(0.8172456997919903871367065368048367483356e2L),
3434 tolerance);
3435 BOOST_CHECK_CLOSE(
3436 boost::math::tools::evaluate_odd_polynomial(n12c, static_cast<T>(6.5f)),
3437 static_cast<T>(0.73509013093879343685534954071044921875e18L),
3438 tolerance);
3439 BOOST_CHECK_CLOSE(
3440 boost::math::tools::evaluate_odd_polynomial(n12a, static_cast<T>(0.125)),
3441 static_cast<T>(0.1150784879306809445407948355732941081442e2L),
3442 tolerance);
3443 BOOST_CHECK_CLOSE(
3444 boost::math::tools::evaluate_odd_polynomial(n12a, static_cast<T>(0.25)),
3445 static_cast<T>(0.1306423839587068869150243699550628662109e2L),
3446 tolerance);
3447 BOOST_CHECK_CLOSE(
3448 boost::math::tools::evaluate_odd_polynomial(n12a, static_cast<T>(0.75)),
3449 static_cast<T>(0.2389007649431414392893202602863311767578e2L),
3450 tolerance);
3451 BOOST_CHECK_CLOSE(
3452 boost::math::tools::evaluate_odd_polynomial(n12a, static_cast<T>(1.0f - 1.0f/64.0f)),
3453 static_cast<T>(0.8172456997919903871367065368048367483356e2L),
3454 tolerance);
3455 BOOST_CHECK_CLOSE(
3456 boost::math::tools::evaluate_odd_polynomial(n12a, static_cast<T>(6.5f)),
3457 static_cast<T>(0.73509013093879343685534954071044921875e18L),
3458 tolerance);
3459 //
3460 // Rational functions of order 11
3461 //
3462 static const U d12c[12] = { 12, 5, 2, 8, 3, 2, 6, 9, 2, 8, 9, 12 };
3463 static const boost::array<U, 12> d12a = {{ 12, 5, 2, 8, 3, 2, 6, 9, 2, 8, 9, 12 }};
3464 BOOST_CHECK_CLOSE(
3465 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(0.125), 12),
3466 static_cast<T>(0.9128003783370762743953357962892418132189e0L),
3467 tolerance);
3468 BOOST_CHECK_CLOSE(
3469 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(0.25), 12),
3470 static_cast<T>(0.9857041905689267091438933694601440838819e0L),
3471 tolerance);
3472 BOOST_CHECK_CLOSE(
3473 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(0.75), 12),
3474 static_cast<T>(0.1248112763387283893598834927961632655902e1L),
3475 tolerance);
3476 BOOST_CHECK_CLOSE(
3477 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(1.0f - 1.0f/64.0f), 12),
3478 static_cast<T>(0.1227813945781309965073515980672922656926e1L),
3479 tolerance);
3480 BOOST_CHECK_CLOSE(
3481 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(6.5f), 12),
3482 static_cast<T>(0.5670462630528956417277364302989555872917e0L),
3483 tolerance);
3484 BOOST_CHECK_CLOSE(
3485 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(10247.25f), 12),
3486 static_cast<T>(0.5000447249679368028702341332079904080375e0L),
3487 tolerance);
3488
3489 BOOST_CHECK_CLOSE(
3490 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(0.125)),
3491 static_cast<T>(0.9128003783370762743953357962892418132189e0L),
3492 tolerance);
3493 BOOST_CHECK_CLOSE(
3494 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(0.25)),
3495 static_cast<T>(0.9857041905689267091438933694601440838819e0L),
3496 tolerance);
3497 BOOST_CHECK_CLOSE(
3498 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(0.75)),
3499 static_cast<T>(0.1248112763387283893598834927961632655902e1L),
3500 tolerance);
3501 BOOST_CHECK_CLOSE(
3502 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(1.0f - 1.0f/64.0f)),
3503 static_cast<T>(0.1227813945781309965073515980672922656926e1L),
3504 tolerance);
3505 BOOST_CHECK_CLOSE(
3506 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(6.5f)),
3507 static_cast<T>(0.5670462630528956417277364302989555872917e0L),
3508 tolerance);
3509 BOOST_CHECK_CLOSE(
3510 boost::math::tools::evaluate_rational(n12c, d12c, static_cast<T>(10247.25f)),
3511 static_cast<T>(0.5000447249679368028702341332079904080375e0L),
3512 tolerance);
3513
3514 BOOST_CHECK_CLOSE(
3515 boost::math::tools::evaluate_rational(n12a, d12a, static_cast<T>(0.125)),
3516 static_cast<T>(0.9128003783370762743953357962892418132189e0L),
3517 tolerance);
3518 BOOST_CHECK_CLOSE(
3519 boost::math::tools::evaluate_rational(n12a, d12a, static_cast<T>(0.25)),
3520 static_cast<T>(0.9857041905689267091438933694601440838819e0L),
3521 tolerance);
3522 BOOST_CHECK_CLOSE(
3523 boost::math::tools::evaluate_rational(n12a, d12a, static_cast<T>(0.75)),
3524 static_cast<T>(0.1248112763387283893598834927961632655902e1L),
3525 tolerance);
3526 BOOST_CHECK_CLOSE(
3527 boost::math::tools::evaluate_rational(n12a, d12a, static_cast<T>(1.0f - 1.0f/64.0f)),
3528 static_cast<T>(0.1227813945781309965073515980672922656926e1L),
3529 tolerance);
3530 BOOST_CHECK_CLOSE(
3531 boost::math::tools::evaluate_rational(n12a, d12a, static_cast<T>(6.5f)),
3532 static_cast<T>(0.5670462630528956417277364302989555872917e0L),
3533 tolerance);
3534 BOOST_CHECK_CLOSE(
3535 boost::math::tools::evaluate_rational(n12a, d12a, static_cast<T>(10247.25f)),
3536 static_cast<T>(0.5000447249679368028702341332079904080375e0L),
3537 tolerance);
3538 }
3539
3540 template <class T, class U>
3541 void do_test_spots12(T, U)
3542 {
3543 //
3544 // Tolerance is 4 eps expressed as a persentage:
3545 //
3546 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
3547
3548 //
3549 // Polynomials of order 12
3550 //
3551 static const U n13c[13] = { 4, 11, 7, 1, 1, 1, 8, 11, 10, 12, 8, 2, 1 };
3552 static const boost::array<U, 13> n13a = {{ 4, 11, 7, 1, 1, 1, 8, 11, 10, 12, 8, 2, 1 }};
3553 BOOST_CHECK_CLOSE(
3554 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(0.125), 13),
3555 static_cast<T>(0.5486639239141368307173252105712890625e1L),
3556 tolerance);
3557 BOOST_CHECK_CLOSE(
3558 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(0.25), 13),
3559 static_cast<T>(0.7210838854312896728515625e1L),
3560 tolerance);
3561 BOOST_CHECK_CLOSE(
3562 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(0.75), 13),
3563 static_cast<T>(0.22524036943912506103515625e2L),
3564 tolerance);
3565 BOOST_CHECK_CLOSE(
3566 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(1.0f - 1.0f/64.0f), 13),
3567 static_cast<T>(0.7013317633407797455061737623412208147977e2L),
3568 tolerance);
3569 BOOST_CHECK_CLOSE(
3570 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(6.5), 13),
3571 static_cast<T>(0.8801602436469970703125e10L),
3572 tolerance);
3573 BOOST_CHECK_CLOSE(
3574 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(0.125)),
3575 static_cast<T>(0.5486639239141368307173252105712890625e1L),
3576 tolerance);
3577 BOOST_CHECK_CLOSE(
3578 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(0.25)),
3579 static_cast<T>(0.7210838854312896728515625e1L),
3580 tolerance);
3581 BOOST_CHECK_CLOSE(
3582 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(0.75)),
3583 static_cast<T>(0.22524036943912506103515625e2L),
3584 tolerance);
3585 BOOST_CHECK_CLOSE(
3586 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(1.0f - 1.0f/64.0f)),
3587 static_cast<T>(0.7013317633407797455061737623412208147977e2L),
3588 tolerance);
3589 BOOST_CHECK_CLOSE(
3590 boost::math::tools::evaluate_polynomial(n13c, static_cast<T>(6.5)),
3591 static_cast<T>(0.8801602436469970703125e10L),
3592 tolerance);
3593 BOOST_CHECK_CLOSE(
3594 boost::math::tools::evaluate_polynomial(n13a, static_cast<T>(0.125)),
3595 static_cast<T>(0.5486639239141368307173252105712890625e1L),
3596 tolerance);
3597 BOOST_CHECK_CLOSE(
3598 boost::math::tools::evaluate_polynomial(n13a, static_cast<T>(0.25)),
3599 static_cast<T>(0.7210838854312896728515625e1L),
3600 tolerance);
3601 BOOST_CHECK_CLOSE(
3602 boost::math::tools::evaluate_polynomial(n13a, static_cast<T>(0.75)),
3603 static_cast<T>(0.22524036943912506103515625e2L),
3604 tolerance);
3605 BOOST_CHECK_CLOSE(
3606 boost::math::tools::evaluate_polynomial(n13a, static_cast<T>(1.0f - 1.0f/64.0f)),
3607 static_cast<T>(0.7013317633407797455061737623412208147977e2L),
3608 tolerance);
3609 BOOST_CHECK_CLOSE(
3610 boost::math::tools::evaluate_polynomial(n13a, static_cast<T>(6.5)),
3611 static_cast<T>(0.8801602436469970703125e10L),
3612 tolerance);
3613 BOOST_CHECK_CLOSE(
3614 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(0.125), 13),
3615 static_cast<T>(0.4173587859727185607499727379291788731397e1L),
3616 tolerance);
3617 BOOST_CHECK_CLOSE(
3618 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(0.25), 13),
3619 static_cast<T>(0.4715104623414053008900737040676176548004e1L),
3620 tolerance);
3621 BOOST_CHECK_CLOSE(
3622 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(0.75), 13),
3623 static_cast<T>(0.1338397611887558369403450342360883951187e2L),
3624 tolerance);
3625 BOOST_CHECK_CLOSE(
3626 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(1.0f - 1.0f/64.0f), 13),
3627 static_cast<T>(0.6407202225497595548875186059951665936749e2L),
3628 tolerance);
3629 BOOST_CHECK_CLOSE(
3630 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(6.5f), 13),
3631 static_cast<T>(0.3403521961549553788009664398431777954102e20L),
3632 tolerance);
3633 BOOST_CHECK_CLOSE(
3634 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(0.125)),
3635 static_cast<T>(0.4173587859727185607499727379291788731397e1L),
3636 tolerance);
3637 BOOST_CHECK_CLOSE(
3638 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(0.25)),
3639 static_cast<T>(0.4715104623414053008900737040676176548004e1L),
3640 tolerance);
3641 BOOST_CHECK_CLOSE(
3642 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(0.75)),
3643 static_cast<T>(0.1338397611887558369403450342360883951187e2L),
3644 tolerance);
3645 BOOST_CHECK_CLOSE(
3646 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(1.0f - 1.0f/64.0f)),
3647 static_cast<T>(0.6407202225497595548875186059951665936749e2L),
3648 tolerance);
3649 BOOST_CHECK_CLOSE(
3650 boost::math::tools::evaluate_even_polynomial(n13c, static_cast<T>(6.5f)),
3651 static_cast<T>(0.3403521961549553788009664398431777954102e20L),
3652 tolerance);
3653 BOOST_CHECK_CLOSE(
3654 boost::math::tools::evaluate_even_polynomial(n13a, static_cast<T>(0.125)),
3655 static_cast<T>(0.4173587859727185607499727379291788731397e1L),
3656 tolerance);
3657 BOOST_CHECK_CLOSE(
3658 boost::math::tools::evaluate_even_polynomial(n13a, static_cast<T>(0.25)),
3659 static_cast<T>(0.4715104623414053008900737040676176548004e1L),
3660 tolerance);
3661 BOOST_CHECK_CLOSE(
3662 boost::math::tools::evaluate_even_polynomial(n13a, static_cast<T>(0.75)),
3663 static_cast<T>(0.1338397611887558369403450342360883951187e2L),
3664 tolerance);
3665 BOOST_CHECK_CLOSE(
3666 boost::math::tools::evaluate_even_polynomial(n13a, static_cast<T>(1.0f - 1.0f/64.0f)),
3667 static_cast<T>(0.6407202225497595548875186059951665936749e2L),
3668 tolerance);
3669 BOOST_CHECK_CLOSE(
3670 boost::math::tools::evaluate_even_polynomial(n13a, static_cast<T>(6.5f)),
3671 static_cast<T>(0.3403521961549553788009664398431777954102e20L),
3672 tolerance);
3673 BOOST_CHECK_CLOSE(
3674 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(0.125), 13),
3675 static_cast<T>(0.5388702877817484859997819034334309851175e1L),
3676 tolerance);
3677 BOOST_CHECK_CLOSE(
3678 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(0.25), 13),
3679 static_cast<T>(0.6860418493656212035602948162704706192017e1L),
3680 tolerance);
3681 BOOST_CHECK_CLOSE(
3682 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(0.75), 13),
3683 static_cast<T>(0.165119681585007782587126712314784526825e2L),
3684 tolerance);
3685 BOOST_CHECK_CLOSE(
3686 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(1.0f - 1.0f/64.0f), 13),
3687 static_cast<T>(0.6502554641775335160762093775188993967491e2L),
3688 tolerance);
3689 BOOST_CHECK_CLOSE(
3690 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(6.5f), 13),
3691 static_cast<T>(0.5236187633153159677245637536048889160156e19L),
3692 tolerance);
3693 BOOST_CHECK_CLOSE(
3694 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(0.125)),
3695 static_cast<T>(0.5388702877817484859997819034334309851175e1L),
3696 tolerance);
3697 BOOST_CHECK_CLOSE(
3698 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(0.25)),
3699 static_cast<T>(0.6860418493656212035602948162704706192017e1L),
3700 tolerance);
3701 BOOST_CHECK_CLOSE(
3702 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(0.75)),
3703 static_cast<T>(0.165119681585007782587126712314784526825e2L),
3704 tolerance);
3705 BOOST_CHECK_CLOSE(
3706 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(1.0f - 1.0f/64.0f)),
3707 static_cast<T>(0.6502554641775335160762093775188993967491e2L),
3708 tolerance);
3709 BOOST_CHECK_CLOSE(
3710 boost::math::tools::evaluate_odd_polynomial(n13c, static_cast<T>(6.5f)),
3711 static_cast<T>(0.5236187633153159677245637536048889160156e19L),
3712 tolerance);
3713 BOOST_CHECK_CLOSE(
3714 boost::math::tools::evaluate_odd_polynomial(n13a, static_cast<T>(0.125)),
3715 static_cast<T>(0.5388702877817484859997819034334309851175e1L),
3716 tolerance);
3717 BOOST_CHECK_CLOSE(
3718 boost::math::tools::evaluate_odd_polynomial(n13a, static_cast<T>(0.25)),
3719 static_cast<T>(0.6860418493656212035602948162704706192017e1L),
3720 tolerance);
3721 BOOST_CHECK_CLOSE(
3722 boost::math::tools::evaluate_odd_polynomial(n13a, static_cast<T>(0.75)),
3723 static_cast<T>(0.165119681585007782587126712314784526825e2L),
3724 tolerance);
3725 BOOST_CHECK_CLOSE(
3726 boost::math::tools::evaluate_odd_polynomial(n13a, static_cast<T>(1.0f - 1.0f/64.0f)),
3727 static_cast<T>(0.6502554641775335160762093775188993967491e2L),
3728 tolerance);
3729 BOOST_CHECK_CLOSE(
3730 boost::math::tools::evaluate_odd_polynomial(n13a, static_cast<T>(6.5f)),
3731 static_cast<T>(0.5236187633153159677245637536048889160156e19L),
3732 tolerance);
3733 //
3734 // Rational functions of order 12
3735 //
3736 static const U d13c[13] = { 4, 7, 1, 6, 11, 4, 9, 11, 1, 10, 1, 11, 12 };
3737 static const boost::array<U, 13> d13a = {{ 4, 7, 1, 6, 11, 4, 9, 11, 1, 10, 1, 11, 12 }};
3738 BOOST_CHECK_CLOSE(
3739 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(0.125), 13),
3740 static_cast<T>(0.1118537310443419140823936840990235560775e1L),
3741 tolerance);
3742 BOOST_CHECK_CLOSE(
3743 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(0.25), 13),
3744 static_cast<T>(0.12106743933208147312270004711488386001e1L),
3745 tolerance);
3746 BOOST_CHECK_CLOSE(
3747 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(0.75), 13),
3748 static_cast<T>(0.1042994706832119738384940706309786965245e1L),
3749 tolerance);
3750 BOOST_CHECK_CLOSE(
3751 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(1.0f - 1.0f/64.0f), 13),
3752 static_cast<T>(0.8849937505065081554917467830175954168154e0L),
3753 tolerance);
3754 BOOST_CHECK_CLOSE(
3755 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(6.5f), 13),
3756 static_cast<T>(0.1125049235146435310211414108934070096386e0L),
3757 tolerance);
3758 BOOST_CHECK_CLOSE(
3759 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(10247.25f), 13),
3760 static_cast<T>(0.8334214878002966556152610218152238753709e-1L),
3761 tolerance);
3762
3763 BOOST_CHECK_CLOSE(
3764 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(0.125)),
3765 static_cast<T>(0.1118537310443419140823936840990235560775e1L),
3766 tolerance);
3767 BOOST_CHECK_CLOSE(
3768 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(0.25)),
3769 static_cast<T>(0.12106743933208147312270004711488386001e1L),
3770 tolerance);
3771 BOOST_CHECK_CLOSE(
3772 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(0.75)),
3773 static_cast<T>(0.1042994706832119738384940706309786965245e1L),
3774 tolerance);
3775 BOOST_CHECK_CLOSE(
3776 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(1.0f - 1.0f/64.0f)),
3777 static_cast<T>(0.8849937505065081554917467830175954168154e0L),
3778 tolerance);
3779 BOOST_CHECK_CLOSE(
3780 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(6.5f)),
3781 static_cast<T>(0.1125049235146435310211414108934070096386e0L),
3782 tolerance);
3783 BOOST_CHECK_CLOSE(
3784 boost::math::tools::evaluate_rational(n13c, d13c, static_cast<T>(10247.25f)),
3785 static_cast<T>(0.8334214878002966556152610218152238753709e-1L),
3786 tolerance);
3787
3788 BOOST_CHECK_CLOSE(
3789 boost::math::tools::evaluate_rational(n13a, d13a, static_cast<T>(0.125)),
3790 static_cast<T>(0.1118537310443419140823936840990235560775e1L),
3791 tolerance);
3792 BOOST_CHECK_CLOSE(
3793 boost::math::tools::evaluate_rational(n13a, d13a, static_cast<T>(0.25)),
3794 static_cast<T>(0.12106743933208147312270004711488386001e1L),
3795 tolerance);
3796 BOOST_CHECK_CLOSE(
3797 boost::math::tools::evaluate_rational(n13a, d13a, static_cast<T>(0.75)),
3798 static_cast<T>(0.1042994706832119738384940706309786965245e1L),
3799 tolerance);
3800 BOOST_CHECK_CLOSE(
3801 boost::math::tools::evaluate_rational(n13a, d13a, static_cast<T>(1.0f - 1.0f/64.0f)),
3802 static_cast<T>(0.8849937505065081554917467830175954168154e0L),
3803 tolerance);
3804 BOOST_CHECK_CLOSE(
3805 boost::math::tools::evaluate_rational(n13a, d13a, static_cast<T>(6.5f)),
3806 static_cast<T>(0.1125049235146435310211414108934070096386e0L),
3807 tolerance);
3808 BOOST_CHECK_CLOSE(
3809 boost::math::tools::evaluate_rational(n13a, d13a, static_cast<T>(10247.25f)),
3810 static_cast<T>(0.8334214878002966556152610218152238753709e-1L),
3811 tolerance);
3812 }
3813 template <class T, class U>
3814 void do_test_spots13(T, U)
3815 {
3816 //
3817 // Tolerance is 4 eps expressed as a persentage:
3818 //
3819 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
3820
3821 //
3822 // Polynomials of order 13
3823 //
3824 static const U n14c[14] = { 5, 5, 3, 5, 12, 8, 10, 5, 5, 9, 2, 10, 3, 3 };
3825 static const boost::array<U, 14> n14a = {{ 5, 5, 3, 5, 12, 8, 10, 5, 5, 9, 2, 10, 3, 3 }};
3826 BOOST_CHECK_CLOSE(
3827 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(0.125), 14),
3828 static_cast<T>(0.5684855352437807596288621425628662109375e1L),
3829 tolerance);
3830 BOOST_CHECK_CLOSE(
3831 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(0.25), 14),
3832 static_cast<T>(0.657317422330379486083984375e1L),
3833 tolerance);
3834 BOOST_CHECK_CLOSE(
3835 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(0.75), 14),
3836 static_cast<T>(0.2256699807941913604736328125e2L),
3837 tolerance);
3838 BOOST_CHECK_CLOSE(
3839 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(1.0f - 1.0f/64.0f), 14),
3840 static_cast<T>(0.7710103154409585858207746641830426369713e2L),
3841 tolerance);
3842 BOOST_CHECK_CLOSE(
3843 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(6.5), 14),
3844 static_cast<T>(0.1372059025011920166015625e12L),
3845 tolerance);
3846 BOOST_CHECK_CLOSE(
3847 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(0.125)),
3848 static_cast<T>(0.5684855352437807596288621425628662109375e1L),
3849 tolerance);
3850 BOOST_CHECK_CLOSE(
3851 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(0.25)),
3852 static_cast<T>(0.657317422330379486083984375e1L),
3853 tolerance);
3854 BOOST_CHECK_CLOSE(
3855 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(0.75)),
3856 static_cast<T>(0.2256699807941913604736328125e2L),
3857 tolerance);
3858 BOOST_CHECK_CLOSE(
3859 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(1.0f - 1.0f/64.0f)),
3860 static_cast<T>(0.7710103154409585858207746641830426369713e2L),
3861 tolerance);
3862 BOOST_CHECK_CLOSE(
3863 boost::math::tools::evaluate_polynomial(n14c, static_cast<T>(6.5)),
3864 static_cast<T>(0.1372059025011920166015625e12L),
3865 tolerance);
3866 BOOST_CHECK_CLOSE(
3867 boost::math::tools::evaluate_polynomial(n14a, static_cast<T>(0.125)),
3868 static_cast<T>(0.5684855352437807596288621425628662109375e1L),
3869 tolerance);
3870 BOOST_CHECK_CLOSE(
3871 boost::math::tools::evaluate_polynomial(n14a, static_cast<T>(0.25)),
3872 static_cast<T>(0.657317422330379486083984375e1L),
3873 tolerance);
3874 BOOST_CHECK_CLOSE(
3875 boost::math::tools::evaluate_polynomial(n14a, static_cast<T>(0.75)),
3876 static_cast<T>(0.2256699807941913604736328125e2L),
3877 tolerance);
3878 BOOST_CHECK_CLOSE(
3879 boost::math::tools::evaluate_polynomial(n14a, static_cast<T>(1.0f - 1.0f/64.0f)),
3880 static_cast<T>(0.7710103154409585858207746641830426369713e2L),
3881 tolerance);
3882 BOOST_CHECK_CLOSE(
3883 boost::math::tools::evaluate_polynomial(n14a, static_cast<T>(6.5)),
3884 static_cast<T>(0.1372059025011920166015625e12L),
3885 tolerance);
3886 BOOST_CHECK_CLOSE(
3887 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(0.125), 14),
3888 static_cast<T>(0.5078877218214320312311861835604176527818e1L),
3889 tolerance);
3890 BOOST_CHECK_CLOSE(
3891 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(0.25), 14),
3892 static_cast<T>(0.5325630803958699699407475236512254923582e1L),
3893 tolerance);
3894 BOOST_CHECK_CLOSE(
3895 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(0.75), 14),
3896 static_cast<T>(0.1183906394403697492911931021808413788676e2L),
3897 tolerance);
3898 BOOST_CHECK_CLOSE(
3899 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(1.0f - 1.0f/64.0f), 14),
3900 static_cast<T>(0.7015764398304385537424317046920004042802e2L),
3901 tolerance);
3902 BOOST_CHECK_CLOSE(
3903 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(6.5f), 14),
3904 static_cast<T>(0.4205557544065332561152158209905028343201e22L),
3905 tolerance);
3906 BOOST_CHECK_CLOSE(
3907 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(0.125)),
3908 static_cast<T>(0.5078877218214320312311861835604176527818e1L),
3909 tolerance);
3910 BOOST_CHECK_CLOSE(
3911 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(0.25)),
3912 static_cast<T>(0.5325630803958699699407475236512254923582e1L),
3913 tolerance);
3914 BOOST_CHECK_CLOSE(
3915 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(0.75)),
3916 static_cast<T>(0.1183906394403697492911931021808413788676e2L),
3917 tolerance);
3918 BOOST_CHECK_CLOSE(
3919 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(1.0f - 1.0f/64.0f)),
3920 static_cast<T>(0.7015764398304385537424317046920004042802e2L),
3921 tolerance);
3922 BOOST_CHECK_CLOSE(
3923 boost::math::tools::evaluate_even_polynomial(n14c, static_cast<T>(6.5f)),
3924 static_cast<T>(0.4205557544065332561152158209905028343201e22L),
3925 tolerance);
3926 BOOST_CHECK_CLOSE(
3927 boost::math::tools::evaluate_even_polynomial(n14a, static_cast<T>(0.125)),
3928 static_cast<T>(0.5078877218214320312311861835604176527818e1L),
3929 tolerance);
3930 BOOST_CHECK_CLOSE(
3931 boost::math::tools::evaluate_even_polynomial(n14a, static_cast<T>(0.25)),
3932 static_cast<T>(0.5325630803958699699407475236512254923582e1L),
3933 tolerance);
3934 BOOST_CHECK_CLOSE(
3935 boost::math::tools::evaluate_even_polynomial(n14a, static_cast<T>(0.75)),
3936 static_cast<T>(0.1183906394403697492911931021808413788676e2L),
3937 tolerance);
3938 BOOST_CHECK_CLOSE(
3939 boost::math::tools::evaluate_even_polynomial(n14a, static_cast<T>(1.0f - 1.0f/64.0f)),
3940 static_cast<T>(0.7015764398304385537424317046920004042802e2L),
3941 tolerance);
3942 BOOST_CHECK_CLOSE(
3943 boost::math::tools::evaluate_even_polynomial(n14a, static_cast<T>(6.5f)),
3944 static_cast<T>(0.4205557544065332561152158209905028343201e22L),
3945 tolerance);
3946 BOOST_CHECK_CLOSE(
3947 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(0.125), 14),
3948 static_cast<T>(0.5631017745714562498494894684833412222547e1L),
3949 tolerance);
3950 BOOST_CHECK_CLOSE(
3951 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(0.25), 14),
3952 static_cast<T>(0.6302523215834798797629900946049019694328e1L),
3953 tolerance);
3954 BOOST_CHECK_CLOSE(
3955 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(0.75), 14),
3956 static_cast<T>(0.1411875192538263323882574695744551718235e2L),
3957 tolerance);
3958 BOOST_CHECK_CLOSE(
3959 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(1.0f - 1.0f/64.0f), 14),
3960 static_cast<T>(0.7119189230023502768177083984172702519672e2L),
3961 tolerance);
3962 BOOST_CHECK_CLOSE(
3963 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(6.5f), 14),
3964 static_cast<T>(0.6470088529331280863353320322930812835693e21L),
3965 tolerance);
3966 BOOST_CHECK_CLOSE(
3967 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(0.125)),
3968 static_cast<T>(0.5631017745714562498494894684833412222547e1L),
3969 tolerance);
3970 BOOST_CHECK_CLOSE(
3971 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(0.25)),
3972 static_cast<T>(0.6302523215834798797629900946049019694328e1L),
3973 tolerance);
3974 BOOST_CHECK_CLOSE(
3975 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(0.75)),
3976 static_cast<T>(0.1411875192538263323882574695744551718235e2L),
3977 tolerance);
3978 BOOST_CHECK_CLOSE(
3979 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(1.0f - 1.0f/64.0f)),
3980 static_cast<T>(0.7119189230023502768177083984172702519672e2L),
3981 tolerance);
3982 BOOST_CHECK_CLOSE(
3983 boost::math::tools::evaluate_odd_polynomial(n14c, static_cast<T>(6.5f)),
3984 static_cast<T>(0.6470088529331280863353320322930812835693e21L),
3985 tolerance);
3986 BOOST_CHECK_CLOSE(
3987 boost::math::tools::evaluate_odd_polynomial(n14a, static_cast<T>(0.125)),
3988 static_cast<T>(0.5631017745714562498494894684833412222547e1L),
3989 tolerance);
3990 BOOST_CHECK_CLOSE(
3991 boost::math::tools::evaluate_odd_polynomial(n14a, static_cast<T>(0.25)),
3992 static_cast<T>(0.6302523215834798797629900946049019694328e1L),
3993 tolerance);
3994 BOOST_CHECK_CLOSE(
3995 boost::math::tools::evaluate_odd_polynomial(n14a, static_cast<T>(0.75)),
3996 static_cast<T>(0.1411875192538263323882574695744551718235e2L),
3997 tolerance);
3998 BOOST_CHECK_CLOSE(
3999 boost::math::tools::evaluate_odd_polynomial(n14a, static_cast<T>(1.0f - 1.0f/64.0f)),
4000 static_cast<T>(0.7119189230023502768177083984172702519672e2L),
4001 tolerance);
4002 BOOST_CHECK_CLOSE(
4003 boost::math::tools::evaluate_odd_polynomial(n14a, static_cast<T>(6.5f)),
4004 static_cast<T>(0.6470088529331280863353320322930812835693e21L),
4005 tolerance);
4006 //
4007 // Rational functions of order 13
4008 //
4009 static const U d14c[14] = { 1, 2, 1, 8, 5, 8, 2, 11, 3, 6, 5, 9, 7, 10 };
4010 static const boost::array<U, 14> d14a = {{ 1, 2, 1, 8, 5, 8, 2, 11, 3, 6, 5, 9, 7, 10 }};
4011 BOOST_CHECK_CLOSE(
4012 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(0.125), 14),
4013 static_cast<T>(0.4431848049037056640776200482297774574883e1L),
4014 tolerance);
4015 BOOST_CHECK_CLOSE(
4016 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(0.25), 14),
4017 static_cast<T>(0.3830343514018902583833597521450902906851e1L),
4018 tolerance);
4019 BOOST_CHECK_CLOSE(
4020 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(0.75), 14),
4021 static_cast<T>(0.1657621200711495617835320787645038062003e1L),
4022 tolerance);
4023 BOOST_CHECK_CLOSE(
4024 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(1.0f - 1.0f/64.0f), 14),
4025 static_cast<T>(0.1117985091800992684003226640313705018678e1L),
4026 tolerance);
4027 BOOST_CHECK_CLOSE(
4028 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(6.5f), 14),
4029 static_cast<T>(0.3280672161259396135368350556553925507681e0L),
4030 tolerance);
4031 BOOST_CHECK_CLOSE(
4032 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(10247.25f), 14),
4033 static_cast<T>(0.3000087891957249835881866421118445480875e0L),
4034 tolerance);
4035
4036 BOOST_CHECK_CLOSE(
4037 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(0.125)),
4038 static_cast<T>(0.4431848049037056640776200482297774574883e1L),
4039 tolerance);
4040 BOOST_CHECK_CLOSE(
4041 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(0.25)),
4042 static_cast<T>(0.3830343514018902583833597521450902906851e1L),
4043 tolerance);
4044 BOOST_CHECK_CLOSE(
4045 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(0.75)),
4046 static_cast<T>(0.1657621200711495617835320787645038062003e1L),
4047 tolerance);
4048 BOOST_CHECK_CLOSE(
4049 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(1.0f - 1.0f/64.0f)),
4050 static_cast<T>(0.1117985091800992684003226640313705018678e1L),
4051 tolerance);
4052 BOOST_CHECK_CLOSE(
4053 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(6.5f)),
4054 static_cast<T>(0.3280672161259396135368350556553925507681e0L),
4055 tolerance);
4056 BOOST_CHECK_CLOSE(
4057 boost::math::tools::evaluate_rational(n14c, d14c, static_cast<T>(10247.25f)),
4058 static_cast<T>(0.3000087891957249835881866421118445480875e0L),
4059 tolerance);
4060
4061 BOOST_CHECK_CLOSE(
4062 boost::math::tools::evaluate_rational(n14a, d14a, static_cast<T>(0.125)),
4063 static_cast<T>(0.4431848049037056640776200482297774574883e1L),
4064 tolerance);
4065 BOOST_CHECK_CLOSE(
4066 boost::math::tools::evaluate_rational(n14a, d14a, static_cast<T>(0.25)),
4067 static_cast<T>(0.3830343514018902583833597521450902906851e1L),
4068 tolerance);
4069 BOOST_CHECK_CLOSE(
4070 boost::math::tools::evaluate_rational(n14a, d14a, static_cast<T>(0.75)),
4071 static_cast<T>(0.1657621200711495617835320787645038062003e1L),
4072 tolerance);
4073 BOOST_CHECK_CLOSE(
4074 boost::math::tools::evaluate_rational(n14a, d14a, static_cast<T>(1.0f - 1.0f/64.0f)),
4075 static_cast<T>(0.1117985091800992684003226640313705018678e1L),
4076 tolerance);
4077 BOOST_CHECK_CLOSE(
4078 boost::math::tools::evaluate_rational(n14a, d14a, static_cast<T>(6.5f)),
4079 static_cast<T>(0.3280672161259396135368350556553925507681e0L),
4080 tolerance);
4081 BOOST_CHECK_CLOSE(
4082 boost::math::tools::evaluate_rational(n14a, d14a, static_cast<T>(10247.25f)),
4083 static_cast<T>(0.3000087891957249835881866421118445480875e0L),
4084 tolerance);
4085 }
4086
4087 template <class T, class U>
4088 void do_test_spots14(T, U)
4089 {
4090 //
4091 // Tolerance is 4 eps expressed as a persentage:
4092 //
4093 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
4094
4095 //
4096 // Polynomials of order 14
4097 //
4098 static const U n15c[15] = { 6, 2, 10, 2, 4, 11, 4, 6, 5, 5, 10, 12, 8, 6, 2 };
4099 static const boost::array<U, 15> n15a = {{ 6, 2, 10, 2, 4, 11, 4, 6, 5, 5, 10, 12, 8, 6, 2 }};
4100 BOOST_CHECK_CLOSE(
4101 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(0.125), 15),
4102 static_cast<T>(0.6411486971785507193999364972114562988281e1L),
4103 tolerance);
4104 BOOST_CHECK_CLOSE(
4105 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(0.25), 15),
4106 static_cast<T>(0.7184068299829959869384765625e1L),
4107 tolerance);
4108 BOOST_CHECK_CLOSE(
4109 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(0.75), 15),
4110 static_cast<T>(0.21735079027712345123291015625e2L),
4111 tolerance);
4112 BOOST_CHECK_CLOSE(
4113 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(1.0f - 1.0f/64.0f), 15),
4114 static_cast<T>(0.8299984286646360949452954853655163780233e2L),
4115 tolerance);
4116 BOOST_CHECK_CLOSE(
4117 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(6.5), 15),
4118 static_cast<T>(0.7599432765217742919921875e12L),
4119 tolerance);
4120 BOOST_CHECK_CLOSE(
4121 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(0.125)),
4122 static_cast<T>(0.6411486971785507193999364972114562988281e1L),
4123 tolerance);
4124 BOOST_CHECK_CLOSE(
4125 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(0.25)),
4126 static_cast<T>(0.7184068299829959869384765625e1L),
4127 tolerance);
4128 BOOST_CHECK_CLOSE(
4129 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(0.75)),
4130 static_cast<T>(0.21735079027712345123291015625e2L),
4131 tolerance);
4132 BOOST_CHECK_CLOSE(
4133 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(1.0f - 1.0f/64.0f)),
4134 static_cast<T>(0.8299984286646360949452954853655163780233e2L),
4135 tolerance);
4136 BOOST_CHECK_CLOSE(
4137 boost::math::tools::evaluate_polynomial(n15c, static_cast<T>(6.5)),
4138 static_cast<T>(0.7599432765217742919921875e12L),
4139 tolerance);
4140 BOOST_CHECK_CLOSE(
4141 boost::math::tools::evaluate_polynomial(n15a, static_cast<T>(0.125)),
4142 static_cast<T>(0.6411486971785507193999364972114562988281e1L),
4143 tolerance);
4144 BOOST_CHECK_CLOSE(
4145 boost::math::tools::evaluate_polynomial(n15a, static_cast<T>(0.25)),
4146 static_cast<T>(0.7184068299829959869384765625e1L),
4147 tolerance);
4148 BOOST_CHECK_CLOSE(
4149 boost::math::tools::evaluate_polynomial(n15a, static_cast<T>(0.75)),
4150 static_cast<T>(0.21735079027712345123291015625e2L),
4151 tolerance);
4152 BOOST_CHECK_CLOSE(
4153 boost::math::tools::evaluate_polynomial(n15a, static_cast<T>(1.0f - 1.0f/64.0f)),
4154 static_cast<T>(0.8299984286646360949452954853655163780233e2L),
4155 tolerance);
4156 BOOST_CHECK_CLOSE(
4157 boost::math::tools::evaluate_polynomial(n15a, static_cast<T>(6.5)),
4158 static_cast<T>(0.7599432765217742919921875e12L),
4159 tolerance);
4160 BOOST_CHECK_CLOSE(
4161 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(0.125), 15),
4162 static_cast<T>(0.603369928436724862526100235763586452224e1L),
4163 tolerance);
4164 BOOST_CHECK_CLOSE(
4165 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(0.25), 15),
4166 static_cast<T>(0.6164622568840771005271861326946236658841e1L),
4167 tolerance);
4168 BOOST_CHECK_CLOSE(
4169 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(0.75), 15),
4170 static_cast<T>(0.1204200081304656236302896843426424311474e2L),
4171 tolerance);
4172 BOOST_CHECK_CLOSE(
4173 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(1.0f - 1.0f/64.0f), 15),
4174 static_cast<T>(0.7438435296991670658675730793779505088179e2L),
4175 tolerance);
4176 BOOST_CHECK_CLOSE(
4177 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(6.5f), 15),
4178 static_cast<T>(0.123975649339443727300884144392229616642e24L),
4179 tolerance);
4180 BOOST_CHECK_CLOSE(
4181 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(0.125)),
4182 static_cast<T>(0.603369928436724862526100235763586452224e1L),
4183 tolerance);
4184 BOOST_CHECK_CLOSE(
4185 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(0.25)),
4186 static_cast<T>(0.6164622568840771005271861326946236658841e1L),
4187 tolerance);
4188 BOOST_CHECK_CLOSE(
4189 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(0.75)),
4190 static_cast<T>(0.1204200081304656236302896843426424311474e2L),
4191 tolerance);
4192 BOOST_CHECK_CLOSE(
4193 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(1.0f - 1.0f/64.0f)),
4194 static_cast<T>(0.7438435296991670658675730793779505088179e2L),
4195 tolerance);
4196 BOOST_CHECK_CLOSE(
4197 boost::math::tools::evaluate_even_polynomial(n15c, static_cast<T>(6.5f)),
4198 static_cast<T>(0.123975649339443727300884144392229616642e24L),
4199 tolerance);
4200 BOOST_CHECK_CLOSE(
4201 boost::math::tools::evaluate_even_polynomial(n15a, static_cast<T>(0.125)),
4202 static_cast<T>(0.603369928436724862526100235763586452224e1L),
4203 tolerance);
4204 BOOST_CHECK_CLOSE(
4205 boost::math::tools::evaluate_even_polynomial(n15a, static_cast<T>(0.25)),
4206 static_cast<T>(0.6164622568840771005271861326946236658841e1L),
4207 tolerance);
4208 BOOST_CHECK_CLOSE(
4209 boost::math::tools::evaluate_even_polynomial(n15a, static_cast<T>(0.75)),
4210 static_cast<T>(0.1204200081304656236302896843426424311474e2L),
4211 tolerance);
4212 BOOST_CHECK_CLOSE(
4213 boost::math::tools::evaluate_even_polynomial(n15a, static_cast<T>(1.0f - 1.0f/64.0f)),
4214 static_cast<T>(0.7438435296991670658675730793779505088179e2L),
4215 tolerance);
4216 BOOST_CHECK_CLOSE(
4217 boost::math::tools::evaluate_even_polynomial(n15a, static_cast<T>(6.5f)),
4218 static_cast<T>(0.123975649339443727300884144392229616642e24L),
4219 tolerance);
4220 BOOST_CHECK_CLOSE(
4221 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(0.125), 15),
4222 static_cast<T>(0.6269594274937989002088018861086916177919e1L),
4223 tolerance);
4224 BOOST_CHECK_CLOSE(
4225 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(0.25), 15),
4226 static_cast<T>(0.6658490275363084021087445307784946635365e1L),
4227 tolerance);
4228 BOOST_CHECK_CLOSE(
4229 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(0.75), 15),
4230 static_cast<T>(0.1405600108406208315070529124568565748632e2L),
4231 tolerance);
4232 BOOST_CHECK_CLOSE(
4233 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(1.0f - 1.0f/64.0f), 15),
4234 static_cast<T>(0.7546981889007411462781694774633148026087e2L),
4235 tolerance);
4236 BOOST_CHECK_CLOSE(
4237 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(6.5f), 15),
4238 static_cast<T>(0.1907317682145288112321802221418917179108e23L),
4239 tolerance);
4240 BOOST_CHECK_CLOSE(
4241 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(0.125)),
4242 static_cast<T>(0.6269594274937989002088018861086916177919e1L),
4243 tolerance);
4244 BOOST_CHECK_CLOSE(
4245 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(0.25)),
4246 static_cast<T>(0.6658490275363084021087445307784946635365e1L),
4247 tolerance);
4248 BOOST_CHECK_CLOSE(
4249 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(0.75)),
4250 static_cast<T>(0.1405600108406208315070529124568565748632e2L),
4251 tolerance);
4252 BOOST_CHECK_CLOSE(
4253 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(1.0f - 1.0f/64.0f)),
4254 static_cast<T>(0.7546981889007411462781694774633148026087e2L),
4255 tolerance);
4256 BOOST_CHECK_CLOSE(
4257 boost::math::tools::evaluate_odd_polynomial(n15c, static_cast<T>(6.5f)),
4258 static_cast<T>(0.1907317682145288112321802221418917179108e23L),
4259 tolerance);
4260 BOOST_CHECK_CLOSE(
4261 boost::math::tools::evaluate_odd_polynomial(n15a, static_cast<T>(0.125)),
4262 static_cast<T>(0.6269594274937989002088018861086916177919e1L),
4263 tolerance);
4264 BOOST_CHECK_CLOSE(
4265 boost::math::tools::evaluate_odd_polynomial(n15a, static_cast<T>(0.25)),
4266 static_cast<T>(0.6658490275363084021087445307784946635365e1L),
4267 tolerance);
4268 BOOST_CHECK_CLOSE(
4269 boost::math::tools::evaluate_odd_polynomial(n15a, static_cast<T>(0.75)),
4270 static_cast<T>(0.1405600108406208315070529124568565748632e2L),
4271 tolerance);
4272 BOOST_CHECK_CLOSE(
4273 boost::math::tools::evaluate_odd_polynomial(n15a, static_cast<T>(1.0f - 1.0f/64.0f)),
4274 static_cast<T>(0.7546981889007411462781694774633148026087e2L),
4275 tolerance);
4276 BOOST_CHECK_CLOSE(
4277 boost::math::tools::evaluate_odd_polynomial(n15a, static_cast<T>(6.5f)),
4278 static_cast<T>(0.1907317682145288112321802221418917179108e23L),
4279 tolerance);
4280 //
4281 // Rational functions of order 14
4282 //
4283 static const U d15c[15] = { 7, 10, 7, 1, 10, 11, 11, 10, 7, 1, 10, 9, 8, 2, 3 };
4284 static const boost::array<U, 15> d15a = {{ 7, 10, 7, 1, 10, 11, 11, 10, 7, 1, 10, 9, 8, 2, 3 }};
4285 BOOST_CHECK_CLOSE(
4286 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(0.125), 15),
4287 static_cast<T>(0.7665435387801205084357966990293734431712e0L),
4288 tolerance);
4289 BOOST_CHECK_CLOSE(
4290 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(0.25), 15),
4291 static_cast<T>(0.7179510450452743437979498898508621162489e0L),
4292 tolerance);
4293 BOOST_CHECK_CLOSE(
4294 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(0.75), 15),
4295 static_cast<T>(0.7245051156202447814210400449367214490615e0L),
4296 tolerance);
4297 BOOST_CHECK_CLOSE(
4298 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(1.0f - 1.0f/64.0f), 15),
4299 static_cast<T>(0.8564567127146107292325365412425895512358e0L),
4300 tolerance);
4301 BOOST_CHECK_CLOSE(
4302 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(6.5f), 15),
4303 static_cast<T>(0.8943937154363365123476971638815814742919e0L),
4304 tolerance);
4305 BOOST_CHECK_CLOSE(
4306 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(10247.25f), 15),
4307 static_cast<T>(0.6668184674989563469735607034881326982176e0L),
4308 tolerance);
4309
4310 BOOST_CHECK_CLOSE(
4311 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(0.125)),
4312 static_cast<T>(0.7665435387801205084357966990293734431712e0L),
4313 tolerance);
4314 BOOST_CHECK_CLOSE(
4315 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(0.25)),
4316 static_cast<T>(0.7179510450452743437979498898508621162489e0L),
4317 tolerance);
4318 BOOST_CHECK_CLOSE(
4319 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(0.75)),
4320 static_cast<T>(0.7245051156202447814210400449367214490615e0L),
4321 tolerance);
4322 BOOST_CHECK_CLOSE(
4323 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(1.0f - 1.0f/64.0f)),
4324 static_cast<T>(0.8564567127146107292325365412425895512358e0L),
4325 tolerance);
4326 BOOST_CHECK_CLOSE(
4327 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(6.5f)),
4328 static_cast<T>(0.8943937154363365123476971638815814742919e0L),
4329 tolerance);
4330 BOOST_CHECK_CLOSE(
4331 boost::math::tools::evaluate_rational(n15c, d15c, static_cast<T>(10247.25f)),
4332 static_cast<T>(0.6668184674989563469735607034881326982176e0L),
4333 tolerance);
4334
4335 BOOST_CHECK_CLOSE(
4336 boost::math::tools::evaluate_rational(n15a, d15a, static_cast<T>(0.125)),
4337 static_cast<T>(0.7665435387801205084357966990293734431712e0L),
4338 tolerance);
4339 BOOST_CHECK_CLOSE(
4340 boost::math::tools::evaluate_rational(n15a, d15a, static_cast<T>(0.25)),
4341 static_cast<T>(0.7179510450452743437979498898508621162489e0L),
4342 tolerance);
4343 BOOST_CHECK_CLOSE(
4344 boost::math::tools::evaluate_rational(n15a, d15a, static_cast<T>(0.75)),
4345 static_cast<T>(0.7245051156202447814210400449367214490615e0L),
4346 tolerance);
4347 BOOST_CHECK_CLOSE(
4348 boost::math::tools::evaluate_rational(n15a, d15a, static_cast<T>(1.0f - 1.0f/64.0f)),
4349 static_cast<T>(0.8564567127146107292325365412425895512358e0L),
4350 tolerance);
4351 BOOST_CHECK_CLOSE(
4352 boost::math::tools::evaluate_rational(n15a, d15a, static_cast<T>(6.5f)),
4353 static_cast<T>(0.8943937154363365123476971638815814742919e0L),
4354 tolerance);
4355 BOOST_CHECK_CLOSE(
4356 boost::math::tools::evaluate_rational(n15a, d15a, static_cast<T>(10247.25f)),
4357 static_cast<T>(0.6668184674989563469735607034881326982176e0L),
4358 tolerance);
4359 }
4360
4361 template <class T, class U>
4362 void do_test_spots15(T, U)
4363 {
4364 //
4365 // Tolerance is 4 eps expressed as a persentage:
4366 //
4367 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
4368
4369 //
4370 // Polynomials of order 15
4371 //
4372 static const U n16c[16] = { 5, 3, 4, 6, 7, 9, 7, 6, 12, 12, 7, 12, 10, 3, 6, 2 };
4373 static const boost::array<U, 16> n16a = {{ 5, 3, 4, 6, 7, 9, 7, 6, 12, 12, 7, 12, 10, 3, 6, 2 }};
4374 BOOST_CHECK_CLOSE(
4375 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(0.125), 16),
4376 static_cast<T>(0.545123276921327715172083117067813873291e1L),
4377 tolerance);
4378 BOOST_CHECK_CLOSE(
4379 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(0.25), 16),
4380 static_cast<T>(0.613219709135591983795166015625e1L),
4381 tolerance);
4382 BOOST_CHECK_CLOSE(
4383 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(0.75), 16),
4384 static_cast<T>(0.2195364624075591564178466796875e2L),
4385 tolerance);
4386 BOOST_CHECK_CLOSE(
4387 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(1.0f - 1.0f/64.0f), 16),
4388 static_cast<T>(0.9836568924934260045838041177111855604603e2L),
4389 tolerance);
4390 BOOST_CHECK_CLOSE(
4391 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(6.5), 16),
4392 static_cast<T>(0.474557924297607818603515625e13L),
4393 tolerance);
4394 BOOST_CHECK_CLOSE(
4395 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(0.125)),
4396 static_cast<T>(0.545123276921327715172083117067813873291e1L),
4397 tolerance);
4398 BOOST_CHECK_CLOSE(
4399 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(0.25)),
4400 static_cast<T>(0.613219709135591983795166015625e1L),
4401 tolerance);
4402 BOOST_CHECK_CLOSE(
4403 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(0.75)),
4404 static_cast<T>(0.2195364624075591564178466796875e2L),
4405 tolerance);
4406 BOOST_CHECK_CLOSE(
4407 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(1.0f - 1.0f/64.0f)),
4408 static_cast<T>(0.9836568924934260045838041177111855604603e2L),
4409 tolerance);
4410 BOOST_CHECK_CLOSE(
4411 boost::math::tools::evaluate_polynomial(n16c, static_cast<T>(6.5)),
4412 static_cast<T>(0.474557924297607818603515625e13L),
4413 tolerance);
4414 BOOST_CHECK_CLOSE(
4415 boost::math::tools::evaluate_polynomial(n16a, static_cast<T>(0.125)),
4416 static_cast<T>(0.545123276921327715172083117067813873291e1L),
4417 tolerance);
4418 BOOST_CHECK_CLOSE(
4419 boost::math::tools::evaluate_polynomial(n16a, static_cast<T>(0.25)),
4420 static_cast<T>(0.613219709135591983795166015625e1L),
4421 tolerance);
4422 BOOST_CHECK_CLOSE(
4423 boost::math::tools::evaluate_polynomial(n16a, static_cast<T>(0.75)),
4424 static_cast<T>(0.2195364624075591564178466796875e2L),
4425 tolerance);
4426 BOOST_CHECK_CLOSE(
4427 boost::math::tools::evaluate_polynomial(n16a, static_cast<T>(1.0f - 1.0f/64.0f)),
4428 static_cast<T>(0.9836568924934260045838041177111855604603e2L),
4429 tolerance);
4430 BOOST_CHECK_CLOSE(
4431 boost::math::tools::evaluate_polynomial(n16a, static_cast<T>(6.5)),
4432 static_cast<T>(0.474557924297607818603515625e13L),
4433 tolerance);
4434 BOOST_CHECK_CLOSE(
4435 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(0.125), 16),
4436 static_cast<T>(0.5047874876401281302859159688868887179229e1L),
4437 tolerance);
4438 BOOST_CHECK_CLOSE(
4439 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(0.25), 16),
4440 static_cast<T>(0.5204705680902215943553490440365294489311e1L),
4441 tolerance);
4442 BOOST_CHECK_CLOSE(
4443 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(0.75), 16),
4444 static_cast<T>(0.1080276729363941941482185615797106947866e2L),
4445 tolerance);
4446 BOOST_CHECK_CLOSE(
4447 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(1.0f - 1.0f/64.0f), 16),
4448 static_cast<T>(0.8750139513999183433264859554731006794881e2L),
4449 tolerance);
4450 BOOST_CHECK_CLOSE(
4451 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(6.5f), 16),
4452 static_cast<T>(0.5231073382834479254225049897383445873857e25L),
4453 tolerance);
4454 BOOST_CHECK_CLOSE(
4455 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(0.125)),
4456 static_cast<T>(0.5047874876401281302859159688868887179229e1L),
4457 tolerance);
4458 BOOST_CHECK_CLOSE(
4459 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(0.25)),
4460 static_cast<T>(0.5204705680902215943553490440365294489311e1L),
4461 tolerance);
4462 BOOST_CHECK_CLOSE(
4463 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(0.75)),
4464 static_cast<T>(0.1080276729363941941482185615797106947866e2L),
4465 tolerance);
4466 BOOST_CHECK_CLOSE(
4467 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(1.0f - 1.0f/64.0f)),
4468 static_cast<T>(0.8750139513999183433264859554731006794881e2L),
4469 tolerance);
4470 BOOST_CHECK_CLOSE(
4471 boost::math::tools::evaluate_even_polynomial(n16c, static_cast<T>(6.5f)),
4472 static_cast<T>(0.5231073382834479254225049897383445873857e25L),
4473 tolerance);
4474 BOOST_CHECK_CLOSE(
4475 boost::math::tools::evaluate_even_polynomial(n16a, static_cast<T>(0.125)),
4476 static_cast<T>(0.5047874876401281302859159688868887179229e1L),
4477 tolerance);
4478 BOOST_CHECK_CLOSE(
4479 boost::math::tools::evaluate_even_polynomial(n16a, static_cast<T>(0.25)),
4480 static_cast<T>(0.5204705680902215943553490440365294489311e1L),
4481 tolerance);
4482 BOOST_CHECK_CLOSE(
4483 boost::math::tools::evaluate_even_polynomial(n16a, static_cast<T>(0.75)),
4484 static_cast<T>(0.1080276729363941941482185615797106947866e2L),
4485 tolerance);
4486 BOOST_CHECK_CLOSE(
4487 boost::math::tools::evaluate_even_polynomial(n16a, static_cast<T>(1.0f - 1.0f/64.0f)),
4488 static_cast<T>(0.8750139513999183433264859554731006794881e2L),
4489 tolerance);
4490 BOOST_CHECK_CLOSE(
4491 boost::math::tools::evaluate_even_polynomial(n16a, static_cast<T>(6.5f)),
4492 static_cast<T>(0.5231073382834479254225049897383445873857e25L),
4493 tolerance);
4494 BOOST_CHECK_CLOSE(
4495 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(0.125), 16),
4496 static_cast<T>(0.5382999011210250422873277510951097433836e1L),
4497 tolerance);
4498 BOOST_CHECK_CLOSE(
4499 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(0.25), 16),
4500 static_cast<T>(0.5818822723608863774213961761461177957244e1L),
4501 tolerance);
4502 BOOST_CHECK_CLOSE(
4503 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(0.75), 16),
4504 static_cast<T>(0.1273702305818589255309580821062809263822e2L),
4505 tolerance);
4506 BOOST_CHECK_CLOSE(
4507 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(1.0f - 1.0f/64.0f), 16),
4508 static_cast<T>(0.8881094109459487932205571611155308490038e2L),
4509 tolerance);
4510 BOOST_CHECK_CLOSE(
4511 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(6.5f), 16),
4512 static_cast<T>(0.8047805204360737314192426765205301344395e24L),
4513 tolerance);
4514 BOOST_CHECK_CLOSE(
4515 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(0.125)),
4516 static_cast<T>(0.5382999011210250422873277510951097433836e1L),
4517 tolerance);
4518 BOOST_CHECK_CLOSE(
4519 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(0.25)),
4520 static_cast<T>(0.5818822723608863774213961761461177957244e1L),
4521 tolerance);
4522 BOOST_CHECK_CLOSE(
4523 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(0.75)),
4524 static_cast<T>(0.1273702305818589255309580821062809263822e2L),
4525 tolerance);
4526 BOOST_CHECK_CLOSE(
4527 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(1.0f - 1.0f/64.0f)),
4528 static_cast<T>(0.8881094109459487932205571611155308490038e2L),
4529 tolerance);
4530 BOOST_CHECK_CLOSE(
4531 boost::math::tools::evaluate_odd_polynomial(n16c, static_cast<T>(6.5f)),
4532 static_cast<T>(0.8047805204360737314192426765205301344395e24L),
4533 tolerance);
4534 BOOST_CHECK_CLOSE(
4535 boost::math::tools::evaluate_odd_polynomial(n16a, static_cast<T>(0.125)),
4536 static_cast<T>(0.5382999011210250422873277510951097433836e1L),
4537 tolerance);
4538 BOOST_CHECK_CLOSE(
4539 boost::math::tools::evaluate_odd_polynomial(n16a, static_cast<T>(0.25)),
4540 static_cast<T>(0.5818822723608863774213961761461177957244e1L),
4541 tolerance);
4542 BOOST_CHECK_CLOSE(
4543 boost::math::tools::evaluate_odd_polynomial(n16a, static_cast<T>(0.75)),
4544 static_cast<T>(0.1273702305818589255309580821062809263822e2L),
4545 tolerance);
4546 BOOST_CHECK_CLOSE(
4547 boost::math::tools::evaluate_odd_polynomial(n16a, static_cast<T>(1.0f - 1.0f/64.0f)),
4548 static_cast<T>(0.8881094109459487932205571611155308490038e2L),
4549 tolerance);
4550 BOOST_CHECK_CLOSE(
4551 boost::math::tools::evaluate_odd_polynomial(n16a, static_cast<T>(6.5f)),
4552 static_cast<T>(0.8047805204360737314192426765205301344395e24L),
4553 tolerance);
4554 //
4555 // Rational functions of order 15
4556 //
4557 static const U d16c[16] = { 9, 5, 2, 4, 4, 12, 11, 5, 1, 4, 1, 7, 9, 6, 6, 10 };
4558 static const boost::array<U, 16> d16a = {{ 9, 5, 2, 4, 4, 12, 11, 5, 1, 4, 1, 7, 9, 6, 6, 10 }};
4559 BOOST_CHECK_CLOSE(
4560 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(0.125), 16),
4561 static_cast<T>(0.5639916333371058636233240074655101514789e0L),
4562 tolerance);
4563 BOOST_CHECK_CLOSE(
4564 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(0.25), 16),
4565 static_cast<T>(0.5858114501425065583332351775671440891069e0L),
4566 tolerance);
4567 BOOST_CHECK_CLOSE(
4568 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(0.75), 16),
4569 static_cast<T>(0.9254727283150680371198227978127749853934e0L),
4570 tolerance);
4571 BOOST_CHECK_CLOSE(
4572 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(1.0f - 1.0f/64.0f), 16),
4573 static_cast<T>(0.1155192269792597191440811772688208898465e1L),
4574 tolerance);
4575 BOOST_CHECK_CLOSE(
4576 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(6.5f), 16),
4577 static_cast<T>(0.2736469218296852258039959401695110274611e0L),
4578 tolerance);
4579 BOOST_CHECK_CLOSE(
4580 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(10247.25f), 16),
4581 static_cast<T>(0.2000468408076577399196121638600795513365e0L),
4582 tolerance);
4583
4584 BOOST_CHECK_CLOSE(
4585 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(0.125)),
4586 static_cast<T>(0.5639916333371058636233240074655101514789e0L),
4587 tolerance);
4588 BOOST_CHECK_CLOSE(
4589 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(0.25)),
4590 static_cast<T>(0.5858114501425065583332351775671440891069e0L),
4591 tolerance);
4592 BOOST_CHECK_CLOSE(
4593 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(0.75)),
4594 static_cast<T>(0.9254727283150680371198227978127749853934e0L),
4595 tolerance);
4596 BOOST_CHECK_CLOSE(
4597 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(1.0f - 1.0f/64.0f)),
4598 static_cast<T>(0.1155192269792597191440811772688208898465e1L),
4599 tolerance);
4600 BOOST_CHECK_CLOSE(
4601 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(6.5f)),
4602 static_cast<T>(0.2736469218296852258039959401695110274611e0L),
4603 tolerance);
4604 BOOST_CHECK_CLOSE(
4605 boost::math::tools::evaluate_rational(n16c, d16c, static_cast<T>(10247.25f)),
4606 static_cast<T>(0.2000468408076577399196121638600795513365e0L),
4607 tolerance);
4608
4609 BOOST_CHECK_CLOSE(
4610 boost::math::tools::evaluate_rational(n16a, d16a, static_cast<T>(0.125)),
4611 static_cast<T>(0.5639916333371058636233240074655101514789e0L),
4612 tolerance);
4613 BOOST_CHECK_CLOSE(
4614 boost::math::tools::evaluate_rational(n16a, d16a, static_cast<T>(0.25)),
4615 static_cast<T>(0.5858114501425065583332351775671440891069e0L),
4616 tolerance);
4617 BOOST_CHECK_CLOSE(
4618 boost::math::tools::evaluate_rational(n16a, d16a, static_cast<T>(0.75)),
4619 static_cast<T>(0.9254727283150680371198227978127749853934e0L),
4620 tolerance);
4621 BOOST_CHECK_CLOSE(
4622 boost::math::tools::evaluate_rational(n16a, d16a, static_cast<T>(1.0f - 1.0f/64.0f)),
4623 static_cast<T>(0.1155192269792597191440811772688208898465e1L),
4624 tolerance);
4625 BOOST_CHECK_CLOSE(
4626 boost::math::tools::evaluate_rational(n16a, d16a, static_cast<T>(6.5f)),
4627 static_cast<T>(0.2736469218296852258039959401695110274611e0L),
4628 tolerance);
4629 BOOST_CHECK_CLOSE(
4630 boost::math::tools::evaluate_rational(n16a, d16a, static_cast<T>(10247.25f)),
4631 static_cast<T>(0.2000468408076577399196121638600795513365e0L),
4632 tolerance);
4633 }
4634
4635 template <class T, class U>
4636 void do_test_spots16(T, U)
4637 {
4638 //
4639 // Tolerance is 4 eps expressed as a persentage:
4640 //
4641 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
4642
4643 //
4644 // Polynomials of order 16
4645 //
4646 static const U n17c[17] = { 9, 6, 11, 2, 9, 10, 6, 3, 3, 3, 4, 9, 10, 2, 3, 2, 2 };
4647 static const boost::array<U, 17> n17a = {{ 9, 6, 11, 2, 9, 10, 6, 3, 3, 3, 4, 9, 10, 2, 3, 2, 2 }};
4648 BOOST_CHECK_CLOSE(
4649 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(0.125), 17),
4650 static_cast<T>(0.9928308216189925872185995103791356086731e1L),
4651 tolerance);
4652 BOOST_CHECK_CLOSE(
4653 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(0.25), 17),
4654 static_cast<T>(0.112653836444951593875885009765625e2L),
4655 tolerance);
4656 BOOST_CHECK_CLOSE(
4657 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(0.75), 17),
4658 static_cast<T>(0.288157429718412458896636962890625e2L),
4659 tolerance);
4660 BOOST_CHECK_CLOSE(
4661 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(1.0f - 1.0f/64.0f), 17),
4662 static_cast<T>(0.8499409476622319741012411965028222548509e2L),
4663 tolerance);
4664 BOOST_CHECK_CLOSE(
4665 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(6.5), 17),
4666 static_cast<T>(0.24291309657542805938720703125e14L),
4667 tolerance);
4668 BOOST_CHECK_CLOSE(
4669 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(0.125)),
4670 static_cast<T>(0.9928308216189925872185995103791356086731e1L),
4671 tolerance);
4672 BOOST_CHECK_CLOSE(
4673 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(0.25)),
4674 static_cast<T>(0.112653836444951593875885009765625e2L),
4675 tolerance);
4676 BOOST_CHECK_CLOSE(
4677 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(0.75)),
4678 static_cast<T>(0.288157429718412458896636962890625e2L),
4679 tolerance);
4680 BOOST_CHECK_CLOSE(
4681 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(1.0f - 1.0f/64.0f)),
4682 static_cast<T>(0.8499409476622319741012411965028222548509e2L),
4683 tolerance);
4684 BOOST_CHECK_CLOSE(
4685 boost::math::tools::evaluate_polynomial(n17c, static_cast<T>(6.5)),
4686 static_cast<T>(0.24291309657542805938720703125e14L),
4687 tolerance);
4688 BOOST_CHECK_CLOSE(
4689 boost::math::tools::evaluate_polynomial(n17a, static_cast<T>(0.125)),
4690 static_cast<T>(0.9928308216189925872185995103791356086731e1L),
4691 tolerance);
4692 BOOST_CHECK_CLOSE(
4693 boost::math::tools::evaluate_polynomial(n17a, static_cast<T>(0.25)),
4694 static_cast<T>(0.112653836444951593875885009765625e2L),
4695 tolerance);
4696 BOOST_CHECK_CLOSE(
4697 boost::math::tools::evaluate_polynomial(n17a, static_cast<T>(0.75)),
4698 static_cast<T>(0.288157429718412458896636962890625e2L),
4699 tolerance);
4700 BOOST_CHECK_CLOSE(
4701 boost::math::tools::evaluate_polynomial(n17a, static_cast<T>(1.0f - 1.0f/64.0f)),
4702 static_cast<T>(0.8499409476622319741012411965028222548509e2L),
4703 tolerance);
4704 BOOST_CHECK_CLOSE(
4705 boost::math::tools::evaluate_polynomial(n17a, static_cast<T>(6.5)),
4706 static_cast<T>(0.24291309657542805938720703125e14L),
4707 tolerance);
4708 BOOST_CHECK_CLOSE(
4709 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(0.125), 17),
4710 static_cast<T>(0.9096443722112564415334975111453014308977e1L),
4711 tolerance);
4712 BOOST_CHECK_CLOSE(
4713 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(0.25), 17),
4714 static_cast<T>(0.9418604266644799371155545586464796770088e1L),
4715 tolerance);
4716 BOOST_CHECK_CLOSE(
4717 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(0.75), 17),
4718 static_cast<T>(0.1800748238050061998856161277204890325265e2L),
4719 tolerance);
4720 BOOST_CHECK_CLOSE(
4721 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(1.0f - 1.0f/64.0f), 17),
4722 static_cast<T>(0.7725414891276907880696219594586980069116e2L),
4723 tolerance);
4724 BOOST_CHECK_CLOSE(
4725 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(6.5f), 17),
4726 static_cast<T>(0.2112416072820759278619692697965107844211e27L),
4727 tolerance);
4728 BOOST_CHECK_CLOSE(
4729 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(0.125)),
4730 static_cast<T>(0.9096443722112564415334975111453014308977e1L),
4731 tolerance);
4732 BOOST_CHECK_CLOSE(
4733 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(0.25)),
4734 static_cast<T>(0.9418604266644799371155545586464796770088e1L),
4735 tolerance);
4736 BOOST_CHECK_CLOSE(
4737 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(0.75)),
4738 static_cast<T>(0.1800748238050061998856161277204890325265e2L),
4739 tolerance);
4740 BOOST_CHECK_CLOSE(
4741 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(1.0f - 1.0f/64.0f)),
4742 static_cast<T>(0.7725414891276907880696219594586980069116e2L),
4743 tolerance);
4744 BOOST_CHECK_CLOSE(
4745 boost::math::tools::evaluate_even_polynomial(n17c, static_cast<T>(6.5f)),
4746 static_cast<T>(0.2112416072820759278619692697965107844211e27L),
4747 tolerance);
4748 BOOST_CHECK_CLOSE(
4749 boost::math::tools::evaluate_even_polynomial(n17a, static_cast<T>(0.125)),
4750 static_cast<T>(0.9096443722112564415334975111453014308977e1L),
4751 tolerance);
4752 BOOST_CHECK_CLOSE(
4753 boost::math::tools::evaluate_even_polynomial(n17a, static_cast<T>(0.25)),
4754 static_cast<T>(0.9418604266644799371155545586464796770088e1L),
4755 tolerance);
4756 BOOST_CHECK_CLOSE(
4757 boost::math::tools::evaluate_even_polynomial(n17a, static_cast<T>(0.75)),
4758 static_cast<T>(0.1800748238050061998856161277204890325265e2L),
4759 tolerance);
4760 BOOST_CHECK_CLOSE(
4761 boost::math::tools::evaluate_even_polynomial(n17a, static_cast<T>(1.0f - 1.0f/64.0f)),
4762 static_cast<T>(0.7725414891276907880696219594586980069116e2L),
4763 tolerance);
4764 BOOST_CHECK_CLOSE(
4765 boost::math::tools::evaluate_even_polynomial(n17a, static_cast<T>(6.5f)),
4766 static_cast<T>(0.2112416072820759278619692697965107844211e27L),
4767 tolerance);
4768 BOOST_CHECK_CLOSE(
4769 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(0.125), 17),
4770 static_cast<T>(0.9771549776900515322679800891624114471814e1L),
4771 tolerance);
4772 BOOST_CHECK_CLOSE(
4773 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(0.25), 17),
4774 static_cast<T>(0.1067441706657919748462218234585918708035e2L),
4775 tolerance);
4776 BOOST_CHECK_CLOSE(
4777 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(0.75), 17),
4778 static_cast<T>(0.210099765073341599847488170293985376702e2L),
4779 tolerance);
4780 BOOST_CHECK_CLOSE(
4781 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(1.0f - 1.0f/64.0f), 17),
4782 static_cast<T>(0.7833754810186065148643778635770900387673e2L),
4783 tolerance);
4784 BOOST_CHECK_CLOSE(
4785 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(6.5f), 17),
4786 static_cast<T>(0.3249870881262706582491835681484781298786e26L),
4787 tolerance);
4788 BOOST_CHECK_CLOSE(
4789 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(0.125)),
4790 static_cast<T>(0.9771549776900515322679800891624114471814e1L),
4791 tolerance);
4792 BOOST_CHECK_CLOSE(
4793 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(0.25)),
4794 static_cast<T>(0.1067441706657919748462218234585918708035e2L),
4795 tolerance);
4796 BOOST_CHECK_CLOSE(
4797 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(0.75)),
4798 static_cast<T>(0.210099765073341599847488170293985376702e2L),
4799 tolerance);
4800 BOOST_CHECK_CLOSE(
4801 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(1.0f - 1.0f/64.0f)),
4802 static_cast<T>(0.7833754810186065148643778635770900387673e2L),
4803 tolerance);
4804 BOOST_CHECK_CLOSE(
4805 boost::math::tools::evaluate_odd_polynomial(n17c, static_cast<T>(6.5f)),
4806 static_cast<T>(0.3249870881262706582491835681484781298786e26L),
4807 tolerance);
4808 BOOST_CHECK_CLOSE(
4809 boost::math::tools::evaluate_odd_polynomial(n17a, static_cast<T>(0.125)),
4810 static_cast<T>(0.9771549776900515322679800891624114471814e1L),
4811 tolerance);
4812 BOOST_CHECK_CLOSE(
4813 boost::math::tools::evaluate_odd_polynomial(n17a, static_cast<T>(0.25)),
4814 static_cast<T>(0.1067441706657919748462218234585918708035e2L),
4815 tolerance);
4816 BOOST_CHECK_CLOSE(
4817 boost::math::tools::evaluate_odd_polynomial(n17a, static_cast<T>(0.75)),
4818 static_cast<T>(0.210099765073341599847488170293985376702e2L),
4819 tolerance);
4820 BOOST_CHECK_CLOSE(
4821 boost::math::tools::evaluate_odd_polynomial(n17a, static_cast<T>(1.0f - 1.0f/64.0f)),
4822 static_cast<T>(0.7833754810186065148643778635770900387673e2L),
4823 tolerance);
4824 BOOST_CHECK_CLOSE(
4825 boost::math::tools::evaluate_odd_polynomial(n17a, static_cast<T>(6.5f)),
4826 static_cast<T>(0.3249870881262706582491835681484781298786e26L),
4827 tolerance);
4828 //
4829 // Rational functions of order 16
4830 //
4831 static const U d17c[17] = { 7, 12, 3, 11, 10, 2, 5, 10, 4, 11, 10, 6, 2, 12, 1, 2, 1 };
4832 static const boost::array<U, 17> d17a = {{ 7, 12, 3, 11, 10, 2, 5, 10, 4, 11, 10, 6, 2, 12, 1, 2, 1 }};
4833 BOOST_CHECK_CLOSE(
4834 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(0.125), 17),
4835 static_cast<T>(0.1158375951946763080209403673166347533318e1L),
4836 tolerance);
4837 BOOST_CHECK_CLOSE(
4838 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(0.25), 17),
4839 static_cast<T>(0.1082966720285644924561131930917359028989e1L),
4840 tolerance);
4841 BOOST_CHECK_CLOSE(
4842 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(0.75), 17),
4843 static_cast<T>(0.9405394059495731884564238556014726773139e0L),
4844 tolerance);
4845 BOOST_CHECK_CLOSE(
4846 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(1.0f - 1.0f/64.0f), 17),
4847 static_cast<T>(0.8654376623250381987950547557864849720673e0L),
4848 tolerance);
4849 BOOST_CHECK_CLOSE(
4850 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(6.5f), 17),
4851 static_cast<T>(0.1737601600028386310221746538845672721834e1L),
4852 tolerance);
4853 BOOST_CHECK_CLOSE(
4854 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(10247.25f), 17),
4855 static_cast<T>(0.1999804873273333726353229695741031917586e1L),
4856 tolerance);
4857
4858 BOOST_CHECK_CLOSE(
4859 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(0.125)),
4860 static_cast<T>(0.1158375951946763080209403673166347533318e1L),
4861 tolerance);
4862 BOOST_CHECK_CLOSE(
4863 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(0.25)),
4864 static_cast<T>(0.1082966720285644924561131930917359028989e1L),
4865 tolerance);
4866 BOOST_CHECK_CLOSE(
4867 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(0.75)),
4868 static_cast<T>(0.9405394059495731884564238556014726773139e0L),
4869 tolerance);
4870 BOOST_CHECK_CLOSE(
4871 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(1.0f - 1.0f/64.0f)),
4872 static_cast<T>(0.8654376623250381987950547557864849720673e0L),
4873 tolerance);
4874 BOOST_CHECK_CLOSE(
4875 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(6.5f)),
4876 static_cast<T>(0.1737601600028386310221746538845672721834e1L),
4877 tolerance);
4878 BOOST_CHECK_CLOSE(
4879 boost::math::tools::evaluate_rational(n17c, d17c, static_cast<T>(10247.25f)),
4880 static_cast<T>(0.1999804873273333726353229695741031917586e1L),
4881 tolerance);
4882
4883 BOOST_CHECK_CLOSE(
4884 boost::math::tools::evaluate_rational(n17a, d17a, static_cast<T>(0.125)),
4885 static_cast<T>(0.1158375951946763080209403673166347533318e1L),
4886 tolerance);
4887 BOOST_CHECK_CLOSE(
4888 boost::math::tools::evaluate_rational(n17a, d17a, static_cast<T>(0.25)),
4889 static_cast<T>(0.1082966720285644924561131930917359028989e1L),
4890 tolerance);
4891 BOOST_CHECK_CLOSE(
4892 boost::math::tools::evaluate_rational(n17a, d17a, static_cast<T>(0.75)),
4893 static_cast<T>(0.9405394059495731884564238556014726773139e0L),
4894 tolerance);
4895 BOOST_CHECK_CLOSE(
4896 boost::math::tools::evaluate_rational(n17a, d17a, static_cast<T>(1.0f - 1.0f/64.0f)),
4897 static_cast<T>(0.8654376623250381987950547557864849720673e0L),
4898 tolerance);
4899 BOOST_CHECK_CLOSE(
4900 boost::math::tools::evaluate_rational(n17a, d17a, static_cast<T>(6.5f)),
4901 static_cast<T>(0.1737601600028386310221746538845672721834e1L),
4902 tolerance);
4903 BOOST_CHECK_CLOSE(
4904 boost::math::tools::evaluate_rational(n17a, d17a, static_cast<T>(10247.25f)),
4905 static_cast<T>(0.1999804873273333726353229695741031917586e1L),
4906 tolerance);
4907 }
4908
4909 template <class T, class U>
4910 void do_test_spots17(T, U)
4911 {
4912 //
4913 // Tolerance is 4 eps expressed as a persentage:
4914 //
4915 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
4916
4917 //
4918 // Polynomials of order 17
4919 //
4920 static const U n18c[18] = { 6, 5, 7, 8, 12, 9, 4, 1, 3, 5, 1, 5, 12, 8, 4, 6, 1, 10 };
4921 static const boost::array<U, 18> n18a = {{ 6, 5, 7, 8, 12, 9, 4, 1, 3, 5, 1, 5, 12, 8, 4, 6, 1, 10 }};
4922 BOOST_CHECK_CLOSE(
4923 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(0.125), 18),
4924 static_cast<T>(0.6753220299099845114199069939786568284035e1L),
4925 tolerance);
4926 BOOST_CHECK_CLOSE(
4927 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(0.25), 18),
4928 static_cast<T>(0.7869269511546008288860321044921875e1L),
4929 tolerance);
4930 BOOST_CHECK_CLOSE(
4931 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(0.75), 18),
4932 static_cast<T>(0.25590585466590709984302520751953125e2L),
4933 tolerance);
4934 BOOST_CHECK_CLOSE(
4935 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(1.0f - 1.0f/64.0f), 18),
4936 static_cast<T>(0.9432688198514753127308115619023015607828e2L),
4937 tolerance);
4938 BOOST_CHECK_CLOSE(
4939 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(6.5), 18),
4940 static_cast<T>(0.680830157865510950897216796875e15L),
4941 tolerance);
4942 BOOST_CHECK_CLOSE(
4943 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(0.125)),
4944 static_cast<T>(0.6753220299099845114199069939786568284035e1L),
4945 tolerance);
4946 BOOST_CHECK_CLOSE(
4947 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(0.25)),
4948 static_cast<T>(0.7869269511546008288860321044921875e1L),
4949 tolerance);
4950 BOOST_CHECK_CLOSE(
4951 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(0.75)),
4952 static_cast<T>(0.25590585466590709984302520751953125e2L),
4953 tolerance);
4954 BOOST_CHECK_CLOSE(
4955 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(1.0f - 1.0f/64.0f)),
4956 static_cast<T>(0.9432688198514753127308115619023015607828e2L),
4957 tolerance);
4958 BOOST_CHECK_CLOSE(
4959 boost::math::tools::evaluate_polynomial(n18c, static_cast<T>(6.5)),
4960 static_cast<T>(0.680830157865510950897216796875e15L),
4961 tolerance);
4962 BOOST_CHECK_CLOSE(
4963 boost::math::tools::evaluate_polynomial(n18a, static_cast<T>(0.125)),
4964 static_cast<T>(0.6753220299099845114199069939786568284035e1L),
4965 tolerance);
4966 BOOST_CHECK_CLOSE(
4967 boost::math::tools::evaluate_polynomial(n18a, static_cast<T>(0.25)),
4968 static_cast<T>(0.7869269511546008288860321044921875e1L),
4969 tolerance);
4970 BOOST_CHECK_CLOSE(
4971 boost::math::tools::evaluate_polynomial(n18a, static_cast<T>(0.75)),
4972 static_cast<T>(0.25590585466590709984302520751953125e2L),
4973 tolerance);
4974 BOOST_CHECK_CLOSE(
4975 boost::math::tools::evaluate_polynomial(n18a, static_cast<T>(1.0f - 1.0f/64.0f)),
4976 static_cast<T>(0.9432688198514753127308115619023015607828e2L),
4977 tolerance);
4978 BOOST_CHECK_CLOSE(
4979 boost::math::tools::evaluate_polynomial(n18a, static_cast<T>(6.5)),
4980 static_cast<T>(0.680830157865510950897216796875e15L),
4981 tolerance);
4982 BOOST_CHECK_CLOSE(
4983 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(0.125), 18),
4984 static_cast<T>(0.6079865225649211447450201991749585071453e1L),
4985 tolerance);
4986 BOOST_CHECK_CLOSE(
4987 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(0.25), 18),
4988 static_cast<T>(0.6341988806453956744898332268528529098717e1L),
4989 tolerance);
4990 BOOST_CHECK_CLOSE(
4991 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(0.75), 18),
4992 static_cast<T>(0.1439378129034890784564674906867431936064e2L),
4993 tolerance);
4994 BOOST_CHECK_CLOSE(
4995 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(1.0f - 1.0f/64.0f), 18),
4996 static_cast<T>(0.8374908316692411299816073455081075151876e2L),
4997 tolerance);
4998 BOOST_CHECK_CLOSE(
4999 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(6.5f), 18),
5000 static_cast<T>(0.4367459075155664096657376949959960997093e29L),
5001 tolerance);
5002 BOOST_CHECK_CLOSE(
5003 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(0.125)),
5004 static_cast<T>(0.6079865225649211447450201991749585071453e1L),
5005 tolerance);
5006 BOOST_CHECK_CLOSE(
5007 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(0.25)),
5008 static_cast<T>(0.6341988806453956744898332268528529098717e1L),
5009 tolerance);
5010 BOOST_CHECK_CLOSE(
5011 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(0.75)),
5012 static_cast<T>(0.1439378129034890784564674906867431936064e2L),
5013 tolerance);
5014 BOOST_CHECK_CLOSE(
5015 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(1.0f - 1.0f/64.0f)),
5016 static_cast<T>(0.8374908316692411299816073455081075151876e2L),
5017 tolerance);
5018 BOOST_CHECK_CLOSE(
5019 boost::math::tools::evaluate_even_polynomial(n18c, static_cast<T>(6.5f)),
5020 static_cast<T>(0.4367459075155664096657376949959960997093e29L),
5021 tolerance);
5022 BOOST_CHECK_CLOSE(
5023 boost::math::tools::evaluate_even_polynomial(n18a, static_cast<T>(0.125)),
5024 static_cast<T>(0.6079865225649211447450201991749585071453e1L),
5025 tolerance);
5026 BOOST_CHECK_CLOSE(
5027 boost::math::tools::evaluate_even_polynomial(n18a, static_cast<T>(0.25)),
5028 static_cast<T>(0.6341988806453956744898332268528529098717e1L),
5029 tolerance);
5030 BOOST_CHECK_CLOSE(
5031 boost::math::tools::evaluate_even_polynomial(n18a, static_cast<T>(0.75)),
5032 static_cast<T>(0.1439378129034890784564674906867431936064e2L),
5033 tolerance);
5034 BOOST_CHECK_CLOSE(
5035 boost::math::tools::evaluate_even_polynomial(n18a, static_cast<T>(1.0f - 1.0f/64.0f)),
5036 static_cast<T>(0.8374908316692411299816073455081075151876e2L),
5037 tolerance);
5038 BOOST_CHECK_CLOSE(
5039 boost::math::tools::evaluate_even_polynomial(n18a, static_cast<T>(6.5f)),
5040 static_cast<T>(0.4367459075155664096657376949959960997093e29L),
5041 tolerance);
5042 BOOST_CHECK_CLOSE(
5043 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(0.125), 18),
5044 static_cast<T>(0.6638921805193691579601615933996680571626e1L),
5045 tolerance);
5046 BOOST_CHECK_CLOSE(
5047 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(0.25), 18),
5048 static_cast<T>(0.7367955225815826979593329074114116394867e1L),
5049 tolerance);
5050 BOOST_CHECK_CLOSE(
5051 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(0.75), 18),
5052 static_cast<T>(0.1719170838713187712752899875823242581419e2L),
5053 tolerance);
5054 BOOST_CHECK_CLOSE(
5055 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(1.0f - 1.0f/64.0f), 18),
5056 static_cast<T>(0.8498319559814513066479820652780774757461e2L),
5057 tolerance);
5058 BOOST_CHECK_CLOSE(
5059 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(6.5f), 18),
5060 static_cast<T>(0.6719167807931790917934426081938401533989e28L),
5061 tolerance);
5062 BOOST_CHECK_CLOSE(
5063 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(0.125)),
5064 static_cast<T>(0.6638921805193691579601615933996680571626e1L),
5065 tolerance);
5066 BOOST_CHECK_CLOSE(
5067 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(0.25)),
5068 static_cast<T>(0.7367955225815826979593329074114116394867e1L),
5069 tolerance);
5070 BOOST_CHECK_CLOSE(
5071 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(0.75)),
5072 static_cast<T>(0.1719170838713187712752899875823242581419e2L),
5073 tolerance);
5074 BOOST_CHECK_CLOSE(
5075 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(1.0f - 1.0f/64.0f)),
5076 static_cast<T>(0.8498319559814513066479820652780774757461e2L),
5077 tolerance);
5078 BOOST_CHECK_CLOSE(
5079 boost::math::tools::evaluate_odd_polynomial(n18c, static_cast<T>(6.5f)),
5080 static_cast<T>(0.6719167807931790917934426081938401533989e28L),
5081 tolerance);
5082 BOOST_CHECK_CLOSE(
5083 boost::math::tools::evaluate_odd_polynomial(n18a, static_cast<T>(0.125)),
5084 static_cast<T>(0.6638921805193691579601615933996680571626e1L),
5085 tolerance);
5086 BOOST_CHECK_CLOSE(
5087 boost::math::tools::evaluate_odd_polynomial(n18a, static_cast<T>(0.25)),
5088 static_cast<T>(0.7367955225815826979593329074114116394867e1L),
5089 tolerance);
5090 BOOST_CHECK_CLOSE(
5091 boost::math::tools::evaluate_odd_polynomial(n18a, static_cast<T>(0.75)),
5092 static_cast<T>(0.1719170838713187712752899875823242581419e2L),
5093 tolerance);
5094 BOOST_CHECK_CLOSE(
5095 boost::math::tools::evaluate_odd_polynomial(n18a, static_cast<T>(1.0f - 1.0f/64.0f)),
5096 static_cast<T>(0.8498319559814513066479820652780774757461e2L),
5097 tolerance);
5098 BOOST_CHECK_CLOSE(
5099 boost::math::tools::evaluate_odd_polynomial(n18a, static_cast<T>(6.5f)),
5100 static_cast<T>(0.6719167807931790917934426081938401533989e28L),
5101 tolerance);
5102 //
5103 // Rational functions of order 17
5104 //
5105 static const U d18c[18] = { 6, 2, 11, 2, 12, 4, 1, 5, 7, 12, 5, 7, 5, 7, 5, 7, 2, 9 };
5106 static const boost::array<U, 18> d18a = {{ 6, 2, 11, 2, 12, 4, 1, 5, 7, 12, 5, 7, 5, 7, 5, 7, 2, 9 }};
5107 BOOST_CHECK_CLOSE(
5108 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(0.125), 18),
5109 static_cast<T>(0.1050457095586493221315235501384188635425e1L),
5110 tolerance);
5111 BOOST_CHECK_CLOSE(
5112 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(0.25), 18),
5113 static_cast<T>(0.1082394733850278225180153358339433604182e1L),
5114 tolerance);
5115 BOOST_CHECK_CLOSE(
5116 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(0.75), 18),
5117 static_cast<T>(0.1117650157149023587583496399377426188558e1L),
5118 tolerance);
5119 BOOST_CHECK_CLOSE(
5120 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(1.0f - 1.0f/64.0f), 18),
5121 static_cast<T>(0.9882013696252427983431096654690843223851e0L),
5122 tolerance);
5123 BOOST_CHECK_CLOSE(
5124 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(6.5f), 18),
5125 static_cast<T>(0.1086348665080997883580887205673821889245e1L),
5126 tolerance);
5127 BOOST_CHECK_CLOSE(
5128 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(10247.25f), 18),
5129 static_cast<T>(0.1111097856940394090609547290690047016487e1L),
5130 tolerance);
5131
5132 BOOST_CHECK_CLOSE(
5133 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(0.125)),
5134 static_cast<T>(0.1050457095586493221315235501384188635425e1L),
5135 tolerance);
5136 BOOST_CHECK_CLOSE(
5137 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(0.25)),
5138 static_cast<T>(0.1082394733850278225180153358339433604182e1L),
5139 tolerance);
5140 BOOST_CHECK_CLOSE(
5141 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(0.75)),
5142 static_cast<T>(0.1117650157149023587583496399377426188558e1L),
5143 tolerance);
5144 BOOST_CHECK_CLOSE(
5145 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(1.0f - 1.0f/64.0f)),
5146 static_cast<T>(0.9882013696252427983431096654690843223851e0L),
5147 tolerance);
5148 BOOST_CHECK_CLOSE(
5149 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(6.5f)),
5150 static_cast<T>(0.1086348665080997883580887205673821889245e1L),
5151 tolerance);
5152 BOOST_CHECK_CLOSE(
5153 boost::math::tools::evaluate_rational(n18c, d18c, static_cast<T>(10247.25f)),
5154 static_cast<T>(0.1111097856940394090609547290690047016487e1L),
5155 tolerance);
5156
5157 BOOST_CHECK_CLOSE(
5158 boost::math::tools::evaluate_rational(n18a, d18a, static_cast<T>(0.125)),
5159 static_cast<T>(0.1050457095586493221315235501384188635425e1L),
5160 tolerance);
5161 BOOST_CHECK_CLOSE(
5162 boost::math::tools::evaluate_rational(n18a, d18a, static_cast<T>(0.25)),
5163 static_cast<T>(0.1082394733850278225180153358339433604182e1L),
5164 tolerance);
5165 BOOST_CHECK_CLOSE(
5166 boost::math::tools::evaluate_rational(n18a, d18a, static_cast<T>(0.75)),
5167 static_cast<T>(0.1117650157149023587583496399377426188558e1L),
5168 tolerance);
5169 BOOST_CHECK_CLOSE(
5170 boost::math::tools::evaluate_rational(n18a, d18a, static_cast<T>(1.0f - 1.0f/64.0f)),
5171 static_cast<T>(0.9882013696252427983431096654690843223851e0L),
5172 tolerance);
5173 BOOST_CHECK_CLOSE(
5174 boost::math::tools::evaluate_rational(n18a, d18a, static_cast<T>(6.5f)),
5175 static_cast<T>(0.1086348665080997883580887205673821889245e1L),
5176 tolerance);
5177 BOOST_CHECK_CLOSE(
5178 boost::math::tools::evaluate_rational(n18a, d18a, static_cast<T>(10247.25f)),
5179 static_cast<T>(0.1111097856940394090609547290690047016487e1L),
5180 tolerance);
5181 }
5182
5183 template <class T, class U>
5184 void do_test_spots18(T, U)
5185 {
5186 //
5187 // Tolerance is 4 eps expressed as a persentage:
5188 //
5189 T tolerance = boost::math::tools::epsilon<T>() * 4 * 100;
5190
5191 //
5192 // Polynomials of order 18
5193 //
5194 static const U n19c[19] = { 7, 2, 4, 2, 4, 3, 9, 1, 9, 3, 7, 2, 10, 4, 2, 5, 11, 3, 9 };
5195 static const boost::array<U, 19> n19a = {{ 7, 2, 4, 2, 4, 3, 9, 1, 9, 3, 7, 2, 10, 4, 2, 5, 11, 3, 9 }};
5196 BOOST_CHECK_CLOSE(
5197 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(0.125), 19),
5198 static_cast<T>(0.7317509740045990140888676478425622917712e1L),
5199 tolerance);
5200 BOOST_CHECK_CLOSE(
5201 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(0.25), 19),
5202 static_cast<T>(0.7802219584656995721161365509033203125e1L),
5203 tolerance);
5204 BOOST_CHECK_CLOSE(
5205 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(0.75), 19),
5206 static_cast<T>(0.17609299321266007609665393829345703125e2L),
5207 tolerance);
5208 BOOST_CHECK_CLOSE(
5209 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(1.0f - 1.0f/64.0f), 19),
5210 static_cast<T>(0.8327888521934174049333133442289010778727e2L),
5211 tolerance);
5212 BOOST_CHECK_CLOSE(
5213 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(6.5), 19),
5214 static_cast<T>(0.4179028813935817562572479248046875e16L),
5215 tolerance);
5216 BOOST_CHECK_CLOSE(
5217 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(0.125)),
5218 static_cast<T>(0.7317509740045990140888676478425622917712e1L),
5219 tolerance);
5220 BOOST_CHECK_CLOSE(
5221 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(0.25)),
5222 static_cast<T>(0.7802219584656995721161365509033203125e1L),
5223 tolerance);
5224 BOOST_CHECK_CLOSE(
5225 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(0.75)),
5226 static_cast<T>(0.17609299321266007609665393829345703125e2L),
5227 tolerance);
5228 BOOST_CHECK_CLOSE(
5229 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(1.0f - 1.0f/64.0f)),
5230 static_cast<T>(0.8327888521934174049333133442289010778727e2L),
5231 tolerance);
5232 BOOST_CHECK_CLOSE(
5233 boost::math::tools::evaluate_polynomial(n19c, static_cast<T>(6.5)),
5234 static_cast<T>(0.4179028813935817562572479248046875e16L),
5235 tolerance);
5236 BOOST_CHECK_CLOSE(
5237 boost::math::tools::evaluate_polynomial(n19a, static_cast<T>(0.125)),
5238 static_cast<T>(0.7317509740045990140888676478425622917712e1L),
5239 tolerance);
5240 BOOST_CHECK_CLOSE(
5241 boost::math::tools::evaluate_polynomial(n19a, static_cast<T>(0.25)),
5242 static_cast<T>(0.7802219584656995721161365509033203125e1L),
5243 tolerance);
5244 BOOST_CHECK_CLOSE(
5245 boost::math::tools::evaluate_polynomial(n19a, static_cast<T>(0.75)),
5246 static_cast<T>(0.17609299321266007609665393829345703125e2L),
5247 tolerance);
5248 BOOST_CHECK_CLOSE(
5249 boost::math::tools::evaluate_polynomial(n19a, static_cast<T>(1.0f - 1.0f/64.0f)),
5250 static_cast<T>(0.8327888521934174049333133442289010778727e2L),
5251 tolerance);
5252 BOOST_CHECK_CLOSE(
5253 boost::math::tools::evaluate_polynomial(n19a, static_cast<T>(6.5)),
5254 static_cast<T>(0.4179028813935817562572479248046875e16L),
5255 tolerance);
5256 BOOST_CHECK_CLOSE(
5257 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(0.125), 19),
5258 static_cast<T>(0.7032234433238304833197011488540991991734e1L),
5259 tolerance);
5260 BOOST_CHECK_CLOSE(
5261 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(0.25), 19),
5262 static_cast<T>(0.7141177719741940632063571816842174888595e1L),
5263 tolerance);
5264 BOOST_CHECK_CLOSE(
5265 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(0.75), 19),
5266 static_cast<T>(0.107671418972012709727788225142148040292e2L),
5267 tolerance);
5268 BOOST_CHECK_CLOSE(
5269 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(1.0f - 1.0f/64.0f), 19),
5270 static_cast<T>(0.7205306905267900876445365429703520869133e2L),
5271 tolerance);
5272 BOOST_CHECK_CLOSE(
5273 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(6.5f), 19),
5274 static_cast<T>(0.1670453627683043936397442394984734181614e31L),
5275 tolerance);
5276 BOOST_CHECK_CLOSE(
5277 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(0.125)),
5278 static_cast<T>(0.7032234433238304833197011488540991991734e1L),
5279 tolerance);
5280 BOOST_CHECK_CLOSE(
5281 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(0.25)),
5282 static_cast<T>(0.7141177719741940632063571816842174888595e1L),
5283 tolerance);
5284 BOOST_CHECK_CLOSE(
5285 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(0.75)),
5286 static_cast<T>(0.107671418972012709727788225142148040292e2L),
5287 tolerance);
5288 BOOST_CHECK_CLOSE(
5289 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(1.0f - 1.0f/64.0f)),
5290 static_cast<T>(0.7205306905267900876445365429703520869133e2L),
5291 tolerance);
5292 BOOST_CHECK_CLOSE(
5293 boost::math::tools::evaluate_even_polynomial(n19c, static_cast<T>(6.5f)),
5294 static_cast<T>(0.1670453627683043936397442394984734181614e31L),
5295 tolerance);
5296 BOOST_CHECK_CLOSE(
5297 boost::math::tools::evaluate_even_polynomial(n19a, static_cast<T>(0.125)),
5298 static_cast<T>(0.7032234433238304833197011488540991991734e1L),
5299 tolerance);
5300 BOOST_CHECK_CLOSE(
5301 boost::math::tools::evaluate_even_polynomial(n19a, static_cast<T>(0.25)),
5302 static_cast<T>(0.7141177719741940632063571816842174888595e1L),
5303 tolerance);
5304 BOOST_CHECK_CLOSE(
5305 boost::math::tools::evaluate_even_polynomial(n19a, static_cast<T>(0.75)),
5306 static_cast<T>(0.107671418972012709727788225142148040292e2L),
5307 tolerance);
5308 BOOST_CHECK_CLOSE(
5309 boost::math::tools::evaluate_even_polynomial(n19a, static_cast<T>(1.0f - 1.0f/64.0f)),
5310 static_cast<T>(0.7205306905267900876445365429703520869133e2L),
5311 tolerance);
5312 BOOST_CHECK_CLOSE(
5313 boost::math::tools::evaluate_even_polynomial(n19a, static_cast<T>(6.5f)),
5314 static_cast<T>(0.1670453627683043936397442394984734181614e31L),
5315 tolerance);
5316 BOOST_CHECK_CLOSE(
5317 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(0.125), 19),
5318 static_cast<T>(0.7257875465906438665576091908327935933871e1L),
5319 tolerance);
5320 BOOST_CHECK_CLOSE(
5321 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(0.25), 19),
5322 static_cast<T>(0.7564710878967762528254287267368699554382e1L),
5323 tolerance);
5324 BOOST_CHECK_CLOSE(
5325 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(0.75), 19),
5326 static_cast<T>(0.120228558629350279637050966856197387056e2L),
5327 tolerance);
5328 BOOST_CHECK_CLOSE(
5329 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(1.0f - 1.0f/64.0f), 19),
5330 static_cast<T>(0.7308565745034058033214339484143259295627e2L),
5331 tolerance);
5332 BOOST_CHECK_CLOSE(
5333 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(6.5f), 19),
5334 static_cast<T>(0.2569928657973913748303757530804975664022e30L),
5335 tolerance);
5336 BOOST_CHECK_CLOSE(
5337 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(0.125)),
5338 static_cast<T>(0.7257875465906438665576091908327935933871e1L),
5339 tolerance);
5340 BOOST_CHECK_CLOSE(
5341 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(0.25)),
5342 static_cast<T>(0.7564710878967762528254287267368699554382e1L),
5343 tolerance);
5344 BOOST_CHECK_CLOSE(
5345 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(0.75)),
5346 static_cast<T>(0.120228558629350279637050966856197387056e2L),
5347 tolerance);
5348 BOOST_CHECK_CLOSE(
5349 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(1.0f - 1.0f/64.0f)),
5350 static_cast<T>(0.7308565745034058033214339484143259295627e2L),
5351 tolerance);
5352 BOOST_CHECK_CLOSE(
5353 boost::math::tools::evaluate_odd_polynomial(n19c, static_cast<T>(6.5f)),
5354 static_cast<T>(0.2569928657973913748303757530804975664022e30L),
5355 tolerance);
5356 BOOST_CHECK_CLOSE(
5357 boost::math::tools::evaluate_odd_polynomial(n19a, static_cast<T>(0.125)),
5358 static_cast<T>(0.7257875465906438665576091908327935933871e1L),
5359 tolerance);
5360 BOOST_CHECK_CLOSE(
5361 boost::math::tools::evaluate_odd_polynomial(n19a, static_cast<T>(0.25)),
5362 static_cast<T>(0.7564710878967762528254287267368699554382e1L),
5363 tolerance);
5364 BOOST_CHECK_CLOSE(
5365 boost::math::tools::evaluate_odd_polynomial(n19a, static_cast<T>(0.75)),
5366 static_cast<T>(0.120228558629350279637050966856197387056e2L),
5367 tolerance);
5368 BOOST_CHECK_CLOSE(
5369 boost::math::tools::evaluate_odd_polynomial(n19a, static_cast<T>(1.0f - 1.0f/64.0f)),
5370 static_cast<T>(0.7308565745034058033214339484143259295627e2L),
5371 tolerance);
5372 BOOST_CHECK_CLOSE(
5373 boost::math::tools::evaluate_odd_polynomial(n19a, static_cast<T>(6.5f)),
5374 static_cast<T>(0.2569928657973913748303757530804975664022e30L),
5375 tolerance);
5376 //
5377 // Rational functions of order 18
5378 //
5379 static const U d19c[19] = { 3, 2, 3, 3, 10, 6, 2, 6, 9, 8, 8, 10, 5, 7, 6, 4, 6, 9, 7 };
5380 static const boost::array<U, 19> d19a = {{ 3, 2, 3, 3, 10, 6, 2, 6, 9, 8, 8, 10, 5, 7, 6, 4, 6, 9, 7 }};
5381 BOOST_CHECK_CLOSE(
5382 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(0.125), 19),
5383 static_cast<T>(0.2213824709533496994632324982010106870288e1L),
5384 tolerance);
5385 BOOST_CHECK_CLOSE(
5386 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(0.25), 19),
5387 static_cast<T>(0.2063899260318829004588039751781791436716e1L),
5388 tolerance);
5389 BOOST_CHECK_CLOSE(
5390 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(0.75), 19),
5391 static_cast<T>(0.1085337280046506127330919833145641152667e1L),
5392 tolerance);
5393 BOOST_CHECK_CLOSE(
5394 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(1.0f - 1.0f/64.0f), 19),
5395 static_cast<T>(0.8530644127293554041631338796773621506306e0L),
5396 tolerance);
5397 BOOST_CHECK_CLOSE(
5398 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(6.5f), 19),
5399 static_cast<T>(0.1140014406058131768268407547610620204626e1L),
5400 tolerance);
5401 BOOST_CHECK_CLOSE(
5402 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(10247.25f), 19),
5403 static_cast<T>(0.1285594810697167354761598106316532892359e1L),
5404 tolerance);
5405
5406 BOOST_CHECK_CLOSE(
5407 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(0.125)),
5408 static_cast<T>(0.2213824709533496994632324982010106870288e1L),
5409 tolerance);
5410 BOOST_CHECK_CLOSE(
5411 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(0.25)),
5412 static_cast<T>(0.2063899260318829004588039751781791436716e1L),
5413 tolerance);
5414 BOOST_CHECK_CLOSE(
5415 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(0.75)),
5416 static_cast<T>(0.1085337280046506127330919833145641152667e1L),
5417 tolerance);
5418 BOOST_CHECK_CLOSE(
5419 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(1.0f - 1.0f/64.0f)),
5420 static_cast<T>(0.8530644127293554041631338796773621506306e0L),
5421 tolerance);
5422 BOOST_CHECK_CLOSE(
5423 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(6.5f)),
5424 static_cast<T>(0.1140014406058131768268407547610620204626e1L),
5425 tolerance);
5426 BOOST_CHECK_CLOSE(
5427 boost::math::tools::evaluate_rational(n19c, d19c, static_cast<T>(10247.25f)),
5428 static_cast<T>(0.1285594810697167354761598106316532892359e1L),
5429 tolerance);
5430
5431 BOOST_CHECK_CLOSE(
5432 boost::math::tools::evaluate_rational(n19a, d19a, static_cast<T>(0.125)),
5433 static_cast<T>(0.2213824709533496994632324982010106870288e1L),
5434 tolerance);
5435 BOOST_CHECK_CLOSE(
5436 boost::math::tools::evaluate_rational(n19a, d19a, static_cast<T>(0.25)),
5437 static_cast<T>(0.2063899260318829004588039751781791436716e1L),
5438 tolerance);
5439 BOOST_CHECK_CLOSE(
5440 boost::math::tools::evaluate_rational(n19a, d19a, static_cast<T>(0.75)),
5441 static_cast<T>(0.1085337280046506127330919833145641152667e1L),
5442 tolerance);
5443 BOOST_CHECK_CLOSE(
5444 boost::math::tools::evaluate_rational(n19a, d19a, static_cast<T>(1.0f - 1.0f/64.0f)),
5445 static_cast<T>(0.8530644127293554041631338796773621506306e0L),
5446 tolerance);
5447 BOOST_CHECK_CLOSE(
5448 boost::math::tools::evaluate_rational(n19a, d19a, static_cast<T>(6.5f)),
5449 static_cast<T>(0.1140014406058131768268407547610620204626e1L),
5450 tolerance);
5451 BOOST_CHECK_CLOSE(
5452 boost::math::tools::evaluate_rational(n19a, d19a, static_cast<T>(10247.25f)),
5453 static_cast<T>(0.1285594810697167354761598106316532892359e1L),
5454 tolerance);
5455 }
5456
5457 template <class T, class U>
5458 void do_test_spots(T t, U u)
5459 {
5460 do_test_spots1(t, u);
5461 do_test_spots2(t, u);
5462 do_test_spots3(t, u);
5463 do_test_spots4(t, u);
5464 do_test_spots5(t, u);
5465 do_test_spots6(t, u);
5466 do_test_spots7(t, u);
5467 do_test_spots8(t, u);
5468 do_test_spots9(t, u);
5469 do_test_spots10(t, u);
5470 do_test_spots11(t, u);
5471 do_test_spots12(t, u);
5472 do_test_spots13(t, u);
5473 do_test_spots14(t, u);
5474 do_test_spots15(t, u);
5475 do_test_spots16(t, u);
5476 do_test_spots17(t, u);
5477 do_test_spots18(t, u);
5478 }
5479
5480 #endif