Line | |
---|
1 | /*
|
---|
2 | libc/ieee_float/ieee_float.h
|
---|
3 |
|
---|
4 | Created: Oct 14, 1993 by Philip Homburg <philip@cs.vu.nl>
|
---|
5 |
|
---|
6 | Define structures and macros for manipulating IEEE floats
|
---|
7 | */
|
---|
8 |
|
---|
9 | #ifndef IEEE_FLOAT_H
|
---|
10 | #define IEEE_FLOAT_H
|
---|
11 |
|
---|
12 | #define isnan __IsNan
|
---|
13 |
|
---|
14 | struct f64
|
---|
15 | {
|
---|
16 | u32_t low_word;
|
---|
17 | u32_t high_word;
|
---|
18 | };
|
---|
19 |
|
---|
20 | #define F64_SIGN_SHIFT 31
|
---|
21 | #define F64_SIGN_MASK 1
|
---|
22 |
|
---|
23 | #define F64_EXP_SHIFT 20
|
---|
24 | #define F64_EXP_MASK 0x7ff
|
---|
25 | #define F64_EXP_BIAS 1023
|
---|
26 | #define F64_EXP_MAX 2047
|
---|
27 |
|
---|
28 | #define F64_MANT_SHIFT 0
|
---|
29 | #define F64_MANT_MASK 0xfffff
|
---|
30 |
|
---|
31 | #define F64_GET_SIGN(fp) (((fp)->high_word >> F64_SIGN_SHIFT) & \
|
---|
32 | F64_SIGN_MASK)
|
---|
33 | #define F64_GET_EXP(fp) (((fp)->high_word >> F64_EXP_SHIFT) & \
|
---|
34 | F64_EXP_MASK)
|
---|
35 | #define F64_SET_EXP(fp, val) ((fp)->high_word= ((fp)->high_word & \
|
---|
36 | ~(F64_EXP_MASK << F64_EXP_SHIFT)) | \
|
---|
37 | (((val) & F64_EXP_MASK) << F64_EXP_SHIFT))
|
---|
38 |
|
---|
39 | #define F64_GET_MANT_LOW(fp) ((fp)->low_word)
|
---|
40 | #define F64_SET_MANT_LOW(fp, val) ((fp)->low_word= (val))
|
---|
41 | #define F64_GET_MANT_HIGH(fp) (((fp)->high_word >> F64_MANT_SHIFT) & \
|
---|
42 | F64_MANT_MASK)
|
---|
43 | #define F64_SET_MANT_HIGH(fp, val) ((fp)->high_word= ((fp)->high_word & \
|
---|
44 | ~(F64_MANT_MASK << F64_MANT_SHIFT)) | \
|
---|
45 | (((val) & F64_MANT_MASK) << F64_MANT_SHIFT))
|
---|
46 |
|
---|
47 | #endif /* IEEE_FLOAT_H */
|
---|
48 |
|
---|
49 | /*
|
---|
50 | * $PchId: ieee_float.h,v 1.3 1996/02/22 21:01:39 philip Exp $
|
---|
51 | */
|
---|
Note:
See
TracBrowser
for help on using the repository browser.