1 // Copyright John Maddock 2010
2 // Use, modification and distribution are subject to the
3 // Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt
5 // or copy at http://www.boost.org/LICENSE_1_0.txt)
7 #include <boost/math/concepts/real_concept.hpp> // for real_concept
8 #include <boost/math/constants/constants.hpp>
10 #define BOOST_TEST_MAIN
11 #include <boost/test/unit_test.hpp> // Boost.Test
12 #include <boost/test/results_collector.hpp>
13 #include <boost/test/unit_test.hpp>
14 #include <boost/test/floating_point_comparison.hpp>
19 BOOST_AUTO_TEST_CASE( test_main )
21 #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
23 typedef boost::math::concepts::real_concept rc_t;
25 rc_t r1(2.5), r2(0.125), r3(45.5);
26 long double l1(2.5), l2(0.125), l3(45.5);
27 long double tol = std::numeric_limits<long double>::epsilon() * 2;
34 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
37 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
40 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
43 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
48 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
51 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
54 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
57 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
59 t += static_cast<short>(23);
60 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
62 t += static_cast<unsigned short>(23);
63 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
65 t += static_cast<char>(23);
66 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
68 t += static_cast<signed char>(23);
69 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
71 t += static_cast<unsigned char>(23);
72 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
80 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
83 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
86 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
89 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
94 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
97 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
100 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
103 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
105 t -= static_cast<short>(23);
106 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
108 t -= static_cast<unsigned short>(23);
109 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
111 t -= static_cast<char>(23);
112 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
114 t -= static_cast<signed char>(23);
115 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
117 t -= static_cast<unsigned char>(23);
118 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
126 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
129 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
132 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
135 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
140 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
143 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
146 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
149 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
151 t *= static_cast<short>(23);
152 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
154 t *= static_cast<unsigned short>(23);
155 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
157 t *= static_cast<char>(23);
158 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
160 t *= static_cast<signed char>(23);
161 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
163 t *= static_cast<unsigned char>(23);
164 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
171 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
174 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
177 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
180 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
185 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
188 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
191 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
194 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
196 t /= static_cast<short>(23);
197 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
199 t /= static_cast<unsigned short>(23);
200 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
202 t /= static_cast<char>(23);
203 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
205 t /= static_cast<signed char>(23);
206 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
208 t /= static_cast<unsigned char>(23);
209 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
217 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
219 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
221 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
223 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
225 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
227 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
229 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
233 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
235 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
237 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
239 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
240 t = r1 + static_cast<short>(23);
241 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
242 t = r1 + static_cast<unsigned short>(23);
243 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
244 t = r1 + static_cast<char>(23);
245 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
246 t = r1 + static_cast<signed char>(23);
247 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
248 t = r1 + static_cast<unsigned char>(23);
249 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
252 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
254 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
256 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
258 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
259 t = static_cast<short>(23) + r1;
260 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
261 t = static_cast<unsigned short>(23) + r1;
262 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
263 t = static_cast<char>(23) + r1;
264 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
265 t = static_cast<signed char>(23) + r1;
266 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
267 t = static_cast<unsigned char>(23) + r1;
268 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
275 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
277 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
279 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
281 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
284 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
286 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
288 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
292 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
294 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
296 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
298 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
299 t = r1 - static_cast<short>(23);
300 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
301 t = r1 - static_cast<unsigned short>(23);
302 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
303 t = r1 - static_cast<char>(23);
304 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
305 t = r1 - static_cast<signed char>(23);
306 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
307 t = r1 - static_cast<unsigned char>(23);
308 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
312 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
314 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
316 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
318 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
319 t = static_cast<short>(23) - r1;
320 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
321 t = static_cast<unsigned short>(23) - r1;
322 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
323 t = static_cast<char>(23) - r1;
324 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
325 t = static_cast<signed char>(23) - r1;
326 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
327 t = static_cast<unsigned char>(23) - r1;
328 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
335 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
337 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
339 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
341 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
343 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
345 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
347 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
351 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
353 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
355 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
357 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
358 t = r1 * static_cast<short>(23);
359 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
360 t = r1 * static_cast<unsigned short>(23);
361 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
362 t = r1 * static_cast<char>(23);
363 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
364 t = r1 * static_cast<signed char>(23);
365 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
366 t = r1 * static_cast<unsigned char>(23);
367 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
370 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
372 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
374 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
376 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
377 t = static_cast<short>(23) * r1;
378 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
379 t = static_cast<unsigned short>(23) * r1;
380 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
381 t = static_cast<char>(23) * r1;
382 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
383 t = static_cast<signed char>(23) * r1;
384 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
385 t = static_cast<unsigned char>(23) * r1;
386 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
393 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
395 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
397 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
399 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
402 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
404 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
406 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
410 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
412 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
414 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
416 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
417 t = r1 / static_cast<short>(23);
418 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
419 t = r1 / static_cast<unsigned short>(23);
420 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
421 t = r1 / static_cast<char>(23);
422 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
423 t = r1 / static_cast<signed char>(23);
424 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
425 t = r1 / static_cast<unsigned char>(23);
426 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
430 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
432 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
434 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
436 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
437 t = static_cast<short>(23) / r1;
438 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
439 t = static_cast<unsigned short>(23) / r1;
440 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
441 t = static_cast<char>(23) / r1;
442 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
443 t = static_cast<signed char>(23) / r1;
444 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
445 t = static_cast<unsigned char>(23) / r1;
446 BOOST_CHECK_CLOSE_FRACTION(t.value(), t2, tol);
450 BOOST_CHECK_EQUAL(r1 == r2, l1 == l2);
451 BOOST_CHECK_EQUAL(r1 == l2, l1 == l2);
452 BOOST_CHECK_EQUAL(r1 == 0.125, l1 == l2);
453 BOOST_CHECK_EQUAL(r1 == 0.125f, l1 == l2);
454 BOOST_CHECK_EQUAL(l1 == r2, l1 == l2);
455 BOOST_CHECK_EQUAL(2.5 == r2, l1 == l2);
456 BOOST_CHECK_EQUAL(2.5f == r2, l1 == l2);
458 BOOST_CHECK_EQUAL(r1 <= r2, l1 <= l2);
459 BOOST_CHECK_EQUAL(r1 <= l2, l1 <= l2);
460 BOOST_CHECK_EQUAL(r1 <= 0.125, l1 <= l2);
461 BOOST_CHECK_EQUAL(r1 <= 0.125f, l1 <= l2);
462 BOOST_CHECK_EQUAL(l1 <= r2, l1 <= l2);
463 BOOST_CHECK_EQUAL(2.5 <= r2, l1 <= l2);
464 BOOST_CHECK_EQUAL(2.5f <= r2, l1 <= l2);
466 BOOST_CHECK_EQUAL(r1 >= r2, l1 >= l2);
467 BOOST_CHECK_EQUAL(r1 >= l2, l1 >= l2);
468 BOOST_CHECK_EQUAL(r1 >= 0.125, l1 >= l2);
469 BOOST_CHECK_EQUAL(r1 >= 0.125f, l1 >= l2);
470 BOOST_CHECK_EQUAL(l1 >= r2, l1 >= l2);
471 BOOST_CHECK_EQUAL(2.5 >= r2, l1 >= l2);
472 BOOST_CHECK_EQUAL(2.5f >= r2, l1 >= l2);
474 BOOST_CHECK_EQUAL(r1 < r2, l1 < l2);
475 BOOST_CHECK_EQUAL(r1 < l2, l1 < l2);
476 BOOST_CHECK_EQUAL(r1 < 0.125, l1 < l2);
477 BOOST_CHECK_EQUAL(r1 < 0.125f, l1 < l2);
478 BOOST_CHECK_EQUAL(l1 < r2, l1 < l2);
479 BOOST_CHECK_EQUAL(2.5 < r2, l1 < l2);
480 BOOST_CHECK_EQUAL(2.5f < r2, l1 < l2);
482 BOOST_CHECK_EQUAL(r1 > r2, l1 > l2);
483 BOOST_CHECK_EQUAL(r1 > l2, l1 > l2);
484 BOOST_CHECK_EQUAL(r1 > 0.125, l1 > l2);
485 BOOST_CHECK_EQUAL(r1 > 0.125f, l1 > l2);
486 BOOST_CHECK_EQUAL(l1 > r2, l1 > l2);
487 BOOST_CHECK_EQUAL(2.5 > r2, l1 > l2);
488 BOOST_CHECK_EQUAL(2.5f > r2, l1 > l2);
493 BOOST_CHECK_CLOSE_FRACTION(acos(r2), acos(l2), tol);
494 BOOST_CHECK_CLOSE_FRACTION(cos(r2), cos(l2), tol);
495 BOOST_CHECK_CLOSE_FRACTION(asin(r2), asin(l2), tol);
496 BOOST_CHECK_CLOSE_FRACTION(atan(r2), atan(l2), tol);
497 BOOST_CHECK_CLOSE_FRACTION(atan2(r2, r3), atan2(l2, l3), tol);
498 BOOST_CHECK_CLOSE_FRACTION(ceil(r2), ceil(l2), tol);
499 BOOST_CHECK_CLOSE_FRACTION(fmod(r2, r3), fmod(l2, l3), tol);
500 BOOST_CHECK_CLOSE_FRACTION(cosh(r2), cosh(l2), tol);
501 BOOST_CHECK_CLOSE_FRACTION(exp(r2), exp(l2), tol);
502 BOOST_CHECK_CLOSE_FRACTION(fabs(r2), fabs(l2), tol);
503 BOOST_CHECK_CLOSE_FRACTION(abs(r2), abs(l2), tol);
505 long double ld_result;
506 BOOST_CHECK_CLOSE_FRACTION(modf(r2, &rc_result), modf(l2, &ld_result), tol);
507 BOOST_CHECK_CLOSE_FRACTION(rc_result, ld_result, tol);
509 BOOST_CHECK_CLOSE_FRACTION(frexp(r3, &i1), frexp(l3, &i2), tol);
510 BOOST_CHECK_EQUAL(i1, i2);
511 BOOST_CHECK_CLOSE_FRACTION(ldexp(r3, i1), ldexp(l3, i1), tol);
512 BOOST_CHECK_CLOSE_FRACTION(log(r2), log(l2), tol);
513 BOOST_CHECK_CLOSE_FRACTION(log10(r2), log10(l2), tol);
514 BOOST_CHECK_CLOSE_FRACTION(tan(r2), tan(l2), tol);
515 BOOST_CHECK_CLOSE_FRACTION(pow(r2, r3), pow(l2, l3), tol);
516 BOOST_CHECK_CLOSE_FRACTION(pow(r2, i1), pow(l2, i1), tol);
517 BOOST_CHECK_CLOSE_FRACTION(sin(r2), sin(l2), tol);
518 BOOST_CHECK_CLOSE_FRACTION(sinh(r2), sinh(l2), tol);
519 BOOST_CHECK_CLOSE_FRACTION(sqrt(r2), sqrt(l2), tol);
520 BOOST_CHECK_CLOSE_FRACTION(tanh(r2), tanh(l2), tol);
522 BOOST_CHECK_EQUAL(iround(r2), boost::math::iround(l2));
523 BOOST_CHECK_EQUAL(lround(r2), boost::math::lround(l2));
524 #ifdef BOOST_HAS_LONG_LONG
525 BOOST_CHECK_EQUAL(llround(r2), boost::math::llround(l2));
527 BOOST_CHECK_EQUAL(itrunc(r2), boost::math::itrunc(l2));
528 BOOST_CHECK_EQUAL(ltrunc(r2), boost::math::ltrunc(l2));
529 #ifdef BOOST_HAS_LONG_LONG
530 BOOST_CHECK_EQUAL(lltrunc(r2), boost::math::lltrunc(l2));
535 using namespace boost::math::tools;
536 tol = std::numeric_limits<long double>::epsilon();
537 BOOST_CHECK_CLOSE_FRACTION(max_value<rc_t>(), max_value<long double>(), tol);
538 BOOST_CHECK_CLOSE_FRACTION(min_value<rc_t>(), min_value<long double>(), tol);
539 BOOST_CHECK_CLOSE_FRACTION(log_max_value<rc_t>(), log_max_value<long double>(), tol);
540 BOOST_CHECK_CLOSE_FRACTION(log_min_value<rc_t>(), log_min_value<long double>(), tol);
541 BOOST_CHECK_CLOSE_FRACTION(epsilon<rc_t>(), epsilon<long double>(), tol);
542 BOOST_CHECK_EQUAL(digits<rc_t>(), digits<long double>());
546 using namespace boost::math::constants;
547 BOOST_CHECK_CLOSE_FRACTION(pi<rc_t>(), pi<long double>(), tol);
548 BOOST_CHECK_CLOSE_FRACTION(root_pi<rc_t>(), root_pi<long double>(), tol);
549 BOOST_CHECK_CLOSE_FRACTION(root_half_pi<rc_t>(), root_half_pi<long double>(), tol);
550 BOOST_CHECK_CLOSE_FRACTION(root_two_pi<rc_t>(), root_two_pi<long double>(), tol);
551 BOOST_CHECK_CLOSE_FRACTION(root_ln_four<rc_t>(), root_ln_four<long double>(), tol);
552 BOOST_CHECK_CLOSE_FRACTION(half<rc_t>(), half<long double>(), tol);
553 BOOST_CHECK_CLOSE_FRACTION(euler<rc_t>(), euler<long double>(), tol);
554 BOOST_CHECK_CLOSE_FRACTION(root_two<rc_t>(), root_two<long double>(), tol);
555 BOOST_CHECK_CLOSE_FRACTION(ln_two<rc_t>(), ln_two<long double>(), tol);
556 BOOST_CHECK_CLOSE_FRACTION(ln_ln_two<rc_t>(), ln_ln_two<long double>(), tol);
557 BOOST_CHECK_CLOSE_FRACTION(third<rc_t>(), third<long double>(), tol);
558 BOOST_CHECK_CLOSE_FRACTION(twothirds<rc_t>(), twothirds<long double>(), tol);
559 BOOST_CHECK_CLOSE_FRACTION(pi_minus_three<rc_t>(), pi_minus_three<long double>(), tol);
560 BOOST_CHECK_CLOSE_FRACTION(four_minus_pi<rc_t>(), four_minus_pi<long double>(), tol);
561 // BOOST_CHECK_CLOSE_FRACTION(pow23_four_minus_pi<rc_t>(), pow23_four_minus_pi<long double>(), tol);
562 BOOST_CHECK_CLOSE_FRACTION(exp_minus_half<rc_t>(), exp_minus_half<long double>(), tol);
566 std::cout << "<note>The long double tests have been disabled on this platform "
567 "either because the long double overloads of the usual math functions are "
568 "not available at all, or because they are too inaccurate for these tests "
569 "to pass.</note>" << std::cout;
573 } // BOOST_AUTO_TEST_CASE( test_main )