mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-23 11:20:07 +00:00
[PATCH] fix sinf(NAN)
sinf(NAN) should not signal invalid fp exception so use isless instead of < where NAN is compared. this makes the sinf tests pass on aarch64. * sysdeps/ieee754/flt-32/s_sinf.c (sinf): Use isless.
This commit is contained in:
parent
1f70eae4cf
commit
00d54af7c8
@ -1,3 +1,7 @@
|
|||||||
|
2017-12-05 Szabolcs Nagy <szabolcs.nagy@arm.com>
|
||||||
|
|
||||||
|
* sysdeps/ieee754/flt-32/s_sinf.c (sinf): Use isless.
|
||||||
|
|
||||||
2017-12-05 Joseph Myers <joseph@codesourcery.com>
|
2017-12-05 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
* stdlib/strfromd.c: Include <bits/floatn.h>.
|
* stdlib/strfromd.c: Include <bits/floatn.h>.
|
||||||
|
@ -128,7 +128,7 @@ SINF_FUNC (float x)
|
|||||||
double theta = x;
|
double theta = x;
|
||||||
double abstheta = fabs (theta);
|
double abstheta = fabs (theta);
|
||||||
/* If |x|< Pi/4. */
|
/* If |x|< Pi/4. */
|
||||||
if (abstheta < M_PI_4)
|
if (isless (abstheta, M_PI_4))
|
||||||
{
|
{
|
||||||
if (abstheta >= 0x1p-5) /* |x| >= 2^-5. */
|
if (abstheta >= 0x1p-5) /* |x| >= 2^-5. */
|
||||||
{
|
{
|
||||||
@ -162,8 +162,8 @@ SINF_FUNC (float x)
|
|||||||
}
|
}
|
||||||
else /* |x| >= Pi/4. */
|
else /* |x| >= Pi/4. */
|
||||||
{
|
{
|
||||||
unsigned int signbit = (x < 0);
|
unsigned int signbit = isless (x, 0);
|
||||||
if (abstheta < 9 * M_PI_4) /* |x| < 9*Pi/4. */
|
if (isless (abstheta, 9 * M_PI_4)) /* |x| < 9*Pi/4. */
|
||||||
{
|
{
|
||||||
/* There are cases where FE_UPWARD rounding mode can
|
/* There are cases where FE_UPWARD rounding mode can
|
||||||
produce a result of abstheta * inv_PI_4 == 9,
|
produce a result of abstheta * inv_PI_4 == 9,
|
||||||
|
Loading…
Reference in New Issue
Block a user