Fix ldbl-128ibm log1pl (-qNaN) spurious "invalid" exception (bug 22693).
The ldbl-128ibm implementation of log1pl does ordered comparisons on a negative qNaN argument, so resulting in spurious "invalid" exceptions (for soft-float powerpc; hard-float only avoids this because of GCC bug 58684 meaning ordered comparison instructions never get generated). This patch fixes this by arranging for the test for NaN or infinity arguments to handle negative arguments as well. Tested for powerpc (soft float). [BZ #22693] * sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Handle negative arguments in test for NaN or infinity argument.
This commit is contained in:
parent
ee61d02850
commit
b303185df9
@ -1,3 +1,9 @@
|
||||
2018-01-10 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #22693]
|
||||
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Handle
|
||||
negative arguments in test for NaN or infinity argument.
|
||||
|
||||
2018-01-10 Dmitry V. Levin <ldv@altlinux.org>
|
||||
|
||||
* po/libc.pot: Regenerate.
|
||||
|
@ -131,8 +131,8 @@ __log1pl (long double xm1)
|
||||
/* Test for NaN or infinity input. */
|
||||
xhi = ldbl_high (xm1);
|
||||
EXTRACT_WORDS (hx, lx, xhi);
|
||||
if (hx >= 0x7ff00000)
|
||||
return xm1 + xm1;
|
||||
if ((hx & 0x7fffffff) >= 0x7ff00000)
|
||||
return xm1 + xm1 * xm1;
|
||||
|
||||
/* log1p(+- 0) = +- 0. */
|
||||
if (((hx & 0x7fffffff) | lx) == 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user