mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-26 04:31:03 +00:00
alpha: fix rint on sNaN input
The alpha version of rint wrongly return sNaN for sNaN input. Fix that by checking for NaN and by returning the input value added with itself in that case. Changelog: * sysdeps/alpha/fpu/s_rint.c (__rint): Add argument with itself when it is a NaN. * sysdeps/alpha/fpu/s_rintf.c (__rintf): Likewise.
This commit is contained in:
parent
65cc568cf5
commit
cb7f9d63b9
@ -8,6 +8,9 @@
|
||||
when it is a NaN.
|
||||
[_IEEE_FP_INEXACT] Remove.
|
||||
* sysdeps/alpha/fpu/s_floorf.c (__floorf): Likewise.
|
||||
* sysdeps/alpha/fpu/s_rint.c (__rint): Add argument with itself
|
||||
when it is a NaN.
|
||||
* sysdeps/alpha/fpu/s_rintf.c (__rintf): Likewise.
|
||||
|
||||
2016-08-01 Carlos O'Donell <carlos@redhat.com>
|
||||
|
||||
|
@ -23,6 +23,9 @@
|
||||
double
|
||||
__rint (double x)
|
||||
{
|
||||
if (isnan (x))
|
||||
return x + x;
|
||||
|
||||
if (isless (fabs (x), 9007199254740992.0)) /* 1 << DBL_MANT_DIG */
|
||||
{
|
||||
double tmp1, new_x;
|
||||
|
@ -22,6 +22,9 @@
|
||||
float
|
||||
__rintf (float x)
|
||||
{
|
||||
if (isnanf (x))
|
||||
return x + x;
|
||||
|
||||
if (isless (fabsf (x), 16777216.0f)) /* 1 << FLT_MANT_DIG */
|
||||
{
|
||||
/* Note that Alpha S_Floating is stored in registers in a
|
||||
|
Loading…
Reference in New Issue
Block a user