xref: /plan9/386/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 {	/* little endian */
42*59cc4ca5SDavid du Colombier 		long lo;
43*59cc4ca5SDavid du Colombier 		long hi;
44*59cc4ca5SDavid du Colombier 	};
45*59cc4ca5SDavid du Colombier };
463e12c5d1SDavid du Colombier 
473e12c5d1SDavid du Colombier #ifdef _RESEARCH_SOURCE
483e12c5d1SDavid du Colombier /* define stuff needed for floating conversion */
493e12c5d1SDavid du Colombier #define IEEE_8087	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<<5)
553e12c5d1SDavid du Colombier #define	FPOVFL	(1<<3)
563e12c5d1SDavid du Colombier #define	FPUNFL	((1<<4)|(1<<1))
573e12c5d1SDavid du Colombier #define	FPZDIV	(1<<2)
583e12c5d1SDavid du Colombier #define	FPRNR	(0<<10)
593e12c5d1SDavid du Colombier #define	FPRZ	(3<<10)
603e12c5d1SDavid du Colombier #define	FPRPINF	(2<<10)
613e12c5d1SDavid du Colombier #define	FPRNINF	(1<<10)
623e12c5d1SDavid du Colombier #define	FPRMASK	(3<<10)
633e12c5d1SDavid du Colombier #define	FPPEXT	(3<<8)
643e12c5d1SDavid du Colombier #define	FPPSGL	(0<<8)
653e12c5d1SDavid du Colombier #define	FPPDBL	(2<<8)
663e12c5d1SDavid du Colombier #define	FPPMASK	(3<<8)
673e12c5d1SDavid du Colombier /* FSR */
683e12c5d1SDavid du Colombier #define	FPAINEX	FPINEX
693e12c5d1SDavid du Colombier #define	FPAOVFL	FPOVFL
703e12c5d1SDavid du Colombier #define	FPAUNFL	FPUNFL
713e12c5d1SDavid du Colombier #define	FPAZDIV	FPZDIV
723e12c5d1SDavid du Colombier #endif
733e12c5d1SDavid du Colombier #endif /* __FLOAT */
74