> On Apr 13, 2016, at 7:03 PM, Kacper Gutowski <mwgam...@gmail.com> wrote:
> 
> On Thu, Apr 14, 2016 at 1:54 AM, Xiao-Yong Jin wrote:
>> Exactly so.  ‘-Ofast -fno-finite-math-only’ gives correct results.
>> What’s going on here?  I don’t expect this has anything to do with NaN or 
>> Inf.
> 
> pow(-8., 1./3) is nan.
> And -ffinite-math-only eliminates isfinite check at FloatCell.cc:422.

That explains it.  Thanks.

Here is some amusement:

g++ -Ofast -fno-unsafe-math-optimizations:
    pow(-8., 1./3.)  =>  nan
    isfinite         =>  1

g++ -Ofast -fno-unsafe-math-optimizations -fno-finite-math-only:
    pow(-8., 1./3.)  =>  nan
    isfinite         =>  0

g++ -Ofast -fno-finite-math-only:
    pow(-8., 1./3.)  =>  -2
    isfinite         =>  1

clang++ -march=native -Ofast:
    pow(-8., 1./3.)  =>  nan
    isfinite         =>  0

Reply via email to