OSDN Git Service

PR fortran/33595
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Mar 2009 21:15:45 +0000 (21:15 +0000)
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 28 Mar 2009 21:15:45 +0000 (21:15 +0000)
* intrinsics/c99_functions.c (round): Use floor instead of ceil.
Revise checks to round up.
(roundf): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@145209 138bc75d-0d04-0410-961f-82ee72b054a4

libgfortran/ChangeLog
libgfortran/intrinsics/c99_functions.c

index 45779d6..e0ec250 100644 (file)
@@ -1,3 +1,10 @@
+2009-03-29  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
+
+       PR fortran/33595
+       * intrinsics/c99_functions.c (round): Use floor instead of ceil.
+       Revise checks to round up.
+       (roundf): Likewise.
+
 2009-03-28  Daniel Kraft  <d@domob.eu>
 
        * intrinsics/string_intrinsics.c: #include <assert.h>
index ce96c8c..66f06b3 100644 (file)
@@ -571,16 +571,16 @@ round(double x)
 
    if (x >= 0.0) 
     {
-      t = ceil(x);
-      if (t - x 0.5)
-       t -= 1.0;
+      t = floor(x);
+      if (t - x <= -0.5)
+       t += 1.0;
       return (t);
     } 
    else 
     {
-      t = ceil(-x);
-      if (t + x 0.5)
-       t -= 1.0;
+      t = floor(-x);
+      if (t + x <= -0.5)
+       t += 1.0;
       return (-t);
     }
 }
@@ -600,16 +600,16 @@ roundf(float x)
 
    if (x >= 0.0) 
     {
-      t = ceilf(x);
-      if (t - x 0.5)
-       t -= 1.0;
+      t = floorf(x);
+      if (t - x <= -0.5)
+       t += 1.0;
       return (t);
     } 
    else 
     {
-      t = ceilf(-x);
-      if (t + x 0.5)
-       t -= 1.0;
+      t = floorf(-x);
+      if (t + x <= -0.5)
+       t += 1.0;
       return (-t);
     }
 }