mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-07 06:43:00 +03:00
Fix cexp (NaN + i0) (bug 15532).
This commit is contained in:
@@ -1,3 +1,12 @@
|
||||
2013-08-23 Joseph Myers <joseph@codesourcery.com>
|
||||
|
||||
[BZ #15532]
|
||||
* math/s_cexp.c (__cexp): Return NaN + i0 for NaN + i0 argument.
|
||||
* math/s_cexpf.c (__cexpf): Likewise.
|
||||
* math/s_cexpl.c (__cexpl): Likewise.
|
||||
* math/libm-test.inc (cexp_test_data): Correct expected return
|
||||
value for NaN + i0. Add another test.
|
||||
|
||||
2013-08-22 David S. Miller <davem@davemloft.net>
|
||||
|
||||
* po/ca.po: Update Catalan translation from translation project.
|
||||
|
2
NEWS
2
NEWS
@@ -9,7 +9,7 @@ Version 2.19
|
||||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
14699, 15531, 15749, 15797, 15867
|
||||
14699, 15531, 15532, 15749, 15797, 15867
|
||||
|
||||
* CVE-2013-4237 The readdir_r function could write more than NAME_MAX bytes
|
||||
to the d_name member of struct dirent, or omit the terminating NUL
|
||||
|
@@ -6198,7 +6198,8 @@ static const struct test_c_c_data cexp_test_data[] =
|
||||
|
||||
TEST_c_c (cexp, plus_infty, qnan_value, plus_infty, qnan_value),
|
||||
|
||||
TEST_c_c (cexp, qnan_value, 0.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
|
||||
TEST_c_c (cexp, qnan_value, 0.0, qnan_value, 0.0),
|
||||
TEST_c_c (cexp, qnan_value, minus_zero, qnan_value, minus_zero),
|
||||
TEST_c_c (cexp, qnan_value, 1.0, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
|
||||
|
||||
TEST_c_c (cexp, qnan_value, plus_infty, qnan_value, qnan_value, INVALID_EXCEPTION_OK),
|
||||
|
@@ -145,13 +145,19 @@ __cexp (__complex__ double x)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If the real part is NaN the result is NaN + iNaN. */
|
||||
/* If the real part is NaN the result is NaN + iNaN unless the
|
||||
imaginary part is zero. */
|
||||
__real__ retval = __nan ("");
|
||||
if (icls == FP_ZERO)
|
||||
__imag__ retval = __imag__ x;
|
||||
else
|
||||
{
|
||||
__imag__ retval = __nan ("");
|
||||
|
||||
if (rcls != FP_NAN || icls != FP_NAN)
|
||||
feraiseexcept (FE_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
@@ -145,13 +145,19 @@ __cexpf (__complex__ float x)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If the real part is NaN the result is NaN + iNaN. */
|
||||
/* If the real part is NaN the result is NaN + iNaN unless the
|
||||
imaginary part is zero. */
|
||||
__real__ retval = __nanf ("");
|
||||
if (icls == FP_ZERO)
|
||||
__imag__ retval = __imag__ x;
|
||||
else
|
||||
{
|
||||
__imag__ retval = __nanf ("");
|
||||
|
||||
if (rcls != FP_NAN || icls != FP_NAN)
|
||||
feraiseexcept (FE_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
@@ -145,13 +145,19 @@ __cexpl (__complex__ long double x)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If the real part is NaN the result is NaN + iNaN. */
|
||||
/* If the real part is NaN the result is NaN + iNaN unless the
|
||||
imaginary part is zero. */
|
||||
__real__ retval = __nanl ("");
|
||||
if (icls == FP_ZERO)
|
||||
__imag__ retval = __imag__ x;
|
||||
else
|
||||
{
|
||||
__imag__ retval = __nanl ("");
|
||||
|
||||
if (rcls != FP_NAN || icls != FP_NAN)
|
||||
feraiseexcept (FE_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
Reference in New Issue
Block a user