// (C) Copyright John Maddock 2006. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include template void do_test_spots(T, U) { // // Tolerance is 4 eps expressed as a persentage: // T tolerance = boost::math::tools::epsilon() * 4 * 100; // // Everything past this point is generated by the program // ../tools/generate_rational_test.cpp // // // Polynomials of order 0 // static const U n1c[1] = { 2 }; static const boost::array n1a = { 2 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(0.125), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(0.25), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(0.75), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(0.125)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(0.25)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(0.75)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1a, static_cast(0.125)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1a, static_cast(0.25)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1a, static_cast(0.75)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n1a, static_cast(1.0f - 1.0f/64.0f)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.125), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.25), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.75), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f), 1), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.125)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.25)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(0.75)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1c, static_cast(1.0f - 1.0f/64.0f)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1a, static_cast(0.125)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1a, static_cast(0.25)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1a, static_cast(0.75)), static_cast(2L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n1a, static_cast(1.0f - 1.0f/64.0f)), static_cast(2L), tolerance); // // Rational functions of order 0 // static const U d1c[1] = { 3 }; static const boost::array d1a = { 3 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.125), 1), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.25), 1), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.75), 1), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(1.0f - 1.0f/64.0f), 1), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.125)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.25)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(0.75)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1c, d1c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1a, d1a, static_cast(0.125)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1a, d1a, static_cast(0.25)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1a, d1a, static_cast(0.75)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n1a, d1a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.6666666666666666666666666666666666666667L), tolerance); // // Polynomials of order 1 // static const U n2c[2] = { 3, 1 }; static const boost::array n2a = { 3, 1 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(0.125), 2), static_cast(3.125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(0.25), 2), static_cast(3.25L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(0.75), 2), static_cast(3.75L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f), 2), static_cast(3.984375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(0.125)), static_cast(3.125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(0.25)), static_cast(3.25L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(0.75)), static_cast(3.75L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f)), static_cast(3.984375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast(0.125)), static_cast(3.125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast(0.25)), static_cast(3.25L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast(0.75)), static_cast(3.75L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n2a, static_cast(1.0f - 1.0f/64.0f)), static_cast(3.984375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.125), 2), static_cast(3.015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.25), 2), static_cast(3.0625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.75), 2), static_cast(3.5625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f), 2), static_cast(3.968994140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.125)), static_cast(3.015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.25)), static_cast(3.0625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(0.75)), static_cast(3.5625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f)), static_cast(3.968994140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast(0.125)), static_cast(3.015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast(0.25)), static_cast(3.0625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast(0.75)), static_cast(3.5625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n2a, static_cast(1.0f - 1.0f/64.0f)), static_cast(3.968994140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.125), 2), static_cast(3.125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.25), 2), static_cast(3.25L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.75), 2), static_cast(3.75L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f), 2), static_cast(3.984375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.125)), static_cast(3.125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.25)), static_cast(3.25L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(0.75)), static_cast(3.75L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2c, static_cast(1.0f - 1.0f/64.0f)), static_cast(3.984375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(0.125)), static_cast(3.125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(0.25)), static_cast(3.25L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(0.75)), static_cast(3.75L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n2a, static_cast(1.0f - 1.0f/64.0f)), static_cast(3.984375L), tolerance); // // Rational functions of order 1 // static const U d2c[2] = { 5, 9 }; static const boost::array d2a = { 5, 9 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.125), 2), static_cast(0.5102040816326530612244897959183673469388L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.25), 2), static_cast(0.4482758620689655172413793103448275862069L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.75), 2), static_cast(0.3191489361702127659574468085106382978723L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(1.0f - 1.0f/64.0f), 2), static_cast(0.2874859075535512965050732807215332581736L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.125)), static_cast(0.5102040816326530612244897959183673469388L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.25)), static_cast(0.4482758620689655172413793103448275862069L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(0.75)), static_cast(0.3191489361702127659574468085106382978723L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2c, d2c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.2874859075535512965050732807215332581736L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast(0.125)), static_cast(0.5102040816326530612244897959183673469388L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast(0.25)), static_cast(0.4482758620689655172413793103448275862069L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast(0.75)), static_cast(0.3191489361702127659574468085106382978723L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n2a, d2a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.2874859075535512965050732807215332581736L), tolerance); // // Polynomials of order 2 // static const U n3c[3] = { 10, 6, 11 }; static const boost::array n3a = { 10, 6, 11 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(0.125), 3), static_cast(10.921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(0.25), 3), static_cast(12.1875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(0.75), 3), static_cast(20.6875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f), 3), static_cast(26.565185546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(0.125)), static_cast(10.921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(0.25)), static_cast(12.1875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(0.75)), static_cast(20.6875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f)), static_cast(26.565185546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast(0.125)), static_cast(10.921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast(0.25)), static_cast(12.1875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast(0.75)), static_cast(20.6875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n3a, static_cast(1.0f - 1.0f/64.0f)), static_cast(26.565185546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.125), 3), static_cast(10.096435546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.25), 3), static_cast(10.41796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.75), 3), static_cast(16.85546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f), 3), static_cast(26.142410933971405029296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.125)), static_cast(10.096435546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.25)), static_cast(10.41796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(0.75)), static_cast(16.85546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f)), static_cast(26.142410933971405029296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3a, static_cast(0.125)), static_cast(10.096435546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3a, static_cast(0.25)), static_cast(10.41796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3a, static_cast(0.75)), static_cast(16.85546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n3a, static_cast(1.0f - 1.0f/64.0f)), static_cast(26.142410933971405029296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.125), 3), static_cast(10.771484375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.25), 3), static_cast(11.671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.75), 3), static_cast(19.140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f), 3), static_cast(26.398639678955078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.125)), static_cast(10.771484375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.25)), static_cast(11.671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(0.75)), static_cast(19.140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3c, static_cast(1.0f - 1.0f/64.0f)), static_cast(26.398639678955078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(0.125)), static_cast(10.771484375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(0.25)), static_cast(11.671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(0.75)), static_cast(19.140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n3a, static_cast(1.0f - 1.0f/64.0f)), static_cast(26.398639678955078125L), tolerance); // // Rational functions of order 2 // static const U d3c[3] = { 3, 4, 10 }; static const boost::array d3a = { 3, 4, 10 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.125), 3), static_cast(2.987179487179487179487179487179487179487L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.25), 3), static_cast(2.635135135135135135135135135135135135135L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.75), 3), static_cast(1.779569892473118279569892473118279569892L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(1.0f - 1.0f/64.0f), 3), static_cast(1.597671277126831703520981998649164537633L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.125)), static_cast(2.987179487179487179487179487179487179487L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.25)), static_cast(2.635135135135135135135135135135135135135L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(0.75)), static_cast(1.779569892473118279569892473118279569892L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3c, d3c, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.597671277126831703520981998649164537633L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3a, d3a, static_cast(0.125)), static_cast(2.987179487179487179487179487179487179487L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3a, d3a, static_cast(0.25)), static_cast(2.635135135135135135135135135135135135135L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3a, d3a, static_cast(0.75)), static_cast(1.779569892473118279569892473118279569892L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n3a, d3a, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.597671277126831703520981998649164537633L), tolerance); // // Polynomials of order 3 // static const U n4c[4] = { 1, 4, 9, 11 }; static const boost::array n4a = { 1, 4, 9, 11 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(0.125), 4), static_cast(1.662109375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(0.25), 4), static_cast(2.734375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(0.75), 4), static_cast(13.703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f), 4), static_cast(24.150836944580078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(0.125)), static_cast(1.662109375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(0.25)), static_cast(2.734375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(0.75)), static_cast(13.703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f)), static_cast(24.150836944580078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4a, static_cast(0.125)), static_cast(1.662109375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4a, static_cast(0.25)), static_cast(2.734375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4a, static_cast(0.75)), static_cast(13.703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n4a, static_cast(1.0f - 1.0f/64.0f)), static_cast(24.150836944580078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.125), 4), static_cast(1.064739227294921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.25), 4), static_cast(1.287841796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.75), 4), static_cast(8.055419921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f), 4), static_cast(23.334727106775972060859203338623046875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.125)), static_cast(1.064739227294921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.25)), static_cast(1.287841796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(0.75)), static_cast(8.055419921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f)), static_cast(23.334727106775972060859203338623046875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4a, static_cast(0.125)), static_cast(1.064739227294921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4a, static_cast(0.25)), static_cast(1.287841796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4a, static_cast(0.75)), static_cast(8.055419921875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n4a, static_cast(1.0f - 1.0f/64.0f)), static_cast(23.334727106775972060859203338623046875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.125), 4), static_cast(1.517913818359375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.25), 4), static_cast(2.1513671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.75), 4), static_cast(10.4072265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f), 4), static_cast(23.689246584661304950714111328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.125)), static_cast(1.517913818359375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.25)), static_cast(2.1513671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(0.75)), static_cast(10.4072265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4c, static_cast(1.0f - 1.0f/64.0f)), static_cast(23.689246584661304950714111328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(0.125)), static_cast(1.517913818359375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(0.25)), static_cast(2.1513671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(0.75)), static_cast(10.4072265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n4a, static_cast(1.0f - 1.0f/64.0f)), static_cast(23.689246584661304950714111328125L), tolerance); // // Rational functions of order 3 // static const U d4c[4] = { 10, 2, 5, 4 }; static const boost::array d4a = { 10, 2, 5, 4 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.125), 4), static_cast(0.1608087679516250944822373393801965230537L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.25), 4), static_cast(0.2514367816091954022988505747126436781609L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.75), 4), static_cast(0.8564453125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(1.0f - 1.0f/64.0f), 4), static_cast(1.170714951947222939292918160495461743806L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.125)), static_cast(0.1608087679516250944822373393801965230537L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.25)), static_cast(0.2514367816091954022988505747126436781609L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(0.75)), static_cast(0.8564453125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4c, d4c, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.170714951947222939292918160495461743806L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4a, d4a, static_cast(0.125)), static_cast(0.1608087679516250944822373393801965230537L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4a, d4a, static_cast(0.25)), static_cast(0.2514367816091954022988505747126436781609L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4a, d4a, static_cast(0.75)), static_cast(0.8564453125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n4a, d4a, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.170714951947222939292918160495461743806L), tolerance); // // Polynomials of order 4 // static const U n5c[5] = { 10, 10, 4, 11, 9 }; static const boost::array n5a = { 10, 10, 4, 11, 9 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(0.125), 5), static_cast(11.336181640625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(0.25), 5), static_cast(12.95703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(0.75), 5), static_cast(27.23828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f), 5), static_cast(42.662663042545318603515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(0.125)), static_cast(11.336181640625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(0.25)), static_cast(12.95703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(0.75)), static_cast(27.23828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f)), static_cast(42.662663042545318603515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5a, static_cast(0.125)), static_cast(11.336181640625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5a, static_cast(0.25)), static_cast(12.95703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5a, static_cast(0.75)), static_cast(27.23828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n5a, static_cast(1.0f - 1.0f/64.0f)), static_cast(42.662663042545318603515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.125), 5), static_cast(10.157269060611724853515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.25), 5), static_cast(10.6434478759765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.75), 5), static_cast(19.7494049072265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f), 5), static_cast(41.38858164296656028113829961512237787247L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.125)), static_cast(10.157269060611724853515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.25)), static_cast(10.6434478759765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(0.75)), static_cast(19.7494049072265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f)), static_cast(41.38858164296656028113829961512237787247L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5a, static_cast(0.125)), static_cast(10.157269060611724853515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5a, static_cast(0.25)), static_cast(10.6434478759765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5a, static_cast(0.75)), static_cast(19.7494049072265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n5a, static_cast(1.0f - 1.0f/64.0f)), static_cast(41.38858164296656028113829961512237787247L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.125), 5), static_cast(11.258152484893798828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.25), 5), static_cast(12.57379150390625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.75), 5), static_cast(22.99920654296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f), 5), static_cast(41.88681309761682314274366945028305053711L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.125)), static_cast(11.258152484893798828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.25)), static_cast(12.57379150390625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(0.75)), static_cast(22.99920654296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5c, static_cast(1.0f - 1.0f/64.0f)), static_cast(41.88681309761682314274366945028305053711L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(0.125)), static_cast(11.258152484893798828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(0.25)), static_cast(12.57379150390625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(0.75)), static_cast(22.99920654296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n5a, static_cast(1.0f - 1.0f/64.0f)), static_cast(41.88681309761682314274366945028305053711L), tolerance); // // Rational functions of order 4 // static const U d5c[5] = { 6, 9, 6, 2, 5 }; static const boost::array d5a = { 6, 9, 6, 2, 5 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.125), 5), static_cast(1.569265605461489066882963263374902835513L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.25), 5), static_cast(1.493471409275101305718144979738856371004L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.75), 5), static_cast(1.468309117708991366603495472731101284481L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(1.0f - 1.0f/64.0f), 5), static_cast(1.564121691159921277310988862398683772017L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.125)), static_cast(1.569265605461489066882963263374902835513L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.25)), static_cast(1.493471409275101305718144979738856371004L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(0.75)), static_cast(1.468309117708991366603495472731101284481L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5c, d5c, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.564121691159921277310988862398683772017L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5a, d5a, static_cast(0.125)), static_cast(1.569265605461489066882963263374902835513L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5a, d5a, static_cast(0.25)), static_cast(1.493471409275101305718144979738856371004L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5a, d5a, static_cast(0.75)), static_cast(1.468309117708991366603495472731101284481L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n5a, d5a, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.564121691159921277310988862398683772017L), tolerance); // // Polynomials of order 5 // static const U n6c[6] = { 6, 8, 12, 5, 7, 5 }; static const boost::array n6a = { 6, 8, 12, 5, 7, 5 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(0.125), 6), static_cast(7.199127197265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(0.25), 6), static_cast(8.8603515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(0.75), 6), static_cast(24.2607421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f), 6), static_cast(41.466238017193973064422607421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(0.125)), static_cast(7.199127197265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(0.25)), static_cast(8.8603515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(0.75)), static_cast(24.2607421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f)), static_cast(41.466238017193973064422607421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6a, static_cast(0.125)), static_cast(7.199127197265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6a, static_cast(0.25)), static_cast(8.8603515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6a, static_cast(0.75)), static_cast(24.2607421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n6a, static_cast(1.0f - 1.0f/64.0f)), static_cast(41.466238017193973064422607421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.125), 6), static_cast(6.127949182875454425811767578125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.25), 6), static_cast(6.54820728302001953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.75), 6), static_cast(16.16912555694580078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f), 6), static_cast(40.01137167344577683526091194110563264985L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.125)), static_cast(6.127949182875454425811767578125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.25)), static_cast(6.54820728302001953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(0.75)), static_cast(16.16912555694580078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f)), static_cast(40.01137167344577683526091194110563264985L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6a, static_cast(0.125)), static_cast(6.127949182875454425811767578125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6a, static_cast(0.25)), static_cast(6.54820728302001953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6a, static_cast(0.75)), static_cast(16.16912555694580078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n6a, static_cast(1.0f - 1.0f/64.0f)), static_cast(40.01137167344577683526091194110563264985L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.125), 6), static_cast(7.023593463003635406494140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.25), 6), static_cast(8.192829132080078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.75), 6), static_cast(19.558834075927734375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f), 6), static_cast(40.55123471588142408661425974969461094588L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.125)), static_cast(7.023593463003635406494140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.25)), static_cast(8.192829132080078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(0.75)), static_cast(19.558834075927734375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6c, static_cast(1.0f - 1.0f/64.0f)), static_cast(40.55123471588142408661425974969461094588L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(0.125)), static_cast(7.023593463003635406494140625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(0.25)), static_cast(8.192829132080078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(0.75)), static_cast(19.558834075927734375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n6a, static_cast(1.0f - 1.0f/64.0f)), static_cast(40.55123471588142408661425974969461094588L), tolerance); // // Rational functions of order 5 // static const U d6c[6] = { 5, 11, 7, 12, 10, 5 }; static const boost::array d6a = { 5, 11, 7, 12, 10, 5 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.125), 6), static_cast(1.105787665293227020667219792530925829572L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.25), 6), static_cast(1.052430112515949425820670455863588910799L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.75), 6), static_cast(0.9120378868534087154447666948125848966555L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(1.0f - 1.0f/64.0f), 6), static_cast(0.8626539746676637108178973543021882567334L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.125)), static_cast(1.105787665293227020667219792530925829572L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.25)), static_cast(1.052430112515949425820670455863588910799L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(0.75)), static_cast(0.9120378868534087154447666948125848966555L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6c, d6c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.8626539746676637108178973543021882567334L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6a, d6a, static_cast(0.125)), static_cast(1.105787665293227020667219792530925829572L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6a, d6a, static_cast(0.25)), static_cast(1.052430112515949425820670455863588910799L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6a, d6a, static_cast(0.75)), static_cast(0.9120378868534087154447666948125848966555L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n6a, d6a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.8626539746676637108178973543021882567334L), tolerance); // // Polynomials of order 6 // static const U n7c[7] = { 3, 4, 11, 5, 10, 7, 9 }; static const boost::array n7a = { 3, 4, 11, 5, 10, 7, 9 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(0.125), 7), static_cast(3.684329986572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(0.25), 7), static_cast(4.813720703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(0.75), 7), static_cast(20.723876953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f), 7), static_cast(46.413680258337990380823612213134765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(0.125)), static_cast(3.684329986572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(0.25)), static_cast(4.813720703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(0.75)), static_cast(20.723876953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f)), static_cast(46.413680258337990380823612213134765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7a, static_cast(0.125)), static_cast(3.684329986572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7a, static_cast(0.25)), static_cast(4.813720703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7a, static_cast(0.75)), static_cast(20.723876953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n7a, static_cast(1.0f - 1.0f/64.0f)), static_cast(46.413680258337990380823612213134765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.125), 7), static_cast(3.065205223058001138269901275634765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.25), 7), static_cast(3.294349253177642822265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.75), 7), static_cast(11.300772249698638916015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f), 7), static_cast(44.00013192129567626077980251194602528964L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.125)), static_cast(3.065205223058001138269901275634765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.25)), static_cast(3.294349253177642822265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(0.75)), static_cast(11.300772249698638916015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f)), static_cast(44.00013192129567626077980251194602528964L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7a, static_cast(0.125)), static_cast(3.065205223058001138269901275634765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7a, static_cast(0.25)), static_cast(3.294349253177642822265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7a, static_cast(0.75)), static_cast(11.300772249698638916015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n7a, static_cast(1.0f - 1.0f/64.0f)), static_cast(44.00013192129567626077980251194602528964L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.125), 7), static_cast(3.521641784464009106159210205078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.25), 7), static_cast(4.1773970127105712890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.75), 7), static_cast(14.0676963329315185546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f), 7), static_cast(44.65092766607814731253821207562770823074L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.125)), static_cast(3.521641784464009106159210205078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.25)), static_cast(4.1773970127105712890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(0.75)), static_cast(14.0676963329315185546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7c, static_cast(1.0f - 1.0f/64.0f)), static_cast(44.65092766607814731253821207562770823074L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(0.125)), static_cast(3.521641784464009106159210205078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(0.25)), static_cast(4.1773970127105712890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(0.75)), static_cast(14.0676963329315185546875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n7a, static_cast(1.0f - 1.0f/64.0f)), static_cast(44.65092766607814731253821207562770823074L), tolerance); // // Rational functions of order 6 // static const U d7c[7] = { 2, 8, 10, 8, 1, 11, 1 }; static const boost::array d7a = { 2, 8, 10, 8, 1, 11, 1 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.125), 7), static_cast(1.161348466465698540596242849979738853664L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.25), 7), static_cast(1.010247476558897371522262642824204539632L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.75), 7), static_cast(1.03079575951134804308491906398377636644L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(1.0f - 1.0f/64.0f), 7), static_cast(1.183671559390403425417413542214181025989L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.125)), static_cast(1.161348466465698540596242849979738853664L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.25)), static_cast(1.010247476558897371522262642824204539632L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(0.75)), static_cast(1.03079575951134804308491906398377636644L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7c, d7c, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.183671559390403425417413542214181025989L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7a, d7a, static_cast(0.125)), static_cast(1.161348466465698540596242849979738853664L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7a, d7a, static_cast(0.25)), static_cast(1.010247476558897371522262642824204539632L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7a, d7a, static_cast(0.75)), static_cast(1.03079575951134804308491906398377636644L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n7a, d7a, static_cast(1.0f - 1.0f/64.0f)), static_cast(1.183671559390403425417413542214181025989L), tolerance); // // Polynomials of order 7 // static const U n8c[8] = { 9, 5, 6, 1, 12, 2, 11, 1 }; static const boost::array n8a = { 9, 5, 6, 1, 12, 2, 11, 1 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(0.125), 8), static_cast(9.723736286163330078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(0.25), 8), static_cast(10.69219970703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(0.75), 8), static_cast(22.90960693359375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f), 8), static_cast(44.70947054706607559637632220983505249023L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(0.125)), static_cast(9.723736286163330078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(0.25)), static_cast(10.69219970703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(0.75)), static_cast(22.90960693359375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f)), static_cast(44.70947054706607559637632220983505249023L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8a, static_cast(0.125)), static_cast(9.723736286163330078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8a, static_cast(0.25)), static_cast(10.69219970703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8a, static_cast(0.75)), static_cast(22.90960693359375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n8a, static_cast(1.0f - 1.0f/64.0f)), static_cast(44.70947054706607559637632220983505249023L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.125), 8), static_cast(9.079594375725946520105935633182525634766L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.25), 8), static_cast(9.3363673128187656402587890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.75), 8), static_cast(15.5691558457911014556884765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f), 8), static_cast(42.58457138999176910226338119632657870077L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.125)), static_cast(9.079594375725946520105935633182525634766L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.25)), static_cast(9.3363673128187656402587890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(0.75)), static_cast(15.5691558457911014556884765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f)), static_cast(42.58457138999176910226338119632657870077L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8a, static_cast(0.125)), static_cast(9.079594375725946520105935633182525634766L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8a, static_cast(0.25)), static_cast(9.3363673128187656402587890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8a, static_cast(0.75)), static_cast(15.5691558457911014556884765625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n8a, static_cast(1.0f - 1.0f/64.0f)), static_cast(42.58457138999176910226338119632657870077L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.125), 8), static_cast(9.636755005807572160847485065460205078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.25), 8), static_cast(10.34546925127506256103515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.75), 8), static_cast(17.75887446105480194091796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f), 8), static_cast(43.11765982475354321499772058039525455316L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.125)), static_cast(9.636755005807572160847485065460205078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.25)), static_cast(10.34546925127506256103515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(0.75)), static_cast(17.75887446105480194091796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8c, static_cast(1.0f - 1.0f/64.0f)), static_cast(43.11765982475354321499772058039525455316L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(0.125)), static_cast(9.636755005807572160847485065460205078125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(0.25)), static_cast(10.34546925127506256103515625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(0.75)), static_cast(17.75887446105480194091796875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n8a, static_cast(1.0f - 1.0f/64.0f)), static_cast(43.11765982475354321499772058039525455316L), tolerance); // // Rational functions of order 7 // static const U d8c[8] = { 7, 10, 10, 11, 2, 4, 1, 7 }; static const boost::array d8a = { 7, 10, 10, 11, 2, 4, 1, 7 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.125), 8), static_cast(1.153693678861771369296601206130394355814L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.25), 8), static_cast(1.03714470093009762768860970830101771981L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.75), 8), static_cast(0.834289461108456229648481346061946410909L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(1.0f - 1.0f/64.0f), 8), static_cast(0.8981362736388035283180082845549732926578L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.125)), static_cast(1.153693678861771369296601206130394355814L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.25)), static_cast(1.03714470093009762768860970830101771981L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(0.75)), static_cast(0.834289461108456229648481346061946410909L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8c, d8c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.8981362736388035283180082845549732926578L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8a, d8a, static_cast(0.125)), static_cast(1.153693678861771369296601206130394355814L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8a, d8a, static_cast(0.25)), static_cast(1.03714470093009762768860970830101771981L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8a, d8a, static_cast(0.75)), static_cast(0.834289461108456229648481346061946410909L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n8a, d8a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.8981362736388035283180082845549732926578L), tolerance); // // Polynomials of order 8 // static const U n9c[9] = { 3, 9, 3, 9, 5, 6, 10, 7, 10 }; static const boost::array n9a = { 3, 9, 3, 9, 5, 6, 10, 7, 10 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(0.125), 9), static_cast(4.19089901447296142578125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(0.25), 9), static_cast(5.606536865234375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(0.75), 9), static_cast(21.955535888671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f), 9), static_cast(57.7754343750660055434309470001608133316L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(0.125)), static_cast(4.19089901447296142578125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(0.25)), static_cast(5.606536865234375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(0.75)), static_cast(21.955535888671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f)), static_cast(57.7754343750660055434309470001608133316L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9a, static_cast(0.125)), static_cast(4.19089901447296142578125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9a, static_cast(0.25)), static_cast(5.606536865234375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9a, static_cast(0.75)), static_cast(21.955535888671875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n9a, static_cast(1.0f - 1.0f/64.0f)), static_cast(57.7754343750660055434309470001608133316L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.125), 9), static_cast(3.141392057908696244794555241242051124573L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.25), 9), static_cast(3.5764986560679972171783447265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.75), 9), static_cast(11.9936861679889261722564697265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f), 9), static_cast(53.92583642412261279423815221065846904997L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.125)), static_cast(3.141392057908696244794555241242051124573L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.25)), static_cast(3.5764986560679972171783447265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(0.75)), static_cast(11.9936861679889261722564697265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f)), static_cast(53.92583642412261279423815221065846904997L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9a, static_cast(0.125)), static_cast(3.141392057908696244794555241242051124573L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9a, static_cast(0.25)), static_cast(3.5764986560679972171783447265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9a, static_cast(0.75)), static_cast(11.9936861679889261722564697265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n9a, static_cast(1.0f - 1.0f/64.0f)), static_cast(53.92583642412261279423815221065846904997L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.125), 9), static_cast(4.131136463269569958356441929936408996582L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.25), 9), static_cast(5.30599462427198886871337890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.75), 9), static_cast(14.99158155731856822967529296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f), 9), static_cast(54.73418303402932093382923399178003205076L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.125)), static_cast(4.131136463269569958356441929936408996582L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.25)), static_cast(5.30599462427198886871337890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(0.75)), static_cast(14.99158155731856822967529296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9c, static_cast(1.0f - 1.0f/64.0f)), static_cast(54.73418303402932093382923399178003205076L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(0.125)), static_cast(4.131136463269569958356441929936408996582L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(0.25)), static_cast(5.30599462427198886871337890625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(0.75)), static_cast(14.99158155731856822967529296875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n9a, static_cast(1.0f - 1.0f/64.0f)), static_cast(54.73418303402932093382923399178003205076L), tolerance); // // Rational functions of order 8 // static const U d9c[9] = { 12, 3, 10, 4, 6, 6, 6, 10, 7 }; static const boost::array d9a = { 12, 3, 10, 4, 6, 6, 6, 10, 7 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.125), 9), static_cast(0.3341827920887278954826517708316980450243L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.25), 9), static_cast(0.4162555242250224594229316089330159747956L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.75), 9), static_cast(0.7844550246723573100342976024389406178802L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(1.0f - 1.0f/64.0f), 9), static_cast(0.959335028097323235424759017468360386113L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.125)), static_cast(0.3341827920887278954826517708316980450243L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.25)), static_cast(0.4162555242250224594229316089330159747956L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(0.75)), static_cast(0.7844550246723573100342976024389406178802L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9c, d9c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.959335028097323235424759017468360386113L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9a, d9a, static_cast(0.125)), static_cast(0.3341827920887278954826517708316980450243L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9a, d9a, static_cast(0.25)), static_cast(0.4162555242250224594229316089330159747956L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9a, d9a, static_cast(0.75)), static_cast(0.7844550246723573100342976024389406178802L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n9a, d9a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.959335028097323235424759017468360386113L), tolerance); // // Polynomials of order 9 // static const U n10c[10] = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 }; static const boost::array n10a = { 3, 4, 2, 6, 8, 1, 2, 4, 8, 8 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(0.125), 10), static_cast(3.544962465763092041015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(0.25), 10), static_cast(4.251861572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(0.75), 10), static_cast(14.716278076171875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f), 10), static_cast(42.43246072286939307716124858416151255369L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(0.125)), static_cast(3.544962465763092041015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(0.25)), static_cast(4.251861572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(0.75)), static_cast(14.716278076171875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f)), static_cast(42.43246072286939307716124858416151255369L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10a, static_cast(0.125)), static_cast(3.544962465763092041015625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10a, static_cast(0.25)), static_cast(4.251861572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10a, static_cast(0.75)), static_cast(14.716278076171875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n10a, static_cast(1.0f - 1.0f/64.0f)), static_cast(42.43246072286939307716124858416151255369L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.125), 10), static_cast(3.063011647232116718697625401546247303486L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.25), 10), static_cast(3.259400503826327621936798095703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.75), 10), static_cast(8.067807371844537556171417236328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f), 10), static_cast(39.22779295817342542834377568121069117613L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.125)), static_cast(3.063011647232116718697625401546247303486L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.25)), static_cast(3.259400503826327621936798095703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(0.75)), static_cast(8.067807371844537556171417236328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f)), static_cast(39.22779295817342542834377568121069117613L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10a, static_cast(0.125)), static_cast(3.063011647232116718697625401546247303486L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10a, static_cast(0.25)), static_cast(3.259400503826327621936798095703125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10a, static_cast(0.75)), static_cast(8.067807371844537556171417236328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n10a, static_cast(1.0f - 1.0f/64.0f)), static_cast(39.22779295817342542834377568121069117613L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.125), 10), static_cast(3.504093177856933749581003212369978427887L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.25), 10), static_cast(4.0376020153053104877471923828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.75), 10), static_cast(9.7570764957927167415618896484375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f), 10), static_cast(39.80283729084284487958732767615054341702L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.125)), static_cast(3.504093177856933749581003212369978427887L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.25)), static_cast(4.0376020153053104877471923828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(0.75)), static_cast(9.7570764957927167415618896484375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10c, static_cast(1.0f - 1.0f/64.0f)), static_cast(39.80283729084284487958732767615054341702L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(0.125)), static_cast(3.504093177856933749581003212369978427887L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(0.25)), static_cast(4.0376020153053104877471923828125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(0.75)), static_cast(9.7570764957927167415618896484375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n10a, static_cast(1.0f - 1.0f/64.0f)), static_cast(39.80283729084284487958732767615054341702L), tolerance); // // Rational functions of order 9 // static const U d10c[10] = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 }; static const boost::array d10a = { 3, 11, 1, 12, 8, 8, 7, 10, 8, 8 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.125), 10), static_cast(0.8027011456035955638016996485812217742707L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.25), 10), static_cast(0.7037718026559713894599659542655668311705L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.75), 10), static_cast(0.5819711007563332500606442409694389231031L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(1.0f - 1.0f/64.0f), 10), static_cast(0.6021345078884753739086911192013079405483L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.125)), static_cast(0.8027011456035955638016996485812217742707L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.25)), static_cast(0.7037718026559713894599659542655668311705L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(0.75)), static_cast(0.5819711007563332500606442409694389231031L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10c, d10c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.6021345078884753739086911192013079405483L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10a, d10a, static_cast(0.125)), static_cast(0.8027011456035955638016996485812217742707L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10a, d10a, static_cast(0.25)), static_cast(0.7037718026559713894599659542655668311705L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10a, d10a, static_cast(0.75)), static_cast(0.5819711007563332500606442409694389231031L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n10a, d10a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.6021345078884753739086911192013079405483L), tolerance); // // Polynomials of order 10 // static const U n11c[11] = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 }; static const boost::array n11a = { 2, 2, 8, 11, 3, 4, 10, 11, 5, 1, 6 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(0.125), 11), static_cast(2.39738257043063640594482421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(0.25), 11), static_cast(3.1906986236572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(0.75), 11), static_cast(18.7007007598876953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f), 11), static_cast(58.07897685780276847943015550157497273176L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(0.125)), static_cast(2.39738257043063640594482421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(0.25)), static_cast(3.1906986236572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(0.75)), static_cast(18.7007007598876953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f)), static_cast(58.07897685780276847943015550157497273176L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11a, static_cast(0.125)), static_cast(2.39738257043063640594482421875L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11a, static_cast(0.25)), static_cast(3.1906986236572265625L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11a, static_cast(0.75)), static_cast(18.7007007598876953125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_polynomial(n11a, static_cast(1.0f - 1.0f/64.0f)), static_cast(58.07897685780276847943015550157497273176L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.125), 11), static_cast(2.033245269357184586631048794913567689946L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.25), 11), static_cast(2.158985776148256263695657253265380859375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.75), 11), static_cast(8.727145384755203849636018276214599609375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f), 11), static_cast(53.63972553738812062759598952966094072427L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.125)), static_cast(2.033245269357184586631048794913567689946L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.25)), static_cast(2.158985776148256263695657253265380859375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(0.75)), static_cast(8.727145384755203849636018276214599609375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f)), static_cast(53.63972553738812062759598952966094072427L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11a, static_cast(0.125)), static_cast(2.033245269357184586631048794913567689946L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11a, static_cast(0.25)), static_cast(2.158985776148256263695657253265380859375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11a, static_cast(0.75)), static_cast(8.727145384755203849636018276214599609375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_even_polynomial(n11a, static_cast(1.0f - 1.0f/64.0f)), static_cast(53.63972553738812062759598952966094072427L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.125), 11), static_cast(2.265962154857476693048390359308541519567L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.25), 11), static_cast(2.6359431045930250547826290130615234375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.75), 11), static_cast(10.9695271796736051328480243682861328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f), 11), static_cast(54.4594037205212653994625925380682572437L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.125)), static_cast(2.265962154857476693048390359308541519567L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.25)), static_cast(2.6359431045930250547826290130615234375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(0.75)), static_cast(10.9695271796736051328480243682861328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11c, static_cast(1.0f - 1.0f/64.0f)), static_cast(54.4594037205212653994625925380682572437L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(0.125)), static_cast(2.265962154857476693048390359308541519567L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(0.25)), static_cast(2.6359431045930250547826290130615234375L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(0.75)), static_cast(10.9695271796736051328480243682861328125L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_odd_polynomial(n11a, static_cast(1.0f - 1.0f/64.0f)), static_cast(54.4594037205212653994625925380682572437L), tolerance); // // Rational functions of order 10 // static const U d11c[11] = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 }; static const boost::array d11a = { 4, 1, 3, 9, 11, 8, 11, 2, 6, 6, 4 }; BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.125), 11), static_cast(0.5718365676248588095654568811483084403598L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.25), 11), static_cast(0.6888631839546304707516922567568791812269L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.75), 11), static_cast(0.9783539912974912482969079012097816310129L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(1.0f - 1.0f/64.0f), 11), static_cast(0.9694017102874332007392886881642471036972L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.125)), static_cast(0.5718365676248588095654568811483084403598L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.25)), static_cast(0.6888631839546304707516922567568791812269L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(0.75)), static_cast(0.9783539912974912482969079012097816310129L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11c, d11c, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.9694017102874332007392886881642471036972L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11a, d11a, static_cast(0.125)), static_cast(0.5718365676248588095654568811483084403598L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11a, d11a, static_cast(0.25)), static_cast(0.6888631839546304707516922567568791812269L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11a, d11a, static_cast(0.75)), static_cast(0.9783539912974912482969079012097816310129L), tolerance); BOOST_CHECK_CLOSE( boost::math::tools::evaluate_rational(n11a, d11a, static_cast(1.0f - 1.0f/64.0f)), static_cast(0.9694017102874332007392886881642471036972L), tolerance); } template void test_spots(T t, const char* n) { std::cout << "Testing basic sanity checks for type " << n << std::endl; do_test_spots(t, int(0)); do_test_spots(t, unsigned(0)); #ifdef BOOST_HAS_LONG_LONG do_test_spots(t, (unsigned long long)(0)); #endif do_test_spots(t, float(0)); do_test_spots(t, T(0)); } int test_main(int, char* []) { test_spots(0.0F, "float"); test_spots(0.0, "double"); #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS test_spots(0.0L, "long double"); test_spots(boost::math::concepts::real_concept(0.1), "real_concept"); #else std::cout << "The long double tests have been disabled on this platform " "either because the long double overloads of the usual math functions are " "not available at all, or because they are too inaccurate for these tests " "to pass." << std::cout; #endif return 0; }