glibc/glibc-2.3.3-amd64-s_ceil.diff

38 lines
1.1 KiB
Diff
Raw Normal View History

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;
}