Subject: [Boost-users] [Boost.Test] Floating point NAN comparison
From: Brian O'Kennedy (brokenn_at_[hidden])
Date: 2010-04-07 10:16:10


Hi,

This bit of Boost.Test code fails:

//////////////////////////////////////////////////////////////////////
BOOST_AUTO_TEST_CASE( nantest )
{
  float a,b;
  a = b = 1.0;
  BOOST_CHECK_EQUAL( a, b ); // passes
  a = b = NAN;
  BOOST_CHECK_EQUAL( a, b ); // fails
}
//////////////////////////////////////////////////////////////////////

The failure is because, by definition, NAN != NAN. What I'm after is a test
macro which takes this into account and will pass the equality test when
both elements are NAN.

BOOST_CHECK_CLOSE has the same behaviour. Is the best solution to write my
own custom predicate?

Brian