public static Expression Subtract(SingleVariablePolynomialTerm E1, SingleVariablePolynomialTerm E2) { if (E1.Degree == E2.Degree && E1.Variable == E2.Variable) { return (E1.Coefficient - E2.Coefficient) * (E1.Variable ^ E1.Degree); } return new Difference(E1, E2); }
public static Expression Add(SingleVariablePolynomialTerm E1, SingleVariablePolynomialTerm E2) { if (E1.Degree == E2.Degree && E1.Variable == E2.Variable) { return (E1.Coefficient + E2.Coefficient) * (E1.Variable ^ E1.Degree); } return new Sum(E1, E2); }
public static Expression Divide(SingleVariablePolynomialTerm E1, SingleVariablePolynomialTerm E2) { if (E1.Variable == E2.Variable) { return (E1.Coefficient / E2.Coefficient) * (E1.Variable ^ (E1.Degree - E2.Degree)); } else { return (E1.Coefficient / E2.Coefficient) / (E1.Variable ^ E1.Degree) / (E2.Variable ^ E2.Degree); } }
public static Expression Multiply(SingleVariablePolynomialTerm E1, SingleVariablePolynomialTerm E2) { if (E1.Variable == E2.Variable) { return (E1.Coefficient * E2.Coefficient) * (E1.Variable ^ (E1.Degree + E2.Degree)); } else { return (E1.Coefficient * E2.Coefficient) * (E1.Variable ^ E1.Degree) * (E2.Variable ^ E2.Degree); } }