diff --git a/src/math_special.cpp b/src/math_special.cpp index bf11a1ad45..d4abc36f25 100644 --- a/src/math_special.cpp +++ b/src/math_special.cpp @@ -538,6 +538,8 @@ double MathSpecial::exp2_x86(double x) double MathSpecial::fm_exp(double x) { #if defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) + if (x < -1022.0/FM_DOUBLE_LOG2OFE) return 0; + if (x > 1023.0/FM_DOUBLE_LOG2OFE) return INFINITY; return exp2_x86(FM_DOUBLE_LOG2OFE * x); #else return ::exp(x);