summaryrefslogtreecommitdiff
path: root/libkern/frexp-68000.c
diff options
context:
space:
mode:
authorCharles Forsyth <charles.forsyth@gmail.com>2015-05-04 13:30:44 +0100
committerCharles Forsyth <charles.forsyth@gmail.com>2015-05-04 13:30:44 +0100
commit19c1b9563e510e86f2b7b53748f60f8ac761e845 (patch)
tree6b2953cb7ff559e6da427530f65bd7d11f147337 /libkern/frexp-68000.c
parent237716b91aa163971f7ebe09fbe2e2ea76880a1e (diff)
remove 68000 references
Diffstat (limited to 'libkern/frexp-68000.c')
-rw-r--r--libkern/frexp-68000.c80
1 files changed, 0 insertions, 80 deletions
diff --git a/libkern/frexp-68000.c b/libkern/frexp-68000.c
deleted file mode 100644
index ac22e037..00000000
--- a/libkern/frexp-68000.c
+++ /dev/null
@@ -1,80 +0,0 @@
-#include <u.h>
-#include <libc.h>
-
-#define MASK 0x7ffL
-#define SHIFT 20
-#define BIAS 1022L
-
-typedef union
-{
- double d;
- struct
- {
- long ms;
- long ls;
- };
-} Cheat;
-
-double
-frexp(double d, int *ep)
-{
- Cheat x;
-
- if(d == 0) {
- *ep = 0;
- return 0;
- }
- x.d = d;
- *ep = ((x.ms >> SHIFT) & MASK) - BIAS;
- x.ms &= ~(MASK << SHIFT);
- x.ms |= BIAS << SHIFT;
- return x.d;
-}
-
-double
-ldexp(double d, int e)
-{
- Cheat x;
-
- if(d == 0)
- return 0;
- x.d = d;
- e += (x.ms >> SHIFT) & MASK;
- if(e <= 0)
- return 0; /* underflow */
- if(e >= MASK){ /* overflow */
- if(d < 0)
- return Inf(-1);
- return Inf(1);
- }
- x.ms &= ~(MASK << SHIFT);
- x.ms |= (long)e << SHIFT;
- return x.d;
-}
-
-double
-modf(double d, double *ip)
-{
- Cheat x;
- int e;
-
- if(d < 1) {
- if(d < 0) {
- x.d = modf(-d, ip);
- *ip = -*ip;
- return -x.d;
- }
- *ip = 0;
- return d;
- }
- x.d = d;
- e = ((x.ms >> SHIFT) & MASK) - BIAS;
- if(e <= SHIFT+1) {
- x.ms &= ~(0x1fffffL >> e);
- x.ls = 0;
- } else
- if(e <= SHIFT+33)
- x.ls &= ~(0x7fffffffL >> (e-SHIFT-2));
- *ip = x.d;
- return d - x.d;
-}