aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-12-04 14:39:24 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-12-04 14:39:24 +0000
commitb3b099af0356831530f553934cdd90716137b1a3 (patch)
tree594418fd67c9e459a828cb7b7241907f69b2ff33 /sysdeps/ieee754
parenta915e17fe7413624a8e8ce39336cad3c53b87a7a (diff)
downloadglibc-b3b099af0356831530f553934cdd90716137b1a3.tar
glibc-b3b099af0356831530f553934cdd90716137b1a3.tar.gz
glibc-b3b099af0356831530f553934cdd90716137b1a3.tar.bz2
glibc-b3b099af0356831530f553934cdd90716137b1a3.zip
Fix powl inaccuracy for ldbl-128ibm (bug 14914).
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_powl.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_powl.c b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
index 8216c4906b..8bd35d0c88 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_powl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_powl.c
@@ -324,13 +324,13 @@ __ieee754_powl (long double x, long double y)
o.value = s_h;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
s_h = o.value;
/* t_h=ax+bp[k] High */
t_h = ax + bp[k];
o.value = t_h;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
t_h = o.value;
t_l = ax - (t_h - bp[k]);
s_l = v * ((u - s_h * t_h) - s_h * t_l);
@@ -344,7 +344,7 @@ __ieee754_powl (long double x, long double y)
t_h = 3.0 + s2 + r;
o.value = t_h;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
t_h = o.value;
t_l = r - ((t_h - 3.0) - s2);
/* u+v = s*(1+...) */
@@ -354,7 +354,7 @@ __ieee754_powl (long double x, long double y)
p_h = u + v;
o.value = p_h;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
p_h = o.value;
p_l = v - (p_h - u);
z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */
@@ -364,7 +364,7 @@ __ieee754_powl (long double x, long double y)
t1 = (((z_h + z_l) + dp_h[k]) + t);
o.value = t1;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
t1 = o.value;
t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
@@ -377,7 +377,7 @@ __ieee754_powl (long double x, long double y)
y1 = y;
o.value = y1;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
y1 = o.value;
p_l = (y - y1) * t1 + y * t2;
p_h = y1 * t1;
@@ -421,7 +421,7 @@ __ieee754_powl (long double x, long double y)
t = p_l + p_h;
o.value = t;
o.parts32.w3 = 0;
- o.parts32.w2 &= 0xffff8000;
+ o.parts32.w2 = 0;
t = o.value;
u = t * lg2_h;
v = (p_l - (t - p_h)) * lg2 + t * lg2_l;