// Addition of two polynomialspublic Poly polyAdd (Poly polyA, Poly polyB) { long denomA = polyA.denominator; long denomB = polyB.denominator; // For case with the same denominator if ( denomA == denomB ) { long denomC = denomA; int lengthC = 0; // Determine length of coefficient array first int lengthA = polyA.coeffs.length; int lengthB = polyB.coeffs.length; if ( lengthA == lengthB ) { lengthC = lengthA; } else if ( lengthA > lengthB) { lengthC = lengthA; } else { lengthC = lengthB; }; // Create return value Poly polyC = new Poly ( variableName, new long [lengthC], denomC); for (int i = 0; i < polyC.coeffs.length; i++) { polyC.coeffs[i] = polyA.coeffs[i] + polyB.coeffs[i]; }; return polyC; } // For case with different denominators else { // Determine lowest common denominator long denomC = denomA * denomB; // Convert polyA to common denominator with B Poly polyAB = new Poly ( variableName, new long [polyA.coeffs.length], denomC ); for (int i = 0; i < polyA.coeffs.length; i++) { polyAB.coeffs[i] = polyA.coeffs[i] * denomB; }; // return polyAB; // Convert polyB to common denominator with A Poly polyBA = new Poly ( variableName, new long [polyB.coeffs.length], denomC ); for (int i = 0; i < polyB.coeffs.length; i++) { polyBA.coeffs[i] = polyB.coeffs[i] * denomA; }; // return polyBA; // Now add the normalised polynomials // Determine length of coefficient array first int lengthAB = polyAB.coeffs.length; int lengthBA = polyBA.coeffs.length; int lengthC = 0; if ( lengthAB == lengthBA ) { lengthC = lengthAB; } else if ( lengthAB > lengthBA) { lengthC = lengthAB; } else { lengthC = lengthBA; }; // Create return value Poly polyC = new Poly ( variableName, new long [lengthC], denomC ); for (int i = 0; i < coeffs.length; i++) { polyC.coeffs[i] = polyA.coeffs[i] + polyB.coeffs[i]; }; return polyC; } }