On Mac OS X 10.10.5 using Intel compiler version 16.0.0 the functions __builtin_isnan, __builtin_isinf, and __bultin_isfinite are not implemented correctly.
Here is a minimal test-case against the Intel compiler:
#include <iostream> #include <cmath> int main(int argc, char const * argv[]) { std::cout << std::isnan(0.0/0.0) << ""<< __builtin_isnan(0.0/0.0) << "\n"<< std::isinf(1.0/0.0) << ""<< __builtin_isinf(1.0/0.0) << "\n"<< std::isfinite(1.0/0.0) << ""<< __builtin_isfinite(1.0/0.0) << "\n"; }
which when compiled with icpc -fp-model strict test.cpp -o test prints
1 0 1 0 0 1
Thanks.