]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
alpha: fix rint on sNaN input
authorAurelien Jarno <aurelien@aurel32.net>
Tue, 2 Aug 2016 07:18:59 +0000 (09:18 +0200)
committerMike Frysinger <vapier@gentoo.org>
Thu, 8 Dec 2016 05:36:15 +0000 (00:36 -0500)
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.

(cherry picked from commit cb7f9d63b921ea1a1cbb4ab377a8484fd5da9a2b)

ChangeLog
sysdeps/alpha/fpu/s_rint.c
sysdeps/alpha/fpu/s_rintf.c

index 4f8dc172cc4210c60fca9bd04f33255b8d3e902d..b4d4b6af2ae68d2278e4162943bb1c8b5746f49f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,5 @@
+2016-08-02  Aurelien Jarno  <aurelien@aurel32.net>
+
 2016-08-02  Aurelien Jarno  <aurelien@aurel32.net>
 
        * sysdeps/alpha/fpu/s_ceil.c (__ceil): Add argument with itself
@@ -8,6 +10,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-11-23  Matthew Fortune  <Matthew.Fortune@imgtec.com>
            Maciej W. Rozycki  <macro@imgtec.com>
index f33fe72c116be997625006bd719cd11c9098f75e..259348afc08dd18880c9a44c4c054bb814ec7ba3 100644 (file)
@@ -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;
index 1400dfe8d76b3bff112a8c58d2876a43598a3923..645728ad5b02e1c9b9c47a8cb3806471e9362ba7 100644 (file)
@@ -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