* ld80/s_expl.c:
. Fix the threshold for expl(x) where |x| is small. . Also update the previously incorrect comment to match the new threshold. * ld128/s_expl.c: . Re-order logic in exceptional cases to match the logic used in other long double functions. . Fix the threshold for expl(x) where is |x| is small. . Also update the previously incorrect comment to match the new threshold. Submitted by: bde Approved by: das (mentor)
This commit is contained in:
parent
724c1ee29f
commit
dba466c344
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=240866
@ -211,19 +211,16 @@ expl(long double x)
|
||||
ix = hx & 0x7fff;
|
||||
if (ix >= BIAS + 13) { /* |x| >= 8192 or x is NaN */
|
||||
if (ix == BIAS + LDBL_MAX_EXP) {
|
||||
if (u.xbits.manh != 0
|
||||
|| u.xbits.manl != 0
|
||||
|| (hx & 0x8000) == 0)
|
||||
return (x + x); /* x is NaN or +Inf */
|
||||
else
|
||||
return (0.0); /* x is -Inf */
|
||||
if (hx & 0x8000 && u.xbits.manh == 0 &&
|
||||
u.xbits.manl == 0)
|
||||
return (0.0L); /* x is -Inf */
|
||||
return (x + x); /* x is +Inf or NaN */
|
||||
}
|
||||
if (x > o_threshold)
|
||||
return (huge * huge);
|
||||
if (x < u_threshold)
|
||||
return (tiny * tiny);
|
||||
} else if (ix <= BIAS - 115) { /* |x| < 0x1p-33 */
|
||||
/* includes pseudo-denormals */
|
||||
} else if (ix < BIAS - 115) { /* |x| < 0x1p-115 */
|
||||
if (huge + x > 1.0L) /* trigger inexact iff x != 0 */
|
||||
return (1.0L + x);
|
||||
}
|
||||
|
@ -249,7 +249,7 @@ expl(long double x)
|
||||
return (huge * huge);
|
||||
if (x < u_threshold.e)
|
||||
return (tiny * tiny);
|
||||
} else if (ix <= BIAS - 34) { /* |x| < 0x1p-33 */
|
||||
} else if (ix < BIAS - 66) { /* |x| < 0x1p-66 */
|
||||
/* includes pseudo-denormals */
|
||||
if (huge + x > 1.0L) /* trigger inexact iff x != 0 */
|
||||
return (1.0L + x);
|
||||
|
Loading…
Reference in New Issue
Block a user