strtod: fix bug in replacement function on AIX
[gnulib.git] / lib / round.c
index 4f85402..c935ddc 100644 (file)
@@ -1,5 +1,5 @@
 /* Round toward nearest, breaking ties away from zero.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@
 DOUBLE
 FLOOR_BASED_ROUND (DOUBLE x)
 {
-  if (x >= L_(0.0)) 
+  if (x >= L_(0.0))
     {
       DOUBLE y = FLOOR (x);
       if (x - y >= L_(0.5))
@@ -114,39 +114,39 @@ FLOOR_FREE_ROUND (DOUBLE x)
     {
       /* Avoid rounding error for x = 0.5 - 2^(-MANT_DIG-1).  */
       if (z < L_(0.5))
-       z = L_(0.0);
+        z = L_(0.0);
       /* Avoid rounding errors for values near 2^k, where k >= MANT_DIG-1.  */
       else if (z < TWO_MANT_DIG)
-       {
-         /* Add 0.5 to the absolute value.  */
-         y = z += L_(0.5);
-         /* Round to the next integer (nearest or up or down, doesn't
+        {
+          /* Add 0.5 to the absolute value.  */
+          y = z += L_(0.5);
+          /* Round to the next integer (nearest or up or down, doesn't
              matter).  */
-         z += TWO_MANT_DIG;
-         z -= TWO_MANT_DIG;
-         /* Enforce rounding down.  */
-         if (z > y)
-           z -= L_(1.0);
-       }
+          z += TWO_MANT_DIG;
+          z -= TWO_MANT_DIG;
+          /* Enforce rounding down.  */
+          if (z > y)
+            z -= L_(1.0);
+        }
     }
   else if (z < L_(0.0))
     {
       /* Avoid rounding error for x = -(0.5 - 2^(-MANT_DIG-1)).  */
       if (z > - L_(0.5))
-       z = L_(0.0);
+        z = L_(0.0);
       /* Avoid rounding errors for values near -2^k, where k >= MANT_DIG-1.  */
       else if (z > -TWO_MANT_DIG)
-       {
-         /* Add 0.5 to the absolute value.  */
-         y = z -= L_(0.5);
-         /* Round to the next integer (nearest or up or down, doesn't
+        {
+          /* Add 0.5 to the absolute value.  */
+          y = z -= L_(0.5);
+          /* Round to the next integer (nearest or up or down, doesn't
              matter).  */
-         z -= TWO_MANT_DIG;
-         z += TWO_MANT_DIG;
-         /* Enforce rounding up.  */
-         if (z < y)
-           z += L_(1.0);
-       }
+          z -= TWO_MANT_DIG;
+          z += TWO_MANT_DIG;
+          /* Enforce rounding up.  */
+          if (z < y)
+            z += L_(1.0);
+        }
     }
   return z;
 }