// Copyright 2010 Paul A. Bristow // // 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_0.txt) /* Temporary test program to discover which platforms support numeric_limits digits10 and new max_digits10. This is needed to produce or select a macro to avoid compilation failure in Boost.Test for platforms that do not include either or both of these. BOOST_NO_CXX11_NUMERIC_LIMITS is tested here. [Boost C++ Libraries] #5758: Boost.Test Floating-point comparison diagnostic output does not support radix 10. */ #include #include #include #include int main() { std::cout << "Platform: " << BOOST_PLATFORM << '\n' << "Compiler: " << BOOST_COMPILER << '\n' << "STL : " << BOOST_STDLIB << '\n' << "Boost : " << BOOST_VERSION/100000 << "." << BOOST_VERSION/100 % 1000 << "." << BOOST_VERSION % 100 << std::endl; int digits10 = std::numeric_limits::digits10; std::cout << "std::numeric_limits::digits10 = " << digits10 << std::endl; #ifndef BOOST_NO_CXX11_NUMERIC_LIMITS // OK to use C++11 max_digits10; int max_digits10 = std::numeric_limits::max_digits10; std::cout << "std::numeric_limits::max_digits10 = " << max_digits10 << std::endl; #else // No support for max_digits10; so use Kahan formula instead. int max_digits10 = 2 + std::numeric_limits::digits * 3010/10000; std::cout << "2 + std::numeric_limits::digits * 3010/10000; = " << 2 + std::numeric_limits::digits * 3010/10000; #endif } // int main() /* Output: Description: Autorun "J:\Cpp\MathToolkit\test\Math_test\Debug\ztest_max_digits10.exe" Platform: Win32 Compiler: Microsoft Visual C++ version 10.0 STL : Dinkumware standard library version 520 Boost : 1.50.0 std::numeric_limits::digits10 = 15 std::numeric_limits::max_digits10 = 17 1> Description: Autorun "J:\Cpp\Misc\Debug\zztest_max_digits10.exe" 1> Platform: Win32 1> Compiler: Microsoft Visual C++ version 12.0 1> STL : Dinkumware standard library version 610 1> Boost : 1.55.0 1> std::numeric_limits::digits10 = 15 1> std::numeric_limits::max_digits10 = 17 */