Now works properly with floats between -1.0 and 0.0
authorjesusc <jesusc@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 18 Nov 2005 13:27:34 +0000 (13:27 +0000)
committerjesusc <jesusc@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 18 Nov 2005 13:27:34 +0000 (13:27 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3958 4a8a32a2-be11-0410-ad9d-d568d2c75423

device/lib/ceilf.c
device/lib/floorf.c
device/lib/modff.c

index 54b7c0fe8a9dbbf58f1bc5f0e9420a15c2bb04e5..66301be0d7db6fc258e0080e90f405447686d153 100644 (file)
@@ -24,6 +24,7 @@ float ceilf(float x) _FLOAT_FUNC_REENTRANT
 {
     long r;
     r=x;
+    if(r==0x80000000) r=0; //-0?
     if (r<0)
         return r;
     else
index f12adae1157a72cd1b6500a241c68d17da366bf2..b46581b17e007e6febc77d16f0c9ce6b1c838a76 100644 (file)
@@ -24,6 +24,7 @@ float floorf (float x) _FLOAT_FUNC_REENTRANT
 {
     long r;
     r=x;
+    if(r==0x80000000) r=0; //-0?
     if (r<=0)
         return (r+((r>x)?-1:0));
     else
index ace1565b6e772db5bf19154366e7000ad121d589..2286c3b89504add6c277c4f53d311b34909625e7 100644 (file)
@@ -22,6 +22,9 @@
 
 float modff(float x, float * y)
 {
-    *y=((int)x);
+    long r;
+    r=x;
+    if(r==0x80000000) r=0; //-0?
+    *y=r;
     return (x-*y);
 }