xref: /plan9/mips/include/ape/float.h (revision 59cc4ca53493a3c6d2349fe2b7f7c40f7dce7294)
13e12c5d1SDavid du Colombier #ifndef __FLOAT
23e12c5d1SDavid du Colombier #define __FLOAT
33e12c5d1SDavid du Colombier /* IEEE, default rounding */
43e12c5d1SDavid du Colombier 
53e12c5d1SDavid du Colombier #define FLT_ROUNDS	1
63e12c5d1SDavid du Colombier #define FLT_RADIX	2
73e12c5d1SDavid du Colombier 
83e12c5d1SDavid du Colombier #define FLT_DIG		6
93e12c5d1SDavid du Colombier #define FLT_EPSILON	1.19209290e-07
103e12c5d1SDavid du Colombier #define FLT_MANT_DIG	24
113e12c5d1SDavid du Colombier #define FLT_MAX		3.40282347e+38
123e12c5d1SDavid du Colombier #define FLT_MAX_10_EXP	38
133e12c5d1SDavid du Colombier #define FLT_MAX_EXP	128
143e12c5d1SDavid du Colombier #define FLT_MIN		1.17549435e-38
153e12c5d1SDavid du Colombier #define FLT_MIN_10_EXP	-37
163e12c5d1SDavid du Colombier #define FLT_MIN_EXP	-125
173e12c5d1SDavid du Colombier 
183e12c5d1SDavid du Colombier #define DBL_DIG		15
193e12c5d1SDavid du Colombier #define DBL_EPSILON	2.2204460492503131e-16
203e12c5d1SDavid du Colombier #define DBL_MANT_DIG	53
213e12c5d1SDavid du Colombier #define DBL_MAX		1.797693134862315708145e+308
223e12c5d1SDavid du Colombier #define DBL_MAX_10_EXP	308
233e12c5d1SDavid du Colombier #define DBL_MAX_EXP	1024
243e12c5d1SDavid du Colombier #define DBL_MIN		2.225073858507201383090233e-308
253e12c5d1SDavid du Colombier #define DBL_MIN_10_EXP	-307
263e12c5d1SDavid du Colombier #define DBL_MIN_EXP	-1021
273e12c5d1SDavid du Colombier #define LDBL_MANT_DIG	DBL_MANT_DIG
283e12c5d1SDavid du Colombier #define LDBL_EPSILON	DBL_EPSILON
293e12c5d1SDavid du Colombier #define LDBL_DIG	DBL_DIG
303e12c5d1SDavid du Colombier #define LDBL_MIN_EXP	DBL_MIN_EXP
313e12c5d1SDavid du Colombier #define LDBL_MIN	DBL_MIN
323e12c5d1SDavid du Colombier #define LDBL_MIN_10_EXP	DBL_MIN_10_EXP
333e12c5d1SDavid du Colombier #define LDBL_MAX_EXP	DBL_MAX_EXP
343e12c5d1SDavid du Colombier #define LDBL_MAX	DBL_MAX
353e12c5d1SDavid du Colombier #define LDBL_MAX_10_EXP	DBL_MAX_10_EXP
363e12c5d1SDavid du Colombier 
37*59cc4ca5SDavid du Colombier typedef 	union FPdbleword FPdbleword;
38*59cc4ca5SDavid du Colombier union FPdbleword
39*59cc4ca5SDavid du Colombier {
40*59cc4ca5SDavid du Colombier 	double	x;
41*59cc4ca5SDavid du Colombier 	struct {	/* big endian */
42*59cc4ca5SDavid du Colombier 		long hi;
43*59cc4ca5SDavid du Colombier 		long lo;
44*59cc4ca5SDavid du Colombier 	};
45*59cc4ca5SDavid du Colombier };
46*59cc4ca5SDavid du Colombier 
473e12c5d1SDavid du Colombier #ifdef _RESEARCH_SOURCE
483e12c5d1SDavid du Colombier /* define stuff needed for floating conversion */
493e12c5d1SDavid du Colombier #define IEEE_MC68k	1
503e12c5d1SDavid du Colombier #define Sudden_Underflow 1
513e12c5d1SDavid du Colombier #endif
523e12c5d1SDavid du Colombier #ifdef _PLAN9_SOURCE
533e12c5d1SDavid du Colombier /* FCR */
543e12c5d1SDavid du Colombier #define	FPINEX	(1<<7)
553e12c5d1SDavid du Colombier #define	FPOVFL	(1<<9)
563e12c5d1SDavid du Colombier #define	FPUNFL	(1<<8)
573e12c5d1SDavid du Colombier #define	FPZDIV	(1<<10)
583e12c5d1SDavid du Colombier #define	FPRNR	(0<<0)
593e12c5d1SDavid du Colombier #define	FPRZ	(1<<0)
603e12c5d1SDavid du Colombier #define	FPRPINF	(2<<0)
613e12c5d1SDavid du Colombier #define	FPRNINF	(3<<0)
623e12c5d1SDavid du Colombier #define	FPRMASK	(3<<0)
633e12c5d1SDavid du Colombier #define	FPPEXT	0
643e12c5d1SDavid du Colombier #define	FPPSGL	0
653e12c5d1SDavid du Colombier #define	FPPDBL	0
663e12c5d1SDavid du Colombier #define	FPPMASK	0
673e12c5d1SDavid du Colombier /* FSR */
683e12c5d1SDavid du Colombier #define	FPAINEX	(1<<2)
693e12c5d1SDavid du Colombier #define	FPAOVFL	(1<<4)
703e12c5d1SDavid du Colombier #define	FPAUNFL	(1<<3)
713e12c5d1SDavid du Colombier #define	FPAZDIV	(1<<5)
723e12c5d1SDavid du Colombier #endif
733e12c5d1SDavid du Colombier #endif /* __FLOAT */
74