#ident "@(#)bignum.h	1.6 5/24/96 11:29:56"
/*
/* Copyright John Moyer 1996
/* permission is granted to use this for any purpose provided proper
/* credit is given to the author
*/


#define ISIZE 64

struct BIGNUM {
	unsigned char x[ISIZE];
	int c;
	int isign;
};

typedef struct BIGNUM BigNum;

extern void bcdadd(
	unsigned char x1[ISIZE],
	unsigned char y1[ISIZE],
	unsigned char z1[ISIZE],
	const int c);

extern int bcdsub(
	unsigned char *x1,
	unsigned char *y1,
	unsigned char *z1,
	int c);

void bcdmul(
	unsigned char x1[ISIZE],
	unsigned char y1[ISIZE],
	unsigned char z1[ISIZE*2+1],
	const int c1,
	const int c2);

void bcdinc(unsigned char *x, int c);

int ascii2bcd( char *p, BigNum *b);
int int2bcd( const int x, BigNum *b);

void bcd2ascii(char *p, int len, BigNum *b);

int bcddiv(BigNum *x1, BigNum *y1, BigNum *r1, BigNum *q1);
int addbignum( BigNum *x1, BigNum *y1, BigNum *z1);
int mulbignum( BigNum *x1, BigNum *y1, BigNum *z1);
