52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
libc/ieee_float/ieee_float.h
 | 
						|
 | 
						|
Created:	Oct 14, 1993 by Philip Homburg <philip@cs.vu.nl>
 | 
						|
 | 
						|
Define structures and macros for manipulating IEEE floats
 | 
						|
*/
 | 
						|
 | 
						|
#ifndef IEEE_FLOAT_H
 | 
						|
#define IEEE_FLOAT_H
 | 
						|
 | 
						|
#define isnan __IsNan
 | 
						|
 | 
						|
struct f64
 | 
						|
{
 | 
						|
	u32_t low_word;
 | 
						|
	u32_t high_word;
 | 
						|
};
 | 
						|
 | 
						|
#define F64_SIGN_SHIFT	31
 | 
						|
#define F64_SIGN_MASK	1
 | 
						|
 | 
						|
#define F64_EXP_SHIFT	20
 | 
						|
#define F64_EXP_MASK	0x7ff
 | 
						|
#define F64_EXP_BIAS	1023
 | 
						|
#define F64_EXP_MAX	2047
 | 
						|
 | 
						|
#define F64_MANT_SHIFT	0
 | 
						|
#define F64_MANT_MASK	0xfffff
 | 
						|
 | 
						|
#define F64_GET_SIGN(fp)	(((fp)->high_word >> F64_SIGN_SHIFT) & \
 | 
						|
					F64_SIGN_MASK)
 | 
						|
#define F64_GET_EXP(fp)		(((fp)->high_word >> F64_EXP_SHIFT) & \
 | 
						|
					F64_EXP_MASK)
 | 
						|
#define F64_SET_EXP(fp, val)	((fp)->high_word= ((fp)->high_word &	\
 | 
						|
				~(F64_EXP_MASK << F64_EXP_SHIFT)) | 	\
 | 
						|
				(((val) & F64_EXP_MASK) << F64_EXP_SHIFT))
 | 
						|
 | 
						|
#define F64_GET_MANT_LOW(fp)		((fp)->low_word)
 | 
						|
#define F64_SET_MANT_LOW(fp, val)	((fp)->low_word= (val))
 | 
						|
#define F64_GET_MANT_HIGH(fp)	(((fp)->high_word >> F64_MANT_SHIFT) & \
 | 
						|
					F64_MANT_MASK)
 | 
						|
#define F64_SET_MANT_HIGH(fp, val)	((fp)->high_word= ((fp)->high_word & \
 | 
						|
				~(F64_MANT_MASK << F64_MANT_SHIFT)) |	\
 | 
						|
				(((val) & F64_MANT_MASK) << F64_MANT_SHIFT))
 | 
						|
 | 
						|
#endif /* IEEE_FLOAT_H */
 | 
						|
 | 
						|
/*
 | 
						|
 * $PchId: ieee_float.h,v 1.3 1996/02/22 21:01:39 philip Exp $
 | 
						|
 */
 |