aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-11-16 21:39:54 -0800
committerDavid S. Miller <davem@davemloft.net>2012-11-16 21:39:54 -0800
commit8e18b86d4a78f1b96d587bb2b369550c664227a3 (patch)
tree4e075b6a0b781813844812fa5a7d3a8fe70a73fb
parent12df29e2d24e96421b0ac7842acef79edb19c4af (diff)
downloadglibc-8e18b86d4a78f1b96d587bb2b369550c664227a3.zip
glibc-8e18b86d4a78f1b96d587bb2b369550c664227a3.tar.gz
glibc-8e18b86d4a78f1b96d587bb2b369550c664227a3.tar.bz2
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--ChangeLog7
-rw-r--r--sysdeps/ieee754/ldbl-128/e_powl.c6
2 files changed, 12 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 82c48f8..9bdff02 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 40fc314..d131750 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)