]>
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 <boost/math/special_functions/log1p.hpp> | |
13 | //#include <boost/math/special_functions/expm1.hpp> | |
14 | #define BOOST_TEST_MAIN | |
15 | #include <boost/test/unit_test.hpp> | |
16 | #include <boost/test/floating_point_comparison.hpp> | |
17 | #include <boost/math/special_functions/math_fwd.hpp> | |
18 | ||
19 | #include "table_type.hpp" | |
20 | ||
21 | #include "libs/math/test/log1p_expm1_test.hpp" | |
22 | ||
23 | // | |
24 | // DESCRIPTION: | |
25 | // ~~~~~~~~~~~~ | |
26 | // | |
27 | // This file tests the functions log1p and expm1. The accuracy tests | |
28 | // use values generated with NTL::RR at 1000-bit precision | |
29 | // and our generic versions of these functions. | |
30 | // | |
31 | // Note that when this file is first run on a new platform many of | |
32 | // these tests will fail: the default accuracy is 1 epsilon which | |
33 | // is too tight for most platforms. In this situation you will | |
34 | // need to cast a human eye over the error rates reported and make | |
35 | // a judgement as to whether they are acceptable. Either way please | |
36 | // report the results to the Boost mailing list. Acceptable rates of | |
37 | // error are marked up below as a series of regular expressions that | |
38 | // identify the compiler/stdlib/platform/data-type/test-data/test-function | |
39 | // along with the maximum expected peek and RMS mean errors for that | |
40 | // test. | |
41 | // | |
42 | ||
43 | void expected_results() | |
44 | { | |
45 | // | |
46 | // Define the max and mean errors expected for | |
47 | // various compilers and platforms. | |
48 | // | |
49 | ||
50 | // | |
51 | // Catch all cases come last: | |
52 | // | |
53 | add_expected_result( | |
92f5a8d4 TL |
54 | ".*", // compiler |
55 | ".*", // stdlib | |
56 | ".*", // platform | |
57 | ".*gmp_float<18>.*", // test type(s) | |
58 | ".*", // test data group | |
59 | ".*", // test function | |
60 | 500, // Max Peek error | |
61 | 100); // Max mean error | |
7c673cae | 62 | add_expected_result( |
92f5a8d4 TL |
63 | ".*", // compiler |
64 | ".*", // stdlib | |
65 | ".*", // platform | |
66 | ".*mpfr_float_backend<18>.*", // test type(s) | |
67 | ".*", // test data group | |
68 | ".*", // test function | |
69 | 500, // Max Peek error | |
70 | 100); // Max mean error | |
7c673cae | 71 | add_expected_result( |
92f5a8d4 TL |
72 | ".*", // compiler |
73 | ".*", // stdlib | |
74 | ".*", // platform | |
75 | ".*", // test type(s) | |
76 | ".*", // test data group | |
77 | ".*", // test function | |
78 | 8, // Max Peek error | |
79 | 5); // Max mean error | |
7c673cae FG |
80 | |
81 | // | |
82 | // Finish off by printing out the compiler/stdlib/platform names, | |
83 | // we do this to make it easier to mark up expected error rates. | |
84 | // | |
85 | std::cout << "Tests run with " << BOOST_COMPILER << ", " | |
92f5a8d4 | 86 | << BOOST_STDLIB << ", " << BOOST_PLATFORM << std::endl; |
7c673cae FG |
87 | } |
88 | ||
92f5a8d4 | 89 | BOOST_AUTO_TEST_CASE(test_main) |
7c673cae FG |
90 | { |
91 | using namespace boost::multiprecision; | |
92 | expected_results(); | |
93 | // | |
94 | // Test at: | |
95 | // 18 decimal digits: tests 80-bit long double approximations | |
96 | // 30 decimal digits: tests 128-bit long double approximations | |
97 | // 35 decimal digits: tests arbitrary precision code | |
98 | // | |
99 | ALL_TESTS | |
100 | } |