/** Test accessors. */ public void testAccessors() { // rational numbers BigRational rf = new BigRational(); // System.out.println("rf = " + rf); // polynomials over rational numbers GenPolynomialRing<BigRational> pf = new GenPolynomialRing<BigRational>(rf, rl); // System.out.println("pf = " + pf); // test 1 GenPolynomial<BigRational> p = pf.getONE(); // System.out.println("p = " + p); ExpVector e = p.leadingExpVector(); BigRational c = p.leadingBaseCoefficient(); GenPolynomial<BigRational> f = new GenPolynomial<BigRational>(pf, c, e); assertEquals("1 == 1 ", p, f); GenPolynomial<BigRational> r = p.reductum(); assertTrue("red(1) == 0 ", r.isZERO()); // test 0 p = pf.getZERO(); // System.out.println("p = " + p); e = p.leadingExpVector(); c = p.leadingBaseCoefficient(); f = new GenPolynomial<BigRational>(pf, c, e); assertEquals("0 == 0 ", p, f); r = p.reductum(); assertTrue("red(0) == 0 ", r.isZERO()); // test random p = pf.random(kl, 2 * ll, el, q); // System.out.println("p = " + p); e = p.leadingExpVector(); c = p.leadingBaseCoefficient(); r = p.reductum(); f = new GenPolynomial<BigRational>(pf, c, e); f = r.sum(f); assertEquals("p == lm(f)+red(f) ", p, f); // test iteration over random GenPolynomial<BigRational> g; g = p; f = pf.getZERO(); while (!g.isZERO()) { e = g.leadingExpVector(); c = g.leadingBaseCoefficient(); // System.out.println("c e = " + c + " " + e); r = g.reductum(); f = f.sum(c, e); g = r; } assertEquals("p == lm(f)+lm(red(f))+... ", p, f); }
/** Test object multiplication. */ public void testMultiplication() { a = fac.random(ll); assertTrue("not isZERO( a )", !a.isZERO()); b = fac.random(ll); assertTrue("not isZERO( b )", !b.isZERO()); c = b.multiply(a); d = a.multiply(b); assertTrue("not isZERO( c )", !c.isZERO()); assertTrue("not isZERO( d )", !d.isZERO()); // System.out.println("a = " + a); // System.out.println("b = " + b); e = d.subtract(c); assertTrue("!isZERO( a*b-b*a ) " + e, !e.isZERO()); assertTrue("a*b = b*a", !c.equals(d)); // assertEquals("a*b = b*a",c,d); c = fac.random(ll); // System.out.println("c = " + c); d = a.multiply(b.multiply(c)); e = (a.multiply(b)).multiply(c); // System.out.println("d = " + d); // System.out.println("e = " + e); // System.out.println("d-e = " + d.subtract(c) ); assertEquals("a(bc) = (ab)c", d, e); assertTrue("a(bc) = (ab)c", d.equals(e)); BigQuaternion x = a.leadingBaseCoefficient().inverse(); c = a.monic(); d = a.multiply(x); assertEquals("a.monic() = a(1/ldcf(a))", c, d); BigQuaternion y = b.leadingBaseCoefficient().inverse(); c = b.monic(); d = b.multiply(y); assertEquals("b.monic() = b(1/ldcf(b))", c, d); e = new GenPolynomial<BigQuaternion>(fac, y); d = b.multiply(e); assertEquals("b.monic() = b(1/ldcf(b))", c, d); // d = e.multiply(b); // assertEquals("b.monic() = (1/ldcf(b) (0))*b",c,d); }