mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-08-26 16:16:36 -04:00
81 lines
2.4 KiB
C++
81 lines
2.4 KiB
C++
|
|
||
|
// 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 <boost/config.hpp>
|
||
|
#include <boost/version.hpp>
|
||
|
|
||
|
#include <iostream>
|
||
|
#include <limits>
|
||
|
|
||
|
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<double>::digits10;
|
||
|
std::cout << "std::numeric_limits<double>::digits10 = " << digits10 << std::endl;
|
||
|
|
||
|
#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
|
||
|
// OK to use C++11 max_digits10;
|
||
|
int max_digits10 = std::numeric_limits<double>::max_digits10;
|
||
|
std::cout << "std::numeric_limits<double>::max_digits10 = " << max_digits10 << std::endl;
|
||
|
#else
|
||
|
// No support for max_digits10; so use Kahan formula instead.
|
||
|
int max_digits10 = 2 + std::numeric_limits<double>::digits * 3010/10000;
|
||
|
std::cout << "2 + std::numeric_limits<double>::digits * 3010/10000; = " <<
|
||
|
2 + std::numeric_limits<double>::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<double>::digits10 = 15
|
||
|
std::numeric_limits<double>::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<double>::digits10 = 15
|
||
|
1> std::numeric_limits<double>::max_digits10 = 17
|
||
|
|
||
|
|
||
|
*/
|