diff options
author | Joseph Myers <joseph@codesourcery.com> | 2016-06-07 23:08:32 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2016-06-07 23:08:32 +0000 |
commit | 8fa8a330f95c2f39eae7960ccf2825e693789202 (patch) | |
tree | e8f3db4b05b0255aa6a5f4f791fdf2ef04e25cea | |
parent | c23805a95d9bc095118299b5965f7f8388e57fc4 (diff) | |
download | glibc-8fa8a330f95c2f39eae7960ccf2825e693789202.tar glibc-8fa8a330f95c2f39eae7960ccf2825e693789202.tar.gz glibc-8fa8a330f95c2f39eae7960ccf2825e693789202.tar.bz2 glibc-8fa8a330f95c2f39eae7960ccf2825e693789202.zip |
Fix i386 atanhl (sNaN) (bug 20219).
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.
[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.
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | math/libm-test.inc | 2 | ||||
-rw-r--r-- | sysdeps/i386/fpu/e_atanhl.S | 1 |
3 files changed, 8 insertions, 0 deletions
@@ -1,5 +1,10 @@ 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. + [BZ #20218] * sysdeps/i386/fpu/s_asinhl.S (__asinhl): Add non-finite argument to itself. diff --git a/math/libm-test.inc b/math/libm-test.inc index fb7a71baf8..decda41f2f 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 dc5ca51a4b..ecfba3ae0e 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) |