Boost logo

Boost :

Subject: Re: [boost] [math] boost::math::isfinite fails with --fast-math
From: Gaetano Mendola (mendola_at_[hidden])
Date: 2012-11-26 09:07:13


On 11/26/2012 02:42 PM, Tim Blechmann wrote:
>>>> I'm wandering if this is to be expected, the following code
>>>> fails if compiled with --fast-math:
>>>>
>>>> //====================================================
>>>> #include <boost/math/special_functions/fpclassify.hpp>
>>>> int main() {
>>>> const float a = 0.0f/0.0f;
>>>> assert(not boost::math::isfinite(a));
>>>> }
>>>
>>> Which fails - does the 0/0 actually yield an infinity? Or is it isfinite that fails?
>>>
>>> Either way is hard to make guarentees once you enable an option like that.
>>
>> The following code:
>>
> [snip]
>>
>> so I believe somehow even with --fast-math it should be possible to make it
>> "working" (if it has to be).
>
> rtfm: you asked the compiler to assume that neither arguments nor
> results are NaNs or Infs. if your code uses or generates NaNs or Infs
> its behavior is undefined.

rtfp (p = post): I'm saying that "if it has to be fixed" somehow boost::math::isfinite
can still detect if a float has a "nan" configuration I was even asking if that was
expected behavior by "boost::math::isfinite" or not.

If boost::math::isfinite has to be "compatible" with ::isfinite() then yes it's normal,
this can be specified in the boost documentation.

Gaetano


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk