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);
     }
 }