diff options
author | Joseph Myers <joseph@codesourcery.com> | 2015-10-29 23:09:51 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2015-10-29 23:09:51 +0000 |
commit | af1b2fd08388a3beec3ee7eaa30646d9c002824e (patch) | |
tree | ecf8b652021682fc9054064b8ae504b93f72155d /sysdeps | |
parent | 68b7f7df0cc9f13a0f6c182208fe7e74c3387412 (diff) | |
download | glibc-af1b2fd08388a3beec3ee7eaa30646d9c002824e.tar.gz glibc-af1b2fd08388a3beec3ee7eaa30646d9c002824e.tar.xz glibc-af1b2fd08388a3beec3ee7eaa30646d9c002824e.zip |
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')
-rw-r--r-- | sysdeps/ieee754/ldbl-128/s_log1pl.c | 4 |
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 9806ab6d63..b348f41e55 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) |