// Copyright 2013 John Maddock. Distributed under the Boost // Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_ #ifndef BOOST_MP_MATH_SETUP_HPP #define BOOST_MP_MATH_SETUP_HPP #ifdef _MSC_VER # define _SCL_SECURE_NO_WARNINGS #endif #define BOOST_MATH_OVERFLOW_ERROR_POLICY ignore_error #define BOOST_MATH_SMALL_CONSTANT(x) x #if !defined(TEST_MPF_50) && !defined(TEST_BACKEND) && !defined(TEST_CPP_DEC_FLOAT) \ && !defined(TEST_MPFR_50) && !defined(TEST_FLOAT128) # define TEST_MPF_50 # define TEST_MPFR_50 # define TEST_CPP_DEC_FLOAT # define TEST_FLOAT128 #ifdef _MSC_VER #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!") #endif #ifdef __GNUC__ #pragma warning "CAUTION!!: No backend type specified so testing everything.... this will take some time!!" #endif #endif #if defined(TEST_MPF_50) #include #define MPF_TESTS test(number >(), "number >");\ test(number >(), "number >");\ test(number >(), "number >");\ /* there should be at least one test with expression templates off: */ \ test(number, et_off>(), "number, et_off>"); #define MPF_SMALL_TESTS /*test(number >(), "number >");*/\ test(number >(), "number >");\ test(number >(), "number >");\ /* there should be at least one test with expression templates off: */ \ test(number, et_off>(), "number, et_off>"); typedef boost::multiprecision::number > test_type_1; typedef boost::multiprecision::number > test_type_2; typedef boost::multiprecision::number > test_type_3; typedef boost::multiprecision::number, boost::multiprecision::et_off> test_type_4; #else #define MPF_TESTS #define MPF_SMALL_TESTS #endif #if defined(TEST_MPFR_50) #include #define MPFR_TESTS test(number >(), "number >");\ test(number >(), "number >");\ test(number >(), "number >"); typedef boost::multiprecision::number > test_type_1; typedef boost::multiprecision::number > test_type_2; typedef boost::multiprecision::number > test_type_3; #else #define MPFR_TESTS #endif #ifdef TEST_BACKEND #include #endif #ifdef TEST_CPP_DEC_FLOAT #include #define CPP_DEC_FLOAT_TESTS test(number >(), "number >");\ test(number >(), "number >");\ test(number > >(), "number > >"); typedef boost::multiprecision::number > test_type_1; typedef boost::multiprecision::number > test_type_2; typedef boost::multiprecision::number > > test_type_3; #else #define CPP_DEC_FLOAT_TESTS #endif #ifdef TEST_FLOAT128 #include #define FLOAT128_TESTS test(float128(), "float128"); typedef boost::multiprecision::float128 test_type_1; #else #define FLOAT128_TESTS #endif #ifndef BOOST_MATH_TEST_TYPE #define BOOST_TEST_MAIN #include #include #endif #define ALL_TESTS \ MPF_TESTS\ MPFR_TESTS\ CPP_DEC_FLOAT_TESTS\ FLOAT128_TESTS #define ALL_SMALL_TESTS\ MPF_SMALL_TESTS\ MPFR_TESTS\ CPP_DEC_FLOAT_TESTS\ FLOAT128_TESTS #endif