From 31d4459e42d239fb7d9d3f9532fcf580c6812fb3 Mon Sep 17 00:00:00 2001 From: Joseph Myers Date: Tue, 6 Oct 2015 15:32:06 +0000 Subject: 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. --- ChangeLog | 4 ++++ NEWS | 2 +- sysdeps/ieee754/ldbl-128ibm/e_logl.c | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 17388a7927..ac4c1d4aba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2015-10-06 Joseph Myers + [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 b93a5dc4e9..e3c0795fe5 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 has been removed. Programs that require this header must be updated to use instead. diff --git a/sysdeps/ieee754/ldbl-128ibm/e_logl.c b/sysdeps/ieee754/ldbl-128ibm/e_logl.c index 58d6bc6972..dcac38062c 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; -- cgit 1.4.1