Boost logo

Boost Users :

Subject: [Boost-users] [test] floating point comparison
From: Matthijs Möhlmann (matthijs_at_[hidden])
Date: 2013-10-30 09:40:07


Hello all,

I've the following test program:

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE Master test suite
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE(TestCase) {

     BOOST_REQUIRE_CLOSE_FRACTION(45.00f, 45.17f, 0.004f);
}

When I compile it with the following line:
g++ -o main.o -c -Werror -Wall -std=c++11 -fvisibility=hidden
-fvisibility-inlines-hidden -DBOOST_SPIRIT_USE_PHOENIX_V3 -DUTEST -g
main.cpp
g++ -o main main.o -lboost_unit_test_framework

I get the following output:
Running 1 test case...

*** No errors detected

If I lower the tolerance to 0.0004f then I'll get the following:
Running 1 test case...
main.cpp(8): fatal error in "TestCase": difference{0.00376352} between
45.00f{45} and 45.17f{45.1699982} exceeds 0.00039999999

*** 1 failure detected in test suite "Master test suite"

Why does it say that the difference is 0.00376352 and not 0.17....... ?

Regards,

Matthijs Möhlmann


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net