//*****************************************************************************
// A Large Integer class - test                          
//*****************************************************************************

public class LargeIntTest 
{
    public static void main(String[] args)
    {
        LargeInt a = new LargeInt();                                    //create an empty LargeInt, set to 0                       
        System.out.println("empty value: \t" + a);

        LargeInt b = new LargeInt(1234567890123456789L);                //create one with an initial long value
        System.out.println("long value: \t" + b);

        LargeInt c = new LargeInt(b);                                   //copy constructor
        System.out.println("copy construct \t" + c);
 
        LargeInt d = c.clone();                                         //clone
        System.out.println("cloning: \t" + d);
        System.out.println();

        LargeInt e = new LargeInt(1234567890123456L);                   //negate
        System.out.print(e);
        System.out.println("\t\t\t\t neg: \t" + e.LargeIntNegate());

        LargeInt f = new LargeInt(1234567890123456L);                   //add
        LargeInt g = new LargeInt(1234567890123456L);
        System.out.print(f + "\t" + g);
        System.out.println("\t add: \t" + LargeInt.LargeIntAdd(f,g));

        LargeInt h = new LargeInt(1234567890123456L);                   //subtract
        LargeInt i = new LargeInt(1234567890123455L);
        System.out.print(h + "\t" + i);
        System.out.println("\t sub: \t" + LargeInt.LargeIntSubtract(h,i));

        LargeInt j = new LargeInt(1234567890123456L);                   //multiply
        LargeInt k = new LargeInt(1234567890123456L);
        System.out.print(j + "\t" + k);
        System.out.println("\t mult: \t" + LargeInt.LargeIntMultiply(j,k));

        LargeInt m = new LargeInt(123456789012L);                      //divide
        LargeInt n = new LargeInt(100001);
        System.out.print(m + "\t" + n);
        System.out.println("\t\t\t div: \t" + LargeInt.LargeIntDivide(m,n));

        LargeInt o = new LargeInt(9876543210987654L);                 //modulus
        LargeInt p = new LargeInt(151L);
        System.out.print(o + "\t" + p);
        System.out.println("\t\t\t mod: \t" + LargeInt.LargeIntModulus(o,p));
    }
}