Listing 1: BigNum header file
// (c) 1996 tony breitzman
// BigNum.h - a class for operating on arbitrarily large integers
# include <fstream.h>
# include <stdlib.h>
# include <string.h>
const int BASE = 10000;
class BigNum{
protected:
int *x; //this array holds the BigNum
char positive; //sign flag
long exp; //array index of most significant digit
public:
BigNum(char *s); //construct from string
BigNum(long k=0,long new_sz=0); //construct from long
BigNum(const BigNum &b,long new_sz=0); //copy constructor
~BigNum(){delete[] x;} //destructor
friend ostream& operator<<(ostream & os, BigNum &b); //for printing
BigNum & operator=(const BigNum &b); //assignment
BigNum & operator=(long k); //assignment from long
BigNum operator+(const BigNum & b); //addition
BigNum operator-(const BigNum &b); //subtraction
BigNum operator/(const BigNum &den); //divide bignums
BigNum operator/(long denom); //divide bignum by long
BigNum operator*(const BigNum & b); //bignum multiplication
BigNum operator^(const long n); //exponentiation
//easy routines; these are easily implemented and are not
//included here to save space. The complete listings may be
//obtained from my web page.
BigNum operator-(); //unary minus
BigNum operator+(const long k); //addition with long
BigNum operator-(const long k); //Bignum - long
BigNum operator*(long k); //multiply bignum * long
BigNum operator%(const BigNum &denom);//remainder of division
long operator%(const long denom); //rem. Of bignum / long
char operator<=(const BigNum &b);
char operator>(const BigNum &b);
char operator>=(const BigNum &b);
char operator==(const BigNum &b);
char operator<(const BigNum &b);
char operator<=(const long k);
char operator>(const long k);
char operator>=(const long k);
char operator==(const long k);
char operator<(const long k);
char is_zero(); //returns 1 if value of BigNum is zero
void asl(const long n); //arithmetic shift left; equivalent to
/ multiplying by base n times
void asr(const long n); //arithmetic shift right
long BigNum2Long(); //convert a bignum to a long
//if possible
BigNum abs(const BigNum &b); //absolute value
void random(const int size); //makes a random bignum of size digits
};
// End of File