bool w_base_t::is_nan(const f8_t x) { bool value = false; #if defined(MacOSX) && W_GCC_THIS_VER >= W_GCC_VER(3,0) value = __isnand(x); #else value = ::isnan(x); #endif return value; }
bool w_base_t::is_infinite(const f8_t x) { bool value = false; #if defined(SOLARIS2) value = !finite(x) && !isnand(x); #elif defined(MacOSX) && W_GCC_THIS_VER >= W_GCC_VER(3,0) value = !finite(x) && !__isnand(x); #else value = !finite(x) && !isnan(x); #endif return value; }
bool isnan( double x ) { return __isnand( x ); // isnan() is a macro in Cygwin (as required by C99) }
__MATH_FUNCTIONS_DBL_PTX3_DECL__ int __isnan(/* we do not support long double yet, hence double */double a) { return __isnand((double)a); }