about summary refs log tree commit diff
path: root/sysdeps/alpha/fpu/s_rint.c
diff options
context:
space:
mode:
authorAurelien Jarno <aurelien@aurel32.net>2016-08-02 09:18:59 +0200
committerAurelien Jarno <aurelien@aurel32.net>2016-08-02 09:18:59 +0200
commitcb7f9d63b921ea1a1cbb4ab377a8484fd5da9a2b (patch)
tree43551aa2edac9c7863c3fce087e901f48c45cb1c /sysdeps/alpha/fpu/s_rint.c
parent65cc568cf57156e5230db9a061645e54ff028a41 (diff)
downloadglibc-cb7f9d63b921ea1a1cbb4ab377a8484fd5da9a2b.tar.gz
glibc-cb7f9d63b921ea1a1cbb4ab377a8484fd5da9a2b.tar.xz
glibc-cb7f9d63b921ea1a1cbb4ab377a8484fd5da9a2b.zip
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.
Diffstat (limited to 'sysdeps/alpha/fpu/s_rint.c')
-rw-r--r--sysdeps/alpha/fpu/s_rint.c3
1 files changed, 3 insertions, 0 deletions
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;