import poly.*; import poly.factory.*; import poly.op.*; /** * A few simple test cases. This is not a comprehensive test. * @author DXN * @since Fall 2002. */ public class PolyClient { public IPoly pc0; public IPoly pc1; public IPoly p1; public IPoly p2; public IPoly p3; public IPoly p4; public IPoly p5; public IPolyOp add; public IPolyOp mul; public IPolyOp longDiv; public PolyClient(IPolyFact f) { pc0 = f.makeConstPoly (0.0); // pc0 == 0. pc1 = f.makeConstPoly (-1.0); // pc1 == -1. p1 = f.makeNCPoly (-5.0, 3, pc0); // p1 == -5x^3. p2 = f.makeNCPoly (2.0, 5, p1); // p2 == 2x^5 - 5x^3. p3 = f.makeNCPoly (-4.0, 6, p2); // p3 = -4x^6 + 2x^5 - 5x^3. p4 = f.makeNCPoly (3.0, 2, pc1); // p4 = 3x^2 - 1. p5 = f.makeNCPoly (-2.0, 5, p4); // p5 = -2x^5 + 3x^2 -1. System.out.println ("pc0(x) = 0 = " + pc0); System.out.println ("pc1(x) = -1 = " + pc1); System.out.println ("p1(x) = -5x^3 + 0 = " + p1); System.out.println ("p2(x) = 2x^5 - 5x^3 + 0 = " + p2); System.out.println ("p3(x) = -4x^6 + 2x^5 - 5x^3 + 0 = " + p3); System.out.println ("p4(x) = 3x^2 - 1 = " + p4); System.out.println ("p5(x) = -2x^5 + 3x^2 -1 = " + p5); add = new Add(f); mul = new Mul(f); longDiv = new LongDiv(f); } public void testAdd() { System.out.println ("p5(x) + p3(x) = -4x^6 - 5x^3 + 3x^2 - 1 = " + p5.execute(add, p3)); } public void testMul() { System.out.println ("p5(x) * p4(x) = -6x^7 - 2x^5 + 9x^4 - 6x^2 + 1 = " + p5.execute(mul, p4)); } public void testLongDiv() { QRPair qr = (QRPair)p4.execute(longDiv, p5); System.out.println ("p5(x) / p4(x): quotient = " + qr.getQuotient() + " remainder = " + qr.getRemainder()); } public void testEval() { System.out.println ("p5(0) == -1, Eval = " + p5.execute(EvalHorner.Singleton, new Double(0))); System.out.println ("p5(1) == 0, Eval = " + p5.execute (EvalHorner.Singleton, new Double(1))); } public void run () { testAdd(); testMul(); testLongDiv(); testEval(); } public static void main (String[] args) { new PolyClient(CompPolyFact.Singleton).run(); } }