|
Boost : |
Subject: Re: [boost] [math] boost::math::isfinite fails with --fast-math
From: Gaetano Mendola (mendola_at_[hidden])
Date: 2012-11-26 08:33:45
On 11/26/2012 02:13 PM, John Maddock 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:
#include <boost/math/special_functions/fpclassify.hpp>
int main() {
const float a = 0.0f/0.0f;
std::cout << "a => " << a << std::endl;
std::cout << "boost::math::isfinite(a) => " << boost::math::isfinite(a) << std::endl;
std::cout << "a != a: " << (a!=a ? "true" : "false") << std::endl;
}
gives:
a => nan
boost::math::isfinite(a) => 1
a != a: true
so I believe somehow even with --fast-math it should be possible to make it
"working" (if it has to be).
Gaetano
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk