[PATCH][BZ #16823] S390: Fix log1pl returning wrong infinity sign
Stefan Liebler
stli@linux.vnet.ibm.com
Wed Apr 9 13:24:00 GMT 2014
Hi,
on S390 test-double fails for log1pl(-1) with infinity has wrong sign in
rounding mode FE_DOWNWARD. See Bug 16823.
In this rounding mode, (x-x) = -0.
In all other rounding modes, (x-x) = +0.
A division with divisor -0 leads to +inf, while +0 results in -inf as
expected. This patch changes the divisor to a const +0.
Tested on s390/s390x.
Is this okay?
Bye
---
2014-04-09 Stefan Liebler <stli@linux.vnet.ibm.com>
[BZ #16823]
* sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl):
Use const positive zero instead of (x-x).
---
-------------- next part --------------
diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c
index d991e8a..6c1970b 100644
--- a/sysdeps/ieee754/ldbl-128/s_log1pl.c
+++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c
@@ -150,9 +150,9 @@ __log1pl (long double xm1)
if (x <= 0.0L)
{
if (x == 0.0L)
- return (-1.0L / (x - x));
+ return (-1.0L / zero);
else
- return (zero / (x - x));
+ return (zero / zero);
}
/* Separate mantissa from exponent. */
More information about the Libc-alpha
mailing list