Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / math / test / test_tr1.cpp
1 //  (C) Copyright John Maddock 2008.
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 #define BOOST_TEST_MAIN
7 #include <boost/test/unit_test.hpp>
8 #include <boost/test/tools/floating_point_comparison.hpp>
9 #include <boost/math/tools/precision.hpp>
10 #include <math.h>  // ldexpf
11 #include <iostream>
12 #include <iomanip>
13
14 #ifdef TEST_STD
15 #include <cmath>
16 namespace tr1 = std::tr1;
17 #else
18 #include <boost/math/tr1.hpp>
19 namespace tr1 = boost::math::tr1;
20 #endif
21
22 #ifdef _MSC_VER
23 #  pragma warning (disable : 4100) // unreferenced formal parameter
24 // Can't just comment parameter out because reference or not depends on macro define.
25 #endif
26
27 void test_values(float, const char* name)
28 {
29    std::cout << "Testing type " << name << std::endl;
30 #ifndef TEST_LD
31    //
32    // First the C99 math functions:
33    //
34    float eps = boost::math::tools::epsilon<float>();
35    BOOST_CHECK_CLOSE(tr1::acoshf(std::cosh(0.5f)), 0.5f, 5000 * eps);
36    BOOST_CHECK_CLOSE(tr1::asinhf(std::sinh(0.5f)), 0.5f, 5000 * eps);
37    BOOST_CHECK_CLOSE(tr1::atanhf(std::tanh(0.5f)), 0.5f, 5000 * eps);
38
39    BOOST_CHECK_CLOSE(tr1::cbrtf(1.5f * 1.5f * 1.5f), 1.5f, 5000 * eps);
40
41    BOOST_CHECK(tr1::copysignf(1.0f, 1.0f) == 1.0f);
42    BOOST_CHECK(tr1::copysignf(1.0f, -1.0f) == -1.0f);
43    BOOST_CHECK(tr1::copysignf(-1.0f, 1.0f) == 1.0f);
44    BOOST_CHECK(tr1::copysignf(-1.0f, -1.0f) == -1.0f);
45
46    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(0.125)), static_cast<float>(0.85968379519866618260697055347837660181302041685015L), eps * 1000);
47    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(0.5)), static_cast<float>(0.47950012218695346231725334610803547126354842424204L), eps * 1000);
48    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(1)), static_cast<float>(0.15729920705028513065877936491739074070393300203370L), eps * 1000);
49    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(5)), static_cast<float>(1.5374597944280348501883434853833788901180503147234e-12L), eps * 1000);
50    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(-0.125)), static_cast<float>(1.1403162048013338173930294465216233981869795831498L), eps * 1000);
51    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(-0.5)), static_cast<float>(1.5204998778130465376827466538919645287364515757580L), eps * 1000);
52    BOOST_CHECK_CLOSE(tr1::erfcf(static_cast<float>(0)), static_cast<float>(1), eps * 1000);
53
54    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(0.125)), static_cast<float>(0.14031620480133381739302944652162339818697958314985L), eps * 1000);
55    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(0.5)), static_cast<float>(0.52049987781304653768274665389196452873645157575796L), eps * 1000);
56    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(1)), static_cast<float>(0.84270079294971486934122063508260925929606699796630L), eps * 1000);
57    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(5)), static_cast<float>(0.9999999999984625402055719651498116565146166211099L), eps * 1000);
58    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(-0.125)), static_cast<float>(-0.14031620480133381739302944652162339818697958314985L), eps * 1000);
59    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(-0.5)), static_cast<float>(-0.52049987781304653768274665389196452873645157575796L), eps * 1000);
60    BOOST_CHECK_CLOSE(tr1::erff(static_cast<float>(0)), static_cast<float>(0), eps * 1000);
61
62    BOOST_CHECK_CLOSE(tr1::log1pf(static_cast<float>(0.582029759883880615234375e0)), static_cast<float>(0.4587086807259736626531803258754840111707e0L), eps * 1000);
63    BOOST_CHECK_CLOSE(tr1::expm1f(static_cast<float>(0.582029759883880615234375e0)), static_cast<float>(0.7896673415707786528734865994546559029663e0L), eps * 1000);
64    BOOST_CHECK_CLOSE(tr1::log1pf(static_cast<float>(-0.2047410048544406890869140625e-1)), static_cast<float>(-0.2068660038044094868521052319477265955827e-1L), eps * 1000);
65    BOOST_CHECK_CLOSE(tr1::expm1f(static_cast<float>(-0.2047410048544406890869140625e-1)), static_cast<float>(-0.2026592921724753704129022027337835687888e-1L), eps * 1000);
66
67    BOOST_CHECK_EQUAL(tr1::fmaxf(0.1f, -0.1f), 0.1f);
68    BOOST_CHECK_EQUAL(tr1::fminf(0.1f, -0.1f), -0.1f);
69
70    BOOST_CHECK_CLOSE(tr1::hypotf(1.0f, 3.0f), std::sqrt(10.0f), eps * 500);
71
72    BOOST_CHECK_CLOSE(tr1::lgammaf(static_cast<float>(3.5)), static_cast<float>(1.2009736023470742248160218814507129957702389154682L), 5000 * eps);
73    BOOST_CHECK_CLOSE(tr1::lgammaf(static_cast<float>(0.125)), static_cast<float>(2.0194183575537963453202905211670995899482809521344L), 5000 * eps);
74    BOOST_CHECK_CLOSE(tr1::lgammaf(static_cast<float>(-0.125)), static_cast<float>(2.1653002489051702517540619481440174064962195287626L), 5000 * eps);
75    BOOST_CHECK_CLOSE(tr1::lgammaf(static_cast<float>(-3.125)), static_cast<float>(0.1543111276840418242676072830970532952413339012367L), 5000 * eps);
76    BOOST_CHECK_CLOSE(tr1::lgammaf(static_cast<float>(-53249.0/1024)), static_cast<float>(-149.43323093420259741100038126078721302600128285894L), 5000 * eps);
77
78    BOOST_CHECK_CLOSE(tr1::tgammaf(static_cast<float>(3.5)), static_cast<float>(3.3233509704478425511840640312646472177454052302295L), 5000 * eps);
79    BOOST_CHECK_CLOSE(tr1::tgammaf(static_cast<float>(0.125)), static_cast<float>(7.5339415987976119046992298412151336246104195881491L), 5000 * eps);
80    BOOST_CHECK_CLOSE(tr1::tgammaf(static_cast<float>(-0.125)), static_cast<float>(-8.7172188593831756100190140408231437691829605421405L), 5000 * eps);
81    BOOST_CHECK_CLOSE(tr1::tgammaf(static_cast<float>(-3.125)), static_cast<float>(1.1668538708507675587790157356605097019141636072094L), 5000 * eps);
82
83 #ifdef BOOST_HAS_LONG_LONG
84    BOOST_CHECK(tr1::llroundf(2.5f) == 3LL);
85    BOOST_CHECK(tr1::llroundf(2.25f) == 2LL);
86 #endif
87    BOOST_CHECK(tr1::lroundf(2.5f) == 3L);
88    BOOST_CHECK(tr1::lroundf(2.25f) == 2L);
89    BOOST_CHECK(tr1::roundf(2.5f) == 3.0f);
90    BOOST_CHECK(tr1::roundf(2.25f) == 2.0f);
91
92    BOOST_CHECK(tr1::nextafterf(1.0f, 2.0f) > 1.0f);
93    BOOST_CHECK(tr1::nextafterf(1.0f, -2.0f) < 1.0f);
94    BOOST_CHECK(tr1::nextafterf(tr1::nextafterf(1.0f, 2.0f), -2.0f) == 1.0f);
95    BOOST_CHECK(tr1::nextafterf(tr1::nextafterf(1.0f, -2.0f), 2.0f) == 1.0f);
96    BOOST_CHECK(tr1::nextafterf(1.0f, 2.0f) > 1.0f);
97    BOOST_CHECK(tr1::nextafterf(1.0f, -2.0f) < 1.0f);
98    BOOST_CHECK(tr1::nextafterf(tr1::nextafterf(1.0f, 2.0f), -2.0f) == 1.0f);
99    BOOST_CHECK(tr1::nextafterf(tr1::nextafterf(1.0f, -2.0f), 2.0f) == 1.0f);
100
101    BOOST_CHECK(tr1::truncf(2.5f) == 2.0f);
102    BOOST_CHECK(tr1::truncf(2.25f) == 2.0f);
103
104    //
105    // And again but without the "f" suffix on the function names:
106    //
107    BOOST_CHECK_CLOSE(tr1::acosh(std::cosh(0.5f)), 0.5f, 5000 * eps);
108    BOOST_CHECK_CLOSE(tr1::asinh(std::sinh(0.5f)), 0.5f, 5000 * eps);
109    BOOST_CHECK_CLOSE(tr1::atanh(std::tanh(0.5f)), 0.5f, 5000 * eps);
110
111    BOOST_CHECK_CLOSE(tr1::cbrt(1.5f * 1.5f * 1.5f), 1.5f, 5000 * eps);
112
113    BOOST_CHECK(tr1::copysign(1.0f, 1.0f) == 1.0f);
114    BOOST_CHECK(tr1::copysign(1.0f, -1.0f) == -1.0f);
115    BOOST_CHECK(tr1::copysign(-1.0f, 1.0f) == 1.0f);
116    BOOST_CHECK(tr1::copysign(-1.0f, -1.0f) == -1.0f);
117
118    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(0.125)), static_cast<float>(0.85968379519866618260697055347837660181302041685015L), eps * 1000);
119    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(0.5)), static_cast<float>(0.47950012218695346231725334610803547126354842424204L), eps * 1000);
120    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(1)), static_cast<float>(0.15729920705028513065877936491739074070393300203370L), eps * 1000);
121    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(5)), static_cast<float>(1.5374597944280348501883434853833788901180503147234e-12L), eps * 1000);
122    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(-0.125)), static_cast<float>(1.1403162048013338173930294465216233981869795831498L), eps * 1000);
123    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(-0.5)), static_cast<float>(1.5204998778130465376827466538919645287364515757580L), eps * 1000);
124    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<float>(0)), static_cast<float>(1), eps * 1000);
125
126    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(0.125)), static_cast<float>(0.14031620480133381739302944652162339818697958314985L), eps * 1000);
127    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(0.5)), static_cast<float>(0.52049987781304653768274665389196452873645157575796L), eps * 1000);
128    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(1)), static_cast<float>(0.84270079294971486934122063508260925929606699796630L), eps * 1000);
129    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(5)), static_cast<float>(0.9999999999984625402055719651498116565146166211099L), eps * 1000);
130    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(-0.125)), static_cast<float>(-0.14031620480133381739302944652162339818697958314985L), eps * 1000);
131    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(-0.5)), static_cast<float>(-0.52049987781304653768274665389196452873645157575796L), eps * 1000);
132    BOOST_CHECK_CLOSE(tr1::erf(static_cast<float>(0)), static_cast<float>(0), eps * 1000);
133
134    BOOST_CHECK_CLOSE(tr1::log1p(static_cast<float>(0.582029759883880615234375e0)), static_cast<float>(0.4587086807259736626531803258754840111707e0L), eps * 1000);
135    BOOST_CHECK_CLOSE(tr1::expm1(static_cast<float>(0.582029759883880615234375e0)), static_cast<float>(0.7896673415707786528734865994546559029663e0L), eps * 1000);
136    BOOST_CHECK_CLOSE(tr1::log1p(static_cast<float>(-0.2047410048544406890869140625e-1)), static_cast<float>(-0.2068660038044094868521052319477265955827e-1L), eps * 1000);
137    BOOST_CHECK_CLOSE(tr1::expm1(static_cast<float>(-0.2047410048544406890869140625e-1)), static_cast<float>(-0.2026592921724753704129022027337835687888e-1L), eps * 1000);
138
139    BOOST_CHECK_EQUAL(tr1::fmax(0.1f, -0.1f), 0.1f);
140    BOOST_CHECK_EQUAL(tr1::fmin(0.1f, -0.1f), -0.1f);
141
142    BOOST_CHECK_CLOSE(tr1::hypot(1.0f, 3.0f), std::sqrt(10.0f), eps * 500);
143
144    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<float>(3.5)), static_cast<float>(1.2009736023470742248160218814507129957702389154682L), 5000 * eps);
145    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<float>(0.125)), static_cast<float>(2.0194183575537963453202905211670995899482809521344L), 5000 * eps);
146    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<float>(-0.125)), static_cast<float>(2.1653002489051702517540619481440174064962195287626L), 5000 * eps);
147    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<float>(-3.125)), static_cast<float>(0.1543111276840418242676072830970532952413339012367L), 5000 * eps);
148    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<float>(-53249.0/1024)), static_cast<float>(-149.43323093420259741100038126078721302600128285894L), 5000 * eps);
149
150    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<float>(3.5)), static_cast<float>(3.3233509704478425511840640312646472177454052302295L), 5000 * eps);
151    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<float>(0.125)), static_cast<float>(7.5339415987976119046992298412151336246104195881491L), 5000 * eps);
152    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<float>(-0.125)), static_cast<float>(-8.7172188593831756100190140408231437691829605421405L), 5000 * eps);
153    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<float>(-3.125)), static_cast<float>(1.1668538708507675587790157356605097019141636072094L), 5000 * eps);
154
155 #ifdef BOOST_HAS_LONG_LONG
156    BOOST_CHECK(tr1::llround(2.5f) == 3LL);
157    BOOST_CHECK(tr1::llround(2.25f) == 2LL);
158 #endif
159    BOOST_CHECK(tr1::lround(2.5f) == 3L);
160    BOOST_CHECK(tr1::lround(2.25f) == 2L);
161    BOOST_CHECK(tr1::round(2.5f) == 3.0f);
162    BOOST_CHECK(tr1::round(2.25f) == 2.0f);
163
164    BOOST_CHECK(tr1::nextafter(1.0f, 2.0f) > 1.0f);
165    BOOST_CHECK(tr1::nextafter(1.0f, -2.0f) < 1.0f);
166    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0f, 2.0f), -2.0f) == 1.0f);
167    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0f, -2.0f), 2.0f) == 1.0f);
168    BOOST_CHECK(tr1::nextafter(1.0f, 2.0f) > 1.0f);
169    BOOST_CHECK(tr1::nextafter(1.0f, -2.0f) < 1.0f);
170    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0f, 2.0f), -2.0f) == 1.0f);
171    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0f, -2.0f), 2.0f) == 1.0f);
172
173    BOOST_CHECK(tr1::trunc(2.5f) == 2.0f);
174    BOOST_CHECK(tr1::trunc(2.25f) == 2.0f);
175
176    //
177    // Now for the TR1 math functions:
178    //
179    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerref(4, 5, static_cast<float>(0.5L)), static_cast<float>(88.31510416666666666666666666666666666667L), eps * 100);
180    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerref(10, 0, static_cast<float>(2.5L)), static_cast<float>(-0.8802526766660982969576719576719576719577L), eps * 100);
181    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerref(10, 1, static_cast<float>(4.5L)), static_cast<float>(1.564311458042689732142857142857142857143L), eps * 100);
182    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerref(10, 6, static_cast<float>(8.5L)), static_cast<float>(20.51596541066649098875661375661375661376L), eps * 100);
183    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerref(10, 12, static_cast<float>(12.5L)), static_cast<float>(-199.5560968456234671241181657848324514991L), eps * 100);
184    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerref(50, 40, static_cast<float>(12.5L)), static_cast<float>(-4.996769495006119488583146995907246595400e16L), eps * 100);
185
186    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(1, static_cast<float>(0.5L)), static_cast<float>(0.5L), eps * 100);
187    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(4, static_cast<float>(0.5L)), static_cast<float>(-0.3307291666666666666666666666666666666667L), eps * 100);
188    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(7, static_cast<float>(0.5L)), static_cast<float>(-0.5183392237103174603174603174603174603175L), eps * 100);
189    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(20, static_cast<float>(0.5L)), static_cast<float>(0.3120174870800154148915399248893113634676L), eps * 100);
190    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(50, static_cast<float>(0.5L)), static_cast<float>(-0.3181388060269979064951118308575628226834L), eps * 100);
191
192    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(1, static_cast<float>(-0.5L)), static_cast<float>(1.5L), eps * 100);
193    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(4, static_cast<float>(-0.5L)), static_cast<float>(3.835937500000000000000000000000000000000L), eps * 100);
194    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(7, static_cast<float>(-0.5L)), static_cast<float>(7.950934709821428571428571428571428571429L), eps * 100);
195    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(20, static_cast<float>(-0.5L)), static_cast<float>(76.12915699869631476833699787070874048223L), eps * 100);
196    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(50, static_cast<float>(-0.5L)), static_cast<float>(2307.428631277506570629232863491518399720L), eps * 100);
197
198    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(1, static_cast<float>(4.5L)), static_cast<float>(-3.500000000000000000000000000000000000000L), eps * 100);
199    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(4, static_cast<float>(4.5L)), static_cast<float>(0.08593750000000000000000000000000000000000L), eps * 100);
200    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(7, static_cast<float>(4.5L)), static_cast<float>(-1.036928013392857142857142857142857142857L), eps * 100);
201    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(20, static_cast<float>(4.5L)), static_cast<float>(1.437239150257817378525582974722170737587L), eps * 100);
202    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerref(50, static_cast<float>(4.5L)), static_cast<float>(-0.7795068145562651416494321484050019245248L), eps * 100);
203
204    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendref(4, 2, static_cast<float>(0.5L)), static_cast<float>(4.218750000000000000000000000000000000000L), eps * 100);
205    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendref(7, 5, static_cast<float>(0.5L)), static_cast<float>(5696.789530152175143607977274672800795328L), eps * 100);
206    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendref(4, 2, static_cast<float>(-0.5L)), static_cast<float>(4.218750000000000000000000000000000000000L), eps * 100);
207    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendref(7, 5, static_cast<float>(-0.5L)), static_cast<float>(5696.789530152175143607977274672800795328L), eps * 100);
208
209    BOOST_CHECK_CLOSE_FRACTION(tr1::legendref(1, static_cast<float>(0.5L)), static_cast<float>(0.5L), eps * 100);
210    BOOST_CHECK_CLOSE_FRACTION(tr1::legendref(4, static_cast<float>(0.5L)), static_cast<float>(-0.2890625000000000000000000000000000000000L), eps * 100);
211    BOOST_CHECK_CLOSE_FRACTION(tr1::legendref(7, static_cast<float>(0.5L)), static_cast<float>(0.2231445312500000000000000000000000000000L), eps * 100);
212    BOOST_CHECK_CLOSE_FRACTION(tr1::legendref(40, static_cast<float>(0.5L)), static_cast<float>(-0.09542943523261546936538467572384923220258L), eps * 100);
213
214    float sv = eps / 1024;
215    BOOST_CHECK_CLOSE(tr1::betaf(static_cast<float>(1), static_cast<float>(1)), static_cast<float>(1), eps * 20 * 100);
216    BOOST_CHECK_CLOSE(tr1::betaf(static_cast<float>(1), static_cast<float>(4)), static_cast<float>(0.25), eps * 20 * 100);
217    BOOST_CHECK_CLOSE(tr1::betaf(static_cast<float>(4), static_cast<float>(1)), static_cast<float>(0.25), eps * 20 * 100);
218    BOOST_CHECK_CLOSE(tr1::betaf(sv, static_cast<float>(4)), 1/sv, eps * 20 * 100);
219    BOOST_CHECK_CLOSE(tr1::betaf(static_cast<float>(4), sv), 1/sv, eps * 20 * 100);
220    BOOST_CHECK_CLOSE(tr1::betaf(static_cast<float>(4), static_cast<float>(20)), static_cast<float>(0.00002823263692828910220214568040654997176736L), eps * 20 * 100);
221    BOOST_CHECK_CLOSE(tr1::betaf(static_cast<float>(0.0125L), static_cast<float>(0.000023L)), static_cast<float>(43558.24045647538375006349016083320744662L), eps * 20 * 100);
222
223    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(0)), static_cast<float>(1.5707963267948966192313216916397514420985846996876), eps * 5000);
224    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(0.125)), static_cast<float>(1.5769867712158131421244030532288080803822271060839), eps * 5000);
225    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(0.25)), static_cast<float>(1.5962422221317835101489690714979498795055744578951), eps * 5000);
226    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(300)/1024), static_cast<float>(1.6062331054696636704261124078746600894998873503208), eps * 5000);
227    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(400)/1024), static_cast<float>(1.6364782007562008756208066125715722889067992997614), eps * 5000);
228    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(-0.5)), static_cast<float>(1.6857503548125960428712036577990769895008008941411), eps * 5000);
229    BOOST_CHECK_CLOSE(tr1::comp_ellint_1f(static_cast<float>(-0.75)), static_cast<float>(1.9109897807518291965531482187613425592531451316788), eps * 5000);
230
231    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(-1)), static_cast<float>(1), eps * 5000);
232    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(0)), static_cast<float>(1.5707963267948966192313216916397514420985846996876), eps * 5000);
233    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(100) / 1024), static_cast<float>(1.5670445330545086723323795143598956428788609133377), eps * 5000);
234    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(200) / 1024), static_cast<float>(1.5557071588766556854463404816624361127847775545087), eps * 5000);
235    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(300) / 1024), static_cast<float>(1.5365278991162754883035625322482669608948678755743), eps * 5000);
236    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(400) / 1024), static_cast<float>(1.5090417763083482272165682786143770446401437564021), eps * 5000);
237    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(-0.5)), static_cast<float>(1.4674622093394271554597952669909161360253617523272), eps * 5000);
238    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(-600) / 1024), static_cast<float>(1.4257538571071297192428217218834579920545946473778), eps * 5000);
239    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(-800) / 1024), static_cast<float>(1.2927868476159125056958680222998765985004489572909), eps * 5000);
240    BOOST_CHECK_CLOSE(tr1::comp_ellint_2f(static_cast<float>(-900) / 1024), static_cast<float>(1.1966864890248739524112920627353824133420353430982), eps * 5000);
241
242    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(0.2), static_cast<float>(0)), static_cast<float>(1.586867847454166237308008033828114192951), eps * 5000);
243    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(0.4), static_cast<float>(0)), static_cast<float>(1.639999865864511206865258329748601457626), eps * 5000);
244    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(0), static_cast<float>(0)), static_cast<float>(1.57079632679489661923132169163975144209858469968755291048747), eps * 5000);
245    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(0), static_cast<float>(0.5)), static_cast<float>(2.221441469079183123507940495030346849307), eps * 5000);
246    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(0.3), static_cast<float>(-4)), static_cast<float>(0.712708870925620061597924858162260293305195624270730660081949), eps * 5000);
247    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(-0.5), static_cast<float>(-1e+05)), static_cast<float>(0.00496944596485066055800109163256108604615568144080386919012831), eps * 5000);
248    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(-0.75), static_cast<float>(-1e+10)), static_cast<float>(0.0000157080225184890546939710019277357161497407143903832703317801), eps * 5000);
249    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(-0.875), static_cast<float>(1) / 1024), static_cast<float>(2.18674503176462374414944618968850352696579451638002110619287), eps * 5000);
250    BOOST_CHECK_CLOSE(tr1::comp_ellint_3f(static_cast<float>(-0.875), static_cast<float>(1023)/1024), static_cast<float>(101.045289804941384100960063898569538919135722087486350366997), eps * 5000);
251
252    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(2.25), static_cast<float>(1)/(1024*1024)), static_cast<float>(2.34379212133481347189068464680335815256364262507955635911656e-15), eps * 5000);
253    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(5.5), static_cast<float>(3.125)), static_cast<float>(0.0583514045989371500460946536220735787163510569634133670181210), eps * 5000);
254    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(-5) + static_cast<float>(1)/1024, static_cast<float>(2.125)), static_cast<float>(0.0267920938009571023702933210070984416052633027166975342895062), eps * 5000);
255    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(-5.5), static_cast<float>(10)), static_cast<float>(597.577606961369169607937419869926705730305175364662688426534), eps * 5000);
256    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(-10486074)/(1024*1024), static_cast<float>(1)/1024), static_cast<float>(1.41474005665181350367684623930576333542989766867888186478185e35), eps * 5000);
257    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(-10486074)/(1024*1024), static_cast<float>(50)), static_cast<float>(1.07153277202900671531087024688681954238311679648319534644743e20), eps * 5000);
258    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(144794)/1024, static_cast<float>(100)), static_cast<float>(2066.27694757392660413922181531984160871678224178890247540320), eps * 5000);
259    BOOST_CHECK_CLOSE(tr1::cyl_bessel_if(static_cast<float>(-144794)/1024, static_cast<float>(100)), static_cast<float>(2066.27694672763190927440969155740243346136463461655104698748), eps * 5000);
260
261    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(2457)/1024, static_cast<float>(1)/1024), static_cast<float>(3.80739920118603335646474073457326714709615200130620574875292e-9), eps * 5000);
262    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(5.5), static_cast<float>(3217)/1024), static_cast<float>(0.0281933076257506091621579544064767140470089107926550720453038), eps * 5000);
263    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-5.5), static_cast<float>(3217)/1024), static_cast<float>(-2.55820064470647911823175836997490971806135336759164272675969), eps * 5000);
264    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-5.5), static_cast<float>(1e+04)), static_cast<float>(2.449843111985605522111159013846599118397e-03), eps * 5000);
265    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(5.5), static_cast<float>(1e+04)), static_cast<float>(0.00759343502722670361395585198154817047185480147294665270646578), eps * 5000);
266    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(5.5), static_cast<float>(1e+06)), static_cast<float>(-0.000747424248595630177396350688505919533097973148718960064663632), eps * 5000);
267    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(5.125), static_cast<float>(1e+06)), static_cast<float>(-0.000776600124835704280633640911329691642748783663198207360238214), eps * 5000);
268    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(5.875), static_cast<float>(1e+06)), static_cast<float>(-0.000466322721115193071631008581529503095819705088484386434589780), eps * 5000);
269    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(0.5), static_cast<float>(101)), static_cast<float>(0.0358874487875643822020496677692429287863419555699447066226409), eps * 5000);
270    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-5.5), static_cast<float>(1e+04)), static_cast<float>(0.00244984311198560552211115901384659911839737686676766460822577), eps * 5000);
271    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-5.5), static_cast<float>(1e+06)), static_cast<float>(0.000279243200433579511095229508894156656558211060453622750659554), eps * 5000);
272    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-0.5), static_cast<float>(101)), static_cast<float>(0.0708184798097594268482290389188138201440114881159344944791454), eps * 5000);
273    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1)/1024), static_cast<float>(1.41474013160494695750009004222225969090304185981836460288562e35), eps * 5000);
274    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(15)), static_cast<float>(-0.0902239288885423309568944543848111461724911781719692852541489), eps * 5000);
275    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(10486074) / (1024*1024), static_cast<float>(1e+02)), static_cast<float>(-0.0547064914615137807616774867984047583596945624129838091326863), eps * 5000);
276    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(10486074) / (1024*1024), static_cast<float>(2e+04)), static_cast<float>(-0.00556783614400875611650958980796060611309029233226596737701688), eps * 5000);
277    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jf(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1e+02)), static_cast<float>(-0.0547613660316806551338637153942604550779513947674222863858713), eps * 5000);
278
279    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(0.5), static_cast<float>(0.875)), static_cast<float>(0.558532231646608646115729767013630967055657943463362504577189), eps * 5000);
280    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(0.5), static_cast<float>(1.125)), static_cast<float>(0.383621010650189547146769320487006220295290256657827220786527), eps * 5000);
281    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(2.25), static_cast<float>(std::ldexp(1.0, -30))), static_cast<float>(5.62397392719283271332307799146649700147907612095185712015604e20), eps * 5000);
282    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(5.5), static_cast<float>(3217)/1024), static_cast<float>(1.30623288775012596319554857587765179889689223531159532808379), eps * 5000);
283    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(-5.5), static_cast<float>(10)), static_cast<float>(0.0000733045300798502164644836879577484533096239574909573072142667), eps * 5000);
284    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(-5.5), static_cast<float>(100)), static_cast<float>(5.41274555306792267322084448693957747924412508020839543293369e-45), eps * 5000);
285    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(10240)/1024, static_cast<float>(1)/1024), static_cast<float>(2.35522579263922076203415803966825431039900000000993410734978e38), eps * 5000);
286    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(10240)/1024, static_cast<float>(10)), static_cast<float>(0.00161425530039067002345725193091329085443750382929208307802221), eps * 5000);
287    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(144793)/1024, static_cast<float>(100)), static_cast<float>(1.39565245860302528069481472855619216759142225046370312329416e-6), eps * 5000);
288    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kf(static_cast<float>(144793)/1024, static_cast<float>(200)), static_cast<float>(9.11950412043225432171915100042647230802198254567007382956336e-68), eps * 5000);
289
290    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(0.5), static_cast<float>(1) / (1024*1024)), static_cast<float>(-817.033790261762580469303126467917092806755460418223776544122), eps * 5000);
291    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(5.5), static_cast<float>(3.125)), static_cast<float>(-2.61489440328417468776474188539366752698192046890955453259866), eps * 5000);
292    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(-5.5), static_cast<float>(3.125)), static_cast<float>(-0.0274994493896489729948109971802244976377957234563871795364056), eps * 5000);
293    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(-5.5), static_cast<float>(1e+04)), static_cast<float>(-0.00759343502722670361395585198154817047185480147294665270646578), eps * 5000);
294    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1)/1024), static_cast<float>(-1.50382374389531766117868938966858995093408410498915220070230e38), eps * 5000);
295    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1e+02)), static_cast<float>(0.0583041891319026009955779707640455341990844522293730214223545), eps * 5000);
296    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(141.75), static_cast<float>(1e+02)), static_cast<float>(-5.38829231428696507293191118661269920130838607482708483122068e9), eps * 5000);
297    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(141.75), static_cast<float>(2e+04)), static_cast<float>(-0.00376577888677186194728129112270988602876597726657372330194186), eps * 5000);
298    BOOST_CHECK_CLOSE(tr1::cyl_neumannf(static_cast<float>(-141.75), static_cast<float>(1e+02)), static_cast<float>(-3.81009803444766877495905954105669819951653361036342457919021e9), eps * 5000);
299
300    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0), static_cast<float>(0)), static_cast<float>(0), eps * 5000);
301    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0), static_cast<float>(-10)), static_cast<float>(-10), eps * 5000);
302    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(-1), static_cast<float>(-1)), static_cast<float>(-1.2261911708835170708130609674719067527242483502207), eps * 5000);
303    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.875), static_cast<float>(-4)), static_cast<float>(-5.3190556182262405182189463092940736859067548232647), eps * 5000);
304    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(-0.625), static_cast<float>(8)), static_cast<float>(9.0419973860310100524448893214394562615252527557062), eps * 5000);
305    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.875), static_cast<float>(1e-05)), static_cast<float>(0.000010000000000127604166668510945638036143355898993088), eps * 5000);
306    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(10)/1024, static_cast<float>(1e+05)), static_cast<float>(100002.38431454899771096037307519328741455615271038), eps * 5000);
307    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(1), static_cast<float>(1e-20)), static_cast<float>(1.0000000000000000000000000000000000000000166666667e-20), eps * 5000);
308    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(1e-20), static_cast<float>(1e-20)), static_cast<float>(1.000000000000000e-20), eps * 5000);
309    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(400)/1024, static_cast<float>(1e+20)), static_cast<float>(1.0418143796499216839719289963154558027005142709763e20), eps * 5000);
310    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(2)), static_cast<float>(2.1765877052210673672479877957388515321497888026770), eps * 5000);
311    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(4)), static_cast<float>(4.2543274975235836861894752787874633017836785640477), eps * 5000);
312    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(6)), static_cast<float>(6.4588766202317746302999080620490579800463614807916), eps * 5000);
313    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(10)), static_cast<float>(10.697409951222544858346795279378531495869386960090), eps * 5000);
314    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(-2)), static_cast<float>(-2.1765877052210673672479877957388515321497888026770), eps * 5000);
315    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(-4)), static_cast<float>(-4.2543274975235836861894752787874633017836785640477), eps * 5000);
316    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(-6)), static_cast<float>(-6.4588766202317746302999080620490579800463614807916), eps * 5000);
317    BOOST_CHECK_CLOSE(tr1::ellint_1f(static_cast<float>(0.5), static_cast<float>(-10)), static_cast<float>(-10.697409951222544858346795279378531495869386960090), eps * 5000);
318
319    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(0), static_cast<float>(0)), static_cast<float>(0), eps * 5000);
320    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(0), static_cast<float>(-10)), static_cast<float>(-10), eps * 5000);
321    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(-1), static_cast<float>(-1)), static_cast<float>(-0.84147098480789650665250232163029899962256306079837), eps * 5000);
322    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(900) / 1024, static_cast<float>(-4)), static_cast<float>(-3.1756145986492562317862928524528520686391383168377), eps * 5000);
323    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(-600) / 1024, static_cast<float>(8)), static_cast<float>(7.2473147180505693037677015377802777959345489333465), eps * 5000);
324    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(800) / 1024, static_cast<float>(1e-05)), static_cast<float>(9.999999999898274739584436515967055859383969942432E-6), eps * 5000);
325    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(100) / 1024, static_cast<float>(1e+05)), static_cast<float>(99761.153306972066658135668386691227343323331995888), eps * 5000);
326    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(-0.5), static_cast<float>(1e+10)), static_cast<float>(9.3421545766487137036576748555295222252286528414669e9), eps * 5000);
327    BOOST_CHECK_CLOSE(tr1::ellint_2f(static_cast<float>(400) / 1024, ldexp(static_cast<float>(1), 66)), static_cast<float>(7.0886102721911705466476846969992069994308167515242e19), eps * 5000);
328
329    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(1), static_cast<float>(-1)), static_cast<float>(-1.557407724654902230506974807458360173087), eps * 5000);
330    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.4), static_cast<float>(0), static_cast<float>(-4)), static_cast<float>(-4.153623371196831087495427530365430979011), eps * 5000);
331    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(-0.6), static_cast<float>(0), static_cast<float>(8)), static_cast<float>(8.935930619078575123490612395578518914416), eps * 5000);
332    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.25), static_cast<float>(0), static_cast<float>(0.5)), static_cast<float>(0.501246705365439492445236118603525029757890291780157969500480), eps * 5000);
333    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(0), static_cast<float>(0.5)), static_cast<float>(0.5), eps * 5000);
334    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(-2), static_cast<float>(0.5)), static_cast<float>(0.437501067017546278595664813509803743009132067629603474488486), eps * 5000);
335    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(0.25), static_cast<float>(0.5)), static_cast<float>(0.510269830229213412212501938035914557628394166585442994564135), eps * 5000);
336    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(0.75), static_cast<float>(0.5)), static_cast<float>(0.533293253875952645421201146925578536430596894471541312806165), eps * 5000);
337    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(0.75), static_cast<float>(0.75)), static_cast<float>(0.871827580412760575085768367421866079353646112288567703061975), eps * 5000);
338    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(1), static_cast<float>(0.25)), static_cast<float>(0.255341921221036266504482236490473678204201638800822621740476), eps * 5000);
339    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(2), static_cast<float>(0.25)), static_cast<float>(0.261119051639220165094943572468224137699644963125853641716219), eps * 5000);
340    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0), static_cast<float>(1023)/1024, static_cast<float>(1.5)), static_cast<float>(13.2821612239764190363647953338544569682942329604483733197131), eps * 5000);
341    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.5), static_cast<float>(0.5), static_cast<float>(-1)), static_cast<float>(-1.228014414316220642611298946293865487807), eps * 5000);
342    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.5), static_cast<float>(0.5), static_cast<float>(1e+10)), static_cast<float>(1.536591003599172091573590441336982730551e+10), eps * 5000);
343    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.75), static_cast<float>(-1e+05), static_cast<float>(10)), static_cast<float>(0.0347926099493147087821620459290460547131012904008557007934290), eps * 5000);
344    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.875), static_cast<float>(-1e+10), static_cast<float>(10)), static_cast<float>(0.000109956202759561502329123384755016959364346382187364656768212), eps * 5000);
345    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.875), static_cast<float>(-1e+10), static_cast<float>(1e+20)), static_cast<float>(1.00000626665567332602765201107198822183913978895904937646809e15), eps * 5000);
346    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.875), static_cast<float>(-1e+10), static_cast<float>(1608)/1024), static_cast<float>(0.0000157080616044072676127333183571107873332593142625043567690379), eps * 5000);
347    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.875), 1-static_cast<float>(1) / 1024, static_cast<float>(1e+20)), static_cast<float>(6.43274293944380717581167058274600202023334985100499739678963e21), eps * 5000);
348    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.25), static_cast<float>(50), static_cast<float>(0.1)), static_cast<float>(0.124573770342749525407523258569507331686458866564082916835900), eps * 5000);
349    BOOST_CHECK_CLOSE(tr1::ellint_3f(static_cast<float>(0.25), static_cast<float>(1.125), static_cast<float>(1)), static_cast<float>(1.77299767784815770192352979665283069318388205110727241629752), eps * 5000);
350
351    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(1)/1024), static_cast<float>(-6.35327933972759151358547423727042905862963067106751711596065L), eps * 5000);
352    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(0.125)), static_cast<float>(-1.37320852494298333781545045921206470808223543321810480716122L), eps * 5000);
353    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(0.5)), static_cast<float>(0.454219904863173579920523812662802365281405554352642045162818L), eps * 5000);
354    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(1)), static_cast<float>(1.89511781635593675546652093433163426901706058173270759164623L), eps * 5000);
355    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(50.5)), static_cast<float>(1.72763195602911805201155668940185673806099654090456049881069e20L), eps * 5000);
356    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(-1)/1024), static_cast<float>(-6.35523246483107180261445551935803221293763008553775821607264L), eps * 5000);
357    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(-0.125)), static_cast<float>(-1.62342564058416879145630692462440887363310605737209536579267L), eps * 5000);
358    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(-0.5)), static_cast<float>(-0.559773594776160811746795939315085235226846890316353515248293L), eps * 5000);
359    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(-1)), static_cast<float>(-0.219383934395520273677163775460121649031047293406908207577979L), eps * 5000);
360    BOOST_CHECK_CLOSE(tr1::expintf(static_cast<float>(-50.5)), static_cast<float>(-2.27237132932219350440719707268817831250090574830769670186618e-24L), eps * 5000);
361
362    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(0, static_cast<float>(1)), static_cast<float>(1.L), 100 * eps);
363    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(1, static_cast<float>(1)), static_cast<float>(2.L), 100 * eps);
364    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(1, static_cast<float>(2)), static_cast<float>(4.L), 100 * eps);
365    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(1, static_cast<float>(10)), static_cast<float>(20), 100 * eps);
366    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(1, static_cast<float>(100)), static_cast<float>(200), 100 * eps);
367    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(1, static_cast<float>(1e6)), static_cast<float>(2e6), 100 * eps);
368    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(10, static_cast<float>(30)), static_cast<float>(5.896624628001300E+17L), 100 * eps);
369    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(10, static_cast<float>(1000)), static_cast<float>(1.023976960161280E+33L), 100 * eps);
370    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(10, static_cast<float>(10)), static_cast<float>(8.093278209760000E+12L), 100 * eps);
371    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(10, static_cast<float>(-10)), static_cast<float>(8.093278209760000E+12L), 100 * eps);
372    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(3, static_cast<float>(-10)), static_cast<float>(-7.880000000000000E+3L), 100 * eps);
373    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(3, static_cast<float>(-1000)), static_cast<float>(-7.999988000000000E+9L), 100 * eps);
374    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitef(3, static_cast<float>(-1000000)), static_cast<float>(-7.999999999988000E+18L), 100 * eps);
375
376    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(0.125)), static_cast<float>(-0.63277562349869525529352526763564627152686379131122L), eps * 5000);
377    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(1023) / static_cast<float>(1024)), static_cast<float>(-1023.4228554489429786541032870895167448906103303056L), eps * 5000);
378    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(1025) / static_cast<float>(1024)), static_cast<float>(1024.5772867695045940578681624248887776501597556226L), eps * 5000);
379    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(0.5)), static_cast<float>(-1.46035450880958681288949915251529801246722933101258149054289L), eps * 5000);
380    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(1.125)), static_cast<float>(8.5862412945105752999607544082693023591996301183069L), eps * 5000);
381    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(2)), static_cast<float>(1.6449340668482264364724151666460251892189499012068L), eps * 5000);
382    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(3.5)), static_cast<float>(1.1267338673170566464278124918549842722219969574036L), eps * 5000);
383    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(4)), static_cast<float>(1.08232323371113819151600369654116790277475095191872690768298L), eps * 5000);
384    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(4 + static_cast<float>(1) / 1024), static_cast<float>(1.08225596856391369799036835439238249195298434901488518878804L), eps * 5000);
385    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(4.5)), static_cast<float>(1.05470751076145426402296728896028011727249383295625173068468L), eps * 5000);
386    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(6.5)), static_cast<float>(1.01200589988852479610078491680478352908773213619144808841031L), eps * 5000);
387    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(7.5)), static_cast<float>(1.00582672753652280770224164440459408011782510096320822989663L), eps * 5000);
388    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(8.125)), static_cast<float>(1.0037305205308161603183307711439385250181080293472L), eps * 5000);
389    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(16.125)), static_cast<float>(1.0000140128224754088474783648500235958510030511915L), eps * 5000);
390    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(0)), static_cast<float>(-0.5L), eps * 5000);
391    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-0.125)), static_cast<float>(-0.39906966894504503550986928301421235400280637468895L), eps * 5000);
392    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-1)), static_cast<float>(-0.083333333333333333333333333333333333333333333333333L), eps * 5000);
393    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-2)), static_cast<float>(0L), eps * 5000);
394    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-2.5)), static_cast<float>(0.0085169287778503305423585670283444869362759902200745L), eps * 5000 * 3);
395    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-3)), static_cast<float>(0.0083333333333333333333333333333333333333333333333333L), eps * 5000);
396    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-4)), static_cast<float>(0), eps * 5000);
397    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-20)), static_cast<float>(0), eps * 5000 * 100);
398    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-21)), static_cast<float>(-281.46014492753623188405797101449275362318840579710L), eps * 5000 * 100);
399    BOOST_CHECK_CLOSE(tr1::riemann_zetaf(static_cast<float>(-30.125)), static_cast<float>(2.2762941726834511267740045451463455513839970804578e7L), eps * 5000 * 100);
400
401    BOOST_CHECK_CLOSE(tr1::sph_besself(0, static_cast<float>(0.1433600485324859619140625e-1)), static_cast<float>(0.9999657468461303487880990241993035937654e0),  eps * 5000 * 100);
402    BOOST_CHECK_CLOSE(tr1::sph_besself(0, static_cast<float>(0.1760916970670223236083984375e-1)), static_cast<float>(0.9999483203249623334100130061926184665364e0),  eps * 5000 * 100);
403    BOOST_CHECK_CLOSE(tr1::sph_besself(2, static_cast<float>(0.1433600485324859619140625e-1)), static_cast<float>(0.1370120120703995134662099191103188366059e-4),  eps * 5000 * 100);
404    BOOST_CHECK_CLOSE(tr1::sph_besself(2, static_cast<float>(0.1760916970670223236083984375e-1)), static_cast<float>(0.2067173265753174063228459655801741280461e-4),  eps * 5000 * 100);
405    BOOST_CHECK_CLOSE(tr1::sph_besself(7, static_cast<float>(0.1252804412841796875e3)), static_cast<float>(0.7887555711993028736906736576314283291289e-2),  eps * 5000 * 100);
406    BOOST_CHECK_CLOSE(tr1::sph_besself(7, static_cast<float>(0.25554705810546875e3)), static_cast<float>(-0.1463292767579579943284849187188066532514e-2),  eps * 5000 * 100);
407
408    BOOST_CHECK_CLOSE(tr1::sph_neumannf(0, static_cast<float>(0.408089816570281982421875e0)), static_cast<float>(-0.2249212131304610409189209411089291558038e1), eps * 5000 * 100);
409    BOOST_CHECK_CLOSE(tr1::sph_neumannf(0, static_cast<float>(0.6540834903717041015625e0)), static_cast<float>(-0.1213309779166084571756446746977955970241e1),   eps * 5000 * 100);
410    BOOST_CHECK_CLOSE(tr1::sph_neumannf(2, static_cast<float>(0.408089816570281982421875e0)), static_cast<float>(-0.4541702641837159203058389758895634766256e2),   eps * 5000 * 100);
411    BOOST_CHECK_CLOSE(tr1::sph_neumannf(2, static_cast<float>(0.6540834903717041015625e0)), static_cast<float>(-0.1156112621471167110574129561700037138981e2),   eps * 5000 * 100);
412    BOOST_CHECK_CLOSE(tr1::sph_neumannf(10, static_cast<float>(0.1097540378570556640625e1)), static_cast<float>(-0.2427889658115064857278886600528596240123e9),   eps * 5000 * 100);
413    BOOST_CHECK_CLOSE(tr1::sph_neumannf(10, static_cast<float>(0.30944411754608154296875e1)), static_cast<float>(-0.3394649246350136450439882104151313759251e4),   eps * 5000 * 100);
414
415    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendref(3, 2, static_cast<float>(0.5)), static_cast<float>(0.2061460599687871330692286791802688341213L), eps * 5000);
416    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendref(40, 15, static_cast<float>(0.75)), static_cast<float>(-0.406036847302819452666908966769096223205057182668333862900509L), eps * 5000);
417
418    //
419    // Now all over again but without the "f" suffix on the function names this time:
420    //
421    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(4, 5, static_cast<float>(0.5L)), static_cast<float>(88.31510416666666666666666666666666666667L), eps * 100);
422    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 0, static_cast<float>(2.5L)), static_cast<float>(-0.8802526766660982969576719576719576719577L), eps * 100);
423    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 1, static_cast<float>(4.5L)), static_cast<float>(1.564311458042689732142857142857142857143L), eps * 100);
424    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 6, static_cast<float>(8.5L)), static_cast<float>(20.51596541066649098875661375661375661376L), eps * 100);
425    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 12, static_cast<float>(12.5L)), static_cast<float>(-199.5560968456234671241181657848324514991L), eps * 100);
426    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(50, 40, static_cast<float>(12.5L)), static_cast<float>(-4.996769495006119488583146995907246595400e16L), eps * 100);
427
428    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1, static_cast<float>(0.5L)), static_cast<float>(0.5L), eps * 100);
429    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4, static_cast<float>(0.5L)), static_cast<float>(-0.3307291666666666666666666666666666666667L), eps * 100);
430    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7, static_cast<float>(0.5L)), static_cast<float>(-0.5183392237103174603174603174603174603175L), eps * 100);
431    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20, static_cast<float>(0.5L)), static_cast<float>(0.3120174870800154148915399248893113634676L), eps * 100);
432    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50, static_cast<float>(0.5L)), static_cast<float>(-0.3181388060269979064951118308575628226834L), eps * 100);
433
434    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1, static_cast<float>(-0.5L)), static_cast<float>(1.5L), eps * 100);
435    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4, static_cast<float>(-0.5L)), static_cast<float>(3.835937500000000000000000000000000000000L), eps * 100);
436    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7, static_cast<float>(-0.5L)), static_cast<float>(7.950934709821428571428571428571428571429L), eps * 100);
437    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20, static_cast<float>(-0.5L)), static_cast<float>(76.12915699869631476833699787070874048223L), eps * 100);
438    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50, static_cast<float>(-0.5L)), static_cast<float>(2307.428631277506570629232863491518399720L), eps * 100);
439
440    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1, static_cast<float>(4.5L)), static_cast<float>(-3.500000000000000000000000000000000000000L), eps * 100);
441    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4, static_cast<float>(4.5L)), static_cast<float>(0.08593750000000000000000000000000000000000L), eps * 100);
442    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7, static_cast<float>(4.5L)), static_cast<float>(-1.036928013392857142857142857142857142857L), eps * 100);
443    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20, static_cast<float>(4.5L)), static_cast<float>(1.437239150257817378525582974722170737587L), eps * 100);
444    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50, static_cast<float>(4.5L)), static_cast<float>(-0.7795068145562651416494321484050019245248L), eps * 100);
445
446    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(4, 2, static_cast<float>(0.5L)), static_cast<float>(4.218750000000000000000000000000000000000L), eps * 100);
447    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(7, 5, static_cast<float>(0.5L)), static_cast<float>(5696.789530152175143607977274672800795328L), eps * 100);
448    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(4, 2, static_cast<float>(-0.5L)), static_cast<float>(4.218750000000000000000000000000000000000L), eps * 100);
449    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(7, 5, static_cast<float>(-0.5L)), static_cast<float>(5696.789530152175143607977274672800795328L), eps * 100);
450
451    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(1, static_cast<float>(0.5L)), static_cast<float>(0.5L), eps * 100);
452    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(4, static_cast<float>(0.5L)), static_cast<float>(-0.2890625000000000000000000000000000000000L), eps * 100);
453    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(7, static_cast<float>(0.5L)), static_cast<float>(0.2231445312500000000000000000000000000000L), eps * 100);
454    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(40, static_cast<float>(0.5L)), static_cast<float>(-0.09542943523261546936538467572384923220258L), eps * 100);
455
456    BOOST_CHECK_CLOSE(tr1::beta(static_cast<float>(1), static_cast<float>(1)), static_cast<float>(1), eps * 20 * 100);
457    BOOST_CHECK_CLOSE(tr1::beta(static_cast<float>(1), static_cast<float>(4)), static_cast<float>(0.25), eps * 20 * 100);
458    BOOST_CHECK_CLOSE(tr1::beta(static_cast<float>(4), static_cast<float>(1)), static_cast<float>(0.25), eps * 20 * 100);
459    BOOST_CHECK_CLOSE(tr1::beta(sv, static_cast<float>(4)), 1/sv, eps * 20 * 100);
460    BOOST_CHECK_CLOSE(tr1::beta(static_cast<float>(4), sv), 1/sv, eps * 20 * 100);
461    BOOST_CHECK_CLOSE(tr1::beta(static_cast<float>(4), static_cast<float>(20)), static_cast<float>(0.00002823263692828910220214568040654997176736L), eps * 20 * 100);
462    BOOST_CHECK_CLOSE(tr1::beta(static_cast<float>(0.0125L), static_cast<float>(0.000023L)), static_cast<float>(43558.24045647538375006349016083320744662L), eps * 20 * 100);
463
464    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(0)), static_cast<float>(1.5707963267948966192313216916397514420985846996876), eps * 5000);
465    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(0.125)), static_cast<float>(1.5769867712158131421244030532288080803822271060839), eps * 5000);
466    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(0.25)), static_cast<float>(1.5962422221317835101489690714979498795055744578951), eps * 5000);
467    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(300)/1024), static_cast<float>(1.6062331054696636704261124078746600894998873503208), eps * 5000);
468    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(400)/1024), static_cast<float>(1.6364782007562008756208066125715722889067992997614), eps * 5000);
469    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(-0.5)), static_cast<float>(1.6857503548125960428712036577990769895008008941411), eps * 5000);
470    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<float>(-0.75)), static_cast<float>(1.9109897807518291965531482187613425592531451316788), eps * 5000);
471
472    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(-1)), static_cast<float>(1), eps * 5000);
473    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(0)), static_cast<float>(1.5707963267948966192313216916397514420985846996876), eps * 5000);
474    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(100) / 1024), static_cast<float>(1.5670445330545086723323795143598956428788609133377), eps * 5000);
475    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(200) / 1024), static_cast<float>(1.5557071588766556854463404816624361127847775545087), eps * 5000);
476    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(300) / 1024), static_cast<float>(1.5365278991162754883035625322482669608948678755743), eps * 5000);
477    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(400) / 1024), static_cast<float>(1.5090417763083482272165682786143770446401437564021), eps * 5000);
478    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(-0.5)), static_cast<float>(1.4674622093394271554597952669909161360253617523272), eps * 5000);
479    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(-600) / 1024), static_cast<float>(1.4257538571071297192428217218834579920545946473778), eps * 5000);
480    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(-800) / 1024), static_cast<float>(1.2927868476159125056958680222998765985004489572909), eps * 5000);
481    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<float>(-900) / 1024), static_cast<float>(1.1966864890248739524112920627353824133420353430982), eps * 5000);
482
483    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(0.2), static_cast<float>(0)), static_cast<float>(1.586867847454166237308008033828114192951), eps * 5000);
484    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(0.4), static_cast<float>(0)), static_cast<float>(1.639999865864511206865258329748601457626), eps * 5000);
485    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(0), static_cast<float>(0)), static_cast<float>(1.57079632679489661923132169163975144209858469968755291048747), eps * 5000);
486    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(0), static_cast<float>(0.5)), static_cast<float>(2.221441469079183123507940495030346849307), eps * 5000);
487    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(0.3), static_cast<float>(-4)), static_cast<float>(0.712708870925620061597924858162260293305195624270730660081949), eps * 5000);
488    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(-0.5), static_cast<float>(-1e+05)), static_cast<float>(0.00496944596485066055800109163256108604615568144080386919012831), eps * 5000);
489    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(-0.75), static_cast<float>(-1e+10)), static_cast<float>(0.0000157080225184890546939710019277357161497407143903832703317801), eps * 5000);
490    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(-0.875), static_cast<float>(1) / 1024), static_cast<float>(2.18674503176462374414944618968850352696579451638002110619287), eps * 5000);
491    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<float>(-0.875), static_cast<float>(1023)/1024), static_cast<float>(101.045289804941384100960063898569538919135722087486350366997), eps * 5000);
492
493    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(2.25), static_cast<float>(1)/(1024*1024)), static_cast<float>(2.34379212133481347189068464680335815256364262507955635911656e-15), eps * 5000);
494    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(5.5), static_cast<float>(3.125)), static_cast<float>(0.0583514045989371500460946536220735787163510569634133670181210), eps * 5000);
495    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(-5) + static_cast<float>(1)/1024, static_cast<float>(2.125)), static_cast<float>(0.0267920938009571023702933210070984416052633027166975342895062), eps * 5000);
496    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(-5.5), static_cast<float>(10)), static_cast<float>(597.577606961369169607937419869926705730305175364662688426534), eps * 5000);
497    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(-10486074)/(1024*1024), static_cast<float>(1)/1024), static_cast<float>(1.41474005665181350367684623930576333542989766867888186478185e35), eps * 5000);
498    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(-10486074)/(1024*1024), static_cast<float>(50)), static_cast<float>(1.07153277202900671531087024688681954238311679648319534644743e20), eps * 5000);
499    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(144794)/1024, static_cast<float>(100)), static_cast<float>(2066.27694757392660413922181531984160871678224178890247540320), eps * 5000);
500    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<float>(-144794)/1024, static_cast<float>(100)), static_cast<float>(2066.27694672763190927440969155740243346136463461655104698748), eps * 5000);
501
502    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(2457)/1024, static_cast<float>(1)/1024), static_cast<float>(3.80739920118603335646474073457326714709615200130620574875292e-9), eps * 5000);
503    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(5.5), static_cast<float>(3217)/1024), static_cast<float>(0.0281933076257506091621579544064767140470089107926550720453038), eps * 5000);
504    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-5.5), static_cast<float>(3217)/1024), static_cast<float>(-2.55820064470647911823175836997490971806135336759164272675969), eps * 5000);
505    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-5.5), static_cast<float>(1e+04)), static_cast<float>(2.449843111985605522111159013846599118397e-03), eps * 5000);
506    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(5.5), static_cast<float>(1e+04)), static_cast<float>(0.00759343502722670361395585198154817047185480147294665270646578), eps * 5000);
507    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(5.5), static_cast<float>(1e+06)), static_cast<float>(-0.000747424248595630177396350688505919533097973148718960064663632), eps * 5000);
508    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(5.125), static_cast<float>(1e+06)), static_cast<float>(-0.000776600124835704280633640911329691642748783663198207360238214), eps * 5000);
509    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(5.875), static_cast<float>(1e+06)), static_cast<float>(-0.000466322721115193071631008581529503095819705088484386434589780), eps * 5000);
510    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(0.5), static_cast<float>(101)), static_cast<float>(0.0358874487875643822020496677692429287863419555699447066226409), eps * 5000);
511    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-5.5), static_cast<float>(1e+04)), static_cast<float>(0.00244984311198560552211115901384659911839737686676766460822577), eps * 5000);
512    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-5.5), static_cast<float>(1e+06)), static_cast<float>(0.000279243200433579511095229508894156656558211060453622750659554), eps * 5000);
513    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-0.5), static_cast<float>(101)), static_cast<float>(0.0708184798097594268482290389188138201440114881159344944791454), eps * 5000);
514    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1)/1024), static_cast<float>(1.41474013160494695750009004222225969090304185981836460288562e35), eps * 5000);
515    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(15)), static_cast<float>(-0.0902239288885423309568944543848111461724911781719692852541489), eps * 5000);
516    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(10486074) / (1024*1024), static_cast<float>(1e+02)), static_cast<float>(-0.0547064914615137807616774867984047583596945624129838091326863), eps * 5000);
517    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(10486074) / (1024*1024), static_cast<float>(2e+04)), static_cast<float>(-0.00556783614400875611650958980796060611309029233226596737701688), eps * 5000);
518    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1e+02)), static_cast<float>(-0.0547613660316806551338637153942604550779513947674222863858713), eps * 5000);
519
520    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(0.5), static_cast<float>(0.875)), static_cast<float>(0.558532231646608646115729767013630967055657943463362504577189), eps * 5000);
521    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(0.5), static_cast<float>(1.125)), static_cast<float>(0.383621010650189547146769320487006220295290256657827220786527), eps * 5000);
522    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(2.25), static_cast<float>(std::ldexp(1.0, -30))), static_cast<float>(5.62397392719283271332307799146649700147907612095185712015604e20), eps * 5000);
523    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(5.5), static_cast<float>(3217)/1024), static_cast<float>(1.30623288775012596319554857587765179889689223531159532808379), eps * 5000);
524    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(-5.5), static_cast<float>(10)), static_cast<float>(0.0000733045300798502164644836879577484533096239574909573072142667), eps * 5000);
525    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(-5.5), static_cast<float>(100)), static_cast<float>(5.41274555306792267322084448693957747924412508020839543293369e-45), eps * 5000);
526    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(10240)/1024, static_cast<float>(1)/1024), static_cast<float>(2.35522579263922076203415803966825431039900000000993410734978e38), eps * 5000);
527    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(10240)/1024, static_cast<float>(10)), static_cast<float>(0.00161425530039067002345725193091329085443750382929208307802221), eps * 5000);
528    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(144793)/1024, static_cast<float>(100)), static_cast<float>(1.39565245860302528069481472855619216759142225046370312329416e-6), eps * 5000);
529    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<float>(144793)/1024, static_cast<float>(200)), static_cast<float>(9.11950412043225432171915100042647230802198254567007382956336e-68), eps * 5000);
530
531    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(0.5), static_cast<float>(1) / (1024*1024)), static_cast<float>(-817.033790261762580469303126467917092806755460418223776544122), eps * 5000);
532    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(5.5), static_cast<float>(3.125)), static_cast<float>(-2.61489440328417468776474188539366752698192046890955453259866), eps * 5000);
533    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(-5.5), static_cast<float>(3.125)), static_cast<float>(-0.0274994493896489729948109971802244976377957234563871795364056), eps * 5000);
534    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(-5.5), static_cast<float>(1e+04)), static_cast<float>(-0.00759343502722670361395585198154817047185480147294665270646578), eps * 5000);
535    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1)/1024), static_cast<float>(-1.50382374389531766117868938966858995093408410498915220070230e38), eps * 5000);
536    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(-10486074) / (1024*1024), static_cast<float>(1e+02)), static_cast<float>(0.0583041891319026009955779707640455341990844522293730214223545), eps * 5000);
537    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(141.75), static_cast<float>(1e+02)), static_cast<float>(-5.38829231428696507293191118661269920130838607482708483122068e9), eps * 5000);
538    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(141.75), static_cast<float>(2e+04)), static_cast<float>(-0.00376577888677186194728129112270988602876597726657372330194186), eps * 5000);
539    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<float>(-141.75), static_cast<float>(1e+02)), static_cast<float>(-3.81009803444766877495905954105669819951653361036342457919021e9), eps * 5000);
540
541    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0), static_cast<float>(0)), static_cast<float>(0), eps * 5000);
542    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0), static_cast<float>(-10)), static_cast<float>(-10), eps * 5000);
543    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(-1), static_cast<float>(-1)), static_cast<float>(-1.2261911708835170708130609674719067527242483502207), eps * 5000);
544    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.875), static_cast<float>(-4)), static_cast<float>(-5.3190556182262405182189463092940736859067548232647), eps * 5000);
545    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(-0.625), static_cast<float>(8)), static_cast<float>(9.0419973860310100524448893214394562615252527557062), eps * 5000);
546    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.875), static_cast<float>(1e-05)), static_cast<float>(0.000010000000000127604166668510945638036143355898993088), eps * 5000);
547    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(10)/1024, static_cast<float>(1e+05)), static_cast<float>(100002.38431454899771096037307519328741455615271038), eps * 5000);
548    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(1), static_cast<float>(1e-20)), static_cast<float>(1.0000000000000000000000000000000000000000166666667e-20), eps * 5000);
549    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(1e-20), static_cast<float>(1e-20)), static_cast<float>(1.000000000000000e-20), eps * 5000);
550    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(400)/1024, static_cast<float>(1e+20)), static_cast<float>(1.0418143796499216839719289963154558027005142709763e20), eps * 5000);
551    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(2)), static_cast<float>(2.1765877052210673672479877957388515321497888026770), eps * 5000);
552    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(4)), static_cast<float>(4.2543274975235836861894752787874633017836785640477), eps * 5000);
553    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(6)), static_cast<float>(6.4588766202317746302999080620490579800463614807916), eps * 5000);
554    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(10)), static_cast<float>(10.697409951222544858346795279378531495869386960090), eps * 5000);
555    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(-2)), static_cast<float>(-2.1765877052210673672479877957388515321497888026770), eps * 5000);
556    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(-4)), static_cast<float>(-4.2543274975235836861894752787874633017836785640477), eps * 5000);
557    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(-6)), static_cast<float>(-6.4588766202317746302999080620490579800463614807916), eps * 5000);
558    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<float>(0.5), static_cast<float>(-10)), static_cast<float>(-10.697409951222544858346795279378531495869386960090), eps * 5000);
559
560    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(0), static_cast<float>(0)), static_cast<float>(0), eps * 5000);
561    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(0), static_cast<float>(-10)), static_cast<float>(-10), eps * 5000);
562    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(-1), static_cast<float>(-1)), static_cast<float>(-0.84147098480789650665250232163029899962256306079837), eps * 5000);
563    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(900) / 1024, static_cast<float>(-4)), static_cast<float>(-3.1756145986492562317862928524528520686391383168377), eps * 5000);
564    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(-600) / 1024, static_cast<float>(8)), static_cast<float>(7.2473147180505693037677015377802777959345489333465), eps * 5000);
565    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(800) / 1024, static_cast<float>(1e-05)), static_cast<float>(9.999999999898274739584436515967055859383969942432E-6), eps * 5000);
566    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(100) / 1024, static_cast<float>(1e+05)), static_cast<float>(99761.153306972066658135668386691227343323331995888), eps * 5000);
567    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(-0.5), static_cast<float>(1e+10)), static_cast<float>(9.3421545766487137036576748555295222252286528414669e9), eps * 5000);
568    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<float>(400) / 1024, static_cast<float>(ldexp(static_cast<double>(1), 66))), static_cast<float>(7.0886102721911705466476846969992069994308167515242e19), eps * 5000);
569
570    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(1), static_cast<float>(-1)), static_cast<float>(-1.557407724654902230506974807458360173087), eps * 5000);
571    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.4), static_cast<float>(0), static_cast<float>(-4)), static_cast<float>(-4.153623371196831087495427530365430979011), eps * 5000);
572    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(-0.6), static_cast<float>(0), static_cast<float>(8)), static_cast<float>(8.935930619078575123490612395578518914416), eps * 5000);
573    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.25), static_cast<float>(0), static_cast<float>(0.5)), static_cast<float>(0.501246705365439492445236118603525029757890291780157969500480), eps * 5000);
574    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(0), static_cast<float>(0.5)), static_cast<float>(0.5), eps * 5000);
575    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(-2), static_cast<float>(0.5)), static_cast<float>(0.437501067017546278595664813509803743009132067629603474488486), eps * 5000);
576    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(0.25), static_cast<float>(0.5)), static_cast<float>(0.510269830229213412212501938035914557628394166585442994564135), eps * 5000);
577    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(0.75), static_cast<float>(0.5)), static_cast<float>(0.533293253875952645421201146925578536430596894471541312806165), eps * 5000);
578    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(0.75), static_cast<float>(0.75)), static_cast<float>(0.871827580412760575085768367421866079353646112288567703061975), eps * 5000);
579    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(1), static_cast<float>(0.25)), static_cast<float>(0.255341921221036266504482236490473678204201638800822621740476), eps * 5000);
580    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(2), static_cast<float>(0.25)), static_cast<float>(0.261119051639220165094943572468224137699644963125853641716219), eps * 5000);
581    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0), static_cast<float>(1023)/1024, static_cast<float>(1.5)), static_cast<float>(13.2821612239764190363647953338544569682942329604483733197131), eps * 5000);
582    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.5), static_cast<float>(0.5), static_cast<float>(-1)), static_cast<float>(-1.228014414316220642611298946293865487807), eps * 5000);
583    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.5), static_cast<float>(0.5), static_cast<float>(1e+10)), static_cast<float>(1.536591003599172091573590441336982730551e+10), eps * 5000);
584    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.75), static_cast<float>(-1e+05), static_cast<float>(10)), static_cast<float>(0.0347926099493147087821620459290460547131012904008557007934290), eps * 5000);
585    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.875), static_cast<float>(-1e+10), static_cast<float>(10)), static_cast<float>(0.000109956202759561502329123384755016959364346382187364656768212), eps * 5000);
586    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.875), static_cast<float>(-1e+10), static_cast<float>(1e+20)), static_cast<float>(1.00000626665567332602765201107198822183913978895904937646809e15), eps * 5000);
587    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.875), static_cast<float>(-1e+10), static_cast<float>(1608)/1024), static_cast<float>(0.0000157080616044072676127333183571107873332593142625043567690379), eps * 5000);
588    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.875), 1-static_cast<float>(1) / 1024, static_cast<float>(1e+20)), static_cast<float>(6.43274293944380717581167058274600202023334985100499739678963e21), eps * 5000);
589    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.25), static_cast<float>(50), static_cast<float>(0.1)), static_cast<float>(0.124573770342749525407523258569507331686458866564082916835900), eps * 5000);
590    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<float>(0.25), static_cast<float>(1.125), static_cast<float>(1)), static_cast<float>(1.77299767784815770192352979665283069318388205110727241629752), eps * 5000);
591
592    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(1)/1024), static_cast<float>(-6.35327933972759151358547423727042905862963067106751711596065L), eps * 5000);
593    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(0.125)), static_cast<float>(-1.37320852494298333781545045921206470808223543321810480716122L), eps * 5000);
594    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(0.5)), static_cast<float>(0.454219904863173579920523812662802365281405554352642045162818L), eps * 5000);
595    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(1)), static_cast<float>(1.89511781635593675546652093433163426901706058173270759164623L), eps * 5000);
596    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(50.5)), static_cast<float>(1.72763195602911805201155668940185673806099654090456049881069e20L), eps * 5000);
597    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(-1)/1024), static_cast<float>(-6.35523246483107180261445551935803221293763008553775821607264L), eps * 5000);
598    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(-0.125)), static_cast<float>(-1.62342564058416879145630692462440887363310605737209536579267L), eps * 5000);
599    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(-0.5)), static_cast<float>(-0.559773594776160811746795939315085235226846890316353515248293L), eps * 5000);
600    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(-1)), static_cast<float>(-0.219383934395520273677163775460121649031047293406908207577979L), eps * 5000);
601    BOOST_CHECK_CLOSE(tr1::expint(static_cast<float>(-50.5)), static_cast<float>(-2.27237132932219350440719707268817831250090574830769670186618e-24L), eps * 5000);
602
603    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(0, static_cast<float>(1)), static_cast<float>(1.L), 100 * eps);
604    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<float>(1)), static_cast<float>(2.L), 100 * eps);
605    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<float>(2)), static_cast<float>(4.L), 100 * eps);
606    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<float>(10)), static_cast<float>(20), 100 * eps);
607    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<float>(100)), static_cast<float>(200), 100 * eps);
608    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<float>(1e6)), static_cast<float>(2e6), 100 * eps);
609    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<float>(30)), static_cast<float>(5.896624628001300E+17L), 100 * eps);
610    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<float>(1000)), static_cast<float>(1.023976960161280E+33L), 100 * eps);
611    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<float>(10)), static_cast<float>(8.093278209760000E+12L), 100 * eps);
612    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<float>(-10)), static_cast<float>(8.093278209760000E+12L), 100 * eps);
613    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3, static_cast<float>(-10)), static_cast<float>(-7.880000000000000E+3L), 100 * eps);
614    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3, static_cast<float>(-1000)), static_cast<float>(-7.999988000000000E+9L), 100 * eps);
615    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3, static_cast<float>(-1000000)), static_cast<float>(-7.999999999988000E+18L), 100 * eps);
616
617    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(0.125)), static_cast<float>(-0.63277562349869525529352526763564627152686379131122L), eps * 5000);
618    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(1023) / static_cast<float>(1024)), static_cast<float>(-1023.4228554489429786541032870895167448906103303056L), eps * 5000);
619    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(1025) / static_cast<float>(1024)), static_cast<float>(1024.5772867695045940578681624248887776501597556226L), eps * 5000);
620    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(0.5)), static_cast<float>(-1.46035450880958681288949915251529801246722933101258149054289L), eps * 5000);
621    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(1.125)), static_cast<float>(8.5862412945105752999607544082693023591996301183069L), eps * 5000);
622    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(2)), static_cast<float>(1.6449340668482264364724151666460251892189499012068L), eps * 5000);
623    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(3.5)), static_cast<float>(1.1267338673170566464278124918549842722219969574036L), eps * 5000);
624    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(4)), static_cast<float>(1.08232323371113819151600369654116790277475095191872690768298L), eps * 5000);
625    BOOST_CHECK_CLOSE(tr1::riemann_zeta(4 + static_cast<float>(1) / 1024), static_cast<float>(1.08225596856391369799036835439238249195298434901488518878804L), eps * 5000);
626    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(4.5)), static_cast<float>(1.05470751076145426402296728896028011727249383295625173068468L), eps * 5000);
627    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(6.5)), static_cast<float>(1.01200589988852479610078491680478352908773213619144808841031L), eps * 5000);
628    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(7.5)), static_cast<float>(1.00582672753652280770224164440459408011782510096320822989663L), eps * 5000);
629    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(8.125)), static_cast<float>(1.0037305205308161603183307711439385250181080293472L), eps * 5000);
630    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(16.125)), static_cast<float>(1.0000140128224754088474783648500235958510030511915L), eps * 5000);
631    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(0)), static_cast<float>(-0.5L), eps * 5000);
632    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-0.125)), static_cast<float>(-0.39906966894504503550986928301421235400280637468895L), eps * 5000);
633    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-1)), static_cast<float>(-0.083333333333333333333333333333333333333333333333333L), eps * 5000);
634    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-2)), static_cast<float>(0L), eps * 5000);
635    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-2.5)), static_cast<float>(0.0085169287778503305423585670283444869362759902200745L), eps * 5000 * 3);
636    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-3)), static_cast<float>(0.0083333333333333333333333333333333333333333333333333L), eps * 5000);
637    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-4)), static_cast<float>(0), eps * 5000);
638    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-20)), static_cast<float>(0), eps * 5000 * 100);
639    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-21)), static_cast<float>(-281.46014492753623188405797101449275362318840579710L), eps * 5000 * 100);
640    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<float>(-30.125)), static_cast<float>(2.2762941726834511267740045451463455513839970804578e7L), eps * 5000 * 100);
641
642    BOOST_CHECK_CLOSE(tr1::sph_bessel(0, static_cast<float>(0.1433600485324859619140625e-1)), static_cast<float>(0.9999657468461303487880990241993035937654e0),  eps * 5000 * 100);
643    BOOST_CHECK_CLOSE(tr1::sph_bessel(0, static_cast<float>(0.1760916970670223236083984375e-1)), static_cast<float>(0.9999483203249623334100130061926184665364e0),  eps * 5000 * 100);
644    BOOST_CHECK_CLOSE(tr1::sph_bessel(2, static_cast<float>(0.1433600485324859619140625e-1)), static_cast<float>(0.1370120120703995134662099191103188366059e-4),  eps * 5000 * 100);
645    BOOST_CHECK_CLOSE(tr1::sph_bessel(2, static_cast<float>(0.1760916970670223236083984375e-1)), static_cast<float>(0.2067173265753174063228459655801741280461e-4),  eps * 5000 * 100);
646    BOOST_CHECK_CLOSE(tr1::sph_bessel(7, static_cast<float>(0.1252804412841796875e3)), static_cast<float>(0.7887555711993028736906736576314283291289e-2),  eps * 5000 * 100);
647    BOOST_CHECK_CLOSE(tr1::sph_bessel(7, static_cast<float>(0.25554705810546875e3)), static_cast<float>(-0.1463292767579579943284849187188066532514e-2),  eps * 5000 * 100);
648
649    BOOST_CHECK_CLOSE(tr1::sph_neumann(0, static_cast<float>(0.408089816570281982421875e0)), static_cast<float>(-0.2249212131304610409189209411089291558038e1), eps * 5000 * 100);
650    BOOST_CHECK_CLOSE(tr1::sph_neumann(0, static_cast<float>(0.6540834903717041015625e0)), static_cast<float>(-0.1213309779166084571756446746977955970241e1),   eps * 5000 * 100);
651    BOOST_CHECK_CLOSE(tr1::sph_neumann(2, static_cast<float>(0.408089816570281982421875e0)), static_cast<float>(-0.4541702641837159203058389758895634766256e2),   eps * 5000 * 100);
652    BOOST_CHECK_CLOSE(tr1::sph_neumann(2, static_cast<float>(0.6540834903717041015625e0)), static_cast<float>(-0.1156112621471167110574129561700037138981e2),   eps * 5000 * 100);
653    BOOST_CHECK_CLOSE(tr1::sph_neumann(10, static_cast<float>(0.1097540378570556640625e1)), static_cast<float>(-0.2427889658115064857278886600528596240123e9),   eps * 5000 * 100);
654    BOOST_CHECK_CLOSE(tr1::sph_neumann(10, static_cast<float>(0.30944411754608154296875e1)), static_cast<float>(-0.3394649246350136450439882104151313759251e4),   eps * 5000 * 100);
655
656    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendre(3, 2, static_cast<float>(0.5)), static_cast<float>(0.2061460599687871330692286791802688341213L), eps * 5000);
657    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendre(40, 15, static_cast<float>(0.75)), static_cast<float>(-0.406036847302819452666908966769096223205057182668333862900509L), eps * 5000);
658 #endif
659 }
660
661 void test_values(double, const char* name)
662 {
663    std::cout << "Testing type " << name << std::endl;
664
665 #ifndef TEST_LD
666    double eps = boost::math::tools::epsilon<double>();
667    BOOST_CHECK_CLOSE(tr1::acosh(std::cosh(0.5)), 0.5, 500 * eps);
668    BOOST_CHECK_CLOSE(tr1::asinh(std::sinh(0.5)), 0.5, 500 * eps);
669    BOOST_CHECK_CLOSE(tr1::atanh(std::tanh(0.5)), 0.5, 500 * eps);
670
671    BOOST_CHECK_CLOSE(tr1::cbrt(1.5 * 1.5 * 1.5), 1.5, 500 * eps);
672
673    BOOST_CHECK(tr1::copysign(1.0, 1.0) == 1.0);
674    BOOST_CHECK(tr1::copysign(1.0, -1.0) == -1.0);
675    BOOST_CHECK(tr1::copysign(-1.0, 1.0) == 1.0);
676    BOOST_CHECK(tr1::copysign(-1.0, -1.0) == -1.0);
677
678    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(0.125)), static_cast<double>(0.85968379519866618260697055347837660181302041685015L), eps * 1000);
679    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(0.5)), static_cast<double>(0.47950012218695346231725334610803547126354842424204L), eps * 1000);
680    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(1)), static_cast<double>(0.15729920705028513065877936491739074070393300203370L), eps * 1000);
681    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(5)), static_cast<double>(1.5374597944280348501883434853833788901180503147234e-12L), eps * 1000);
682    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(-0.125)), static_cast<double>(1.1403162048013338173930294465216233981869795831498L), eps * 1000);
683    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(-0.5)), static_cast<double>(1.5204998778130465376827466538919645287364515757580L), eps * 1000);
684    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<double>(0)), static_cast<double>(1), eps * 1000);
685
686    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(0.125)), static_cast<double>(0.14031620480133381739302944652162339818697958314985L), eps * 1000);
687    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(0.5)), static_cast<double>(0.52049987781304653768274665389196452873645157575796L), eps * 1000);
688    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(1)), static_cast<double>(0.84270079294971486934122063508260925929606699796630L), eps * 1000);
689    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(5)), static_cast<double>(0.9999999999984625402055719651498116565146166211099L), eps * 1000);
690    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(-0.125)), static_cast<double>(-0.14031620480133381739302944652162339818697958314985L), eps * 1000);
691    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(-0.5)), static_cast<double>(-0.52049987781304653768274665389196452873645157575796L), eps * 1000);
692    BOOST_CHECK_CLOSE(tr1::erf(static_cast<double>(0)), static_cast<double>(0), eps * 1000);
693
694    BOOST_CHECK_CLOSE(tr1::log1p(static_cast<double>(0.582029759883880615234375e0)), static_cast<double>(0.4587086807259736626531803258754840111707e0L), eps * 1000);
695    BOOST_CHECK_CLOSE(tr1::expm1(static_cast<double>(0.582029759883880615234375e0)), static_cast<double>(0.7896673415707786528734865994546559029663e0L), eps * 1000);
696    BOOST_CHECK_CLOSE(tr1::log1p(static_cast<double>(-0.2047410048544406890869140625e-1)), static_cast<double>(-0.2068660038044094868521052319477265955827e-1L), eps * 1000);
697    BOOST_CHECK_CLOSE(tr1::expm1(static_cast<double>(-0.2047410048544406890869140625e-1)), static_cast<double>(-0.2026592921724753704129022027337835687888e-1L), eps * 1000);
698
699    BOOST_CHECK_EQUAL(tr1::fmax(0.1, -0.1), 0.1);
700    BOOST_CHECK_EQUAL(tr1::fmin(0.1, -0.1), -0.1);
701
702    BOOST_CHECK_CLOSE(tr1::hypot(1.0, 3.0), std::sqrt(10.0), eps * 500);
703
704    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<double>(3.5)), static_cast<double>(1.2009736023470742248160218814507129957702389154682L), 5000 * eps);
705    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<double>(0.125)), static_cast<double>(2.0194183575537963453202905211670995899482809521344L), 5000 * eps);
706    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<double>(-0.125)), static_cast<double>(2.1653002489051702517540619481440174064962195287626L), 5000 * eps);
707    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<double>(-3.125)), static_cast<double>(0.1543111276840418242676072830970532952413339012367L), 5000 * eps);
708    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<double>(-53249.0/1024)), static_cast<double>(-149.43323093420259741100038126078721302600128285894L), 5000 * eps);
709
710    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<double>(3.5)), static_cast<double>(3.3233509704478425511840640312646472177454052302295L), 5000 * eps);
711    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<double>(0.125)), static_cast<double>(7.5339415987976119046992298412151336246104195881491L), 5000 * eps);
712    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<double>(-0.125)), static_cast<double>(-8.7172188593831756100190140408231437691829605421405L), 5000 * eps);
713    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<double>(-3.125)), static_cast<double>(1.1668538708507675587790157356605097019141636072094L), 5000 * eps);
714
715 #ifdef BOOST_HAS_LONG_LONG
716    BOOST_CHECK(tr1::llround(2.5) == 3LL);
717    BOOST_CHECK(tr1::llround(2.25) == 2LL);
718 #endif
719    BOOST_CHECK(tr1::lround(2.5) == 3L);
720    BOOST_CHECK(tr1::lround(2.25) == 2L);
721    BOOST_CHECK(tr1::round(2.5) == 3.0);
722    BOOST_CHECK(tr1::round(2.25) == 2.0);
723
724    BOOST_CHECK(tr1::nextafter(1.0, 2.0) > 1.0);
725    BOOST_CHECK(tr1::nextafter(1.0, -2.0) < 1.0);
726    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0, 2.0), -2.0) == 1.0);
727    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0, -2.0), 2.0) == 1.0);
728    BOOST_CHECK(tr1::nextafter(1.0, 2.0) > 1.0);
729    BOOST_CHECK(tr1::nextafter(1.0, -2.0) < 1.0);
730    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0, 2.0), -2.0) == 1.0);
731    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0, -2.0), 2.0) == 1.0);
732
733    BOOST_CHECK(tr1::trunc(2.5) == 2.0);
734    BOOST_CHECK(tr1::trunc(2.25) == 2.0);
735
736    //
737    // Now the TR1 functions:
738    //
739    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(4, 5, static_cast<double>(0.5L)), static_cast<double>(88.31510416666666666666666666666666666667L), eps * 100);
740    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 0, static_cast<double>(2.5L)), static_cast<double>(-0.8802526766660982969576719576719576719577L), eps * 100);
741    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 1, static_cast<double>(4.5L)), static_cast<double>(1.564311458042689732142857142857142857143L), eps * 100);
742    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 6, static_cast<double>(8.5L)), static_cast<double>(20.51596541066649098875661375661375661376L), eps * 100);
743    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10, 12, static_cast<double>(12.5L)), static_cast<double>(-199.5560968456234671241181657848324514991L), eps * 100);
744    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(50, 40, static_cast<double>(12.5L)), static_cast<double>(-4.996769495006119488583146995907246595400e16L), eps * 100);
745
746    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1, static_cast<double>(0.5L)), static_cast<double>(0.5L), eps * 100);
747    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4, static_cast<double>(0.5L)), static_cast<double>(-0.3307291666666666666666666666666666666667L), eps * 100);
748    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7, static_cast<double>(0.5L)), static_cast<double>(-0.5183392237103174603174603174603174603175L), eps * 100);
749    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20, static_cast<double>(0.5L)), static_cast<double>(0.3120174870800154148915399248893113634676L), eps * 100);
750    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50, static_cast<double>(0.5L)), static_cast<double>(-0.3181388060269979064951118308575628226834L), eps * 100);
751
752    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1, static_cast<double>(-0.5L)), static_cast<double>(1.5L), eps * 100);
753    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4, static_cast<double>(-0.5L)), static_cast<double>(3.835937500000000000000000000000000000000L), eps * 100);
754    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7, static_cast<double>(-0.5L)), static_cast<double>(7.950934709821428571428571428571428571429L), eps * 100);
755    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20, static_cast<double>(-0.5L)), static_cast<double>(76.12915699869631476833699787070874048223L), eps * 100);
756    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50, static_cast<double>(-0.5L)), static_cast<double>(2307.428631277506570629232863491518399720L), eps * 100);
757
758    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1, static_cast<double>(4.5L)), static_cast<double>(-3.500000000000000000000000000000000000000L), eps * 100);
759    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4, static_cast<double>(4.5L)), static_cast<double>(0.08593750000000000000000000000000000000000L), eps * 100);
760    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7, static_cast<double>(4.5L)), static_cast<double>(-1.036928013392857142857142857142857142857L), eps * 100);
761    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20, static_cast<double>(4.5L)), static_cast<double>(1.437239150257817378525582974722170737587L), eps * 100);
762    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50, static_cast<double>(4.5L)), static_cast<double>(-0.7795068145562651416494321484050019245248L), eps * 100);
763
764    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(4, 2, static_cast<double>(0.5L)), static_cast<double>(4.218750000000000000000000000000000000000L), eps * 100);
765    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(7, 5, static_cast<double>(0.5L)), static_cast<double>(5696.789530152175143607977274672800795328L), eps * 100);
766    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(4, 2, static_cast<double>(-0.5L)), static_cast<double>(4.218750000000000000000000000000000000000L), eps * 100);
767    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(7, 5, static_cast<double>(-0.5L)), static_cast<double>(5696.789530152175143607977274672800795328L), eps * 100);
768
769    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(1, static_cast<double>(0.5L)), static_cast<double>(0.5L), eps * 100);
770    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(4, static_cast<double>(0.5L)), static_cast<double>(-0.2890625000000000000000000000000000000000L), eps * 100);
771    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(7, static_cast<double>(0.5L)), static_cast<double>(0.2231445312500000000000000000000000000000L), eps * 100);
772    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(40, static_cast<double>(0.5L)), static_cast<double>(-0.09542943523261546936538467572384923220258L), eps * 100);
773
774    double sv = eps / 1024;
775
776    BOOST_CHECK_CLOSE(tr1::beta(static_cast<double>(1), static_cast<double>(1)), static_cast<double>(1), eps * 20 * 100);
777    BOOST_CHECK_CLOSE(tr1::beta(static_cast<double>(1), static_cast<double>(4)), static_cast<double>(0.25), eps * 20 * 100);
778    BOOST_CHECK_CLOSE(tr1::beta(static_cast<double>(4), static_cast<double>(1)), static_cast<double>(0.25), eps * 20 * 100);
779    BOOST_CHECK_CLOSE(tr1::beta(sv, static_cast<double>(4)), 1/sv, eps * 20 * 100);
780    BOOST_CHECK_CLOSE(tr1::beta(static_cast<double>(4), sv), 1/sv, eps * 20 * 100);
781    BOOST_CHECK_CLOSE(tr1::beta(static_cast<double>(4), static_cast<double>(20)), static_cast<double>(0.00002823263692828910220214568040654997176736L), eps * 20 * 100);
782    BOOST_CHECK_CLOSE(tr1::beta(static_cast<double>(0.0125L), static_cast<double>(0.000023L)), static_cast<double>(43558.24045647538375006349016083320744662L), eps * 20 * 100);
783
784    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(0)), static_cast<double>(1.5707963267948966192313216916397514420985846996876), eps * 5000);
785    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(0.125)), static_cast<double>(1.5769867712158131421244030532288080803822271060839), eps * 5000);
786    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(0.25)), static_cast<double>(1.5962422221317835101489690714979498795055744578951), eps * 5000);
787    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(300)/1024), static_cast<double>(1.6062331054696636704261124078746600894998873503208), eps * 5000);
788    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(400)/1024), static_cast<double>(1.6364782007562008756208066125715722889067992997614), eps * 5000);
789    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(-0.5)), static_cast<double>(1.6857503548125960428712036577990769895008008941411), eps * 5000);
790    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<double>(-0.75)), static_cast<double>(1.9109897807518291965531482187613425592531451316788), eps * 5000);
791
792    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(-1)), static_cast<double>(1), eps * 5000);
793    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(0)), static_cast<double>(1.5707963267948966192313216916397514420985846996876), eps * 5000);
794    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(100) / 1024), static_cast<double>(1.5670445330545086723323795143598956428788609133377), eps * 5000);
795    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(200) / 1024), static_cast<double>(1.5557071588766556854463404816624361127847775545087), eps * 5000);
796    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(300) / 1024), static_cast<double>(1.5365278991162754883035625322482669608948678755743), eps * 5000);
797    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(400) / 1024), static_cast<double>(1.5090417763083482272165682786143770446401437564021), eps * 5000);
798    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(-0.5)), static_cast<double>(1.4674622093394271554597952669909161360253617523272), eps * 5000);
799    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(-600) / 1024), static_cast<double>(1.4257538571071297192428217218834579920545946473778), eps * 5000);
800    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(-800) / 1024), static_cast<double>(1.2927868476159125056958680222998765985004489572909), eps * 5000);
801    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<double>(-900) / 1024), static_cast<double>(1.1966864890248739524112920627353824133420353430982), eps * 5000);
802
803    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(0.2), static_cast<double>(0)), static_cast<double>(1.586867847454166237308008033828114192951), eps * 5000);
804    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(0.4), static_cast<double>(0)), static_cast<double>(1.639999865864511206865258329748601457626), eps * 5000);
805    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(0), static_cast<double>(0)), static_cast<double>(1.57079632679489661923132169163975144209858469968755291048747), eps * 5000);
806    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(0), static_cast<double>(0.5)), static_cast<double>(2.221441469079183123507940495030346849307), eps * 5000);
807    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(0.3), static_cast<double>(-4)), static_cast<double>(0.712708870925620061597924858162260293305195624270730660081949), eps * 5000);
808    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(-0.5), static_cast<double>(-1e+05)), static_cast<double>(0.00496944596485066055800109163256108604615568144080386919012831), eps * 5000);
809    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(-0.75), static_cast<double>(-1e+10)), static_cast<double>(0.0000157080225184890546939710019277357161497407143903832703317801), eps * 5000);
810    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(-0.875), static_cast<double>(1) / 1024), static_cast<double>(2.18674503176462374414944618968850352696579451638002110619287), eps * 5000);
811    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<double>(-0.875), static_cast<double>(1023)/1024), static_cast<double>(101.045289804941384100960063898569538919135722087486350366997), eps * 5000);
812
813    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(2.25), static_cast<double>(1)/(1024*1024)), static_cast<double>(2.34379212133481347189068464680335815256364262507955635911656e-15), eps * 5000);
814    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(5.5), static_cast<double>(3.125)), static_cast<double>(0.0583514045989371500460946536220735787163510569634133670181210), eps * 5000);
815    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(-5) + static_cast<double>(1)/1024, static_cast<double>(2.125)), static_cast<double>(0.0267920938009571023702933210070984416052633027166975342895062), eps * 5000);
816    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(-5.5), static_cast<double>(10)), static_cast<double>(597.577606961369169607937419869926705730305175364662688426534), eps * 5000);
817    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(-10486074)/(1024*1024), static_cast<double>(1)/1024), static_cast<double>(1.41474005665181350367684623930576333542989766867888186478185e35), eps * 5000);
818    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(-10486074)/(1024*1024), static_cast<double>(50)), static_cast<double>(1.07153277202900671531087024688681954238311679648319534644743e20), eps * 5000);
819    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(144794)/1024, static_cast<double>(100)), static_cast<double>(2066.27694757392660413922181531984160871678224178890247540320), eps * 5000);
820    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<double>(-144794)/1024, static_cast<double>(100)), static_cast<double>(2066.27694672763190927440969155740243346136463461655104698748), eps * 5000);
821
822    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(2457)/1024, static_cast<double>(1)/1024), static_cast<double>(3.80739920118603335646474073457326714709615200130620574875292e-9), eps * 5000);
823    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(5.5), static_cast<double>(3217)/1024), static_cast<double>(0.0281933076257506091621579544064767140470089107926550720453038), eps * 5000);
824    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-5.5), static_cast<double>(3217)/1024), static_cast<double>(-2.55820064470647911823175836997490971806135336759164272675969), eps * 5000);
825    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-5.5), static_cast<double>(1e+04)), static_cast<double>(2.449843111985605522111159013846599118397e-03), eps * 5000);
826    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(5.5), static_cast<double>(1e+04)), static_cast<double>(0.00759343502722670361395585198154817047185480147294665270646578), eps * 5000);
827    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(5.5), static_cast<double>(1e+06)), static_cast<double>(-0.000747424248595630177396350688505919533097973148718960064663632), eps * 5000);
828    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(5.125), static_cast<double>(1e+06)), static_cast<double>(-0.000776600124835704280633640911329691642748783663198207360238214), eps * 5000);
829    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(5.875), static_cast<double>(1e+06)), static_cast<double>(-0.000466322721115193071631008581529503095819705088484386434589780), eps * 5000);
830    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(0.5), static_cast<double>(101)), static_cast<double>(0.0358874487875643822020496677692429287863419555699447066226409), eps * 5000);
831    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-5.5), static_cast<double>(1e+04)), static_cast<double>(0.00244984311198560552211115901384659911839737686676766460822577), eps * 5000);
832    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-5.5), static_cast<double>(1e+06)), static_cast<double>(0.000279243200433579511095229508894156656558211060453622750659554), eps * 5000);
833    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-0.5), static_cast<double>(101)), static_cast<double>(0.0708184798097594268482290389188138201440114881159344944791454), eps * 5000);
834    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-10486074) / (1024*1024), static_cast<double>(1)/1024), static_cast<double>(1.41474013160494695750009004222225969090304185981836460288562e35), eps * 5000);
835    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-10486074) / (1024*1024), static_cast<double>(15)), static_cast<double>(-0.0902239288885423309568944543848111461724911781719692852541489), eps * 5000);
836    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(10486074) / (1024*1024), static_cast<double>(1e+02)), static_cast<double>(-0.0547064914615137807616774867984047583596945624129838091326863), eps * 5000);
837    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(10486074) / (1024*1024), static_cast<double>(2e+04)), static_cast<double>(-0.00556783614400875611650958980796060611309029233226596737701688), eps * 5000);
838    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<double>(-10486074) / (1024*1024), static_cast<double>(1e+02)), static_cast<double>(-0.0547613660316806551338637153942604550779513947674222863858713), eps * 5000);
839
840    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(0.5), static_cast<double>(0.875)), static_cast<double>(0.558532231646608646115729767013630967055657943463362504577189), eps * 5000);
841    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(0.5), static_cast<double>(1.125)), static_cast<double>(0.383621010650189547146769320487006220295290256657827220786527), eps * 5000);
842    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(2.25), static_cast<double>(std::ldexp(1.0, -30))), static_cast<double>(5.62397392719283271332307799146649700147907612095185712015604e20), eps * 5000);
843    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(5.5), static_cast<double>(3217)/1024), static_cast<double>(1.30623288775012596319554857587765179889689223531159532808379), eps * 5000);
844    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(-5.5), static_cast<double>(10)), static_cast<double>(0.0000733045300798502164644836879577484533096239574909573072142667), eps * 5000);
845    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(-5.5), static_cast<double>(100)), static_cast<double>(5.41274555306792267322084448693957747924412508020839543293369e-45), eps * 5000);
846    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(10240)/1024, static_cast<double>(1)/1024), static_cast<double>(2.35522579263922076203415803966825431039900000000993410734978e38), eps * 5000);
847    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(10240)/1024, static_cast<double>(10)), static_cast<double>(0.00161425530039067002345725193091329085443750382929208307802221), eps * 5000);
848    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(144793)/1024, static_cast<double>(100)), static_cast<double>(1.39565245860302528069481472855619216759142225046370312329416e-6), eps * 5000);
849    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<double>(144793)/1024, static_cast<double>(200)), static_cast<double>(9.11950412043225432171915100042647230802198254567007382956336e-68), eps * 5000);
850
851    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(0.5), static_cast<double>(1) / (1024*1024)), static_cast<double>(-817.033790261762580469303126467917092806755460418223776544122), eps * 5000);
852    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(5.5), static_cast<double>(3.125)), static_cast<double>(-2.61489440328417468776474188539366752698192046890955453259866), eps * 5000);
853    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(-5.5), static_cast<double>(3.125)), static_cast<double>(-0.0274994493896489729948109971802244976377957234563871795364056), eps * 5000);
854    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(-5.5), static_cast<double>(1e+04)), static_cast<double>(-0.00759343502722670361395585198154817047185480147294665270646578), eps * 5000);
855    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(-10486074) / (1024*1024), static_cast<double>(1)/1024), static_cast<double>(-1.50382374389531766117868938966858995093408410498915220070230e38), eps * 5000);
856    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(-10486074) / (1024*1024), static_cast<double>(1e+02)), static_cast<double>(0.0583041891319026009955779707640455341990844522293730214223545), eps * 5000);
857    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(141.75), static_cast<double>(1e+02)), static_cast<double>(-5.38829231428696507293191118661269920130838607482708483122068e9), eps * 5000);
858    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(141.75), static_cast<double>(2e+04)), static_cast<double>(-0.00376577888677186194728129112270988602876597726657372330194186), eps * 5000);
859    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<double>(-141.75), static_cast<double>(1e+02)), static_cast<double>(-3.81009803444766877495905954105669819951653361036342457919021e9), eps * 5000);
860
861    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0), static_cast<double>(0)), static_cast<double>(0), eps * 5000);
862    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0), static_cast<double>(-10)), static_cast<double>(-10), eps * 5000);
863    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(-1), static_cast<double>(-1)), static_cast<double>(-1.2261911708835170708130609674719067527242483502207), eps * 5000);
864    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.875), static_cast<double>(-4)), static_cast<double>(-5.3190556182262405182189463092940736859067548232647), eps * 5000);
865    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(-0.625), static_cast<double>(8)), static_cast<double>(9.0419973860310100524448893214394562615252527557062), eps * 5000);
866    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.875), static_cast<double>(1e-05)), static_cast<double>(0.000010000000000127604166668510945638036143355898993088), eps * 5000);
867    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(10)/1024, static_cast<double>(1e+05)), static_cast<double>(100002.38431454899771096037307519328741455615271038), eps * 5000);
868    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(1), static_cast<double>(1e-20)), static_cast<double>(1.0000000000000000000000000000000000000000166666667e-20), eps * 5000);
869    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(1e-20), static_cast<double>(1e-20)), static_cast<double>(1.000000000000000e-20), eps * 5000);
870    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(400)/1024, static_cast<double>(1e+20)), static_cast<double>(1.0418143796499216839719289963154558027005142709763e20), eps * 5000);
871    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(2)), static_cast<double>(2.1765877052210673672479877957388515321497888026770), eps * 5000);
872    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(4)), static_cast<double>(4.2543274975235836861894752787874633017836785640477), eps * 5000);
873    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(6)), static_cast<double>(6.4588766202317746302999080620490579800463614807916), eps * 5000);
874    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(10)), static_cast<double>(10.697409951222544858346795279378531495869386960090), eps * 5000);
875    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(-2)), static_cast<double>(-2.1765877052210673672479877957388515321497888026770), eps * 5000);
876    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(-4)), static_cast<double>(-4.2543274975235836861894752787874633017836785640477), eps * 5000);
877    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(-6)), static_cast<double>(-6.4588766202317746302999080620490579800463614807916), eps * 5000);
878    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<double>(0.5), static_cast<double>(-10)), static_cast<double>(-10.697409951222544858346795279378531495869386960090), eps * 5000);
879
880    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(0), static_cast<double>(0)), static_cast<double>(0), eps * 5000);
881    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(0), static_cast<double>(-10)), static_cast<double>(-10), eps * 5000);
882    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(-1), static_cast<double>(-1)), static_cast<double>(-0.84147098480789650665250232163029899962256306079837), eps * 5000);
883    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(900) / 1024, static_cast<double>(-4)), static_cast<double>(-3.1756145986492562317862928524528520686391383168377), eps * 5000);
884    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(-600) / 1024, static_cast<double>(8)), static_cast<double>(7.2473147180505693037677015377802777959345489333465), eps * 5000);
885    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(800) / 1024, static_cast<double>(1e-05)), static_cast<double>(9.999999999898274739584436515967055859383969942432E-6), eps * 5000);
886    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(100) / 1024, static_cast<double>(1e+05)), static_cast<double>(99761.153306972066658135668386691227343323331995888), eps * 5000);
887    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(-0.5), static_cast<double>(1e+10)), static_cast<double>(9.3421545766487137036576748555295222252286528414669e9), eps * 5000);
888    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<double>(400) / 1024, ldexp(static_cast<double>(1), 66)), static_cast<double>(7.0886102721911705466476846969992069994308167515242e19), eps * 5000);
889
890    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(1), static_cast<double>(-1)), static_cast<double>(-1.557407724654902230506974807458360173087), eps * 5000);
891    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.4), static_cast<double>(0), static_cast<double>(-4)), static_cast<double>(-4.153623371196831087495427530365430979011), eps * 5000);
892    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(-0.6), static_cast<double>(0), static_cast<double>(8)), static_cast<double>(8.935930619078575123490612395578518914416), eps * 5000);
893    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.25), static_cast<double>(0), static_cast<double>(0.5)), static_cast<double>(0.501246705365439492445236118603525029757890291780157969500480), eps * 5000);
894    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(0), static_cast<double>(0.5)), static_cast<double>(0.5), eps * 5000);
895    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(-2), static_cast<double>(0.5)), static_cast<double>(0.437501067017546278595664813509803743009132067629603474488486), eps * 5000);
896    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(0.25), static_cast<double>(0.5)), static_cast<double>(0.510269830229213412212501938035914557628394166585442994564135), eps * 5000);
897    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(0.75), static_cast<double>(0.5)), static_cast<double>(0.533293253875952645421201146925578536430596894471541312806165), eps * 5000);
898    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(0.75), static_cast<double>(0.75)), static_cast<double>(0.871827580412760575085768367421866079353646112288567703061975), eps * 5000);
899    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(1), static_cast<double>(0.25)), static_cast<double>(0.255341921221036266504482236490473678204201638800822621740476), eps * 5000);
900    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(2), static_cast<double>(0.25)), static_cast<double>(0.261119051639220165094943572468224137699644963125853641716219), eps * 5000);
901    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0), static_cast<double>(1023)/1024, static_cast<double>(1.5)), static_cast<double>(13.2821612239764190363647953338544569682942329604483733197131), eps * 5000);
902    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.5), static_cast<double>(0.5), static_cast<double>(-1)), static_cast<double>(-1.228014414316220642611298946293865487807), eps * 5000);
903    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.5), static_cast<double>(0.5), static_cast<double>(1e+10)), static_cast<double>(1.536591003599172091573590441336982730551e+10), eps * 5000);
904    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.75), static_cast<double>(-1e+05), static_cast<double>(10)), static_cast<double>(0.0347926099493147087821620459290460547131012904008557007934290), eps * 5000);
905    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.875), static_cast<double>(-1e+10), static_cast<double>(10)), static_cast<double>(0.000109956202759561502329123384755016959364346382187364656768212), eps * 5000);
906    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.875), static_cast<double>(-1e+10), static_cast<double>(1e+20)), static_cast<double>(1.00000626665567332602765201107198822183913978895904937646809e15), eps * 5000);
907    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.875), static_cast<double>(-1e+10), static_cast<double>(1608)/1024), static_cast<double>(0.0000157080616044072676127333183571107873332593142625043567690379), eps * 5000);
908    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.875), 1-static_cast<double>(1) / 1024, static_cast<double>(1e+20)), static_cast<double>(6.43274293944380717581167058274600202023334985100499739678963e21), eps * 5000);
909    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.25), static_cast<double>(50), static_cast<double>(0.1)), static_cast<double>(0.124573770342749525407523258569507331686458866564082916835900), eps * 5000);
910    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<double>(0.25), static_cast<double>(1.125), static_cast<double>(1)), static_cast<double>(1.77299767784815770192352979665283069318388205110727241629752), eps * 5000);
911
912    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(1)/1024), static_cast<double>(-6.35327933972759151358547423727042905862963067106751711596065L), eps * 5000);
913    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(0.125)), static_cast<double>(-1.37320852494298333781545045921206470808223543321810480716122L), eps * 5000);
914    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(0.5)), static_cast<double>(0.454219904863173579920523812662802365281405554352642045162818L), eps * 5000);
915    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(1)), static_cast<double>(1.89511781635593675546652093433163426901706058173270759164623L), eps * 5000);
916    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(50.5)), static_cast<double>(1.72763195602911805201155668940185673806099654090456049881069e20L), eps * 5000);
917    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(-1)/1024), static_cast<double>(-6.35523246483107180261445551935803221293763008553775821607264L), eps * 5000);
918    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(-0.125)), static_cast<double>(-1.62342564058416879145630692462440887363310605737209536579267L), eps * 5000);
919    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(-0.5)), static_cast<double>(-0.559773594776160811746795939315085235226846890316353515248293L), eps * 5000);
920    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(-1)), static_cast<double>(-0.219383934395520273677163775460121649031047293406908207577979L), eps * 5000);
921    BOOST_CHECK_CLOSE(tr1::expint(static_cast<double>(-50.5)), static_cast<double>(-2.27237132932219350440719707268817831250090574830769670186618e-24L), eps * 5000);
922
923    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(0, static_cast<double>(1)), static_cast<double>(1.L), 100 * eps);
924    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<double>(1)), static_cast<double>(2.L), 100 * eps);
925    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<double>(2)), static_cast<double>(4.L), 100 * eps);
926    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<double>(10)), static_cast<double>(20), 100 * eps);
927    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<double>(100)), static_cast<double>(200), 100 * eps);
928    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1, static_cast<double>(1e6)), static_cast<double>(2e6), 100 * eps);
929    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<double>(30)), static_cast<double>(5.896624628001300E+17L), 100 * eps);
930    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<double>(1000)), static_cast<double>(1.023976960161280E+33L), 100 * eps);
931    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<double>(10)), static_cast<double>(8.093278209760000E+12L), 100 * eps);
932    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10, static_cast<double>(-10)), static_cast<double>(8.093278209760000E+12L), 100 * eps);
933    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3, static_cast<double>(-10)), static_cast<double>(-7.880000000000000E+3L), 100 * eps);
934    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3, static_cast<double>(-1000)), static_cast<double>(-7.999988000000000E+9L), 100 * eps);
935    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3, static_cast<double>(-1000000)), static_cast<double>(-7.999999999988000E+18L), 100 * eps);
936
937    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(0.125)), static_cast<double>(-0.63277562349869525529352526763564627152686379131122L), eps * 5000);
938    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(1023) / static_cast<double>(1024)), static_cast<double>(-1023.4228554489429786541032870895167448906103303056L), eps * 5000);
939    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(1025) / static_cast<double>(1024)), static_cast<double>(1024.5772867695045940578681624248887776501597556226L), eps * 5000);
940    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(0.5)), static_cast<double>(-1.46035450880958681288949915251529801246722933101258149054289L), eps * 5000);
941    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(1.125)), static_cast<double>(8.5862412945105752999607544082693023591996301183069L), eps * 5000);
942    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(2)), static_cast<double>(1.6449340668482264364724151666460251892189499012068L), eps * 5000);
943    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(3.5)), static_cast<double>(1.1267338673170566464278124918549842722219969574036L), eps * 5000);
944    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(4)), static_cast<double>(1.08232323371113819151600369654116790277475095191872690768298L), eps * 5000);
945    BOOST_CHECK_CLOSE(tr1::riemann_zeta(4 + static_cast<double>(1) / 1024), static_cast<double>(1.08225596856391369799036835439238249195298434901488518878804L), eps * 5000);
946    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(4.5)), static_cast<double>(1.05470751076145426402296728896028011727249383295625173068468L), eps * 5000);
947    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(6.5)), static_cast<double>(1.01200589988852479610078491680478352908773213619144808841031L), eps * 5000);
948    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(7.5)), static_cast<double>(1.00582672753652280770224164440459408011782510096320822989663L), eps * 5000);
949    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(8.125)), static_cast<double>(1.0037305205308161603183307711439385250181080293472L), eps * 5000);
950    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(16.125)), static_cast<double>(1.0000140128224754088474783648500235958510030511915L), eps * 5000);
951    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(0)), static_cast<double>(-0.5L), eps * 5000);
952    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-0.125)), static_cast<double>(-0.39906966894504503550986928301421235400280637468895L), eps * 5000);
953    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-1)), static_cast<double>(-0.083333333333333333333333333333333333333333333333333L), eps * 5000);
954    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-2)), static_cast<double>(0L), eps * 5000);
955    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-2.5)), static_cast<double>(0.0085169287778503305423585670283444869362759902200745L), eps * 5000 * 3);
956    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-3)), static_cast<double>(0.0083333333333333333333333333333333333333333333333333L), eps * 5000);
957    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-4)), static_cast<double>(0), eps * 5000);
958    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-20)), static_cast<double>(0), eps * 5000 * 100);
959    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-21)), static_cast<double>(-281.46014492753623188405797101449275362318840579710L), eps * 5000 * 100);
960    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<double>(-30.125)), static_cast<double>(2.2762941726834511267740045451463455513839970804578e7L), eps * 5000 * 100);
961
962    BOOST_CHECK_CLOSE(tr1::sph_bessel(0, static_cast<double>(0.1433600485324859619140625e-1)), static_cast<double>(0.9999657468461303487880990241993035937654e0),  eps * 5000 * 100);
963    BOOST_CHECK_CLOSE(tr1::sph_bessel(0, static_cast<double>(0.1760916970670223236083984375e-1)), static_cast<double>(0.9999483203249623334100130061926184665364e0),  eps * 5000 * 100);
964    BOOST_CHECK_CLOSE(tr1::sph_bessel(2, static_cast<double>(0.1433600485324859619140625e-1)), static_cast<double>(0.1370120120703995134662099191103188366059e-4),  eps * 5000 * 100);
965    BOOST_CHECK_CLOSE(tr1::sph_bessel(2, static_cast<double>(0.1760916970670223236083984375e-1)), static_cast<double>(0.2067173265753174063228459655801741280461e-4),  eps * 5000 * 100);
966    BOOST_CHECK_CLOSE(tr1::sph_bessel(7, static_cast<double>(0.1252804412841796875e3)), static_cast<double>(0.7887555711993028736906736576314283291289e-2),  eps * 5000 * 100);
967    BOOST_CHECK_CLOSE(tr1::sph_bessel(7, static_cast<double>(0.25554705810546875e3)), static_cast<double>(-0.1463292767579579943284849187188066532514e-2),  eps * 5000 * 100);
968
969    BOOST_CHECK_CLOSE(tr1::sph_neumann(0, static_cast<double>(0.408089816570281982421875e0)), static_cast<double>(-0.2249212131304610409189209411089291558038e1), eps * 5000 * 100);
970    BOOST_CHECK_CLOSE(tr1::sph_neumann(0, static_cast<double>(0.6540834903717041015625e0)), static_cast<double>(-0.1213309779166084571756446746977955970241e1),   eps * 5000 * 100);
971    BOOST_CHECK_CLOSE(tr1::sph_neumann(2, static_cast<double>(0.408089816570281982421875e0)), static_cast<double>(-0.4541702641837159203058389758895634766256e2),   eps * 5000 * 100);
972    BOOST_CHECK_CLOSE(tr1::sph_neumann(2, static_cast<double>(0.6540834903717041015625e0)), static_cast<double>(-0.1156112621471167110574129561700037138981e2),   eps * 5000 * 100);
973    BOOST_CHECK_CLOSE(tr1::sph_neumann(10, static_cast<double>(0.1097540378570556640625e1)), static_cast<double>(-0.2427889658115064857278886600528596240123e9),   eps * 5000 * 100);
974    BOOST_CHECK_CLOSE(tr1::sph_neumann(10, static_cast<double>(0.30944411754608154296875e1)), static_cast<double>(-0.3394649246350136450439882104151313759251e4),   eps * 5000 * 100);
975
976    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendre(3, 2, static_cast<double>(0.5)), static_cast<double>(0.2061460599687871330692286791802688341213L), eps * 5000);
977    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendre(40, 15, static_cast<double>(0.75)), static_cast<double>(-0.406036847302819452666908966769096223205057182668333862900509L), eps * 5000);
978 #endif
979 }
980
981 void test_values(long double, const char* name)
982 {
983 #ifdef TEST_LD
984 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
985    std::cout << "Testing type " << name << std::endl;
986
987    long double eps = boost::math::tools::epsilon<long double>();
988    BOOST_CHECK_CLOSE(tr1::acoshl(std::cosh(0.5L)), 0.5L, 5000 * eps);
989    BOOST_CHECK_CLOSE(tr1::asinhl(std::sinh(0.5L)), 0.5L, 5000 * eps);
990    BOOST_CHECK_CLOSE(tr1::atanhl(std::tanh(0.5L)), 0.5L, 5000 * eps);
991
992    BOOST_CHECK_CLOSE(tr1::cbrtl(1.5L * 1.5L * 1.5L), 1.5L, 5000 * eps);
993
994    BOOST_CHECK(tr1::copysignl(1.0L, 1.0L) == 1.0L);
995    BOOST_CHECK(tr1::copysignl(1.0L, -1.0L) == -1.0L);
996    BOOST_CHECK(tr1::copysignl(-1.0L, 1.0L) == 1.0L);
997    BOOST_CHECK(tr1::copysignl(-1.0L, -1.0L) == -1.0L);
998
999    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(0.125)), static_cast<long double>(0.85968379519866618260697055347837660181302041685015L), eps * 1000);
1000    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(0.5)), static_cast<long double>(0.47950012218695346231725334610803547126354842424204L), eps * 1000);
1001    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(1)), static_cast<long double>(0.15729920705028513065877936491739074070393300203370L), eps * 1000);
1002    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(5)), static_cast<long double>(1.5374597944280348501883434853833788901180503147234e-12L), eps * 1000);
1003    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(-0.125)), static_cast<long double>(1.1403162048013338173930294465216233981869795831498L), eps * 1000);
1004    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(-0.5)), static_cast<long double>(1.5204998778130465376827466538919645287364515757580L), eps * 1000);
1005    BOOST_CHECK_CLOSE(tr1::erfcl(static_cast<long double>(0)), static_cast<long double>(1), eps * 1000);
1006
1007    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(0.125)), static_cast<long double>(0.14031620480133381739302944652162339818697958314985L), eps * 1000);
1008    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(0.5)), static_cast<long double>(0.52049987781304653768274665389196452873645157575796L), eps * 1000);
1009    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(1)), static_cast<long double>(0.84270079294971486934122063508260925929606699796630L), eps * 1000);
1010    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(5)), static_cast<long double>(0.9999999999984625402055719651498116565146166211099L), eps * 1000);
1011    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(-0.125)), static_cast<long double>(-0.14031620480133381739302944652162339818697958314985L), eps * 1000);
1012    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(-0.5)), static_cast<long double>(-0.52049987781304653768274665389196452873645157575796L), eps * 1000);
1013    BOOST_CHECK_CLOSE(tr1::erfl(static_cast<long double>(0)), static_cast<long double>(0), eps * 1000);
1014
1015    BOOST_CHECK_CLOSE(tr1::log1pl(static_cast<long double>(0.582029759883880615234375e0)), static_cast<long double>(0.4587086807259736626531803258754840111707e0L), eps * 1000);
1016    BOOST_CHECK_CLOSE(tr1::expm1l(static_cast<long double>(0.582029759883880615234375e0)), static_cast<long double>(0.7896673415707786528734865994546559029663e0L), eps * 1000);
1017    BOOST_CHECK_CLOSE(tr1::log1pl(static_cast<long double>(-0.2047410048544406890869140625e-1)), static_cast<long double>(-0.2068660038044094868521052319477265955827e-1L), eps * 1000);
1018    BOOST_CHECK_CLOSE(tr1::expm1l(static_cast<long double>(-0.2047410048544406890869140625e-1)), static_cast<long double>(-0.2026592921724753704129022027337835687888e-1L), eps * 1000);
1019
1020    BOOST_CHECK_EQUAL(tr1::fmaxl(0.1L, -0.1L), 0.1L);
1021    BOOST_CHECK_EQUAL(tr1::fminl(0.1L, -0.1L), -0.1L);
1022
1023    BOOST_CHECK_CLOSE(tr1::hypotl(1.0L, 3.0L), std::sqrt(10.0L), eps * 500);
1024
1025    BOOST_CHECK_CLOSE(tr1::lgammal(static_cast<long double>(3.5)), static_cast<long double>(1.2009736023470742248160218814507129957702389154682L), 5000 * eps);
1026    BOOST_CHECK_CLOSE(tr1::lgammal(static_cast<long double>(0.125)), static_cast<long double>(2.0194183575537963453202905211670995899482809521344L), 5000 * eps);
1027    BOOST_CHECK_CLOSE(tr1::lgammal(static_cast<long double>(-0.125)), static_cast<long double>(2.1653002489051702517540619481440174064962195287626L), 5000 * eps);
1028    BOOST_CHECK_CLOSE(tr1::lgammal(static_cast<long double>(-3.125)), static_cast<long double>(0.1543111276840418242676072830970532952413339012367L), 5000 * eps);
1029    BOOST_CHECK_CLOSE(tr1::lgammal(static_cast<long double>(-53249.0/1024)), static_cast<long double>(-149.43323093420259741100038126078721302600128285894L), 5000 * eps);
1030
1031    BOOST_CHECK_CLOSE(tr1::tgammal(static_cast<long double>(3.5)), static_cast<long double>(3.3233509704478425511840640312646472177454052302295L), 5000 * eps);
1032    BOOST_CHECK_CLOSE(tr1::tgammal(static_cast<long double>(0.125)), static_cast<long double>(7.5339415987976119046992298412151336246104195881491L), 5000 * eps);
1033    BOOST_CHECK_CLOSE(tr1::tgammal(static_cast<long double>(-0.125)), static_cast<long double>(-8.7172188593831756100190140408231437691829605421405L), 5000 * eps);
1034    BOOST_CHECK_CLOSE(tr1::tgammal(static_cast<long double>(-3.125)), static_cast<long double>(1.1668538708507675587790157356605097019141636072094L), 5000 * eps);
1035
1036 #ifdef BOOST_HAS_LONG_LONG
1037    BOOST_CHECK(tr1::llroundl(2.5L) == 3LL);
1038    BOOST_CHECK(tr1::llroundl(2.25L) == 2LL);
1039 #endif
1040    BOOST_CHECK(tr1::lroundl(2.5L) == 3L);
1041    BOOST_CHECK(tr1::lroundl(2.25L) == 2L);
1042    BOOST_CHECK(tr1::roundl(2.5L) == 3.0L);
1043    BOOST_CHECK(tr1::roundl(2.25L) == 2.0L);
1044
1045    BOOST_CHECK(tr1::nextafterl(1.0L, 2.0L) > 1.0L);
1046    BOOST_CHECK(tr1::nextafterl(1.0L, -2.0L) < 1.0L);
1047    BOOST_CHECK(tr1::nextafterl(tr1::nextafterl(1.0L, 2.0L), -2.0L) == 1.0L);
1048    BOOST_CHECK(tr1::nextafterl(tr1::nextafterl(1.0L, -2.0L), 2.0L) == 1.0L);
1049    BOOST_CHECK(tr1::nextafterl(1.0L, 2.0L) > 1.0L);
1050    BOOST_CHECK(tr1::nextafterl(1.0L, -2.0L) < 1.0L);
1051    BOOST_CHECK(tr1::nextafterl(tr1::nextafterl(1.0L, 2.0L), -2.0L) == 1.0L);
1052    BOOST_CHECK(tr1::nextafterl(tr1::nextafterl(1.0L, -2.0L), 2.0L) == 1.0L);
1053
1054    BOOST_CHECK(tr1::truncl(2.5L) == 2.0L);
1055    BOOST_CHECK(tr1::truncl(2.25L) == 2.0L);
1056
1057    //
1058    // And again but without the "l" suffix on the function names:
1059    //
1060    BOOST_CHECK_CLOSE(tr1::acosh(std::cosh(0.5L)), 0.5L, 5000 * eps);
1061    BOOST_CHECK_CLOSE(tr1::asinh(std::sinh(0.5L)), 0.5L, 5000 * eps);
1062    BOOST_CHECK_CLOSE(tr1::atanh(std::tanh(0.5L)), 0.5L, 5000 * eps);
1063
1064    BOOST_CHECK_CLOSE(tr1::cbrt(1.5L * 1.5L * 1.5L), 1.5L, 5000 * eps);
1065
1066    BOOST_CHECK(tr1::copysign(1.0L, 1.0L) == 1.0L);
1067    BOOST_CHECK(tr1::copysign(1.0L, -1.0L) == -1.0L);
1068    BOOST_CHECK(tr1::copysign(-1.0L, 1.0L) == 1.0L);
1069    BOOST_CHECK(tr1::copysign(-1.0L, -1.0L) == -1.0L);
1070
1071    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(0.125)), static_cast<long double>(0.85968379519866618260697055347837660181302041685015L), eps * 1000);
1072    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(0.5)), static_cast<long double>(0.47950012218695346231725334610803547126354842424204L), eps * 1000);
1073    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(1)), static_cast<long double>(0.15729920705028513065877936491739074070393300203370L), eps * 1000);
1074    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(5)), static_cast<long double>(1.5374597944280348501883434853833788901180503147234e-12L), eps * 1000);
1075    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(-0.125)), static_cast<long double>(1.1403162048013338173930294465216233981869795831498L), eps * 1000);
1076    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(-0.5)), static_cast<long double>(1.5204998778130465376827466538919645287364515757580L), eps * 1000);
1077    BOOST_CHECK_CLOSE(tr1::erfc(static_cast<long double>(0)), static_cast<long double>(1), eps * 1000);
1078
1079    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(0.125)), static_cast<long double>(0.14031620480133381739302944652162339818697958314985L), eps * 1000);
1080    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(0.5)), static_cast<long double>(0.52049987781304653768274665389196452873645157575796L), eps * 1000);
1081    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(1)), static_cast<long double>(0.84270079294971486934122063508260925929606699796630L), eps * 1000);
1082    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(5)), static_cast<long double>(0.9999999999984625402055719651498116565146166211099L), eps * 1000);
1083    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(-0.125)), static_cast<long double>(-0.14031620480133381739302944652162339818697958314985L), eps * 1000);
1084    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(-0.5)), static_cast<long double>(-0.52049987781304653768274665389196452873645157575796L), eps * 1000);
1085    BOOST_CHECK_CLOSE(tr1::erf(static_cast<long double>(0)), static_cast<long double>(0), eps * 1000);
1086
1087    BOOST_CHECK_CLOSE(tr1::log1p(static_cast<long double>(0.582029759883880615234375e0)), static_cast<long double>(0.4587086807259736626531803258754840111707e0L), eps * 1000);
1088    BOOST_CHECK_CLOSE(tr1::expm1(static_cast<long double>(0.582029759883880615234375e0)), static_cast<long double>(0.7896673415707786528734865994546559029663e0L), eps * 1000);
1089    BOOST_CHECK_CLOSE(tr1::log1p(static_cast<long double>(-0.2047410048544406890869140625e-1)), static_cast<long double>(-0.2068660038044094868521052319477265955827e-1L), eps * 1000);
1090    BOOST_CHECK_CLOSE(tr1::expm1(static_cast<long double>(-0.2047410048544406890869140625e-1)), static_cast<long double>(-0.2026592921724753704129022027337835687888e-1L), eps * 1000);
1091
1092    BOOST_CHECK_EQUAL(tr1::fmax(0.1L, -0.1L), 0.1L);
1093    BOOST_CHECK_EQUAL(tr1::fmin(0.1L, -0.1L), -0.1L);
1094
1095    BOOST_CHECK_CLOSE(tr1::hypot(1.0L, 3.0L), std::sqrt(10.0L), eps * 500);
1096
1097    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<long double>(3.5)), static_cast<long double>(1.2009736023470742248160218814507129957702389154682L), 5000 * eps);
1098    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<long double>(0.125)), static_cast<long double>(2.0194183575537963453202905211670995899482809521344L), 5000 * eps);
1099    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<long double>(-0.125)), static_cast<long double>(2.1653002489051702517540619481440174064962195287626L), 5000 * eps);
1100    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<long double>(-3.125)), static_cast<long double>(0.1543111276840418242676072830970532952413339012367L), 5000 * eps);
1101    BOOST_CHECK_CLOSE(tr1::lgamma(static_cast<long double>(-53249.0/1024)), static_cast<long double>(-149.43323093420259741100038126078721302600128285894L), 5000 * eps);
1102
1103    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<long double>(3.5)), static_cast<long double>(3.3233509704478425511840640312646472177454052302295L), 5000 * eps);
1104    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<long double>(0.125)), static_cast<long double>(7.5339415987976119046992298412151336246104195881491L), 5000 * eps);
1105    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<long double>(-0.125)), static_cast<long double>(-8.7172188593831756100190140408231437691829605421405L), 5000 * eps);
1106    BOOST_CHECK_CLOSE(tr1::tgamma(static_cast<long double>(-3.125)), static_cast<long double>(1.1668538708507675587790157356605097019141636072094L), 5000 * eps);
1107
1108 #ifdef BOOST_HAS_LONG_LONG
1109    BOOST_CHECK(tr1::llround(2.5L) == 3LL);
1110    BOOST_CHECK(tr1::llround(2.25L) == 2LL);
1111 #endif
1112    BOOST_CHECK(tr1::lround(2.5L) == 3L);
1113    BOOST_CHECK(tr1::lround(2.25L) == 2L);
1114    BOOST_CHECK(tr1::round(2.5L) == 3.0L);
1115    BOOST_CHECK(tr1::round(2.25L) == 2.0L);
1116
1117    BOOST_CHECK(tr1::nextafter(1.0L, 2.0L) > 1.0L);
1118    BOOST_CHECK(tr1::nextafter(1.0L, -2.0L) < 1.0L);
1119    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0L, 2.0L), -2.0L) == 1.0L);
1120    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0L, -2.0L), 2.0L) == 1.0L);
1121    BOOST_CHECK(tr1::nextafter(1.0L, 2.0L) > 1.0L);
1122    BOOST_CHECK(tr1::nextafter(1.0L, -2.0L) < 1.0L);
1123    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0L, 2.0L), -2.0L) == 1.0L);
1124    BOOST_CHECK(tr1::nextafter(tr1::nextafter(1.0L, -2.0L), 2.0L) == 1.0L);
1125
1126    BOOST_CHECK(tr1::trunc(2.5L) == 2.0L);
1127    BOOST_CHECK(tr1::trunc(2.25L) == 2.0L);
1128
1129    //
1130    // Now for the TR1 math functions:
1131    //
1132    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerrel(4L, 5L, static_cast<long double>(0.5L)), static_cast<long double>(88.31510416666666666666666666666666666667L), eps * 100L);
1133    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerrel(10L, 0L, static_cast<long double>(2.5L)), static_cast<long double>(-0.8802526766660982969576719576719576719577L), eps * 100L);
1134    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerrel(10L, 1L, static_cast<long double>(4.5L)), static_cast<long double>(1.564311458042689732142857142857142857143L), eps * 100L);
1135    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerrel(10L, 6L, static_cast<long double>(8.5L)), static_cast<long double>(20.51596541066649098875661375661375661376L), eps * 100L);
1136    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerrel(10L, 12L, static_cast<long double>(12.5L)), static_cast<long double>(-199.5560968456234671241181657848324514991L), eps * 100L);
1137    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerrel(50L, 40L, static_cast<long double>(12.5L)), static_cast<long double>(-4.996769495006119488583146995907246595400e16L), eps * 100L);
1138
1139    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(1L, static_cast<long double>(0.5L)), static_cast<long double>(0.5L), eps * 100L);
1140    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(4L, static_cast<long double>(0.5L)), static_cast<long double>(-0.3307291666666666666666666666666666666667L), eps * 100L);
1141    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(7L, static_cast<long double>(0.5L)), static_cast<long double>(-0.5183392237103174603174603174603174603175L), eps * 100L);
1142    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(20L, static_cast<long double>(0.5L)), static_cast<long double>(0.3120174870800154148915399248893113634676L), eps * 100L);
1143    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(50L, static_cast<long double>(0.5L)), static_cast<long double>(-0.3181388060269979064951118308575628226834L), eps * 100L);
1144
1145    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(1L, static_cast<long double>(-0.5L)), static_cast<long double>(1.5L), eps * 100L);
1146    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(4L, static_cast<long double>(-0.5L)), static_cast<long double>(3.835937500000000000000000000000000000000L), eps * 100L);
1147    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(7L, static_cast<long double>(-0.5L)), static_cast<long double>(7.950934709821428571428571428571428571429L), eps * 100L);
1148    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(20L, static_cast<long double>(-0.5L)), static_cast<long double>(76.12915699869631476833699787070874048223L), eps * 100L);
1149    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(50L, static_cast<long double>(-0.5L)), static_cast<long double>(2307.428631277506570629232863491518399720L), eps * 100L);
1150
1151    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(1L, static_cast<long double>(4.5L)), static_cast<long double>(-3.500000000000000000000000000000000000000L), eps * 100L);
1152    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(4L, static_cast<long double>(4.5L)), static_cast<long double>(0.08593750000000000000000000000000000000000L), eps * 100L);
1153    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(7L, static_cast<long double>(4.5L)), static_cast<long double>(-1.036928013392857142857142857142857142857L), eps * 100L);
1154    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(20L, static_cast<long double>(4.5L)), static_cast<long double>(1.437239150257817378525582974722170737587L), eps * 100L);
1155    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerrel(50L, static_cast<long double>(4.5L)), static_cast<long double>(-0.7795068145562651416494321484050019245248L), eps * 100L);
1156
1157    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendrel(4L, 2L, static_cast<long double>(0.5L)), static_cast<long double>(4.218750000000000000000000000000000000000L), eps * 100L);
1158    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendrel(7L, 5L, static_cast<long double>(0.5L)), static_cast<long double>(5696.789530152175143607977274672800795328L), eps * 100L);
1159    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendrel(4L, 2L, static_cast<long double>(-0.5L)), static_cast<long double>(4.218750000000000000000000000000000000000L), eps * 100L);
1160    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendrel(7L, 5L, static_cast<long double>(-0.5L)), static_cast<long double>(5696.789530152175143607977274672800795328L), eps * 100L);
1161
1162    BOOST_CHECK_CLOSE_FRACTION(tr1::legendrel(1L, static_cast<long double>(0.5L)), static_cast<long double>(0.5L), eps * 100L);
1163    BOOST_CHECK_CLOSE_FRACTION(tr1::legendrel(4L, static_cast<long double>(0.5L)), static_cast<long double>(-0.2890625000000000000000000000000000000000L), eps * 100L);
1164    BOOST_CHECK_CLOSE_FRACTION(tr1::legendrel(7L, static_cast<long double>(0.5L)), static_cast<long double>(0.2231445312500000000000000000000000000000L), eps * 100L);
1165    BOOST_CHECK_CLOSE_FRACTION(tr1::legendrel(40L, static_cast<long double>(0.5L)), static_cast<long double>(-0.09542943523261546936538467572384923220258L), eps * 100L);
1166
1167    long double sv = eps / 1024;
1168    BOOST_CHECK_CLOSE(tr1::betal(static_cast<long double>(1L), static_cast<long double>(1L)), static_cast<long double>(1L), eps * 20L * 100L);
1169    BOOST_CHECK_CLOSE(tr1::betal(static_cast<long double>(1L), static_cast<long double>(4L)), static_cast<long double>(0.25L), eps * 20L * 100L);
1170    BOOST_CHECK_CLOSE(tr1::betal(static_cast<long double>(4L), static_cast<long double>(1L)), static_cast<long double>(0.25L), eps * 20L * 100L);
1171    BOOST_CHECK_CLOSE(tr1::betal(sv, static_cast<long double>(4L)), 1/sv, eps * 20L * 100L);
1172    BOOST_CHECK_CLOSE(tr1::betal(static_cast<long double>(4L), sv), 1/sv, eps * 20L * 100L);
1173    BOOST_CHECK_CLOSE(tr1::betal(static_cast<long double>(4L), static_cast<long double>(20L)), static_cast<long double>(0.00002823263692828910220214568040654997176736L), eps * 20L * 100L);
1174    BOOST_CHECK_CLOSE(tr1::betal(static_cast<long double>(0.0125L), static_cast<long double>(0.000023L)), static_cast<long double>(43558.24045647538375006349016083320744662L), eps * 20L * 100L);
1175
1176    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(0L)), static_cast<long double>(1.5707963267948966192313216916397514420985846996876L), eps * 5000L);
1177    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(0.125L)), static_cast<long double>(1.5769867712158131421244030532288080803822271060839L), eps * 5000L);
1178    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(0.25L)), static_cast<long double>(1.5962422221317835101489690714979498795055744578951L), eps * 5000L);
1179    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(300L)/1024L), static_cast<long double>(1.6062331054696636704261124078746600894998873503208L), eps * 5000L);
1180    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(400L)/1024L), static_cast<long double>(1.6364782007562008756208066125715722889067992997614L), eps * 5000L);
1181    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(-0.5L)), static_cast<long double>(1.6857503548125960428712036577990769895008008941411L), eps * 5000L);
1182    BOOST_CHECK_CLOSE(tr1::comp_ellint_1l(static_cast<long double>(-0.75L)), static_cast<long double>(1.9109897807518291965531482187613425592531451316788L), eps * 5000L);
1183
1184    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(-1L)), static_cast<long double>(1L), eps * 5000L);
1185    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(0L)), static_cast<long double>(1.5707963267948966192313216916397514420985846996876L), eps * 5000L);
1186    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(100L) / 1024L), static_cast<long double>(1.5670445330545086723323795143598956428788609133377L), eps * 5000L);
1187    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(200L) / 1024L), static_cast<long double>(1.5557071588766556854463404816624361127847775545087L), eps * 5000L);
1188    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(300L) / 1024L), static_cast<long double>(1.5365278991162754883035625322482669608948678755743L), eps * 5000L);
1189    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(400L) / 1024L), static_cast<long double>(1.5090417763083482272165682786143770446401437564021L), eps * 5000L);
1190    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(-0.5L)), static_cast<long double>(1.4674622093394271554597952669909161360253617523272L), eps * 5000L);
1191    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(-600L) / 1024L), static_cast<long double>(1.4257538571071297192428217218834579920545946473778L), eps * 5000L);
1192    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(-800L) / 1024L), static_cast<long double>(1.2927868476159125056958680222998765985004489572909L), eps * 5000L);
1193    BOOST_CHECK_CLOSE(tr1::comp_ellint_2l(static_cast<long double>(-900L) / 1024L), static_cast<long double>(1.1966864890248739524112920627353824133420353430982L), eps * 5000L);
1194
1195    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(0.2L), static_cast<long double>(0L)), static_cast<long double>(1.586867847454166237308008033828114192951L), eps * 5000L);
1196    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(0.4L), static_cast<long double>(0L)), static_cast<long double>(1.639999865864511206865258329748601457626L), eps * 5000L);
1197    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(0L), static_cast<long double>(0L)), static_cast<long double>(1.57079632679489661923132169163975144209858469968755291048747L), eps * 5000L);
1198    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(0L), static_cast<long double>(0.5L)), static_cast<long double>(2.221441469079183123507940495030346849307L), eps * 5000L);
1199    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(0.3L), static_cast<long double>(-4L)), static_cast<long double>(0.712708870925620061597924858162260293305195624270730660081949L), eps * 5000L);
1200    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(-0.5L), static_cast<long double>(-1e+05L)), static_cast<long double>(0.00496944596485066055800109163256108604615568144080386919012831L), eps * 5000L);
1201    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(-0.75L), static_cast<long double>(-1e+10L)), static_cast<long double>(0.0000157080225184890546939710019277357161497407143903832703317801L), eps * 5000L);
1202    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(-0.875L), static_cast<long double>(1L) / 1024L), static_cast<long double>(2.18674503176462374414944618968850352696579451638002110619287L), eps * 5000L);
1203    BOOST_CHECK_CLOSE(tr1::comp_ellint_3l(static_cast<long double>(-0.875L), static_cast<long double>(1023L)/1024L), static_cast<long double>(101.045289804941384100960063898569538919135722087486350366997L), eps * 5000L);
1204
1205    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(2.25L), static_cast<long double>(1L)/(1024*1024L)), static_cast<long double>(2.34379212133481347189068464680335815256364262507955635911656e-15L), eps * 5000L);
1206    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(5.5L), static_cast<long double>(3.125L)), static_cast<long double>(0.0583514045989371500460946536220735787163510569634133670181210L), eps * 5000L);
1207    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(-5L) + static_cast<long double>(1L)/1024L, static_cast<long double>(2.125L)), static_cast<long double>(0.0267920938009571023702933210070984416052633027166975342895062L), eps * 5000L);
1208    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(-5.5L), static_cast<long double>(10L)), static_cast<long double>(597.577606961369169607937419869926705730305175364662688426534L), eps * 5000L);
1209    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(-10486074L)/(1024*1024L), static_cast<long double>(1L)/1024L), static_cast<long double>(1.41474005665181350367684623930576333542989766867888186478185e35L), eps * 5000L);
1210    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(-10486074L)/(1024*1024L), static_cast<long double>(50L)), static_cast<long double>(1.07153277202900671531087024688681954238311679648319534644743e20L), eps * 5000L);
1211    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(144794L)/1024L, static_cast<long double>(100L)), static_cast<long double>(2066.27694757392660413922181531984160871678224178890247540320L), eps * 5000L);
1212    BOOST_CHECK_CLOSE(tr1::cyl_bessel_il(static_cast<long double>(-144794L)/1024L, static_cast<long double>(100L)), static_cast<long double>(2066.27694672763190927440969155740243346136463461655104698748L), eps * 5000L);
1213
1214    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(2457L)/1024L, static_cast<long double>(1L)/1024L), static_cast<long double>(3.80739920118603335646474073457326714709615200130620574875292e-9L), eps * 50000L);
1215    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(5.5L), static_cast<long double>(3217L)/1024L), static_cast<long double>(0.0281933076257506091621579544064767140470089107926550720453038L), eps * 5000L);
1216    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-5.5L), static_cast<long double>(3217L)/1024L), static_cast<long double>(-2.55820064470647911823175836997490971806135336759164272675969L), eps * 5000L);
1217    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(2.449843111985605522111159013846599118397e-03L), eps * 50000L);
1218    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(0.00759343502722670361395585198154817047185480147294665270646578L), eps * 5000L);
1219    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(5.5L), static_cast<long double>(1e+06L)), static_cast<long double>(-0.000747424248595630177396350688505919533097973148718960064663632L), eps * 50000L);
1220    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(5.125L), static_cast<long double>(1e+06L)), static_cast<long double>(-0.000776600124835704280633640911329691642748783663198207360238214L), eps * 50000L);
1221    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(5.875L), static_cast<long double>(1e+06L)), static_cast<long double>(-0.000466322721115193071631008581529503095819705088484386434589780L), eps * 50000L);
1222    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(0.5L), static_cast<long double>(101L)), static_cast<long double>(0.0358874487875643822020496677692429287863419555699447066226409L), eps * 5000L);
1223    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(0.00244984311198560552211115901384659911839737686676766460822577L), eps * 50000L);
1224    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-5.5L), static_cast<long double>(1e+06L)), static_cast<long double>(0.000279243200433579511095229508894156656558211060453622750659554L), eps * 50000L);
1225    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-0.5L), static_cast<long double>(101L)), static_cast<long double>(0.0708184798097594268482290389188138201440114881159344944791454L), eps * 5000L);
1226    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1L)/1024L), static_cast<long double>(1.41474013160494695750009004222225969090304185981836460288562e35L), eps * 5000L);
1227    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(15L)), static_cast<long double>(-0.0902239288885423309568944543848111461724911781719692852541489L), eps * 5000L);
1228    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(10486074L) / (1024*1024L), static_cast<long double>(1e+02L)), static_cast<long double>(-0.0547064914615137807616774867984047583596945624129838091326863L), eps * 5000L);
1229    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(10486074L) / (1024*1024L), static_cast<long double>(2e+04L)), static_cast<long double>(-0.00556783614400875611650958980796060611309029233226596737701688L), eps * 5000L);
1230    BOOST_CHECK_CLOSE(tr1::cyl_bessel_jl(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1e+02L)), static_cast<long double>(-0.0547613660316806551338637153942604550779513947674222863858713L), eps * 5000L);
1231
1232    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(0.5L), static_cast<long double>(0.875L)), static_cast<long double>(0.558532231646608646115729767013630967055657943463362504577189L), eps * 5000L);
1233    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(0.5L), static_cast<long double>(1.125L)), static_cast<long double>(0.383621010650189547146769320487006220295290256657827220786527L), eps * 5000L);
1234    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(2.25L), static_cast<long double>(std::ldexp(1.0L, -30L))), static_cast<long double>(5.62397392719283271332307799146649700147907612095185712015604e20L), eps * 5000L);
1235    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(5.5L), static_cast<long double>(3217L)/1024L), static_cast<long double>(1.30623288775012596319554857587765179889689223531159532808379L), eps * 5000L);
1236    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(-5.5L), static_cast<long double>(10L)), static_cast<long double>(0.0000733045300798502164644836879577484533096239574909573072142667L), eps * 5000L);
1237    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(-5.5L), static_cast<long double>(100L)), static_cast<long double>(5.41274555306792267322084448693957747924412508020839543293369e-45L), eps * 5000L);
1238    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(10240L)/1024L, static_cast<long double>(1L)/1024L), static_cast<long double>(2.35522579263922076203415803966825431039900000000993410734978e38L), eps * 5000L);
1239    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(10240L)/1024L, static_cast<long double>(10L)), static_cast<long double>(0.00161425530039067002345725193091329085443750382929208307802221L), eps * 5000L);
1240    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(144793L)/1024L, static_cast<long double>(100L)), static_cast<long double>(1.39565245860302528069481472855619216759142225046370312329416e-6L), eps * 5000L);
1241    BOOST_CHECK_CLOSE(tr1::cyl_bessel_kl(static_cast<long double>(144793L)/1024L, static_cast<long double>(200L)), static_cast<long double>(9.11950412043225432171915100042647230802198254567007382956336e-68L), eps * 7000L);
1242
1243    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(0.5L), static_cast<long double>(1L) / (1024*1024L)), static_cast<long double>(-817.033790261762580469303126467917092806755460418223776544122L), eps * 5000L);
1244    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(5.5L), static_cast<long double>(3.125L)), static_cast<long double>(-2.61489440328417468776474188539366752698192046890955453259866L), eps * 5000L);
1245    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(-5.5L), static_cast<long double>(3.125L)), static_cast<long double>(-0.0274994493896489729948109971802244976377957234563871795364056L), eps * 5000L);
1246    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(-5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(-0.00759343502722670361395585198154817047185480147294665270646578L), eps * 5000L);
1247    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1L)/1024L), static_cast<long double>(-1.50382374389531766117868938966858995093408410498915220070230e38L), eps * 5000L);
1248    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1e+02L)), static_cast<long double>(0.0583041891319026009955779707640455341990844522293730214223545L), eps * 5000L);
1249    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(141.75L), static_cast<long double>(1e+02L)), static_cast<long double>(-5.38829231428696507293191118661269920130838607482708483122068e9L), eps * 5000L);
1250    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(141.75L), static_cast<long double>(2e+04L)), static_cast<long double>(-0.00376577888677186194728129112270988602876597726657372330194186L), eps * 50000L);
1251    BOOST_CHECK_CLOSE(tr1::cyl_neumannl(static_cast<long double>(-141.75L), static_cast<long double>(1e+02L)), static_cast<long double>(-3.81009803444766877495905954105669819951653361036342457919021e9L), eps * 5000L);
1252
1253    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0L), static_cast<long double>(0L)), static_cast<long double>(0L), eps * 5000L);
1254    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0L), static_cast<long double>(-10L)), static_cast<long double>(-10L), eps * 5000L);
1255    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(-1L), static_cast<long double>(-1L)), static_cast<long double>(-1.2261911708835170708130609674719067527242483502207L), eps * 5000L);
1256    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.875L), static_cast<long double>(-4L)), static_cast<long double>(-5.3190556182262405182189463092940736859067548232647L), eps * 5000L);
1257    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(-0.625L), static_cast<long double>(8L)), static_cast<long double>(9.0419973860310100524448893214394562615252527557062L), eps * 5000L);
1258    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.875L), static_cast<long double>(1e-05L)), static_cast<long double>(0.000010000000000127604166668510945638036143355898993088L), eps * 5000L);
1259    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(10L)/1024L, static_cast<long double>(1e+05L)), static_cast<long double>(100002.38431454899771096037307519328741455615271038L), eps * 5000L);
1260    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(1L), static_cast<long double>(1e-20L)), static_cast<long double>(1.0000000000000000000000000000000000000000166666667e-20L), eps * 5000L);
1261    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(1e-20L), static_cast<long double>(1e-20L)), static_cast<long double>(1.000000000000000e-20L), eps * 5000L);
1262    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(400L)/1024L, static_cast<long double>(1e+20L)), static_cast<long double>(1.0418143796499216839719289963154558027005142709763e20L), eps * 5000L);
1263    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(2L)), static_cast<long double>(2.1765877052210673672479877957388515321497888026770L), eps * 5000L);
1264    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(4L)), static_cast<long double>(4.2543274975235836861894752787874633017836785640477L), eps * 5000L);
1265    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(6L)), static_cast<long double>(6.4588766202317746302999080620490579800463614807916L), eps * 5000L);
1266    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(10L)), static_cast<long double>(10.697409951222544858346795279378531495869386960090L), eps * 5000L);
1267    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(-2L)), static_cast<long double>(-2.1765877052210673672479877957388515321497888026770L), eps * 5000L);
1268    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(-4L)), static_cast<long double>(-4.2543274975235836861894752787874633017836785640477L), eps * 5000L);
1269    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(-6L)), static_cast<long double>(-6.4588766202317746302999080620490579800463614807916L), eps * 5000L);
1270    BOOST_CHECK_CLOSE(tr1::ellint_1l(static_cast<long double>(0.5L), static_cast<long double>(-10L)), static_cast<long double>(-10.697409951222544858346795279378531495869386960090L), eps * 5000L);
1271
1272    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(0L), static_cast<long double>(0L)), static_cast<long double>(0L), eps * 5000L);
1273    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(0L), static_cast<long double>(-10L)), static_cast<long double>(-10L), eps * 5000L);
1274    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(-1L), static_cast<long double>(-1L)), static_cast<long double>(-0.84147098480789650665250232163029899962256306079837L), eps * 5000L);
1275    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(900L) / 1024L, static_cast<long double>(-4L)), static_cast<long double>(-3.1756145986492562317862928524528520686391383168377L), eps * 5000L);
1276    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(-600L) / 1024L, static_cast<long double>(8L)), static_cast<long double>(7.2473147180505693037677015377802777959345489333465L), eps * 5000L);
1277    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(800L) / 1024L, static_cast<long double>(1e-05L)), static_cast<long double>(9.999999999898274739584436515967055859383969942432E-6L), eps * 5000L);
1278    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(100L) / 1024L, static_cast<long double>(1e+05L)), static_cast<long double>(99761.153306972066658135668386691227343323331995888L), eps * 5000L);
1279    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(-0.5L), static_cast<long double>(1e+10L)), static_cast<long double>(9.3421545766487137036576748555295222252286528414669e9L), eps * 5000L);
1280    BOOST_CHECK_CLOSE(tr1::ellint_2l(static_cast<long double>(400L) / 1024L, ldexp(static_cast<long double>(1L), 66L)), static_cast<long double>(7.0886102721911705466476846969992069994308167515242e19L), eps * 5000L);
1281
1282    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(1L), static_cast<long double>(-1L)), static_cast<long double>(-1.557407724654902230506974807458360173087L), eps * 5000L);
1283    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.4L), static_cast<long double>(0L), static_cast<long double>(-4L)), static_cast<long double>(-4.153623371196831087495427530365430979011L), eps * 5000L);
1284    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(-0.6L), static_cast<long double>(0L), static_cast<long double>(8L)), static_cast<long double>(8.935930619078575123490612395578518914416L), eps * 5000L);
1285    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.25L), static_cast<long double>(0L), static_cast<long double>(0.5L)), static_cast<long double>(0.501246705365439492445236118603525029757890291780157969500480L), eps * 5000L);
1286    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(0L), static_cast<long double>(0.5L)), static_cast<long double>(0.5L), eps * 5000L);
1287    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(-2L), static_cast<long double>(0.5L)), static_cast<long double>(0.437501067017546278595664813509803743009132067629603474488486L), eps * 5000L);
1288    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(0.25L), static_cast<long double>(0.5L)), static_cast<long double>(0.510269830229213412212501938035914557628394166585442994564135L), eps * 5000L);
1289    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(0.75L), static_cast<long double>(0.5L)), static_cast<long double>(0.533293253875952645421201146925578536430596894471541312806165L), eps * 5000L);
1290    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(0.75L), static_cast<long double>(0.75L)), static_cast<long double>(0.871827580412760575085768367421866079353646112288567703061975L), eps * 5000L);
1291    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(1L), static_cast<long double>(0.25L)), static_cast<long double>(0.255341921221036266504482236490473678204201638800822621740476L), eps * 5000L);
1292    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(2L), static_cast<long double>(0.25L)), static_cast<long double>(0.261119051639220165094943572468224137699644963125853641716219L), eps * 5000L);
1293    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0L), static_cast<long double>(1023L)/1024L, static_cast<long double>(1.5L)), static_cast<long double>(13.2821612239764190363647953338544569682942329604483733197131L), eps * 5000L);
1294    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.5L), static_cast<long double>(0.5L), static_cast<long double>(-1L)), static_cast<long double>(-1.228014414316220642611298946293865487807L), eps * 5000L);
1295    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.5L), static_cast<long double>(0.5L), static_cast<long double>(1e+10L)), static_cast<long double>(1.536591003599172091573590441336982730551e+10L), eps * 5000L);
1296    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.75L), static_cast<long double>(-1e+05L), static_cast<long double>(10L)), static_cast<long double>(0.0347926099493147087821620459290460547131012904008557007934290L), eps * 5000L);
1297    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.875L), static_cast<long double>(-1e+10L), static_cast<long double>(10L)), static_cast<long double>(0.000109956202759561502329123384755016959364346382187364656768212L), eps * 5000L);
1298    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.875L), static_cast<long double>(-1e+10L), static_cast<long double>(1e+20L)), static_cast<long double>(1.00000626665567332602765201107198822183913978895904937646809e15L), eps * 5000L);
1299    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.875L), static_cast<long double>(-1e+10L), static_cast<long double>(1608L)/1024L), static_cast<long double>(0.0000157080616044072676127333183571107873332593142625043567690379L), eps * 5000L);
1300    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.875L), 1-static_cast<long double>(1L) / 1024L, static_cast<long double>(1e+20L)), static_cast<long double>(6.43274293944380717581167058274600202023334985100499739678963e21L), eps * 5000L);
1301    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.25L), static_cast<long double>(50L), static_cast<long double>(0.1L)), static_cast<long double>(0.124573770342749525407523258569507331686458866564082916835900L), eps * 5000L);
1302    BOOST_CHECK_CLOSE(tr1::ellint_3l(static_cast<long double>(0.25L), static_cast<long double>(1.125L), static_cast<long double>(1L)), static_cast<long double>(1.77299767784815770192352979665283069318388205110727241629752L), eps * 5000L);
1303
1304    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(1L)/1024L), static_cast<long double>(-6.35327933972759151358547423727042905862963067106751711596065L), eps * 5000L);
1305    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(0.125L)), static_cast<long double>(-1.37320852494298333781545045921206470808223543321810480716122L), eps * 5000L);
1306    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(0.5L)), static_cast<long double>(0.454219904863173579920523812662802365281405554352642045162818L), eps * 5000L);
1307    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(1L)), static_cast<long double>(1.89511781635593675546652093433163426901706058173270759164623L), eps * 5000L);
1308    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(50.5L)), static_cast<long double>(1.72763195602911805201155668940185673806099654090456049881069e20L), eps * 5000L);
1309    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(-1L)/1024L), static_cast<long double>(-6.35523246483107180261445551935803221293763008553775821607264L), eps * 5000L);
1310    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(-0.125L)), static_cast<long double>(-1.62342564058416879145630692462440887363310605737209536579267L), eps * 5000L);
1311    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(-0.5L)), static_cast<long double>(-0.559773594776160811746795939315085235226846890316353515248293L), eps * 5000L);
1312    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(-1L)), static_cast<long double>(-0.219383934395520273677163775460121649031047293406908207577979L), eps * 5000L);
1313    BOOST_CHECK_CLOSE(tr1::expintl(static_cast<long double>(-50.5L)), static_cast<long double>(-2.27237132932219350440719707268817831250090574830769670186618e-24L), eps * 5000L);
1314
1315    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(0L, static_cast<long double>(1L)), static_cast<long double>(1.L), 100L * eps);
1316    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(1L, static_cast<long double>(1L)), static_cast<long double>(2.L), 100L * eps);
1317    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(1L, static_cast<long double>(2L)), static_cast<long double>(4.L), 100L * eps);
1318    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(1L, static_cast<long double>(10L)), static_cast<long double>(20L), 100L * eps);
1319    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(1L, static_cast<long double>(100L)), static_cast<long double>(200L), 100L * eps);
1320    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(1L, static_cast<long double>(1e6L)), static_cast<long double>(2e6L), 100L * eps);
1321    //BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(10L, static_cast<long double>(30L)), static_cast<long double>(5.896624628001300E+17L), 1000L * eps);
1322    //BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(10L, static_cast<long double>(1000L)), static_cast<long double>(1.023976960161280E+33L), 1000L * eps);
1323    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(10L, static_cast<long double>(10L)), static_cast<long double>(8.093278209760000E+12L), 100L * eps);
1324    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(10L, static_cast<long double>(-10L)), static_cast<long double>(8.093278209760000E+12L), 100L * eps);
1325    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(3L, static_cast<long double>(-10L)), static_cast<long double>(-7.880000000000000E+3L), 100L * eps);
1326    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(3L, static_cast<long double>(-1000L)), static_cast<long double>(-7.999988000000000E+9L), 100L * eps);
1327    BOOST_CHECK_CLOSE_FRACTION(tr1::hermitel(3L, static_cast<long double>(-1000000L)), static_cast<long double>(-7.999999999988000E+18L), 100L * eps);
1328
1329    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(0.125L)), static_cast<long double>(-0.63277562349869525529352526763564627152686379131122L), eps * 5000L);
1330    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(1023L) / static_cast<long double>(1024L)), static_cast<long double>(-1023.4228554489429786541032870895167448906103303056L), eps * 5000L);
1331    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(1025L) / static_cast<long double>(1024L)), static_cast<long double>(1024.5772867695045940578681624248887776501597556226L), eps * 5000L);
1332    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(0.5L)), static_cast<long double>(-1.46035450880958681288949915251529801246722933101258149054289L), eps * 5000L);
1333    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(1.125L)), static_cast<long double>(8.5862412945105752999607544082693023591996301183069L), eps * 5000L);
1334    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(2L)), static_cast<long double>(1.6449340668482264364724151666460251892189499012068L), eps * 5000L);
1335    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(3.5L)), static_cast<long double>(1.1267338673170566464278124918549842722219969574036L), eps * 5000L);
1336    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(4L)), static_cast<long double>(1.08232323371113819151600369654116790277475095191872690768298L), eps * 5000L);
1337    BOOST_CHECK_CLOSE(tr1::riemann_zetal(4L + static_cast<long double>(1L) / 1024L), static_cast<long double>(1.08225596856391369799036835439238249195298434901488518878804L), eps * 5000L);
1338    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(4.5L)), static_cast<long double>(1.05470751076145426402296728896028011727249383295625173068468L), eps * 5000L);
1339    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(6.5L)), static_cast<long double>(1.01200589988852479610078491680478352908773213619144808841031L), eps * 5000L);
1340    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(7.5L)), static_cast<long double>(1.00582672753652280770224164440459408011782510096320822989663L), eps * 5000L);
1341    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(8.125L)), static_cast<long double>(1.0037305205308161603183307711439385250181080293472L), eps * 5000L);
1342    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(16.125L)), static_cast<long double>(1.0000140128224754088474783648500235958510030511915L), eps * 5000L);
1343    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(0L)), static_cast<long double>(-0.5L), eps * 5000L);
1344    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-0.125L)), static_cast<long double>(-0.39906966894504503550986928301421235400280637468895L), eps * 5000L);
1345    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-1L)), static_cast<long double>(-0.083333333333333333333333333333333333333333333333333L), eps * 5000L);
1346    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-2L)), static_cast<long double>(0L), eps * 5000L);
1347    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-2.5L)), static_cast<long double>(0.0085169287778503305423585670283444869362759902200745L), eps * 5000L * 3L);
1348    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-3L)), static_cast<long double>(0.0083333333333333333333333333333333333333333333333333L), eps * 5000L);
1349    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-4L)), static_cast<long double>(0L), eps * 5000L);
1350    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-20L)), static_cast<long double>(0L), eps * 5000L * 100L);
1351    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-21L)), static_cast<long double>(-281.46014492753623188405797101449275362318840579710L), eps * 5000L * 100L);
1352    BOOST_CHECK_CLOSE(tr1::riemann_zetal(static_cast<long double>(-30.125L)), static_cast<long double>(2.2762941726834511267740045451463455513839970804578e7L), eps * 5000L * 100L);
1353
1354    BOOST_CHECK_CLOSE(tr1::sph_bessell(0L, static_cast<long double>(0.1433600485324859619140625e-1L)), static_cast<long double>(0.9999657468461303487880990241993035937654e0L),  eps * 5000L * 100L);
1355    BOOST_CHECK_CLOSE(tr1::sph_bessell(0L, static_cast<long double>(0.1760916970670223236083984375e-1L)), static_cast<long double>(0.9999483203249623334100130061926184665364e0L),  eps * 5000L * 100L);
1356    BOOST_CHECK_CLOSE(tr1::sph_bessell(2L, static_cast<long double>(0.1433600485324859619140625e-1L)), static_cast<long double>(0.1370120120703995134662099191103188366059e-4L),  eps * 5000L * 100L);
1357    BOOST_CHECK_CLOSE(tr1::sph_bessell(2L, static_cast<long double>(0.1760916970670223236083984375e-1L)), static_cast<long double>(0.2067173265753174063228459655801741280461e-4L),  eps * 5000L * 100L);
1358    BOOST_CHECK_CLOSE(tr1::sph_bessell(7L, static_cast<long double>(0.1252804412841796875e3L)), static_cast<long double>(0.7887555711993028736906736576314283291289e-2L),  eps * 50000L * 100L);
1359    BOOST_CHECK_CLOSE(tr1::sph_bessell(7L, static_cast<long double>(0.25554705810546875e3L)), static_cast<long double>(-0.1463292767579579943284849187188066532514e-2L),  eps * 5000L * 100L);
1360
1361    BOOST_CHECK_CLOSE(tr1::sph_neumannl(0L, static_cast<long double>(0.408089816570281982421875e0L)), static_cast<long double>(-0.2249212131304610409189209411089291558038e1L), eps * 5000L * 100L);
1362    BOOST_CHECK_CLOSE(tr1::sph_neumannl(0L, static_cast<long double>(0.6540834903717041015625e0L)), static_cast<long double>(-0.1213309779166084571756446746977955970241e1L),   eps * 5000L * 100L);
1363    BOOST_CHECK_CLOSE(tr1::sph_neumannl(2L, static_cast<long double>(0.408089816570281982421875e0L)), static_cast<long double>(-0.4541702641837159203058389758895634766256e2L),   eps * 5000L * 100L);
1364    BOOST_CHECK_CLOSE(tr1::sph_neumannl(2L, static_cast<long double>(0.6540834903717041015625e0L)), static_cast<long double>(-0.1156112621471167110574129561700037138981e2L),   eps * 5000L * 100L);
1365    BOOST_CHECK_CLOSE(tr1::sph_neumannl(10L, static_cast<long double>(0.1097540378570556640625e1L)), static_cast<long double>(-0.2427889658115064857278886600528596240123e9L),   eps * 5000L * 100L);
1366    BOOST_CHECK_CLOSE(tr1::sph_neumannl(10L, static_cast<long double>(0.30944411754608154296875e1L)), static_cast<long double>(-0.3394649246350136450439882104151313759251e4L),   eps * 5000L * 100L);
1367
1368    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendrel(3L, 2L, static_cast<long double>(0.5L)), static_cast<long double>(0.2061460599687871330692286791802688341213L), eps * 5000L);
1369    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendrel(40L, 15L, static_cast<long double>(0.75L)), static_cast<long double>(-0.406036847302819452666908966769096223205057182668333862900509L), eps * 5000L);
1370
1371    //
1372    // Now all over again but without the "f" suffix on the function names this time:
1373    //
1374    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(4L, 5L, static_cast<long double>(0.5L)), static_cast<long double>(88.31510416666666666666666666666666666667L), eps * 100L);
1375    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10L, 0L, static_cast<long double>(2.5L)), static_cast<long double>(-0.8802526766660982969576719576719576719577L), eps * 100L);
1376    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10L, 1L, static_cast<long double>(4.5L)), static_cast<long double>(1.564311458042689732142857142857142857143L), eps * 100L);
1377    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10L, 6L, static_cast<long double>(8.5L)), static_cast<long double>(20.51596541066649098875661375661375661376L), eps * 100L);
1378    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(10L, 12L, static_cast<long double>(12.5L)), static_cast<long double>(-199.5560968456234671241181657848324514991L), eps * 100L);
1379    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_laguerre(50L, 40L, static_cast<long double>(12.5L)), static_cast<long double>(-4.996769495006119488583146995907246595400e16L), eps * 100L);
1380
1381    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1L, static_cast<long double>(0.5L)), static_cast<long double>(0.5L), eps * 100L);
1382    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4L, static_cast<long double>(0.5L)), static_cast<long double>(-0.3307291666666666666666666666666666666667L), eps * 100L);
1383    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7L, static_cast<long double>(0.5L)), static_cast<long double>(-0.5183392237103174603174603174603174603175L), eps * 100L);
1384    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20L, static_cast<long double>(0.5L)), static_cast<long double>(0.3120174870800154148915399248893113634676L), eps * 100L);
1385    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50L, static_cast<long double>(0.5L)), static_cast<long double>(-0.3181388060269979064951118308575628226834L), eps * 100L);
1386
1387    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1L, static_cast<long double>(-0.5L)), static_cast<long double>(1.5L), eps * 100L);
1388    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4L, static_cast<long double>(-0.5L)), static_cast<long double>(3.835937500000000000000000000000000000000L), eps * 100L);
1389    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7L, static_cast<long double>(-0.5L)), static_cast<long double>(7.950934709821428571428571428571428571429L), eps * 100L);
1390    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20L, static_cast<long double>(-0.5L)), static_cast<long double>(76.12915699869631476833699787070874048223L), eps * 100L);
1391    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50L, static_cast<long double>(-0.5L)), static_cast<long double>(2307.428631277506570629232863491518399720L), eps * 100L);
1392
1393    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(1L, static_cast<long double>(4.5L)), static_cast<long double>(-3.500000000000000000000000000000000000000L), eps * 100L);
1394    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(4L, static_cast<long double>(4.5L)), static_cast<long double>(0.08593750000000000000000000000000000000000L), eps * 100L);
1395    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(7L, static_cast<long double>(4.5L)), static_cast<long double>(-1.036928013392857142857142857142857142857L), eps * 100L);
1396    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(20L, static_cast<long double>(4.5L)), static_cast<long double>(1.437239150257817378525582974722170737587L), eps * 100L);
1397    BOOST_CHECK_CLOSE_FRACTION(tr1::laguerre(50L, static_cast<long double>(4.5L)), static_cast<long double>(-0.7795068145562651416494321484050019245248L), eps * 100L);
1398
1399    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(4L, 2L, static_cast<long double>(0.5L)), static_cast<long double>(4.218750000000000000000000000000000000000L), eps * 100L);
1400    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(7L, 5L, static_cast<long double>(0.5L)), static_cast<long double>(5696.789530152175143607977274672800795328L), eps * 100L);
1401    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(4L, 2L, static_cast<long double>(-0.5L)), static_cast<long double>(4.218750000000000000000000000000000000000L), eps * 100L);
1402    BOOST_CHECK_CLOSE_FRACTION(tr1::assoc_legendre(7L, 5L, static_cast<long double>(-0.5L)), static_cast<long double>(5696.789530152175143607977274672800795328L), eps * 100L);
1403
1404    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(1L, static_cast<long double>(0.5L)), static_cast<long double>(0.5L), eps * 100L);
1405    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(4L, static_cast<long double>(0.5L)), static_cast<long double>(-0.2890625000000000000000000000000000000000L), eps * 100L);
1406    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(7L, static_cast<long double>(0.5L)), static_cast<long double>(0.2231445312500000000000000000000000000000L), eps * 100L);
1407    BOOST_CHECK_CLOSE_FRACTION(tr1::legendre(40L, static_cast<long double>(0.5L)), static_cast<long double>(-0.09542943523261546936538467572384923220258L), eps * 100L);
1408
1409    BOOST_CHECK_CLOSE(tr1::beta(static_cast<long double>(1L), static_cast<long double>(1L)), static_cast<long double>(1L), eps * 20L * 100L);
1410    BOOST_CHECK_CLOSE(tr1::beta(static_cast<long double>(1L), static_cast<long double>(4L)), static_cast<long double>(0.25L), eps * 20L * 100L);
1411    BOOST_CHECK_CLOSE(tr1::beta(static_cast<long double>(4L), static_cast<long double>(1L)), static_cast<long double>(0.25L), eps * 20L * 100L);
1412    BOOST_CHECK_CLOSE(tr1::beta(sv, static_cast<long double>(4L)), 1/sv, eps * 20L * 100L);
1413    BOOST_CHECK_CLOSE(tr1::beta(static_cast<long double>(4L), sv), 1/sv, eps * 20L * 100L);
1414    BOOST_CHECK_CLOSE(tr1::beta(static_cast<long double>(4L), static_cast<long double>(20L)), static_cast<long double>(0.00002823263692828910220214568040654997176736L), eps * 20L * 100L);
1415    BOOST_CHECK_CLOSE(tr1::beta(static_cast<long double>(0.0125L), static_cast<long double>(0.000023L)), static_cast<long double>(43558.24045647538375006349016083320744662L), eps * 20L * 100L);
1416
1417    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(0L)), static_cast<long double>(1.5707963267948966192313216916397514420985846996876L), eps * 5000L);
1418    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(0.125L)), static_cast<long double>(1.5769867712158131421244030532288080803822271060839L), eps * 5000L);
1419    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(0.25L)), static_cast<long double>(1.5962422221317835101489690714979498795055744578951L), eps * 5000L);
1420    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(300L)/1024L), static_cast<long double>(1.6062331054696636704261124078746600894998873503208L), eps * 5000L);
1421    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(400L)/1024L), static_cast<long double>(1.6364782007562008756208066125715722889067992997614L), eps * 5000L);
1422    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(-0.5L)), static_cast<long double>(1.6857503548125960428712036577990769895008008941411L), eps * 5000L);
1423    BOOST_CHECK_CLOSE(tr1::comp_ellint_1(static_cast<long double>(-0.75L)), static_cast<long double>(1.9109897807518291965531482187613425592531451316788L), eps * 5000L);
1424
1425    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(-1L)), static_cast<long double>(1L), eps * 5000L);
1426    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(0L)), static_cast<long double>(1.5707963267948966192313216916397514420985846996876L), eps * 5000L);
1427    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(100L) / 1024L), static_cast<long double>(1.5670445330545086723323795143598956428788609133377L), eps * 5000L);
1428    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(200L) / 1024L), static_cast<long double>(1.5557071588766556854463404816624361127847775545087L), eps * 5000L);
1429    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(300L) / 1024L), static_cast<long double>(1.5365278991162754883035625322482669608948678755743L), eps * 5000L);
1430    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(400L) / 1024L), static_cast<long double>(1.5090417763083482272165682786143770446401437564021L), eps * 5000L);
1431    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(-0.5L)), static_cast<long double>(1.4674622093394271554597952669909161360253617523272L), eps * 5000L);
1432    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(-600L) / 1024L), static_cast<long double>(1.4257538571071297192428217218834579920545946473778L), eps * 5000L);
1433    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(-800L) / 1024L), static_cast<long double>(1.2927868476159125056958680222998765985004489572909L), eps * 5000L);
1434    BOOST_CHECK_CLOSE(tr1::comp_ellint_2(static_cast<long double>(-900L) / 1024L), static_cast<long double>(1.1966864890248739524112920627353824133420353430982L), eps * 5000L);
1435
1436    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(0.2L), static_cast<long double>(0L)), static_cast<long double>(1.586867847454166237308008033828114192951L), eps * 5000L);
1437    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(0.4L), static_cast<long double>(0L)), static_cast<long double>(1.639999865864511206865258329748601457626L), eps * 5000L);
1438    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(0L), static_cast<long double>(0L)), static_cast<long double>(1.57079632679489661923132169163975144209858469968755291048747L), eps * 5000L);
1439    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(0L), static_cast<long double>(0.5L)), static_cast<long double>(2.221441469079183123507940495030346849307L), eps * 5000L);
1440    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(0.3L), static_cast<long double>(-4L)), static_cast<long double>(0.712708870925620061597924858162260293305195624270730660081949L), eps * 5000L);
1441    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(-0.5L), static_cast<long double>(-1e+05L)), static_cast<long double>(0.00496944596485066055800109163256108604615568144080386919012831L), eps * 5000L);
1442    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(-0.75L), static_cast<long double>(-1e+10L)), static_cast<long double>(0.0000157080225184890546939710019277357161497407143903832703317801L), eps * 5000L);
1443    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(-0.875L), static_cast<long double>(1L) / 1024L), static_cast<long double>(2.18674503176462374414944618968850352696579451638002110619287L), eps * 5000L);
1444    BOOST_CHECK_CLOSE(tr1::comp_ellint_3(static_cast<long double>(-0.875L), static_cast<long double>(1023L)/1024L), static_cast<long double>(101.045289804941384100960063898569538919135722087486350366997L), eps * 5000L);
1445
1446    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(2.25L), static_cast<long double>(1L)/(1024*1024L)), static_cast<long double>(2.34379212133481347189068464680335815256364262507955635911656e-15L), eps * 5000L);
1447    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(5.5L), static_cast<long double>(3.125L)), static_cast<long double>(0.0583514045989371500460946536220735787163510569634133670181210L), eps * 5000L);
1448    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(-5L) + static_cast<long double>(1L)/1024L, static_cast<long double>(2.125L)), static_cast<long double>(0.0267920938009571023702933210070984416052633027166975342895062L), eps * 5000L);
1449    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(-5.5L), static_cast<long double>(10L)), static_cast<long double>(597.577606961369169607937419869926705730305175364662688426534L), eps * 5000L);
1450    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(-10486074L)/(1024*1024L), static_cast<long double>(1L)/1024L), static_cast<long double>(1.41474005665181350367684623930576333542989766867888186478185e35L), eps * 5000L);
1451    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(-10486074L)/(1024*1024L), static_cast<long double>(50L)), static_cast<long double>(1.07153277202900671531087024688681954238311679648319534644743e20L), eps * 5000L);
1452    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(144794L)/1024L, static_cast<long double>(100L)), static_cast<long double>(2066.27694757392660413922181531984160871678224178890247540320L), eps * 5000L);
1453    BOOST_CHECK_CLOSE(tr1::cyl_bessel_i(static_cast<long double>(-144794L)/1024L, static_cast<long double>(100L)), static_cast<long double>(2066.27694672763190927440969155740243346136463461655104698748L), eps * 5000L);
1454
1455    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(2457L)/1024L, static_cast<long double>(1L)/1024L), static_cast<long double>(3.80739920118603335646474073457326714709615200130620574875292e-9L), eps * 5000L);
1456    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(5.5L), static_cast<long double>(3217L)/1024L), static_cast<long double>(0.0281933076257506091621579544064767140470089107926550720453038L), eps * 5000L);
1457    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-5.5L), static_cast<long double>(3217L)/1024L), static_cast<long double>(-2.55820064470647911823175836997490971806135336759164272675969L), eps * 5000L);
1458    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(2.449843111985605522111159013846599118397e-03L), eps * 50000L);
1459    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(0.00759343502722670361395585198154817047185480147294665270646578L), eps * 5000L);
1460    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(5.5L), static_cast<long double>(1e+06L)), static_cast<long double>(-0.000747424248595630177396350688505919533097973148718960064663632L), eps * 50000L);
1461    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(5.125L), static_cast<long double>(1e+06L)), static_cast<long double>(-0.000776600124835704280633640911329691642748783663198207360238214L), eps * 50000L);
1462    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(5.875L), static_cast<long double>(1e+06L)), static_cast<long double>(-0.000466322721115193071631008581529503095819705088484386434589780L), eps * 50000L);
1463    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(0.5L), static_cast<long double>(101L)), static_cast<long double>(0.0358874487875643822020496677692429287863419555699447066226409L), eps * 5000L);
1464    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(0.00244984311198560552211115901384659911839737686676766460822577L), eps * 50000L);
1465    //BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-5.5L), static_cast<long double>(1e+06L)), static_cast<long double>(0.000279243200433579511095229508894156656558211060453622750659554L), eps * 50000L);
1466    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-0.5L), static_cast<long double>(101L)), static_cast<long double>(0.0708184798097594268482290389188138201440114881159344944791454L), eps * 5000L);
1467    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1L)/1024L), static_cast<long double>(1.41474013160494695750009004222225969090304185981836460288562e35L), eps * 5000L);
1468    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(15L)), static_cast<long double>(-0.0902239288885423309568944543848111461724911781719692852541489L), eps * 5000L);
1469    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(10486074L) / (1024*1024L), static_cast<long double>(1e+02L)), static_cast<long double>(-0.0547064914615137807616774867984047583596945624129838091326863L), eps * 5000L);
1470    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(10486074L) / (1024*1024L), static_cast<long double>(2e+04L)), static_cast<long double>(-0.00556783614400875611650958980796060611309029233226596737701688L), eps * 5000L);
1471    BOOST_CHECK_CLOSE(tr1::cyl_bessel_j(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1e+02L)), static_cast<long double>(-0.0547613660316806551338637153942604550779513947674222863858713L), eps * 5000L);
1472
1473    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(0.5L), static_cast<long double>(0.875L)), static_cast<long double>(0.558532231646608646115729767013630967055657943463362504577189L), eps * 5000L);
1474    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(0.5L), static_cast<long double>(1.125L)), static_cast<long double>(0.383621010650189547146769320487006220295290256657827220786527L), eps * 5000L);
1475    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(2.25L), static_cast<long double>(std::ldexp(1.0L, -30L))), static_cast<long double>(5.62397392719283271332307799146649700147907612095185712015604e20L), eps * 5000L);
1476    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(5.5L), static_cast<long double>(3217L)/1024L), static_cast<long double>(1.30623288775012596319554857587765179889689223531159532808379L), eps * 5000L);
1477    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(-5.5L), static_cast<long double>(10L)), static_cast<long double>(0.0000733045300798502164644836879577484533096239574909573072142667L), eps * 5000L);
1478    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(-5.5L), static_cast<long double>(100L)), static_cast<long double>(5.41274555306792267322084448693957747924412508020839543293369e-45L), eps * 5000L);
1479    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(10240L)/1024L, static_cast<long double>(1L)/1024L), static_cast<long double>(2.35522579263922076203415803966825431039900000000993410734978e38L), eps * 5000L);
1480    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(10240L)/1024L, static_cast<long double>(10L)), static_cast<long double>(0.00161425530039067002345725193091329085443750382929208307802221L), eps * 5000L);
1481    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(144793L)/1024L, static_cast<long double>(100L)), static_cast<long double>(1.39565245860302528069481472855619216759142225046370312329416e-6L), eps * 5000L);
1482    BOOST_CHECK_CLOSE(tr1::cyl_bessel_k(static_cast<long double>(144793L)/1024L, static_cast<long double>(200L)), static_cast<long double>(9.11950412043225432171915100042647230802198254567007382956336e-68L), eps * 7000L);
1483
1484    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(0.5L), static_cast<long double>(1L) / (1024*1024L)), static_cast<long double>(-817.033790261762580469303126467917092806755460418223776544122L), eps * 5000L);
1485    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(5.5L), static_cast<long double>(3.125L)), static_cast<long double>(-2.61489440328417468776474188539366752698192046890955453259866L), eps * 5000L);
1486    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(-5.5L), static_cast<long double>(3.125L)), static_cast<long double>(-0.0274994493896489729948109971802244976377957234563871795364056L), eps * 5000L);
1487    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(-5.5L), static_cast<long double>(1e+04L)), static_cast<long double>(-0.00759343502722670361395585198154817047185480147294665270646578L), eps * 5000L);
1488    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1L)/1024L), static_cast<long double>(-1.50382374389531766117868938966858995093408410498915220070230e38L), eps * 5000L);
1489    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(-10486074L) / (1024*1024L), static_cast<long double>(1e+02L)), static_cast<long double>(0.0583041891319026009955779707640455341990844522293730214223545L), eps * 5000L);
1490    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(141.75L), static_cast<long double>(1e+02L)), static_cast<long double>(-5.38829231428696507293191118661269920130838607482708483122068e9L), eps * 5000L);
1491    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(141.75L), static_cast<long double>(2e+04L)), static_cast<long double>(-0.00376577888677186194728129112270988602876597726657372330194186L), eps * 50000L);
1492    BOOST_CHECK_CLOSE(tr1::cyl_neumann(static_cast<long double>(-141.75L), static_cast<long double>(1e+02L)), static_cast<long double>(-3.81009803444766877495905954105669819951653361036342457919021e9L), eps * 5000L);
1493
1494    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0L), static_cast<long double>(0L)), static_cast<long double>(0L), eps * 5000L);
1495    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0L), static_cast<long double>(-10L)), static_cast<long double>(-10L), eps * 5000L);
1496    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(-1L), static_cast<long double>(-1L)), static_cast<long double>(-1.2261911708835170708130609674719067527242483502207L), eps * 5000L);
1497    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.875L), static_cast<long double>(-4L)), static_cast<long double>(-5.3190556182262405182189463092940736859067548232647L), eps * 5000L);
1498    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(-0.625L), static_cast<long double>(8L)), static_cast<long double>(9.0419973860310100524448893214394562615252527557062L), eps * 5000L);
1499    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.875L), static_cast<long double>(1e-05L)), static_cast<long double>(0.000010000000000127604166668510945638036143355898993088L), eps * 5000L);
1500    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(10L)/1024L, static_cast<long double>(1e+05L)), static_cast<long double>(100002.38431454899771096037307519328741455615271038L), eps * 5000L);
1501    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(1L), static_cast<long double>(1e-20L)), static_cast<long double>(1.0000000000000000000000000000000000000000166666667e-20L), eps * 5000L);
1502    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(1e-20L), static_cast<long double>(1e-20L)), static_cast<long double>(1.000000000000000e-20L), eps * 5000L);
1503    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(400L)/1024L, static_cast<long double>(1e+20L)), static_cast<long double>(1.0418143796499216839719289963154558027005142709763e20L), eps * 5000L);
1504    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(2L)), static_cast<long double>(2.1765877052210673672479877957388515321497888026770L), eps * 5000L);
1505    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(4L)), static_cast<long double>(4.2543274975235836861894752787874633017836785640477L), eps * 5000L);
1506    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(6L)), static_cast<long double>(6.4588766202317746302999080620490579800463614807916L), eps * 5000L);
1507    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(10L)), static_cast<long double>(10.697409951222544858346795279378531495869386960090L), eps * 5000L);
1508    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(-2L)), static_cast<long double>(-2.1765877052210673672479877957388515321497888026770L), eps * 5000L);
1509    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(-4L)), static_cast<long double>(-4.2543274975235836861894752787874633017836785640477L), eps * 5000L);
1510    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(-6L)), static_cast<long double>(-6.4588766202317746302999080620490579800463614807916L), eps * 5000L);
1511    BOOST_CHECK_CLOSE(tr1::ellint_1(static_cast<long double>(0.5L), static_cast<long double>(-10L)), static_cast<long double>(-10.697409951222544858346795279378531495869386960090L), eps * 5000L);
1512
1513    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(0L), static_cast<long double>(0L)), static_cast<long double>(0L), eps * 5000L);
1514    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(0L), static_cast<long double>(-10L)), static_cast<long double>(-10L), eps * 5000L);
1515    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(-1L), static_cast<long double>(-1L)), static_cast<long double>(-0.84147098480789650665250232163029899962256306079837L), eps * 5000L);
1516    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(900L) / 1024L, static_cast<long double>(-4L)), static_cast<long double>(-3.1756145986492562317862928524528520686391383168377L), eps * 5000L);
1517    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(-600L) / 1024L, static_cast<long double>(8L)), static_cast<long double>(7.2473147180505693037677015377802777959345489333465L), eps * 5000L);
1518    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(800L) / 1024L, static_cast<long double>(1e-05L)), static_cast<long double>(9.999999999898274739584436515967055859383969942432E-6L), eps * 5000L);
1519    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(100L) / 1024L, static_cast<long double>(1e+05L)), static_cast<long double>(99761.153306972066658135668386691227343323331995888L), eps * 5000L);
1520    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(-0.5L), static_cast<long double>(1e+10L)), static_cast<long double>(9.3421545766487137036576748555295222252286528414669e9L), eps * 5000L);
1521    BOOST_CHECK_CLOSE(tr1::ellint_2(static_cast<long double>(400L) / 1024L, ldexp(static_cast<long double>(1L), 66L)), static_cast<long double>(7.0886102721911705466476846969992069994308167515242e19L), eps * 5000L);
1522
1523    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(1L), static_cast<long double>(-1L)), static_cast<long double>(-1.557407724654902230506974807458360173087L), eps * 5000L);
1524    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.4L), static_cast<long double>(0L), static_cast<long double>(-4L)), static_cast<long double>(-4.153623371196831087495427530365430979011L), eps * 5000L);
1525    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(-0.6L), static_cast<long double>(0L), static_cast<long double>(8L)), static_cast<long double>(8.935930619078575123490612395578518914416L), eps * 5000L);
1526    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.25L), static_cast<long double>(0L), static_cast<long double>(0.5L)), static_cast<long double>(0.501246705365439492445236118603525029757890291780157969500480L), eps * 5000L);
1527    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(0L), static_cast<long double>(0.5L)), static_cast<long double>(0.5L), eps * 5000L);
1528    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(-2L), static_cast<long double>(0.5L)), static_cast<long double>(0.437501067017546278595664813509803743009132067629603474488486L), eps * 5000L);
1529    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(0.25L), static_cast<long double>(0.5L)), static_cast<long double>(0.510269830229213412212501938035914557628394166585442994564135L), eps * 5000L);
1530    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(0.75L), static_cast<long double>(0.5L)), static_cast<long double>(0.533293253875952645421201146925578536430596894471541312806165L), eps * 5000L);
1531    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(0.75L), static_cast<long double>(0.75L)), static_cast<long double>(0.871827580412760575085768367421866079353646112288567703061975L), eps * 5000L);
1532    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(1L), static_cast<long double>(0.25L)), static_cast<long double>(0.255341921221036266504482236490473678204201638800822621740476L), eps * 5000L);
1533    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(2L), static_cast<long double>(0.25L)), static_cast<long double>(0.261119051639220165094943572468224137699644963125853641716219L), eps * 5000L);
1534    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0L), static_cast<long double>(1023L)/1024L, static_cast<long double>(1.5L)), static_cast<long double>(13.2821612239764190363647953338544569682942329604483733197131L), eps * 5000L);
1535    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.5L), static_cast<long double>(0.5L), static_cast<long double>(-1L)), static_cast<long double>(-1.228014414316220642611298946293865487807L), eps * 5000L);
1536    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.5L), static_cast<long double>(0.5L), static_cast<long double>(1e+10L)), static_cast<long double>(1.536591003599172091573590441336982730551e+10L), eps * 5000L);
1537    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.75L), static_cast<long double>(-1e+05L), static_cast<long double>(10L)), static_cast<long double>(0.0347926099493147087821620459290460547131012904008557007934290L), eps * 5000L);
1538    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.875L), static_cast<long double>(-1e+10L), static_cast<long double>(10L)), static_cast<long double>(0.000109956202759561502329123384755016959364346382187364656768212L), eps * 5000L);
1539    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.875L), static_cast<long double>(-1e+10L), static_cast<long double>(1e+20L)), static_cast<long double>(1.00000626665567332602765201107198822183913978895904937646809e15L), eps * 5000L);
1540    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.875L), static_cast<long double>(-1e+10L), static_cast<long double>(1608L)/1024L), static_cast<long double>(0.0000157080616044072676127333183571107873332593142625043567690379L), eps * 5000L);
1541    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.875L), 1-static_cast<long double>(1L) / 1024L, static_cast<long double>(1e+20L)), static_cast<long double>(6.43274293944380717581167058274600202023334985100499739678963e21L), eps * 5000L);
1542    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.25L), static_cast<long double>(50L), static_cast<long double>(0.1L)), static_cast<long double>(0.124573770342749525407523258569507331686458866564082916835900L), eps * 5000L);
1543    BOOST_CHECK_CLOSE(tr1::ellint_3(static_cast<long double>(0.25L), static_cast<long double>(1.125L), static_cast<long double>(1L)), static_cast<long double>(1.77299767784815770192352979665283069318388205110727241629752L), eps * 5000L);
1544
1545    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(1L)/1024L), static_cast<long double>(-6.35327933972759151358547423727042905862963067106751711596065L), eps * 5000L);
1546    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(0.125L)), static_cast<long double>(-1.37320852494298333781545045921206470808223543321810480716122L), eps * 5000L);
1547    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(0.5L)), static_cast<long double>(0.454219904863173579920523812662802365281405554352642045162818L), eps * 5000L);
1548    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(1L)), static_cast<long double>(1.89511781635593675546652093433163426901706058173270759164623L), eps * 5000L);
1549    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(50.5L)), static_cast<long double>(1.72763195602911805201155668940185673806099654090456049881069e20L), eps * 5000L);
1550    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(-1L)/1024L), static_cast<long double>(-6.35523246483107180261445551935803221293763008553775821607264L), eps * 5000L);
1551    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(-0.125L)), static_cast<long double>(-1.62342564058416879145630692462440887363310605737209536579267L), eps * 5000L);
1552    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(-0.5L)), static_cast<long double>(-0.559773594776160811746795939315085235226846890316353515248293L), eps * 5000L);
1553    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(-1L)), static_cast<long double>(-0.219383934395520273677163775460121649031047293406908207577979L), eps * 5000L);
1554    BOOST_CHECK_CLOSE(tr1::expint(static_cast<long double>(-50.5L)), static_cast<long double>(-2.27237132932219350440719707268817831250090574830769670186618e-24L), eps * 5000L);
1555
1556    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(0L, static_cast<long double>(1L)), static_cast<long double>(1.L), 100L * eps);
1557    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1L, static_cast<long double>(1L)), static_cast<long double>(2.L), 100L * eps);
1558    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1L, static_cast<long double>(2L)), static_cast<long double>(4.L), 100L * eps);
1559    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1L, static_cast<long double>(10L)), static_cast<long double>(20L), 100L * eps);
1560    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1L, static_cast<long double>(100L)), static_cast<long double>(200L), 100L * eps);
1561    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(1L, static_cast<long double>(1e6L)), static_cast<long double>(2e6L), 100L * eps);
1562    //BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10L, static_cast<long double>(30L)), static_cast<long double>(5.896624628001300E+17L), 100L * eps);
1563    //BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10L, static_cast<long double>(1000L)), static_cast<long double>(1.023976960161280E+33L), 100L * eps);
1564    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10L, static_cast<long double>(10L)), static_cast<long double>(8.093278209760000E+12L), 100L * eps);
1565    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(10L, static_cast<long double>(-10L)), static_cast<long double>(8.093278209760000E+12L), 100L * eps);
1566    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3L, static_cast<long double>(-10L)), static_cast<long double>(-7.880000000000000E+3L), 100L * eps);
1567    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3L, static_cast<long double>(-1000L)), static_cast<long double>(-7.999988000000000E+9L), 100L * eps);
1568    BOOST_CHECK_CLOSE_FRACTION(tr1::hermite(3L, static_cast<long double>(-1000000L)), static_cast<long double>(-7.999999999988000E+18L), 100L * eps);
1569
1570    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(0.125L)), static_cast<long double>(-0.63277562349869525529352526763564627152686379131122L), eps * 5000L);
1571    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(1023L) / static_cast<long double>(1024L)), static_cast<long double>(-1023.4228554489429786541032870895167448906103303056L), eps * 5000L);
1572    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(1025L) / static_cast<long double>(1024L)), static_cast<long double>(1024.5772867695045940578681624248887776501597556226L), eps * 5000L);
1573    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(0.5L)), static_cast<long double>(-1.46035450880958681288949915251529801246722933101258149054289L), eps * 5000L);
1574    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(1.125L)), static_cast<long double>(8.5862412945105752999607544082693023591996301183069L), eps * 5000L);
1575    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(2L)), static_cast<long double>(1.6449340668482264364724151666460251892189499012068L), eps * 5000L);
1576    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(3.5L)), static_cast<long double>(1.1267338673170566464278124918549842722219969574036L), eps * 5000L);
1577    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(4L)), static_cast<long double>(1.08232323371113819151600369654116790277475095191872690768298L), eps * 5000L);
1578    BOOST_CHECK_CLOSE(tr1::riemann_zeta(4L + static_cast<long double>(1L) / 1024L), static_cast<long double>(1.08225596856391369799036835439238249195298434901488518878804L), eps * 5000L);
1579    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(4.5L)), static_cast<long double>(1.05470751076145426402296728896028011727249383295625173068468L), eps * 5000L);
1580    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(6.5L)), static_cast<long double>(1.01200589988852479610078491680478352908773213619144808841031L), eps * 5000L);
1581    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(7.5L)), static_cast<long double>(1.00582672753652280770224164440459408011782510096320822989663L), eps * 5000L);
1582    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(8.125L)), static_cast<long double>(1.0037305205308161603183307711439385250181080293472L), eps * 5000L);
1583    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(16.125L)), static_cast<long double>(1.0000140128224754088474783648500235958510030511915L), eps * 5000L);
1584    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(0L)), static_cast<long double>(-0.5L), eps * 5000L);
1585    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-0.125L)), static_cast<long double>(-0.39906966894504503550986928301421235400280637468895L), eps * 5000L);
1586    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-1L)), static_cast<long double>(-0.083333333333333333333333333333333333333333333333333L), eps * 5000L);
1587    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-2L)), static_cast<long double>(0L), eps * 5000L);
1588    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-2.5L)), static_cast<long double>(0.0085169287778503305423585670283444869362759902200745L), eps * 5000L * 3L);
1589    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-3L)), static_cast<long double>(0.0083333333333333333333333333333333333333333333333333L), eps * 5000L);
1590    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-4L)), static_cast<long double>(0L), eps * 5000L);
1591    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-20L)), static_cast<long double>(0L), eps * 5000L * 100L);
1592    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-21L)), static_cast<long double>(-281.46014492753623188405797101449275362318840579710L), eps * 5000L * 100L);
1593    BOOST_CHECK_CLOSE(tr1::riemann_zeta(static_cast<long double>(-30.125L)), static_cast<long double>(2.2762941726834511267740045451463455513839970804578e7L), eps * 5000L * 100L);
1594
1595    BOOST_CHECK_CLOSE(tr1::sph_bessel(0L, static_cast<long double>(0.1433600485324859619140625e-1L)), static_cast<long double>(0.9999657468461303487880990241993035937654e0L),  eps * 5000L * 100L);
1596    BOOST_CHECK_CLOSE(tr1::sph_bessel(0L, static_cast<long double>(0.1760916970670223236083984375e-1L)), static_cast<long double>(0.9999483203249623334100130061926184665364e0L),  eps * 5000L * 100L);
1597    BOOST_CHECK_CLOSE(tr1::sph_bessel(2L, static_cast<long double>(0.1433600485324859619140625e-1L)), static_cast<long double>(0.1370120120703995134662099191103188366059e-4L),  eps * 5000L * 100L);
1598    BOOST_CHECK_CLOSE(tr1::sph_bessel(2L, static_cast<long double>(0.1760916970670223236083984375e-1L)), static_cast<long double>(0.2067173265753174063228459655801741280461e-4L),  eps * 5000L * 100L);
1599    BOOST_CHECK_CLOSE(tr1::sph_bessel(7L, static_cast<long double>(0.1252804412841796875e3L)), static_cast<long double>(0.7887555711993028736906736576314283291289e-2L),  eps * 5000L * 100L);
1600    BOOST_CHECK_CLOSE(tr1::sph_bessel(7L, static_cast<long double>(0.25554705810546875e3L)), static_cast<long double>(-0.1463292767579579943284849187188066532514e-2L),  eps * 5000L * 100L);
1601
1602    BOOST_CHECK_CLOSE(tr1::sph_neumann(0L, static_cast<long double>(0.408089816570281982421875e0L)), static_cast<long double>(-0.2249212131304610409189209411089291558038e1L), eps * 5000L * 100L);
1603    BOOST_CHECK_CLOSE(tr1::sph_neumann(0L, static_cast<long double>(0.6540834903717041015625e0L)), static_cast<long double>(-0.1213309779166084571756446746977955970241e1L),   eps * 5000L * 100L);
1604    BOOST_CHECK_CLOSE(tr1::sph_neumann(2L, static_cast<long double>(0.408089816570281982421875e0L)), static_cast<long double>(-0.4541702641837159203058389758895634766256e2L),   eps * 5000L * 100L);
1605    BOOST_CHECK_CLOSE(tr1::sph_neumann(2L, static_cast<long double>(0.6540834903717041015625e0L)), static_cast<long double>(-0.1156112621471167110574129561700037138981e2L),   eps * 5000L * 100L);
1606    BOOST_CHECK_CLOSE(tr1::sph_neumann(10L, static_cast<long double>(0.1097540378570556640625e1L)), static_cast<long double>(-0.2427889658115064857278886600528596240123e9L),   eps * 5000L * 100L);
1607    BOOST_CHECK_CLOSE(tr1::sph_neumann(10L, static_cast<long double>(0.30944411754608154296875e1L)), static_cast<long double>(-0.3394649246350136450439882104151313759251e4L),   eps * 5000L * 100L);
1608
1609    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendre(3L, 2L, static_cast<long double>(0.5L)), static_cast<long double>(0.2061460599687871330692286791802688341213L), eps * 5000L);
1610    BOOST_CHECK_CLOSE_FRACTION(tr1::sph_legendre(40L, 15L, static_cast<long double>(0.75L)), static_cast<long double>(-0.406036847302819452666908966769096223205057182668333862900509L), eps * 5000L);
1611 #endif
1612 #endif
1613 }
1614
1615 BOOST_AUTO_TEST_CASE( test_main )
1616 {
1617 #ifndef TEST_LD
1618    test_values(1.0f, "float");
1619    test_values(1.0, "double");
1620 #else
1621 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
1622    test_values(1.0L, "long double");
1623 #endif
1624 #endif
1625    
1626 }
1627