| // (C) Copyright John Maddock 2014. |
| // 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 <pch_light.hpp> |
| #include "test_polygamma.hpp" |
| //#include <boost/cstdfloat.hpp> |
| |
| void expected_results() |
| { |
| // |
| // Define the max and mean errors expected for |
| // various compilers and platforms. |
| // |
| const char* largest_type; |
| #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS |
| if(boost::math::policies::digits<double, boost::math::policies::policy<> >() == boost::math::policies::digits<long double, boost::math::policies::policy<> >()) |
| { |
| largest_type = "(long\\s+)?double|real_concept"; |
| } |
| else |
| { |
| largest_type = "long double|real_concept"; |
| } |
| #else |
| largest_type = "(long\\s+)?double|real_concept"; |
| #endif |
| |
| add_expected_result( |
| ".*", // compiler |
| ".*", // stdlib |
| ".*", // platform |
| largest_type, // test type(s) |
| ".*large arguments", // test data group |
| ".*", 400, 200); // test function |
| add_expected_result( |
| ".*", // compiler |
| ".*", // stdlib |
| ".*", // platform |
| largest_type, // test type(s) |
| ".*negative.*", // test data group |
| ".*", 800, 400); // test function |
| #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS |
| if((std::numeric_limits<long double>::digits > std::numeric_limits<double>::digits) |
| && (std::numeric_limits<long double>::digits - std::numeric_limits<double>::digits < 20)) |
| { |
| add_expected_result( |
| ".*", // compiler |
| ".*", // stdlib |
| ".*", // platform |
| "double", // test type(s) |
| ".*bug cases.*", // test data group |
| ".*", 100, 30); // test function |
| } |
| #endif |
| add_expected_result( |
| ".*", // compiler |
| ".*", // stdlib |
| ".*", // platform |
| largest_type, // test type(s) |
| ".*bug cases.*", // test data group |
| ".*", 100000, 50000); // test function |
| add_expected_result( |
| ".*", // compiler |
| ".*", // stdlib |
| ".*", // platform |
| largest_type, // test type(s) |
| ".*", // test data group |
| ".*", 40, 10); // test function |
| // |
| // Finish off by printing out the compiler/stdlib/platform names, |
| // we do this to make it easier to mark up expected error rates. |
| // |
| std::cout << "Tests run with " << BOOST_COMPILER << ", " |
| << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; |
| } |
| |
| BOOST_AUTO_TEST_CASE( test_main ) |
| { |
| expected_results(); |
| BOOST_MATH_CONTROL_FP; |
| |
| test_polygamma(0.0F, "float"); |
| test_polygamma(0.0, "double"); |
| #ifndef BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS |
| test_polygamma(0.0L, "long double"); |
| test_polygamma(boost::math::concepts::real_concept(0.1), "real_concept"); |
| #endif |
| #ifdef BOOST_FLOAT128_C |
| //test_polygamma(BOOST_FLOAT128_C(0.0), "float128_t"); |
| #endif |
| } |
| |
| |
| |