Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost.Test: floating point comparison using absolute diference
From: Raffi Enficiaud (raffi.enficiaud_at_[hidden])
Date: 2017-12-29 19:37:01


Le 29.12.17 à 17:33, Georgios Sermaidis via Boost-users a écrit :
> Hi all,
>
> I am trying to find a way to make the boost unit test framework use an
> absolute difference for floating point comparison instead of the
> relative difference. 
> I searched the documentation to try to find a suitable decorator but
> couldn’t find anything. Any help is much appreciated!
>
> #defineBOOST_TEST_MODULEexample
>
> #include<boost/test/included/unit_test.hpp>
>
>
> //boost::unit_test::toleranceusesrelativedifference and hence this test
> will pass; 
>
> // isthereanythingIcanusehereto indicateabsolutedifference?
>
> BOOST_AUTO_TEST_CASE(my_test,*boost::unit_test::tolerance(0.1))
>
> {
>
>
> BOOST_TEST(10.1==10.3);
>
> }

What you want to do is discussed here in the doc:
http://www.boost.org/doc/libs/1_66_0/libs/test/doc/html/boost_test/testing_tools/extended_comparison/floating_point/floating_points_comparison_impl.html

You may just use

BOOST_TEST(left - right == .0, boost::unit_test::tolerance(0.1));

and I think it should use absolute tolerance on the absolute value of
left-right.

If nothing works, there is always the good old comparison:
BOOST_TEST((std::abs(left - right) < 0.1))

Note the double parenthesis, in this case BOOST_TEST will see only the
evaluation of the expression inside, which is cast to bool (less
elegant, but should work as last resort).

Raffi


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