aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-10-06 15:32:06 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-10-06 15:32:06 +0000
commit31d4459e42d239fb7d9d3f9532fcf580c6812fb3 (patch)
tree3cfe7e4329332a7a3f7d6e93fb0ad1bb675df82d
parentd79b56892651fcfc1ae0f44d3d29d0fa03538ec1 (diff)
downloadglibc-31d4459e42d239fb7d9d3f9532fcf580c6812fb3.zip
glibc-31d4459e42d239fb7d9d3f9532fcf580c6812fb3.tar.gz
glibc-31d4459e42d239fb7d9d3f9532fcf580c6812fb3.tar.bz2
Fix ldbl-128ibm logl (1) sign of zero result (bug 19077).
The ldbl-128ibm implementation of logl produces a zero with the wrong sign for logl (1) in FE_DOWNWARD mode. This patch makes it explicitly return 0.0L in that case, as in e.g. the ldbl-128 implementation. Tested for powerpc. [BZ #19077] * sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): Return 0.0L for argument 1.0L.
-rw-r--r--ChangeLog4
-rw-r--r--NEWS2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_logl.c2
3 files changed, 7 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 17388a7..ac4c1d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2015-10-06 Joseph Myers <joseph@codesourcery.com>
+ [BZ #19077]
+ * sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): Return
+ 0.0L for argument 1.0L.
+
[BZ #19076]
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Divide by
constant 0.0L when computing infinite result.
diff --git a/NEWS b/NEWS
index b93a5dc..e3c0795 100644
--- a/NEWS
+++ b/NEWS
@@ -18,7 +18,7 @@ Version 2.23
18820, 18823, 18824, 18825, 18857, 18863, 18870, 18872, 18873, 18875,
18887, 18921, 18951, 18952, 18956, 18961, 18966, 18967, 18969, 18970,
18977, 18980, 18981, 18985, 19003, 19012, 19016, 19018, 19032, 19046,
- 19049, 19050, 19059, 19071, 19076.
+ 19049, 19050, 19059, 19071, 19076, 19077.
* The obsolete header <regexp.h> has been removed. Programs that require
this header must be updated to use <regex.h> instead.
diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
index 58d6bc6..dcac380 100644
--- a/sysdeps/ieee754/ldbl-128ibm/e_logl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/e_logl.c
@@ -219,6 +219,8 @@ __ieee754_logl(long double x)
/* On this interval the table is not used due to cancellation error. */
if ((x <= 1.0078125L) && (x >= 0.9921875L))
{
+ if (x == 1.0L)
+ return 0.0L;
z = x - 1.0L;
k = 64;
t = 1.0L;