summary refs log tree commit diff
path: root/sysdeps
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-10-06 15:32:06 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-10-06 15:32:06 +0000
commit31d4459e42d239fb7d9d3f9532fcf580c6812fb3 (patch)
tree3cfe7e4329332a7a3f7d6e93fb0ad1bb675df82d /sysdeps
parentd79b56892651fcfc1ae0f44d3d29d0fa03538ec1 (diff)
downloadglibc-31d4459e42d239fb7d9d3f9532fcf580c6812fb3.tar.gz
glibc-31d4459e42d239fb7d9d3f9532fcf580c6812fb3.tar.xz
glibc-31d4459e42d239fb7d9d3f9532fcf580c6812fb3.zip
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.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/ieee754/ldbl-128ibm/e_logl.c2
1 files changed, 2 insertions, 0 deletions
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;