aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-10-06 15:14:26 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-10-06 15:14:26 +0000
commitd79b56892651fcfc1ae0f44d3d29d0fa03538ec1 (patch)
treea104e632dd2f035727115b98861f3cb0191d8557
parent3670da6bfb1ffd17d9bdce2d31d79656be0991b5 (diff)
downloadglibc-d79b56892651fcfc1ae0f44d3d29d0fa03538ec1.zip
glibc-d79b56892651fcfc1ae0f44d3d29d0fa03538ec1.tar.gz
glibc-d79b56892651fcfc1ae0f44d3d29d0fa03538ec1.tar.bz2
Fix ldbl-128ibm log1pl (-1) sign of infinity (bug 19076).
The ldbl-128ibm implementation of log1pl produces an infinity with the wrong sign for log1pl (-1) in FE_DOWNWARD mode. This patch fixes this by changing a division (-1.0L / (x - x)) (incorrect in FE_DOWNWARD mode) to (-1.0L / 0.0L) (correct in all rounding modes). Tested for powerpc. [BZ #19076] * sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Divide by constant 0.0L when computing infinite result.
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/s_log1pl.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 6cb9b73..17388a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-06 Joseph Myers <joseph@codesourcery.com>
+
+ [BZ #19076]
+ * sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Divide by
+ constant 0.0L when computing infinite result.
+
2015-10-06 Florian Weimer <fweimer@redhat.com>
[BZ #10432]
diff --git a/NEWS b/NEWS
index 3852e7f..b93a5dc 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.
+ 19049, 19050, 19059, 19071, 19076.
* 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/s_log1pl.c b/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
index a0e24d7..ad9a1fe 100644
--- a/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
+++ b/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c
@@ -149,7 +149,7 @@ __log1pl (long double xm1)
if (x <= 0.0L)
{
if (x == 0.0L)
- return (-1.0L / (x - x));
+ return (-1.0L / 0.0L);
else
return (zero / (x - x));
}