Imported Upstream version 1.72.0
[platform/upstream/boost.git] / 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