diff options
author | rsc <devnull@localhost> | 2004-02-29 22:10:26 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-02-29 22:10:26 +0000 |
commit | 5a8e63b2f016735364d17866d5e2bcb35d20c78b (patch) | |
tree | d5d0ce11e087efaf81c77311bac9d30aed41783d /src/libfmt/nan64.c | |
parent | d51419bf4397cf13d0c50bf84c125477c6bed307 (diff) | |
download | plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.tar.gz plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.tar.bz2 plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.zip |
Fighting the good fight.
Move libfmt, libutf into subdirectories of lib9.
Add poll-based socket i/o to libthread, so that we can
avoid using multiple procs when possible, thus removing
dependence on crappy pthreads implementations.
Convert samterm, acme to the single-proc libthread.
Bring libcomplete, acme up-to-date w.r.t. Plan 9 distribution.
Diffstat (limited to 'src/libfmt/nan64.c')
-rw-r--r-- | src/libfmt/nan64.c | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/src/libfmt/nan64.c b/src/libfmt/nan64.c deleted file mode 100644 index a02a3adb..00000000 --- a/src/libfmt/nan64.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * 64-bit IEEE not-a-number routines. - * This is big/little-endian portable assuming that - * the 64-bit doubles and 64-bit integers have the - * same byte ordering. - */ - -#include "nan.h" - -#ifdef __APPLE__ -#define _NEEDLL -#endif - -typedef unsigned long long uvlong; -typedef unsigned long ulong; - -#ifdef _NEEDLL -static uvlong uvnan = 0x7FF0000000000001LL; -static uvlong uvinf = 0x7FF0000000000000LL; -static uvlong uvneginf = 0xFFF0000000000000LL; -#else -static uvlong uvnan = 0x7FF0000000000001; -static uvlong uvinf = 0x7FF0000000000000; -static uvlong uvneginf = 0xFFF0000000000000; -#endif - -double -__NaN(void) -{ - uvlong *p; - - /* gcc complains about "return *(double*)&uvnan;" */ - p = &uvnan; - return *(double*)p; -} - -int -__isNaN(double d) -{ - uvlong x; - double *p; - - p = &d; - x = *(uvlong*)p; - return (ulong)(x>>32)==0x7FF00000 && !__isInf(d, 0); -} - -double -__Inf(int sign) -{ - uvlong *p; - - if(sign < 0) - p = &uvinf; - else - p = &uvneginf; - return *(double*)p; -} - -int -__isInf(double d, int sign) -{ - uvlong x; - double *p; - - p = &d; - x = *(uvlong*)p; - if(sign == 0) - return x==uvinf || x==uvneginf; - else if(sign > 0) - return x==uvinf; - else - return x==uvneginf; -} - - |