public Polynomial add(Polynomial px) { Polynomial result = new Polynomial(); double coef; double power; Polynomial[] list = {this, px}; for (int i = 0; i < list.length; i++) { for (Map.Entry<Double, Double> e : list[i].entrySet()) { power = e.getKey(); coef = e.getValue(); if (result.containsKey(power)) { coef += result.get(power); } result.put(power, coef); } } return result; }
/** * checks if two polynomials are equal, to a tolerance * * @param px comparison polynomial * @param TOL the difference between the coefficients acceptable * @return true/false : the polynomials are equal */ public boolean equals(Polynomial px, double TOL) { this.clean(); px.clean(); if (this.size() != px.size()) { return false; } else { double coef; double exponent; Iterator<Map.Entry<Double, Double>> iter = this.entrySet().iterator(); while (iter.hasNext()) { Map.Entry<Double, Double> e = iter.next(); coef = e.getValue(); exponent = e.getKey(); if (Math.abs(coef - px.get(exponent)) > TOL) { return false; } } return true; } }