ieee_float.h

Go to the documentation of this file.
00001 /*
00002 libc/ieee_float/ieee_float.h
00003 
00004 Created:        Oct 14, 1993 by Philip Homburg <philip@cs.vu.nl>
00005 
00006 Define structures and macros for manipulating IEEE floats
00007 */
00008 
00009 #ifndef IEEE_FLOAT_H
00010 #define IEEE_FLOAT_H
00011 
00012 #define isnan __IsNan
00013 
00014 struct f64
00015 {
00016         u32_t low_word;
00017         u32_t high_word;
00018 };
00019 
00020 #define F64_SIGN_SHIFT  31
00021 #define F64_SIGN_MASK   1
00022 
00023 #define F64_EXP_SHIFT   20
00024 #define F64_EXP_MASK    0x7ff
00025 #define F64_EXP_BIAS    1023
00026 #define F64_EXP_MAX     2047
00027 
00028 #define F64_MANT_SHIFT  0
00029 #define F64_MANT_MASK   0xfffff
00030 
00031 #define F64_GET_SIGN(fp)        (((fp)->high_word >> F64_SIGN_SHIFT) & \
00032                                         F64_SIGN_MASK)
00033 #define F64_GET_EXP(fp)         (((fp)->high_word >> F64_EXP_SHIFT) & \
00034                                         F64_EXP_MASK)
00035 #define F64_SET_EXP(fp, val)    ((fp)->high_word= ((fp)->high_word &    \
00036                                 ~(F64_EXP_MASK << F64_EXP_SHIFT)) |     \
00037                                 (((val) & F64_EXP_MASK) << F64_EXP_SHIFT))
00038 
00039 #define F64_GET_MANT_LOW(fp)            ((fp)->low_word)
00040 #define F64_SET_MANT_LOW(fp, val)       ((fp)->low_word= (val))
00041 #define F64_GET_MANT_HIGH(fp)   (((fp)->high_word >> F64_MANT_SHIFT) & \
00042                                         F64_MANT_MASK)
00043 #define F64_SET_MANT_HIGH(fp, val)      ((fp)->high_word= ((fp)->high_word & \
00044                                 ~(F64_MANT_MASK << F64_MANT_SHIFT)) |   \
00045                                 (((val) & F64_MANT_MASK) << F64_MANT_SHIFT))
00046 
00047 #endif /* IEEE_FLOAT_H */
00048 
00049 /*
00050  * $PchId: ieee_float.h,v 1.3 1996/02/22 21:01:39 philip Exp $
00051  */

Generated on Fri Apr 14 22:57:26 2006 for minix by  doxygen 1.4.6