diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | sysdeps/alpha/fpu/s_rint.c | 3 | ||||
-rw-r--r-- | sysdeps/alpha/fpu/s_rintf.c | 3 |
3 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog index d675adc994..fa362a590e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -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> diff --git a/sysdeps/alpha/fpu/s_rint.c b/sysdeps/alpha/fpu/s_rint.c index f33fe72c11..259348afc0 100644 --- a/sysdeps/alpha/fpu/s_rint.c +++ b/sysdeps/alpha/fpu/s_rint.c @@ -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; diff --git a/sysdeps/alpha/fpu/s_rintf.c b/sysdeps/alpha/fpu/s_rintf.c index 1400dfe8d7..645728ad5b 100644 --- a/sysdeps/alpha/fpu/s_rintf.c +++ b/sysdeps/alpha/fpu/s_rintf.c @@ -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 |