# UnivariatePolynomialSquareFree(RC, P)ΒΆ

RC: IntegralDomain

P: Join(UnivariatePolynomialCategory RC, IntegralDomain) with

gcd: (%, %) -> %

This package provides for square-free decomposition of univariate polynomials over arbitrary rings, i.e. a partial factorization such that each factor is a product of irreducibles with multiplicity one and the factors are pairwise relatively prime. If the ring has characteristic zero, the result is guaranteed to satisfy this condition. If the ring is an infinite ring of finite characteristic, then it may not be possible to decide when polynomials contain factors which are `p`

th powers. In this case, the flag associated with that polynomial is set to “nil” (meaning that that polynomials are not guaranteed to be square-free).

- BumInSepFFE: Record(flg: Union(nil, sqfr, irred, prime), fctr: P, xpnt: Integer) -> Record(flg: Union(nil, sqfr, irred, prime), fctr: P, xpnt: Integer)
`BumInSepFFE(f)`

is a local function, exported only because it has multiple conditional definitions.

- squareFree: P -> Factored P
`squareFree(p)`

computes the square-free factorization of the univariate polynomial`p`

. Each factor has no repeated roots, and the factors are pairwise relatively prime.

- squareFreePart: P -> P
`squareFreePart(p)`

returns a polynomial which has the same irreducible factors as the univariate polynomial`p`

, but each factor has multiplicity one.