diff --git a/lib/msun/ld128/s_exp2l.c b/lib/msun/ld128/s_exp2l.c index a94b89220737..31178e40624d 100644 --- a/lib/msun/ld128/s_exp2l.c +++ b/lib/msun/ld128/s_exp2l.c @@ -371,7 +371,7 @@ exp2l(long double x) if (u.xbits.manh != 0 || u.xbits.manl != 0 || (hx & 0x8000) == 0) - return (x); /* x is NaN or +Inf */ + return (x + x); /* x is NaN or +Inf */ else return (0.0); /* x is -Inf */ } diff --git a/lib/msun/ld80/s_exp2l.c b/lib/msun/ld80/s_exp2l.c index 8a0dbe2d3309..14dfc1d87f21 100644 --- a/lib/msun/ld80/s_exp2l.c +++ b/lib/msun/ld80/s_exp2l.c @@ -226,7 +226,7 @@ exp2l(long double x) if (ix >= BIAS + 14) { /* |x| >= 16384 or x is NaN */ if (ix == BIAS + LDBL_MAX_EXP) { if (u.xbits.man != 1ULL << 63 || (hx & 0x8000) == 0) - return (x); /* x is NaN or +Inf */ + return (x + x); /* x is +Inf or NaN */ else return (0.0); /* x is -Inf */ } diff --git a/lib/msun/src/s_exp2.c b/lib/msun/src/s_exp2.c index 63b8997cfd97..c46750f42ba0 100644 --- a/lib/msun/src/s_exp2.c +++ b/lib/msun/src/s_exp2.c @@ -351,7 +351,7 @@ exp2(double x) if(ix >= 0x7ff00000) { GET_LOW_WORD(lx,x); if(((ix & 0xfffff) | lx) != 0 || (hx & 0x80000000) == 0) - return (x); /* x is NaN or +Inf */ + return (x + x); /* x is NaN or +Inf */ else return (0.0); /* x is -Inf */ } diff --git a/lib/msun/src/s_exp2f.c b/lib/msun/src/s_exp2f.c index 1b9299f56e36..43da2f6b66f6 100644 --- a/lib/msun/src/s_exp2f.c +++ b/lib/msun/src/s_exp2f.c @@ -104,7 +104,7 @@ exp2f(float x) if(ix >= 0x43000000) { /* |x| >= 128 */ if(ix >= 0x7f800000) { if ((ix & 0x7fffff) != 0 || (hx & 0x80000000) == 0) - return (x); /* x is NaN or +Inf */ + return (x + x); /* x is NaN or +Inf */ else return (0.0); /* x is -Inf */ }