mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-12 14:21:18 +08:00
Avoid M_NAN + M_NAN in complex functions.
Some libm complex functions have code that computes M_NAN + M_NAN. This is nonsensical; it's just equivalent to M_NAN, since it's a quiet NaN (and the comments suggesting this raises an exception are similarly wrong). This patch changes the code just to use M_NAN (and removes the bogus comments). (Preferably, code should either propagate an input NaN or do a computation that raises "invalid" and generates a default NaN at the same time. There are various cases, however, that currently raise "invalid" even for NaN inputs; I think those are cases where "invalid" is optional in ISO C so a change to whether it's raised would be OK, but they would still need more careful consideration than the cases where such issues do not arise.) Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * math/s_ccosh_template.c (M_DECL_FUNC (__ccosh)): Use M_NAN instead of M_NAN + M_NAN. * math/s_csinh_template.c (M_DECL_FUNC (__csinh)): Likewise.
This commit is contained in:
parent
352db0bd05
commit
4d5940f015
@ -1,3 +1,9 @@
|
||||
2016-10-11 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
* math/s_ccosh_template.c (M_DECL_FUNC (__ccosh)): Use M_NAN
|
||||
instead of M_NAN + M_NAN.
|
||||
* math/s_csinh_template.c (M_DECL_FUNC (__csinh)): Likewise.
|
||||
|
||||
2016-10-10 Samuel Thibault <samuel.thibault@ens-lyon.org>
|
||||
|
||||
* misc/getauxval.c [!HAVE_AUX_VECTOR] (__getauxval): Do not define
|
||||
|
@ -88,7 +88,7 @@ M_DECL_FUNC (__ccosh) (CFLOAT x)
|
||||
else
|
||||
{
|
||||
__imag__ retval = __real__ x == 0 ? 0 : M_NAN;
|
||||
__real__ retval = M_NAN + M_NAN;
|
||||
__real__ retval = M_NAN;
|
||||
|
||||
if (icls == FP_INFINITE)
|
||||
feraiseexcept (FE_INVALID);
|
||||
@ -124,9 +124,8 @@ M_DECL_FUNC (__ccosh) (CFLOAT x)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The addition raises the invalid exception. */
|
||||
__real__ retval = M_HUGE_VAL;
|
||||
__imag__ retval = M_NAN + M_NAN;
|
||||
__imag__ retval = M_NAN;
|
||||
|
||||
if (icls == FP_INFINITE)
|
||||
feraiseexcept (FE_INVALID);
|
||||
|
@ -97,7 +97,7 @@ M_DECL_FUNC (__csinh) (CFLOAT x)
|
||||
{
|
||||
/* Real part is 0.0. */
|
||||
__real__ retval = M_COPYSIGN (0, negate ? -1 : 1);
|
||||
__imag__ retval = M_NAN + M_NAN;
|
||||
__imag__ retval = M_NAN;
|
||||
|
||||
if (icls == FP_INFINITE)
|
||||
feraiseexcept (FE_INVALID);
|
||||
@ -143,9 +143,8 @@ M_DECL_FUNC (__csinh) (CFLOAT x)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The addition raises the invalid exception. */
|
||||
__real__ retval = M_HUGE_VAL;
|
||||
__imag__ retval = M_NAN + M_NAN;
|
||||
__imag__ retval = M_NAN;
|
||||
|
||||
if (icls == FP_INFINITE)
|
||||
feraiseexcept (FE_INVALID);
|
||||
|
Loading…
x
Reference in New Issue
Block a user