From: jesusc Date: Fri, 18 Nov 2005 13:27:34 +0000 (+0000) Subject: Now works properly with floats between -1.0 and 0.0 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=87771b21fca5980e6eede789efcc4571bb205db7;p=fw%2Fsdcc Now works properly with floats between -1.0 and 0.0 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3958 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/device/lib/ceilf.c b/device/lib/ceilf.c index 54b7c0fe..66301be0 100644 --- a/device/lib/ceilf.c +++ b/device/lib/ceilf.c @@ -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 diff --git a/device/lib/floorf.c b/device/lib/floorf.c index f12adae1..b46581b1 100644 --- a/device/lib/floorf.c +++ b/device/lib/floorf.c @@ -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 diff --git a/device/lib/modff.c b/device/lib/modff.c index ace1565b..2286c3b8 100644 --- a/device/lib/modff.c +++ b/device/lib/modff.c @@ -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); }