diff --git a/newlib/libm/math/e_pow.c b/newlib/libm/math/e_pow.c index 0e2251f10..b21726007 100644 --- a/newlib/libm/math/e_pow.c +++ b/newlib/libm/math/e_pow.c @@ -198,8 +198,11 @@ ivln2_l = 1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/ /* |y| is huge */ if(iy>0x42000000) { /* if |y| > ~2**33 (does not regard mantissa) */ if(iy>0x43f00000){ /* if |y| > ~2**64, must o/uflow and y is an even integer */ - if(ix<=0x3fefffff) return (hy<0)? __math_oflow(0):__math_uflow(0); - if(ix>=0x3ff00000) return (hy>0)? __math_oflow(0):__math_uflow(0); + if(ix<=0x3fefffff) { /* |x| < 1 */ + return (hy<0)? __math_oflow(0):__math_uflow(0); + } else { /* |x| >= 1 */ + return (hy>0)? __math_oflow(0):__math_uflow(0); + } } /* over/underflow if x is not close to one */ if(ix<0x3fefffff) return (hy<0)? __math_oflow(sign<0):__math_uflow(sign<0);