aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/ieee754
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2015-10-29 23:09:51 +0000
committerJoseph Myers <joseph@codesourcery.com>2015-10-29 23:09:51 +0000
commitaf1b2fd08388a3beec3ee7eaa30646d9c002824e (patch)
treeecf8b652021682fc9054064b8ae504b93f72155d /sysdeps/ieee754
parent68b7f7df0cc9f13a0f6c182208fe7e74c3387412 (diff)
downloadglibc-af1b2fd08388a3beec3ee7eaa30646d9c002824e.zip
glibc-af1b2fd08388a3beec3ee7eaa30646d9c002824e.tar.gz
glibc-af1b2fd08388a3beec3ee7eaa30646d9c002824e.tar.bz2
Fix ldbl-128 log1pl (-qNaN) spurious "invalid" exception (bug 19189).
The ldbl-128 version of log1pl raises a spurious "invalid" exception for a -qNaN argument. This patch fixes this by making the initial check for infinities and NaNs handle arguments of both signs in such a way that NaNs result in a NaN being returned (quietly if the input NaN was quiet) while +Inf results in +Inf being returned and -Inf results in a qNaN being returned with "invalid" exception raised. Tested for mips64. [BZ #19189] * sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl): Make check for non-finite argument handle arguments with negative sign.
Diffstat (limited to 'sysdeps/ieee754')
-rw-r--r--sysdeps/ieee754/ldbl-128/s_log1pl.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sysdeps/ieee754/ldbl-128/s_log1pl.c b/sysdeps/ieee754/ldbl-128/s_log1pl.c
index 9806ab6..b348f41 100644
--- a/sysdeps/ieee754/ldbl-128/s_log1pl.c
+++ b/sysdeps/ieee754/ldbl-128/s_log1pl.c
@@ -130,8 +130,8 @@ __log1pl (long double xm1)
/* Test for NaN or infinity input. */
u.value = xm1;
hx = u.parts32.w0;
- if (hx >= 0x7fff0000)
- return xm1;
+ if ((hx & 0x7fffffff) >= 0x7fff0000)
+ return xm1 + fabsl (xm1);
/* log1p(+- 0) = +- 0. */
if (((hx & 0x7fffffff) == 0)