diff options
author | David S. Miller <davem@davemloft.net> | 2012-11-16 21:39:54 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-11-16 21:39:54 -0800 |
commit | 8e18b86d4a78f1b96d587bb2b369550c664227a3 (patch) | |
tree | 4e075b6a0b781813844812fa5a7d3a8fe70a73fb | |
parent | 12df29e2d24e96421b0ac7842acef79edb19c4af (diff) | |
download | glibc-8e18b86d4a78f1b96d587bb2b369550c664227a3.tar.gz glibc-8e18b86d4a78f1b96d587bb2b369550c664227a3.tar.xz glibc-8e18b86d4a78f1b96d587bb2b369550c664227a3.zip |
Fix BZ #14811 for ldbl-128 too.
[BZ #14811] * sysdeps/ieee754/ldbl-128/e_powl.c (__ieee754_powl): Saturate nonzero exponents with absolute value below 0x1p-128 to +/- 0x1p-128.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | sysdeps/ieee754/ldbl-128/e_powl.c | 6 |
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog index 82c48f8fd0..9bdff02e28 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2012-11-17 David S. Miller <davem@davemloft.net> + + [BZ #14811] + * sysdeps/ieee754/ldbl-128/e_powl.c (__ieee754_powl): Saturate + nonzero exponents with absolute value below 0x1p-128 to +/- + 0x1p-128. + 2012-11-17 Joseph Myers <joseph@codesourcery.com> * sysdeps/unix/sysv/linux/fxstatat.c: Include <string.h>. diff --git a/sysdeps/ieee754/ldbl-128/e_powl.c b/sysdeps/ieee754/ldbl-128/e_powl.c index 40fc314730..d131750718 100644 --- a/sysdeps/ieee754/ldbl-128/e_powl.c +++ b/sysdeps/ieee754/ldbl-128/e_powl.c @@ -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; @@ -282,6 +282,10 @@ __ieee754_powl (long double x, long double y) return (hy > 0) ? huge * huge : tiny * tiny; } + ay = y > 0 ? y : -y; + if (ay < 0x1p-128) + y = y < 0 ? -0x1p-128 : 0x1p-128; + n = 0; /* take care subnormal number */ if (ix < 0x00010000) |