1*272efad7SDavid du Colombier #ifndef __FLOAT 2*272efad7SDavid du Colombier #define __FLOAT 3*272efad7SDavid du Colombier /* IEEE, default rounding */ 4*272efad7SDavid du Colombier 5*272efad7SDavid du Colombier #define FLT_ROUNDS 1 6*272efad7SDavid du Colombier #define FLT_RADIX 2 7*272efad7SDavid du Colombier 8*272efad7SDavid du Colombier #define FLT_DIG 6 9*272efad7SDavid du Colombier #define FLT_EPSILON 1.19209290e-07 10*272efad7SDavid du Colombier #define FLT_MANT_DIG 24 11*272efad7SDavid du Colombier #define FLT_MAX 3.40282347e+38 12*272efad7SDavid du Colombier #define FLT_MAX_10_EXP 38 13*272efad7SDavid du Colombier #define FLT_MAX_EXP 128 14*272efad7SDavid du Colombier #define FLT_MIN 1.17549435e-38 15*272efad7SDavid du Colombier #define FLT_MIN_10_EXP -37 16*272efad7SDavid du Colombier #define FLT_MIN_EXP -125 17*272efad7SDavid du Colombier 18*272efad7SDavid du Colombier #define DBL_DIG 15 19*272efad7SDavid du Colombier #define DBL_EPSILON 2.2204460492503131e-16 20*272efad7SDavid du Colombier #define DBL_MANT_DIG 53 21*272efad7SDavid du Colombier #define DBL_MAX 1.797693134862315708145e+308 22*272efad7SDavid du Colombier #define DBL_MAX_10_EXP 308 23*272efad7SDavid du Colombier #define DBL_MAX_EXP 1024 24*272efad7SDavid du Colombier #define DBL_MIN 2.225073858507201383090233e-308 25*272efad7SDavid du Colombier #define DBL_MIN_10_EXP -307 26*272efad7SDavid du Colombier #define DBL_MIN_EXP -1021 27*272efad7SDavid du Colombier #define LDBL_MANT_DIG DBL_MANT_DIG 28*272efad7SDavid du Colombier #define LDBL_EPSILON DBL_EPSILON 29*272efad7SDavid du Colombier #define LDBL_DIG DBL_DIG 30*272efad7SDavid du Colombier #define LDBL_MIN_EXP DBL_MIN_EXP 31*272efad7SDavid du Colombier #define LDBL_MIN DBL_MIN 32*272efad7SDavid du Colombier #define LDBL_MIN_10_EXP DBL_MIN_10_EXP 33*272efad7SDavid du Colombier #define LDBL_MAX_EXP DBL_MAX_EXP 34*272efad7SDavid du Colombier #define LDBL_MAX DBL_MAX 35*272efad7SDavid du Colombier #define LDBL_MAX_10_EXP DBL_MAX_10_EXP 36*272efad7SDavid du Colombier 37*272efad7SDavid du Colombier typedef union FPdbleword FPdbleword; 38*272efad7SDavid du Colombier union FPdbleword 39*272efad7SDavid du Colombier { 40*272efad7SDavid du Colombier double x; 41*272efad7SDavid du Colombier struct { /* little endian */ 42*272efad7SDavid du Colombier long lo; 43*272efad7SDavid du Colombier long hi; 44*272efad7SDavid du Colombier }; 45*272efad7SDavid du Colombier }; 46*272efad7SDavid du Colombier 47*272efad7SDavid du Colombier #ifdef _RESEARCH_SOURCE 48*272efad7SDavid du Colombier /* define stuff needed for floating conversion */ 49*272efad7SDavid du Colombier #define IEEE_8087 1 50*272efad7SDavid du Colombier #define Sudden_Underflow 1 51*272efad7SDavid du Colombier #endif 52*272efad7SDavid du Colombier #ifdef _PLAN9_SOURCE 53*272efad7SDavid du Colombier /* MXCSR */ 54*272efad7SDavid du Colombier /* fcr */ 55*272efad7SDavid du Colombier #define FPFTZ (1<<15) /* amd64 */ 56*272efad7SDavid du Colombier #define FPINEX (1<<12) 57*272efad7SDavid du Colombier #define FPUNFL (1<<11) 58*272efad7SDavid du Colombier #define FPOVFL (1<<10) 59*272efad7SDavid du Colombier #define FPZDIV (1<<9) 60*272efad7SDavid du Colombier #define FPDNRM (1<<8) /* amd64 */ 61*272efad7SDavid du Colombier #define FPINVAL (1<<7) 62*272efad7SDavid du Colombier #define FPDAZ (1<<6) /* amd64 */ 63*272efad7SDavid du Colombier #define FPRNR (0<<13) 64*272efad7SDavid du Colombier #define FPRZ (3<<13) 65*272efad7SDavid du Colombier #define FPRPINF (2<<13) 66*272efad7SDavid du Colombier #define FPRNINF (1<<13) 67*272efad7SDavid du Colombier #define FPRMASK (3<<13) 68*272efad7SDavid du Colombier #define FPPEXT 0 69*272efad7SDavid du Colombier #define FPPSGL 0 70*272efad7SDavid du Colombier #define FPPDBL 0 71*272efad7SDavid du Colombier #define FPPMASK 0 72*272efad7SDavid du Colombier /* fsr */ 73*272efad7SDavid du Colombier #define FPAINEX (1<<5) 74*272efad7SDavid du Colombier #define FPAUNFL (1<<4) 75*272efad7SDavid du Colombier #define FPAOVFL (1<<3) 76*272efad7SDavid du Colombier #define FPAZDIV (1<<2) 77*272efad7SDavid du Colombier #define FPADNRM (1<<1) /* not in plan 9 */ 78*272efad7SDavid du Colombier #define FPAINVAL (1<<0) 79*272efad7SDavid du Colombier #endif 80*272efad7SDavid du Colombier #endif /* __FLOAT */ 81