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