|
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