From: Joseph Myers Date: Tue, 6 Oct 2015 15:32:06 +0000 (+0000) Subject: Fix ldbl-128ibm logl (1) sign of zero result (bug 19077). X-Git-Tag: glibc-2.23~401 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=31d4459e42d239fb7d9d3f9532fcf580c6812fb3;p=thirdparty%2Fglibc.git 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. --- diff --git a/ChangeLog b/ChangeLog index 17388a79278..ac4c1d4aba3 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 b93a5dc4e96..e3c0795fe53 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 58d6bc69726..dcac38062c6 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;