Fix ldbl-128ibm powl spurious underflows.

This commit is contained in:
Joseph Myers 2012-11-22 14:59:45 +00:00
parent 1468ded38e
commit ef1e0867c0
2 changed files with 10 additions and 1 deletions

View File

@ -1,5 +1,10 @@
2012-11-22 Joseph Myers <joseph@codesourcery.com>
[BZ #14811]
* sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Saturate
nonzero exponents with absolute value below 0x1p-117 to +/-
0x1p-117.
[BZ #14869]
* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c (__ieee754_hypotl): Scale
up arguments below 2**-450, not just those below 2**-500.

View File

@ -149,7 +149,7 @@ __ieee754_powl (long double x, long double y)
{
long double z, ax, z_h, z_l, p_h, p_l;
long double y1, t1, t2, r, s, t, u, v, w;
long double s2, s_h, s_l, t_h, t_l;
long double s2, s_h, s_l, t_h, t_l, ay;
int32_t i, j, k, yisint, n;
u_int32_t ix, iy;
int32_t hx, hy;
@ -284,6 +284,10 @@ __ieee754_powl (long double x, long double y)
return (hy > 0) ? huge * huge : tiny * tiny;
}
ay = y > 0 ? y : -y;
if (ay < 0x1p-117)
y = y < 0 ? -0x1p-117 : 0x1p-117;
n = 0;
/* take care subnormal number */
if (ix < 0x00100000)