> 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