Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / multiprecision / test / test_numeric_limits.cpp
index 23046e8..8ec395d 100644 (file)
@@ -4,27 +4,27 @@
 //  LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt
 
 #ifdef _MSC_VER
-#  define _SCL_SECURE_NO_WARNINGS
+#define _SCL_SECURE_NO_WARNINGS
 #endif
 
 #include "test.hpp"
 
-#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) && \
-   !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \
-   !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50) &&!defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
-#  define TEST_MPF_50
-#  define TEST_MPF
-#  define TEST_BACKEND
-#  define TEST_MPZ
-#  define TEST_MPFR
-#  define TEST_MPFR_50
-#  define TEST_CPP_DEC_FLOAT
-#  define TEST_MPQ
-#  define TEST_TOMMATH
-#  define TEST_CPP_INT
-#  define TEST_MPFI_50
-#  define TEST_FLOAT128
-#  define TEST_CPP_BIN_FLOAT
+#if !defined(TEST_MPF_50) && !defined(TEST_MPF) && !defined(TEST_BACKEND) && !defined(TEST_MPZ) &&         \
+    !defined(TEST_CPP_DEC_FLOAT) && !defined(TEST_MPFR) && !defined(TEST_MPFR_50) && !defined(TEST_MPQ) && \
+    !defined(TEST_TOMMATH) && !defined(TEST_CPP_INT) && !defined(TEST_MPFI_50) && !defined(TEST_FLOAT128) && !defined(TEST_CPP_BIN_FLOAT)
+#define TEST_MPF_50
+#define TEST_MPF
+#define TEST_BACKEND
+#define TEST_MPZ
+#define TEST_MPFR
+#define TEST_MPFR_50
+#define TEST_CPP_DEC_FLOAT
+#define TEST_MPQ
+#define TEST_TOMMATH
+#define TEST_CPP_INT
+#define TEST_MPFI_50
+#define TEST_FLOAT128
+#define TEST_CPP_BIN_FLOAT
 
 #ifdef _MSC_VER
 #pragma message("CAUTION!!: No backend type specified so testing everything.... this will take some time!!")
 #endif
 
 #ifdef BOOST_MSVC
-#pragma warning(disable:4127)
+#pragma warning(disable : 4127)
 #endif
 
-#define PRINT(x)\
+#define PRINT(x) \
    std::cout << BOOST_STRINGIZE(x) << " = " << std::numeric_limits<Number>::x << std::endl;
 
 template <class Number>
@@ -83,9 +83,9 @@ void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_flo
    BOOST_CHECK((boost::math::isnormal)(sqrt(minv)));
    BOOST_CHECK((boost::math::isnormal)(sqrt(maxv)));
 
-   if(std::numeric_limits<Number>::is_specialized)
+   if (std::numeric_limits<Number>::is_specialized)
    {
-      if(std::numeric_limits<Number>::has_quiet_NaN)
+      if (std::numeric_limits<Number>::has_quiet_NaN)
       {
          BOOST_TEST((boost::math::isnan)(std::numeric_limits<Number>::quiet_NaN()));
          BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits<Number>::quiet_NaN()));
@@ -93,7 +93,7 @@ void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_flo
          BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits<Number>::quiet_NaN()));
          BOOST_TEST(!(boost::math::isinf)(std::numeric_limits<Number>::quiet_NaN()));
       }
-      if(std::numeric_limits<Number>::has_signaling_NaN)
+      if (std::numeric_limits<Number>::has_signaling_NaN)
       {
          BOOST_TEST((boost::math::isnan)(std::numeric_limits<Number>::signaling_NaN()));
          BOOST_TEST(FP_NAN == (boost::math::fpclassify)(std::numeric_limits<Number>::signaling_NaN()));
@@ -101,7 +101,7 @@ void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_flo
          BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits<Number>::signaling_NaN()));
          BOOST_TEST(!(boost::math::isinf)(std::numeric_limits<Number>::signaling_NaN()));
       }
-      if(std::numeric_limits<Number>::has_infinity)
+      if (std::numeric_limits<Number>::has_infinity)
       {
          BOOST_TEST((boost::math::isinf)(std::numeric_limits<Number>::infinity()));
          BOOST_TEST(FP_INFINITE == (boost::math::fpclassify)(std::numeric_limits<Number>::infinity()));
@@ -109,16 +109,16 @@ void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_flo
          BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits<Number>::infinity()));
          BOOST_TEST(!(boost::math::isnan)(std::numeric_limits<Number>::infinity()));
       }
