factor/native/bignum.h

36 lines
1.1 KiB
C
Raw Normal View History

2004-08-25 02:00:52 -04:00
INLINE ARRAY* untag_bignum(CELL tagged)
{
type_check(BIGNUM_TYPE,tagged);
2004-08-25 02:00:52 -04:00
return (ARRAY*)UNTAG(tagged);
}
2004-08-25 02:00:52 -04:00
ARRAY* bignum_zero;
ARRAY* bignum_pos_one;
ARRAY* bignum_neg_one;
void init_bignum(void);
void primitive_bignump(void);
2004-08-25 02:00:52 -04:00
ARRAY* to_bignum(CELL tagged);
2004-08-05 15:18:31 -04:00
void primitive_to_bignum(void);
2004-08-25 02:00:52 -04:00
CELL number_eq_bignum(ARRAY* x, ARRAY* y);
CELL add_bignum(ARRAY* x, ARRAY* y);
CELL subtract_bignum(ARRAY* x, ARRAY* y);
CELL multiply_bignum(ARRAY* x, ARRAY* y);
2004-08-25 20:51:19 -04:00
CELL gcd_bignum(ARRAY* x, ARRAY* y);
2004-08-25 02:00:52 -04:00
CELL divide_bignum(ARRAY* x, ARRAY* y);
CELL divint_bignum(ARRAY* x, ARRAY* y);
CELL divfloat_bignum(ARRAY* x, ARRAY* y);
CELL divmod_bignum(ARRAY* x, ARRAY* y);
CELL mod_bignum(ARRAY* x, ARRAY* y);
CELL and_bignum(ARRAY* x, ARRAY* y);
CELL or_bignum(ARRAY* x, ARRAY* y);
CELL xor_bignum(ARRAY* x, ARRAY* y);
CELL shiftleft_bignum(ARRAY* x, ARRAY* y);
CELL shiftright_bignum(ARRAY* x, ARRAY* y);
CELL less_bignum(ARRAY* x, ARRAY* y);
CELL lesseq_bignum(ARRAY* x, ARRAY* y);
CELL greater_bignum(ARRAY* x, ARRAY* y);
CELL greatereq_bignum(ARRAY* x, ARRAY* y);
CELL not_bignum(ARRAY* x);
void copy_bignum_constants(void);