This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Fix i386 atanhl (sNaN) (bug 20219) [committed]
- From: Joseph Myers <joseph at codesourcery dot com>
- To: <libc-alpha at sourceware dot org>
- Date: Tue, 7 Jun 2016 23:09:19 +0000
- Subject: Fix i386 atanhl (sNaN) (bug 20219) [committed]
- Authentication-results: sourceware.org; auth=none
The i386 version of atanhl returns sNaN for sNaN input. This patch
fixes it to add NaN arguments to themselves so it returns qNaN in this
case.
Tested for x86_64 and x86. Committed.
2016-06-07 Joseph Myers <joseph@codesourcery.com>
[BZ #20219]
* sysdeps/i386/fpu/e_atanhl.S (__ieee754_atanhl): Add NaN argument
to itself.
* math/libm-test.inc (atanh_test_data): Add sNaN tests.
diff --git a/math/libm-test.inc b/math/libm-test.inc
index fb7a71b..decda41 100644
--- a/math/libm-test.inc
+++ b/math/libm-test.inc
@@ -1915,6 +1915,8 @@ static const struct test_f_f_data atanh_test_data[] =
TEST_f_f (atanh, -1, minus_infty, DIVIDE_BY_ZERO_EXCEPTION|ERRNO_ERANGE),
TEST_f_f (atanh, qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
TEST_f_f (atanh, -qnan_value, qnan_value, NO_INEXACT_EXCEPTION|ERRNO_UNCHANGED),
+ TEST_f_f (atanh, snan_value, qnan_value, INVALID_EXCEPTION),
+ TEST_f_f (atanh, -snan_value, qnan_value, INVALID_EXCEPTION),
/* atanh (x) == qNaN plus invalid exception if |x| > 1. */
TEST_f_f (atanh, 1.125L, qnan_value, INVALID_EXCEPTION|ERRNO_EDOM),
diff --git a/sysdeps/i386/fpu/e_atanhl.S b/sysdeps/i386/fpu/e_atanhl.S
index dc5ca51..ecfba3a 100644
--- a/sysdeps/i386/fpu/e_atanhl.S
+++ b/sysdeps/i386/fpu/e_atanhl.S
@@ -121,6 +121,7 @@ ENTRY(__ieee754_atanhl)
cmpl $0, 4(%esp)
je 7b
6: fldt 4(%esp)
+ fadd %st(0)
ret
END(__ieee754_atanhl)
strong_alias (__ieee754_atanhl, __atanhl_finite)
--
Joseph S. Myers
joseph@codesourcery.com