# Univariate Polynomials and Polynomial Rings¶

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
- Ring homomorphisms from a polynomial ring to another ring
- 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.
- Univariate polynomials over \(\QQ\) implemented via FLINT
- 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
- Base class for generic \(p\)-adic polynomials
- p-adic Capped Relative Dense Polynomials
- p-adic Flat Polynomials
- Univariate Polynomials over GF(p^e) via NTL’s ZZ_pEX
- Isolate Real Roots of Real Polynomials
- Isolate Complex Roots of Polynomials
- Refine polynomial roots using Newton–Raphson
- Ideals in Univariate Polynomial Rings
- Quotients of Univariate Polynomial Rings
- Elements of Quotients of Univariate Polynomial Rings
- Polynomial Compilers
- Polynomial multiplication by Kronecker substitution