Sage’s architecture for polynomials ‘under the hood’ is complex, interfacing to a variety of C/C++ libraries for polynomials over specific rings. In practice, the user rarely has to worry about which backend is being used.

The hierarchy of class inheritance is somewhat confusing, since most of the polynomial element classes are implemented as Cython extension types rather than pure Python classes and thus can only inherit from a single base class, whereas others have multiple bases.

- Univariate Polynomial Rings
- Univariate Polynomial Base Class
- Univariate Polynomials over domains and fields
- Univariate Polynomials over GF(2) via NTL’s GF2X.
- Univariate polynomials over number fields.
- Dense univariate polynomials over \(\ZZ\), implemented using FLINT.
- Dense univariate polynomials over \(\ZZ\), implemented using NTL.
- Dense univariate polynomials over \(\ZZ/n\ZZ\), implemented using FLINT.
- Dense univariate polynomials over \(\ZZ/n\ZZ\), implemented using NTL.
- Dense univariate polynomials over \(\RR\), implemented using MPFR
- Polynomial Interfaces to Singular
- Isolate Real Roots of Real Polynomials
- Isolate Complex Roots of Polynomials
- Quotients of Univariate Polynomial Rings
- Elements of Quotients of Univariate Polynomial Rings