public Polynomial sub(Polynomial poly) { int deg = degree > poly.degree ? degree : poly.degree; Number lcoeffs[] = new Number[deg + 1]; for (int i = 0; i <= deg; ++i) { if (i <= degree && i <= poly.degree) lcoeffs[i] = baseRing.sub(coeffs[i], poly.coeffs[i]); else if (i <= degree) lcoeffs[i] = coeffs[i]; else lcoeffs[i] = baseRing.getInverse(poly.coeffs[i]); } return valueOf(lcoeffs); }