From 0a9bcfa89dfce398d1b4da8bc1e5db300f5da1e0 Mon Sep 17 00:00:00 2001 From: Jens Maurer Date: Sun, 15 Apr 2001 17:24:26 +0000 Subject: [PATCH] avoid relational operations with NaNs, they may signal [SVN r9784] --- limits_test.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/limits_test.cpp b/limits_test.cpp index fda600a0..3edd3d6d 100644 --- a/limits_test.cpp +++ b/limits_test.cpp @@ -96,13 +96,18 @@ void test_float_limits(const T &, const char * msg) BOOST_TEST(lim::min() < 0.001); BOOST_TEST(lim::min() > 0); - // NaNs shall always compare "false" + // NaNs shall always compare "false" when compared for equality // If one of these fail, your compiler may be optimizing incorrectly - BOOST_TEST(! (qnan < 42)); - BOOST_TEST(! (qnan > 42)); - BOOST_TEST(! (qnan <= 42)); - BOOST_TEST(! (qnan >= 42)); + BOOST_TEST(! (qnan == 42)); BOOST_TEST(! (qnan == qnan)); + BOOST_TEST(qnan != 42); + BOOST_TEST(qnan != qnan); + + // The following tests may cause arithmetic traps etc. Avoid for now. + // BOOST_TEST(! (qnan < 42)); + // BOOST_TEST(! (qnan > 42)); + // BOOST_TEST(! (qnan <= 42)); + // BOOST_TEST(! (qnan >= 42)); }