From d79b56892651fcfc1ae0f44d3d29d0fa03538ec1 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 6 Oct 2015 15:14:26 +0000 Subject: 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. --- sysdeps/ieee754/ldbl-128ibm/s_log1pl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sysdeps/ieee754') 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)); } -- cgit v1.1