From f14a00699ca7a02028e85fb11638ff5f4a344dd7 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Sun, 4 Dec 2005 20:02:08 +0000 Subject: [PATCH] Test for hashing 1+epsilon, following recent boost-dev comments on Darwin gcc-4.0's long double. [SVN r31907] --- hash/test/hash_float_test.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/hash/test/hash_float_test.cpp b/hash/test/hash_float_test.cpp index 3e1dd42..3dee9d6 100644 --- a/hash/test/hash_float_test.cpp +++ b/hash/test/hash_float_test.cpp @@ -23,8 +23,16 @@ template void float_tests(char const* name, T* = 0) { std::cout<<"\n" - "Testing " BOOST_STRINGIZE(HASH_NAMESPACE) "::hash<"<\n" - "\n"; + <<"Testing " BOOST_STRINGIZE(HASH_NAMESPACE) "::hash<"<\n" + <<"\n" + <<"std::numeric_limits::digits = " + <::digits<<"\n" + <<"std::numeric_limits::digits = " + <::digits<<"\n" + <<"std::numeric_limits::digits = " + <::digits<<"\n" + <<"\n" + ; HASH_NAMESPACE::hash x1; @@ -126,10 +134,17 @@ void float_tests(char const* name, T* = 0) BOOST_CHECK(x1(v1) == HASH_NAMESPACE::hash_value(v1)); BOOST_CHECK(x1(v2) == HASH_NAMESPACE::hash_value(v2)); - BOOST_CHECK(x1(std::numeric_limits::epsilon()) != x1((T) 0)); BOOST_CHECK(x1(std::numeric_limits::epsilon()) == HASH_NAMESPACE::hash_value(std::numeric_limits::epsilon())); + BOOST_CHECK(x1(std::numeric_limits::epsilon()) != x1((T) 0)); + if(x1(std::numeric_limits::epsilon()) == x1((T)0)) + std::cout<<"x1(epsilon) == x1(0) == "<::epsilon())<<"\n"; + + BOOST_CHECK(x1(std::numeric_limits::epsilon()) != x1((T) 1)); + if(x1(std::numeric_limits::epsilon()) == x1((T)1)) + std::cout<<"x1(epsilon) == x1(1) == "<::epsilon())<<"\n"; + // As before. if(std::numeric_limits::has_denorm) { if(x1(std::numeric_limits::denorm_min()) == x1(zero)) {