7 // FIXME: hacks to make freebsd+openbsd long double code happy
9 // union and macros for freebsd
11 #if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
29 #define LDBL_MANL_SIZE 32
30 #define LDBL_MANH_SIZE 32
31 #define LDBL_NBIT (1ull << LDBL_MANH_SIZE-1)
32 #undef LDBL_IMPLICIT_NBIT
33 #define mask_nbit_l(u) ((u).bits.manh &= ~LDBL_NBIT)
35 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
38 //#define LDBL_MAX 1.189731495357231765085759326628007016E+4932L
39 #define LDBL_MAX 0x1.ffffffffffffffffffffffffffffp+16383
40 #define LDBL_MAX_EXP 16384
41 #define LDBL_HAS_INFINITY 1
42 //#define LDBL_MIN 3.362103143112093506262677817321752603E-4932L
43 #define LDBL_MIN 0x1p-16382
44 #define LDBL_HAS_QUIET_NAN 1
45 #define LDBL_HAS_DENORM 1
46 //#define LDBL_EPSILON 1.925929944387235853055977942584927319E-34L
47 #define LDBL_EPSILON 0x1p-112
48 #define LDBL_MANT_DIG 113
49 #define LDBL_MIN_EXP (-16381)
50 #define LDBL_MAX_10_EXP 4932
51 #define LDBL_DENORM_MIN 0x0.0000000000000000000000000001p-16381
52 #define LDBL_MIN_10_EXP (-4931)
71 #define LDBL_MANL_SIZE 64
72 #define LDBL_MANH_SIZE 48
73 #define LDBL_NBIT (1ull << LDBL_MANH_SIZE)
74 #define LDBL_IMPLICIT_NBIT 1
75 #define mask_nbit_l(u)
82 #define GET_LDOUBLE_WORDS(se,mh,ml, f) do{ \
85 (se) = u.xbits.expsign; \
90 #define SET_LDOUBLE_WORDS(f, se,mh,ml) do{ \
92 u.xbits.expsign = (se); \
98 #define GET_LDOUBLE_EXP(se, f) do{ \
101 (se) = u.xbits.expsign; \
104 #define SET_LDOUBLE_EXP(f, se) do{ \
105 union IEEEl2bits u; \
107 u.xbits.expsign = (se); \