From cea2be8023f924ecf507792c505725cbb893635f Mon Sep 17 00:00:00 2001 From: Beman Date: Sat, 14 Mar 2015 09:01:55 -0400 Subject: [PATCH] Add auto_test cases lowest(), epsilon(), 0.0, -0.0, 1.0, -1.0 --- test/floating_point_test.cpp | 44 +++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/test/floating_point_test.cpp b/test/floating_point_test.cpp index 463a968..13d9df9 100644 --- a/test/floating_point_test.cpp +++ b/test/floating_point_test.cpp @@ -116,7 +116,7 @@ namespace return tmp; } - const std::size_t n_test_cases = 10; + const std::size_t n_test_cases = 16; boost::array, n_test_cases> float_test_cases; boost::array, n_test_cases> double_test_cases; @@ -125,6 +125,10 @@ namespace using namespace boost::math::constants; int i = 0; +// template for cut-and-paste of new values +// float_test_cases[i].assign("", , "", ""); +// double_test_cases[i++].assign("", , "", ""); + float_test_cases[i].assign("numeric_limits::min()", numeric_limits::min(), "00800000", "00008000"); double_test_cases[i++].assign("numeric_limits::min()", @@ -135,6 +139,16 @@ namespace double_test_cases[i++].assign("numeric_limits::max()", numeric_limits::max(), "7fefffffffffffff", "ffffffffffffef7f"); + float_test_cases[i].assign("numeric_limits::lowest()", + numeric_limits::lowest(), "ff7fffff", "ffff7fff"); + double_test_cases[i++].assign("numeric_limits::lowest()", + numeric_limits::lowest(), "ffefffffffffffff", "ffffffffffffefff"); + + float_test_cases[i].assign("numeric_limits::epsilon()", + numeric_limits::epsilon(), "34000000", "00000034"); + double_test_cases[i++].assign("numeric_limits::epsilon()", + numeric_limits::epsilon(), "3cb0000000000000", "000000000000b03c"); + float_test_cases[i].assign("numeric_limits::round_error()", numeric_limits::round_error(), "3f000000", "0000003f"); double_test_cases[i++].assign("numeric_limits::round_error()", @@ -165,10 +179,17 @@ namespace double_test_cases[i++].assign("numeric_limits::denorm_min()", numeric_limits::denorm_min(), "0000000000000001", "0100000000000000"); - float_test_cases[i].assign("pi()", - pi(), "40490fdb", "db0f4940"); - double_test_cases[i++].assign("pi()", - pi(), "400921fb54442d18", "182d4454fb210940"); + float_test_cases[i].assign("0.0f", 0.0f, "00000000", "00000000"); + double_test_cases[i++].assign("0.0", 0.0, "0000000000000000", "0000000000000000"); + + float_test_cases[i].assign("-0.0f", -0.0f, "80000000", "00000080"); + double_test_cases[i++].assign("-0.0", -0.0, "8000000000000000", "0000000000000080"); + + float_test_cases[i].assign("1.0f", 1.0f, "3f800000", "0000803f"); + double_test_cases[i++].assign("1.0", 1.0, "3ff0000000000000", "000000000000f03f"); + + float_test_cases[i].assign("-1.0f", -1.0f, "bf800000", "000080bf"); + double_test_cases[i++].assign("-1.0", -1.0, "bff0000000000000", "000000000000f0bf"); uint32_t vf1 (0x12345678U); float_test_cases[i].assign("native uint32_t 0x12345678U as float", @@ -177,6 +198,11 @@ namespace double_test_cases[i++].assign("native uint64_t 0x0123456789abcdefULL as double", *reinterpret_cast(&vd1), "0123456789abcdef", "efcdab8967452301"); + float_test_cases[i].assign("pi()", + pi(), "40490fdb", "db0f4940"); + double_test_cases[i++].assign("pi()", + pi(), "400921fb54442d18", "182d4454fb210940"); + BOOST_ASSERT(i == n_test_cases); } @@ -211,7 +237,7 @@ namespace cout << " has_denorm " << numeric_limits::has_denorm << "\n"; cout << " digits " << numeric_limits::digits << "\n"; cout << " digits10 " << numeric_limits::digits10 << "\n"; -// cout << " max_digits10 " << numeric_limits::max_digits10 << "\n"; + cout << " max_digits10 " << numeric_limits::max_digits10 << "\n"; cout << " radix " << numeric_limits::radix << "\n"; cout << " min_exponent " << numeric_limits::min_exponent << "\n"; cout << " min_exponent10 " << numeric_limits::min_exponent10 << "\n"; @@ -219,8 +245,8 @@ namespace cout << " max_exponent10 " << numeric_limits::max_exponent10 << "\n"; show_value("min()", numeric_limits::min()); show_value("max()", numeric_limits::max()); -// show_value("lowest()", numeric_limits::lowest()); -// show_value("epsilon()", numeric_limits::epsilon()); + show_value("lowest()", numeric_limits::lowest()); + show_value("epsilon()", numeric_limits::epsilon()); show_value("round_error()", numeric_limits::round_error()); show_value("infinity()", numeric_limits::infinity()); show_value("-infinity()", -numeric_limits::infinity()); @@ -228,7 +254,9 @@ namespace show_value("signaling_NaN()", numeric_limits::signaling_NaN()); show_value("denorm_min()", numeric_limits::denorm_min()); show_value("0.0", static_cast(0.0)); + show_value("-0.0", static_cast(-0.0)); show_value("1.0", static_cast(1.0)); + show_value("-1.0", static_cast(-1.0)); show_value("pi()", pi()); }