2004-08-05 16:49:55 -04:00
|
|
|
typedef struct {
|
|
|
|
CELL header;
|
|
|
|
double n;
|
2004-12-10 21:46:42 -05:00
|
|
|
} F_FLOAT;
|
2004-08-05 16:49:55 -04:00
|
|
|
|
2004-12-10 21:46:42 -05:00
|
|
|
INLINE F_FLOAT* make_float(double n)
|
2004-08-05 16:49:55 -04:00
|
|
|
{
|
2004-12-10 21:46:42 -05:00
|
|
|
F_FLOAT* flo = allot_object(FLOAT_TYPE,sizeof(F_FLOAT));
|
2004-08-05 16:49:55 -04:00
|
|
|
flo->n = n;
|
|
|
|
return flo;
|
|
|
|
}
|
|
|
|
|
2004-08-06 18:40:44 -04:00
|
|
|
INLINE double untag_float_fast(CELL tagged)
|
|
|
|
{
|
2004-12-10 21:46:42 -05:00
|
|
|
return ((F_FLOAT*)UNTAG(tagged))->n;
|
2004-08-06 18:40:44 -04:00
|
|
|
}
|
|
|
|
|
2005-01-16 17:58:28 -05:00
|
|
|
INLINE CELL tag_float(double flo)
|
|
|
|
{
|
|
|
|
return RETAG(make_float(flo),FLOAT_TYPE);
|
|
|
|
}
|
|
|
|
|
2004-09-19 00:33:40 -04:00
|
|
|
double to_float(CELL tagged);
|
2004-08-05 16:49:55 -04:00
|
|
|
void primitive_to_float(void);
|
2004-08-05 17:33:02 -04:00
|
|
|
void primitive_str_to_float(void);
|
|
|
|
void primitive_float_to_str(void);
|
2004-08-06 02:51:32 -04:00
|
|
|
void primitive_float_to_bits(void);
|
2004-08-06 18:40:44 -04:00
|
|
|
|
2004-09-19 00:33:40 -04:00
|
|
|
void primitive_float_eq(void);
|
|
|
|
void primitive_float_add(void);
|
|
|
|
void primitive_float_subtract(void);
|
|
|
|
void primitive_float_multiply(void);
|
|
|
|
void primitive_float_divfloat(void);
|
|
|
|
void primitive_float_less(void);
|
|
|
|
void primitive_float_lesseq(void);
|
|
|
|
void primitive_float_greater(void);
|
|
|
|
void primitive_float_greatereq(void);
|
2004-08-06 18:40:44 -04:00
|
|
|
|
|
|
|
void primitive_facos(void);
|
|
|
|
void primitive_fasin(void);
|
|
|
|
void primitive_fatan(void);
|
|
|
|
void primitive_fatan2(void);
|
|
|
|
void primitive_fcos(void);
|
|
|
|
void primitive_fexp(void);
|
|
|
|
void primitive_fcosh(void);
|
|
|
|
void primitive_flog(void);
|
|
|
|
void primitive_fpow(void);
|
|
|
|
void primitive_fsin(void);
|
|
|
|
void primitive_fsinh(void);
|
|
|
|
void primitive_fsqrt(void);
|
2005-05-04 22:34:55 -04:00
|
|
|
|
2005-05-24 19:59:21 -04:00
|
|
|
void primitive_float_bits(void);
|
|
|
|
void primitive_double_bits(void);
|
|
|
|
|
2005-05-04 22:34:55 -04:00
|
|
|
void box_float(float flo);
|
|
|
|
float unbox_float(void);
|
|
|
|
void box_double(double flo);
|
|
|
|
double unbox_double(void);
|