6 /* use IEEE 64bit values if not defined */
14 #define DBL_MIN 2.2250738585072014e-308
17 #define DBL_MAX 1.7976931348623157e+308
20 #define DBL_MIN_EXP (-1021)
23 #define DBL_MAX_EXP 1024
25 #ifndef DBL_MIN_10_EXP
26 #define DBL_MIN_10_EXP (-307)
28 #ifndef DBL_MAX_10_EXP
29 #define DBL_MAX_10_EXP 308
35 #define DBL_MANT_DIG 53
38 #define DBL_EPSILON 2.2204460492503131e-16
40 /* End borrowing from MRI 1.8.6 stable */
42 OBJECT
float_new(STATE
, double dbl
);
43 OBJECT
float_from_string(STATE
, char *str
);
44 void float_into_string(STATE
, OBJECT self
, char *buf
, int sz
);
45 OBJECT
float_coerce(STATE
, OBJECT value
);
46 OBJECT
float_compare(STATE
, double a
, double b
);
48 static inline int float_bounded_p(double value
) {
49 if(value
<= (double)FIXNUM_MAX
&& value
>= (double)FIXNUM_MIN
) {
55 static inline double float_truncate(double value
) {
58 } else if(value
< 0.0) {