package poly.op; import poly.IPolyOp; import poly.IConstPoly; import poly.INCPoly; public class ToString implements IPolyOp { public static final ToString Singleton = new ToString(); private ToString() { } public Object forConst(IConstPoly pol, Object inp) { return Double.toString(pol.getLeadCoef()); } public Object forNonConst(INCPoly pol, Object inp) { return pol.getLeadCoef() + "x^" + pol.getOrder() + pol.getLowerPoly().execute(new IPolyOp() { public Object forConst(IConstPoly p, Object n) { double c = p.getLeadCoef(); return (c < 0 || 0 < c)? " + " + c: ""; } public Object forNonConst(INCPoly p, Object n) { return " + " + p.getLeadCoef() + "x^" + p.getOrder() + p.getLowerPoly().execute(this, null); } }, null); } }