-      if(std::numeric_limits<Number>::has_denorm == std::denorm_present)
+      if (std::numeric_limits<Number>::has_denorm == std::denorm_present)
       {
          BOOST_TEST(FP_SUBNORMAL == (boost::math::fpclassify)(std::numeric_limits<Number>::denorm_min()));
-         BOOST_TEST(FP_SUBNORMAL == (boost::math::fpclassify)(std::numeric_limits<Number>::min() / 2));
+         BOOST_TEST(FP_SUBNORMAL == (boost::math::fpclassify)((std::numeric_limits<Number>::min)() / 2));
          BOOST_TEST((boost::math::isfinite)(std::numeric_limits<Number>::denorm_min()));
          BOOST_TEST(!(boost::math::isnormal)(std::numeric_limits<Number>::denorm_min()));
          BOOST_TEST(!(boost::math::isinf)(std::numeric_limits<Number>::denorm_min()));
          BOOST_TEST(!(boost::math::isnan)(std::numeric_limits<Number>::denorm_min()));
          BOOST_TEST(0 == std::numeric_limits<Number>::denorm_min() / 2);
-         BOOST_TEST(0 != std::numeric_limits<Number>::min() / 2);
+         BOOST_TEST(0 != (std::numeric_limits<Number>::min)() / 2);
          BOOST_TEST(0 != std::numeric_limits<Number>::denorm_min());
       }
    }
@@ -135,11 +135,11 @@ void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_flo
    BOOST_TEST(!(boost::math::isinf)(n));
    BOOST_TEST(!(boost::math::isnan)(n));
 
-   if(std::numeric_limits<Number>::round_style == std::round_to_nearest)
+   if (std::numeric_limits<Number>::round_style == std::round_to_nearest)
    {
       BOOST_CHECK_EQUAL(std::numeric_limits<Number>::round_error(), 0.5);
    }
-   else if(std::numeric_limits<Number>::round_style != std::round_indeterminate)
+   else if (std::numeric_limits<Number>::round_style != std::round_indeterminate)
    {
       // Round error is 1.0:
       BOOST_CHECK_EQUAL(std::numeric_limits<Number>::round_error(), 1);
@@ -154,9 +154,9 @@ void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_flo
 template <class Number>
 void test_specific(const boost::mpl::int_<boost::multiprecision::number_kind_integer>&)
 {
-   if(std::numeric_limits<Number>::is_modulo)
+   if (std::numeric_limits<Number>::is_modulo)
    {
-      if(!std::numeric_limits<Number>::is_signed)
+      if (!std::numeric_limits<Number>::is_signed)
       {
          BOOST_TEST(1 + (std::numeric_limits<Number>::max)() == 0);
          BOOST_TEST(--Number(0) == (std::numeric_limits<Number>::max)());
@@ -173,10 +173,10 @@ template <class Number>
 void test()
 {
    typedef typename boost::mpl::if_c<
-      std::numeric_limits<Number>::is_specialized,
-      typename boost::multiprecision::number_category<Number>::type,
-      boost::mpl::int_<500> // not a number type
-   >::type fp_test_type;
+       std::numeric_limits<Number>::is_specialized,
+       typename boost::multiprecision::number_category<Number>::type,
+       boost::mpl::int_<500> // not a number type
+       >::type fp_test_type;
 
    test_specific<Number>(fp_test_type());
 
@@ -186,17 +186,20 @@ void test()
    std::cout << "numeric_limits values for type " << typeid(Number).name() << std::endl;
 
    PRINT(is_specialized);
-   if(std::numeric_limits<Number>::is_integer)
+   if (std::numeric_limits<Number>::is_integer)
    {
       std::cout << std::hex << std::showbase;
    }
-   std::cout << "max()" << " = " << (std::numeric_limits<Number>::max)() << std::endl;
-   if(std::numeric_limits<Number>::is_integer)
+   std::cout << "max()"
+             << " = " << (std::numeric_limits<Number>::max)() << std::endl;
+   if (std::numeric_limits<Number>::is_integer)
    {
       std::cout << std::dec;
    }
-   std::cout << "max()" << " = " << (std::numeric_limits<Number>::max)() << std::endl;
-   std::cout << "min()" << " = " << (std::numeric_limits<Number>::min)() << std::endl;
+   std::cout << "max()"
+             << " = " << (std::numeric_limits<Number>::max)() << std::endl;
+   std::cout << "min()"
+             << " = " << (std::numeric_limits<Number>::min)() << std::endl;
 #ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
    PRINT(lowest());
 #endif
@@ -232,7 +235,6 @@ void test()
    PRINT(round_style);
 }
 
-
 int main()
 {
 #ifdef TEST_BACKEND
@@ -289,4 +291,3 @@ int main()
 #endif
    return boost::report_errors();
 }
-