]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /////////////////////////////////////////////////////////////// |
2 | // Copyright Christopher Kormanyos 2002 - 2011. | |
3 | // Copyright 2011 John Maddock. Distributed under the Boost | |
4 | // Software License, Version 1.0. (See accompanying file | |
92f5a8d4 | 5 | // LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt |
7c673cae FG |
6 | // |
7 | // This work is based on an earlier work: | |
8 | // "Algorithm 910: A Portable C++ Multiple-Precision System for Special-Function Calculations", | |
9 | // in ACM TOMS, {VOL 37, ISSUE 4, (February 2011)} (C) ACM, 2011. http://doi.acm.org/10.1145/1916461.1916469 | |
10 | ||
11 | #include "setup.hpp" | |
12 | #include "table_type.hpp" | |
13 | ||
14 | #include <boost/math/special_functions/math_fwd.hpp> | |
15 | #include "libs/math/test/test_bessel_k.hpp" | |
16 | ||
17 | void expected_results() | |
18 | { | |
19 | // | |
20 | // Define the max and mean errors expected for | |
21 | // various compilers and platforms. | |
22 | // | |
23 | add_expected_result( | |
92f5a8d4 TL |
24 | ".*", // compiler |
25 | ".*", // stdlib | |
26 | ".*", // platform | |
27 | ".*gmp.*", // test type(s) | |
28 | ".*", // test data group | |
29 | ".*", 2000, 1500); // test function | |
7c673cae FG |
30 | #ifdef BOOST_INTEL |
31 | add_expected_result( | |
92f5a8d4 TL |
32 | ".*", // compiler |
33 | ".*", // stdlib | |
34 | ".*", // platform | |
35 | ".*float128.*", // test type(s) | |
36 | ".*", // test data group | |
37 | ".*", 300, 100); // test function | |
7c673cae FG |
38 | #endif |
39 | add_expected_result( | |
92f5a8d4 TL |
40 | ".*", // compiler |
41 | ".*", // stdlib | |
42 | ".*", // platform | |
43 | ".*mpfr_float_backend<18>.*", // test type(s) | |
44 | ".*", // test data group | |
45 | ".*", 3000, 1000); // test function | |
7c673cae | 46 | add_expected_result( |
92f5a8d4 TL |
47 | ".*", // compiler |
48 | ".*", // stdlib | |
49 | ".*", // platform | |
50 | ".*mpfr_float_backend<0>.*", // test type(s) | |
51 | ".*", // test data group | |
52 | ".*", 300, 150); // test function | |
7c673cae | 53 | add_expected_result( |
92f5a8d4 TL |
54 | ".*", // compiler |
55 | ".*", // stdlib | |
56 | ".*", // platform | |
57 | ".*", // test type(s) | |
58 | ".*large.*", // test data group | |
59 | ".*", 80, 50); // test function | |
7c673cae | 60 | add_expected_result( |
92f5a8d4 TL |
61 | ".*", // compiler |
62 | ".*", // stdlib | |
63 | ".*", // platform | |
64 | ".*cpp_bin_float.*", // test type(s) | |
65 | ".*", // test data group | |
66 | ".*", 300, 150); // test function | |
7c673cae | 67 | add_expected_result( |
92f5a8d4 TL |
68 | ".*", // compiler |
69 | ".*", // stdlib | |
70 | ".*", // platform | |
71 | ".*", // test type(s) | |
72 | ".*", // test data group | |
73 | ".*", 50, 15); // test function | |
7c673cae FG |
74 | // |
75 | // Finish off by printing out the compiler/stdlib/platform names, | |
76 | // we do this to make it easier to mark up expected error rates. | |
77 | // | |
78 | std::cout << "Tests run with " << BOOST_COMPILER << ", " | |
92f5a8d4 | 79 | << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; |
7c673cae FG |
80 | } |
81 | ||
82 | template <class T> | |
83 | void test(T t, const char* p) | |
84 | { | |
85 | test_bessel(t, p); | |
86 | } | |
87 | ||
92f5a8d4 | 88 | BOOST_AUTO_TEST_CASE(test_main) |
7c673cae FG |
89 | { |
90 | using namespace boost::multiprecision; | |
91 | expected_results(); | |
92 | // | |
93 | // Test at: | |
94 | // 18 decimal digits: tests 80-bit long double approximations | |
95 | // 30 decimal digits: tests 128-bit long double approximations | |
96 | // 35 decimal digits: tests arbitrary precision code | |
97 | // | |
98 | ALL_TESTS | |
99 | } |