File glibc-2.3.3-amd64-s_ceil.diff of Package glibc.openSUSE_11.4_Update

This fixes ceil (x) for -1.0 < x < 0.

Index: sysdeps/x86_64/fpu/s_ceil.c
===================================================================
--- sysdeps/x86_64/fpu/s_ceil.c.orig
+++ sysdeps/x86_64/fpu/s_ceil.c
@@ -34,7 +34,11 @@ double __ceil(double x)
         /* x is +zero or -zero; return the same zero */
           return x;
       else if (xneg) /* x < 0.0 */
-        return 0.0;
+       {
+          /* Return zero with the sign of x */
+          PUT_BITS_DP64(SIGNBIT_DP64, x);
+          return x;
+       }
       else
         return 1.0;
     }
Index: sysdeps/x86_64/fpu/s_ceilf.c
===================================================================
--- sysdeps/x86_64/fpu/s_ceilf.c.orig
+++ sysdeps/x86_64/fpu/s_ceilf.c
@@ -34,7 +34,11 @@ float __ceilf(float x)
         /* x is +zero or -zero; return the same zero */
         return x;
       else if (xneg) /* x < 0.0 */
-        return 0.0F;
+        {
+      	   /* Return zero with the sign of x */
+           PUT_BITS_SP32(SIGNBIT_SP32, x);
+           return x;
+        }
       else
         return 1.0F;
     }
openSUSE Build Service is sponsored by