Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / multiprecision / test / math / test_digamma.cpp
1 ///////////////////////////////////////////////////////////////
2 //  Copyright 2011 John Maddock. Distributed under the Boost
3 //  Software License, Version 1.0. (See accompanying file
4 //  LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
5
6 #include "setup.hpp"
7 #include "table_type.hpp"
8 #define TEST_UDT
9
10 #include <boost/math/special_functions/math_fwd.hpp>
11 #include "libs/math/test/test_digamma.hpp"
12
13 void expected_results()
14 {
15    //
16    // Define the max and mean errors expected for
17    // various compilers and platforms.
18    //
19    add_expected_result(
20        ".*",                         // compiler
21        ".*",                         // stdlib
22        ".*",                         // platform
23        ".*mpfr_float_backend<18>.*", // test type(s)
24        ".*Negative.*",               // test data group
25        ".*", 20000, 2000);           // test function
26    add_expected_result(
27        ".*",           // compiler
28        ".*",           // stdlib
29        ".*",           // platform
30        ".*",           // test type(s)
31        ".*Negative.*", // test data group
32        ".*", 550, 40); // test function
33    add_expected_result(
34        ".*",                         // compiler
35        ".*",                         // stdlib
36        ".*",                         // platform
37        ".*cpp_dec_float.*",          // test type(s)
38        ".*Near the Positive Root.*", // test data group
39        ".*", 2500, 200);             // test function
40    add_expected_result(
41        ".*",                         // compiler
42        ".*",                         // stdlib
43        ".*",                         // platform
44        ".*mpfr_float_backend<0>.*",  // test type(s)
45        ".*Near the Positive Root.*", // test data group
46        ".*", 30000, 2000);           // test function
47    add_expected_result(
48        ".*",                         // compiler
49        ".*",                         // stdlib
50        ".*",                         // platform
51        ".*",                         // test type(s)
52        ".*Near the Positive Root.*", // test data group
53        ".*", 6000, 1000);            // test function
54    add_expected_result(
55        ".*",          // compiler
56        ".*",          // stdlib
57        ".*",          // platform
58        ".*",          // test type(s)
59        ".*",          // test data group
60        ".*", 80, 30); // test function
61    //
62    // Finish off by printing out the compiler/stdlib/platform names,
63    // we do this to make it easier to mark up expected error rates.
64    //
65    std::cout << "Tests run with " << BOOST_COMPILER << ", "
66              << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl;
67 }
68
69 template <class T>
70 void test(T t, const char* p)
71 {
72    test_digamma(t, p);
73 }
74
75 BOOST_AUTO_TEST_CASE(test_main)
76 {
77    using namespace boost::multiprecision;
78    expected_results();
79    //
80    // Test at:
81    // 18 decimal digits: tests 80-bit long double approximations
82    // 30 decimal digits: tests 128-bit long double approximations
83    // 35 decimal digits: tests arbitrary precision code
84    //
85    ALL_TESTS
86 }