avoid relational operations with NaNs, they may signal

[SVN r9784]
This commit is contained in:
Jens Maurer
2001-04-15 17:24:26 +00:00
parent 0fbd83f68a
commit 0a9bcfa89d

View File

@@ -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));
}