From 87771b21fca5980e6eede789efcc4571bb205db7 Mon Sep 17 00:00:00 2001 From: jesusc Date: Fri, 18 Nov 2005 13:27:34 +0000 Subject: [PATCH] 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 --- device/lib/ceilf.c | 1 + device/lib/floorf.c | 1 + device/lib/modff.c | 5 ++++- 3 files changed, 6 insertions(+), 1 deletion(-) 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); } -- 2.47.2