carl  19.10.56

In order to represent polynomials, we define the following hierarchy of classes:

  • Coefficient: Represents the numeric coefficient..
  • Variable: Represents a variable.
  • Monomial: Represents a product of variables.
  • Term: Represents a product of a constant factor and a Monomial.
  • MultivariatePolynomial: Represents a polynomial in multiple variables with numeric coefficients.

We consider these types to be embedded in a hierarchy like this:

  • MultivariatePolynomial
    • Term
      • Monomial
        • Variable
      • Coefficient

We will abbreviate these types as C, V, M, T, MP.


Additionally, we define a UnivariatePolynomial class. It is meant to represent either a univariate polynomial in a single variable, or a multivariate polynomial with a distinguished main variable.

In the former case, a number type is used as template argument. We call this a univariate polynomial.

In the latter case, the template argument is instantiated with a multivariate polynomial. We call this a univariately represented polynomial.

A UnivariatePolynomial, regardless if univariate or univariately represented, is mostly compatible to the above types.