import clarkson.math.Poly;

public class Main {
public static void main(String args[])
{
    Poly zero = new Poly();
    Poly one = new Poly(1,0);
    Poly twoXone = new Poly(2,1);
    Poly threeXtwo = new Poly(3,2);
    System.out.println(zero.add(twoXone));
    System.out.println(twoXone.add(zero));
    System.out.println(one.add(one));
    System.out.println(one.add(zero));
    System.out.println(twoXone.add(twoXone));
    System.out.println(zero.add(zero));
    
    Poly minusfourXfive = new Poly(-4,5);
    Poly fourXfive = new Poly(4,5);
    System.out.println(zero.add(fourXfive));
    System.out.println(one.add(twoXone).add(threeXtwo).add(twoXone));

    System.out.println(new Poly(-4,3).add(fourXfive));
    System.out.println(fourXfive.add(new Poly(-4,3)));
    System.out.println(fourXfive.add(fourXfive));
    System.out.println(fourXfive.add(new Poly(-4,3)).add(new Poly(100,2)).add(minusfourXfive));
    System.out.println(fourXfive.add(minusfourXfive));


    System.out.println(zero.degree());
    System.out.println(new Poly(3,0).degree());
    System.out.println(fourXfive.degree());
    
    System.out.println(zero.repOk());
    System.out.println(new Poly(3,0).repOk());
    System.out.println(fourXfive.repOk());
    System.out.println(fourXfive.add(new Poly(-4,3)).add(new Poly(100,2)).repOk());
    System.out.println(fourXfive.add(new Poly(-4,3)).add(new Poly(100,2)).add(minusfourXfive).repOk());
    Poly longPoly = fourXfive.add(new Poly(-4,3)).add(new Poly(100,2));//.add(minusfourXfive);
    System.out.println(longPoly.repOk());
    for (int i=0; i<=longPoly.degree();++i)
    {
        System.out.println("coeff for x^"+i+":"+longPoly.coeff(i));
    }
    System.out.println(new Poly(3,0).add(longPoly).repOk());
}
}

expected output:
2x
2x
2
1
4x
0
4x^5
1 + 4x + 3x^2
-4x^3 + 4x^5
-4x^3 + 4x^5
8x^5
100x^2-4x^3
0
0
0
5
true
true
true
true
true
true
coeff for x^0:0
coeff for x^1:0
coeff for x^2:100
coeff for x^3:-4
coeff for x^4:0
coeff for x^5:4
true