diff --git a/Foundation/include/Poco/FPEnvironment_C99.h b/Foundation/include/Poco/FPEnvironment_C99.h index 74f819c05..b94ecb5a3 100644 --- a/Foundation/include/Poco/FPEnvironment_C99.h +++ b/Foundation/include/Poco/FPEnvironment_C99.h @@ -31,22 +31,22 @@ class FPEnvironmentImpl protected: enum RoundingModeImpl { -#ifdef FE_DOWNWARD +#if defined(FE_DOWNWARD) FP_ROUND_DOWNWARD_IMPL = FE_DOWNWARD, #else FP_ROUND_DOWNWARD_IMPL = 0, #endif -#ifdef FE_UPWARD +#if defined(FE_UPWARD) FP_ROUND_UPWARD_IMPL = FE_UPWARD, #else FP_ROUND_UPWARD_IMPL = 0, #endif -#ifdef FE_TONEAREST +#if defined(FE_TONEAREST) FP_ROUND_TONEAREST_IMPL = FE_TONEAREST, #else FP_ROUND_TONEAREST_IMPL = 0, #endif -#ifdef FE_TOWARDZERO +#if defined(FE_TOWARDZERO) FP_ROUND_TOWARDZERO_IMPL = FE_TOWARDZERO #else FP_ROUND_TOWARDZERO_IMPL = 0 @@ -54,27 +54,27 @@ protected: }; enum FlagImpl { -#ifdef FE_DIVBYZERO +#if defined(FE_DIVBYZERO) FP_DIVIDE_BY_ZERO_IMPL = FE_DIVBYZERO, #else FP_DIVIDE_BY_ZERO_IMPL = 0, #endif -#ifdef FE_INEXACT +#if defined(FE_INEXACT) FP_INEXACT_IMPL = FE_INEXACT, #else FP_INEXACT_IMPL = 0, #endif -#ifdef FE_OVERFLOW +#if defined(FE_OVERFLOW) FP_OVERFLOW_IMPL = FE_OVERFLOW, #else FP_OVERFLOW_IMPL = 0, #endif -#ifdef FE_UNDERFLOW +#if defined(FE_UNDERFLOW) FP_UNDERFLOW_IMPL = FE_UNDERFLOW, #else FP_UNDERFLOW_IMPL = 0, #endif -#ifdef FE_INVALID +#if defined(FE_INVALID) FP_INVALID_IMPL = FE_INVALID #else FP_INVALID_IMPL = 0 @@ -109,37 +109,61 @@ private: // inline bool FPEnvironmentImpl::isInfiniteImpl(float value) { +#if POCO_OS == POCO_OS_AIX + return ::isinf(value) != 0; +#else return std::isinf(value) != 0; +#endif } inline bool FPEnvironmentImpl::isInfiniteImpl(double value) { +#if POCO_OS == POCO_OS_AIX + return ::isinf(value) != 0; +#else return std::isinf(value) != 0; +#endif } inline bool FPEnvironmentImpl::isInfiniteImpl(long double value) { +#if POCO_OS == POCO_OS_AIX + return ::isinf((double) value) != 0; +#else return std::isinf((double) value) != 0; +#endif } inline bool FPEnvironmentImpl::isNaNImpl(float value) { +#if POCO_OS == POCO_OS_AIX + return ::isnan(value) != 0; +#else return std::isnan(value) != 0; +#endif } inline bool FPEnvironmentImpl::isNaNImpl(double value) { +#if POCO_OS == POCO_OS_AIX + return ::isnan(value) != 0; +#else return std::isnan(value) != 0; +#endif } inline bool FPEnvironmentImpl::isNaNImpl(long double value) { +#if POCO_OS == POCO_OS_AIX + return ::isnan((double) value) != 0; +#else return std::isnan((double) value) != 0; +#endif }