Fix frexp (NaN) (bug 20250).
commit88283451b26de29d08ba33148cf2f8cb2680f6f0
authorJoseph Myers <joseph@codesourcery.com>
Mon, 13 Jun 2016 17:27:19 +0000 (13 17:27 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Mon, 13 Jun 2016 17:27:19 +0000 (13 17:27 +0000)
tree334945ab68b411d9bac8696fbcaba40a6598ed2b
parentb39b6e0c902f0bf5f99d593b8f5953943777c610
Fix frexp (NaN) (bug 20250).

Various implementations of frexp functions return sNaN for sNaN
input.  This patch fixes them to add such arguments to themselves so
that qNaN is returned.

Tested for x86_64, x86, mips64 and powerpc.

[BZ #20250]
* sysdeps/i386/fpu/s_frexpl.S (__frexpl): Add non-finite input to
itself.
* sysdeps/ieee754/dbl-64/s_frexp.c (__frexp): Add non-finite or
zero input to itself.
* sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c (__frexp):
Likewise.
* sysdeps/ieee754/flt-32/s_frexpf.c (__frexpf): Likewise.
* sysdeps/ieee754/ldbl-128/s_frexpl.c (__frexpl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_frexpl.c (__frexpl): Likewise.
* sysdeps/ieee754/ldbl-96/s_frexpl.c (__frexpl): Likewise.
* math/libm-test.inc (frexp_test_data): Add sNaN tests.
ChangeLog
math/libm-test.inc
sysdeps/i386/fpu/s_frexpl.S
sysdeps/ieee754/dbl-64/s_frexp.c
sysdeps/ieee754/dbl-64/wordsize-64/s_frexp.c
sysdeps/ieee754/flt-32/s_frexpf.c
sysdeps/ieee754/ldbl-128/s_frexpl.c
sysdeps/ieee754/ldbl-128ibm/s_frexpl.c
sysdeps/ieee754/ldbl-96/s_frexpl.c