factor/native/bignum.h

53 lines
1.4 KiB
C
Raw Normal View History

2004-08-29 03:20:19 -04:00
CELL bignum_zero;
CELL bignum_pos_one;
CELL bignum_neg_one;
INLINE F_ARRAY* untag_bignum(CELL tagged)
{
type_check(BIGNUM_TYPE,tagged);
return (F_ARRAY*)UNTAG(tagged);
}
F_FIXNUM to_integer(CELL x);
2004-12-18 00:41:31 -05:00
DLLEXPORT void box_integer(F_FIXNUM integer);
DLLEXPORT void box_cell(CELL cell);
2004-12-17 12:22:16 -05:00
DLLEXPORT F_FIXNUM unbox_integer(void);
2004-12-18 00:41:31 -05:00
DLLEXPORT CELL unbox_cell(void);
F_ARRAY* to_bignum(CELL tagged);
2004-08-05 15:18:31 -04:00
void primitive_to_bignum(void);
2004-09-19 00:33:40 -04:00
void primitive_bignum_eq(void);
void primitive_bignum_add(void);
void primitive_bignum_subtract(void);
void primitive_bignum_multiply(void);
void primitive_bignum_divint(void);
void primitive_bignum_divfloat(void);
void primitive_bignum_divmod(void);
void primitive_bignum_mod(void);
void primitive_bignum_and(void);
void primitive_bignum_or(void);
void primitive_bignum_xor(void);
void primitive_bignum_shift(void);
void primitive_bignum_less(void);
void primitive_bignum_lesseq(void);
void primitive_bignum_greater(void);
void primitive_bignum_greatereq(void);
void primitive_bignum_not(void);
2004-08-25 02:00:52 -04:00
void copy_bignum_constants(void);
2004-10-27 21:21:31 -04:00
CELL three_test(void* x, unsigned char r, unsigned char g, unsigned char b);
2004-09-19 17:39:28 -04:00
INLINE CELL tag_integer(F_FIXNUM x)
2004-09-19 17:39:28 -04:00
{
if(x < FIXNUM_MIN || x > FIXNUM_MAX)
return tag_object(s48_long_to_bignum(x));
else
return tag_fixnum(x);
}
INLINE CELL tag_cell(CELL x)
{
if(x > FIXNUM_MAX)
return tag_object(s48_ulong_to_bignum(x));
else
return tag_fixnum(x);
}