Boost logo

Boost Users :

From: John Maddock (john_at_[hidden])
Date: 2006-07-30 11:38:44


David Abrahams wrote:
> cybernet_at_[hidden] writes:
>
>> In:
>> /usr/include/boost/test/floating_point_comparison.hpp
>>
>> inside:
>>
>> template<typename FPT> inline FPT safe_fpt_division( FPT f1, FPT
>> f2 ){
>>
>> the warning is cause by the code:
>>
>> // Avoid underflow.
>> if( f1 == static_cast<FPT>(0) ||
>> f2 > static_cast<FPT>(1) && f1 < f2 *
>> (std::numeric_limits<FPT>::min)() )
>> return static_cast<FPT>(0);
>>
>> Could someone modify the code to allow it to compile without
>> warnings on g++?
>
> Try replacing
>
> f1 == static_cast<FPT>(0)
>
> with
>
> f1

Unfortunately that would make Boost.Test unusable with real-number types
that are classes not usable in boolian contexts (for example NTL::RR).

I was all set to suggest that the leading test for zero appears to be
superfluous in any case, but actually in this context it's not: we really do
want 0/0 to be 0 here since we're calculating relative error.

So I'm left with thinking that gcc is being unreasonable frankly and the
code should stay as it is?

John.


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