X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=device%2Flib%2Fpic%2Flibsdcc%2Ffsdiv.c;h=f4a44e6b7497391601021bcf0211590b91446bfe;hb=5c167d844868e592617c9a8f1355abb9e29647a9;hp=7b5b4f5039004bc2ff5262d7d4541fc2bd710876;hpb=b4e2bdce4a68e6e125a3f2cdad9147c72e3b6258;p=fw%2Fsdcc diff --git a/device/lib/pic/libsdcc/fsdiv.c b/device/lib/pic/libsdcc/fsdiv.c index 7b5b4f50..f4a44e6b 100644 --- a/device/lib/pic/libsdcc/fsdiv.c +++ b/device/lib/pic/libsdcc/fsdiv.c @@ -15,7 +15,7 @@ */ /* -** $Id: fsdiv.c 3513 2004-10-01 14:49:51Z vrokas $ +** $Id$ */ /* (c)2000/2001: hacked a little by johan.knol@iduna.nl for sdcc */ @@ -51,8 +51,10 @@ float __fsdiv (float a1, float a2) _FS_REENTRANT /* divide by zero??? */ if (!fl2.l) - /* return NaN or -NaN */ - return (-1.0); + {/* return NaN or -NaN */ + fl2.l = 0x7FC00000; + return (fl2.f); + } /* numerator zero??? */ if (!fl1.l) @@ -93,7 +95,12 @@ float __fsdiv (float a1, float a2) _FS_REENTRANT result &= ~HIDDEN; /* pack up and go home */ - fl1.l = PACK (sign ? 1ul<<31 : 0, (unsigned long) exp, result); + if (exp >= 0x100) + fl1.l = (sign ? SIGNBIT : 0) | 0x7F800000; + else if (exp < 0) + fl1.l = 0; + else + fl1.l = PACK (sign ? SIGNBIT : 0 , exp, result); return (fl1.f); }