# Class UnivariateSquareFreeFactorization

java.lang.Object
cc.redberry.rings.poly.univar.UnivariateSquareFreeFactorization

```public final class UnivariateSquareFreeFactorization
extends Object```
Square-free factorization of univariate polynomials over Z and Zp.
Since:
1.0
• ## Method Summary

Modifier and Type Method Description
`static <T extends IUnivariatePolynomial<T>>boolean` `isSquareFree​(T poly)`
Returns `true` if `poly` is square-free and `false` otherwise
`static <T extends IUnivariatePolynomial<T>>PolynomialFactorDecomposition<T>` `SquareFreeFactorization​(T poly)`
Performs square-free factorization of a `poly`.
`static <Poly extends IUnivariatePolynomial<Poly>>PolynomialFactorDecomposition<Poly>` `SquareFreeFactorizationMusser​(Poly poly)`
Performs square-free factorization of a `poly` using Musser's algorithm (both zero and non-zero characteristic of coefficient ring allowed).
`static <Poly extends IUnivariatePolynomial<Poly>>PolynomialFactorDecomposition<Poly>` `SquareFreeFactorizationMusserZeroCharacteristics​(Poly poly)`
Performs square-free factorization of a poly which coefficient ring has zero characteristic using Musser's algorithm.
`static <Poly extends IUnivariatePolynomial<Poly>>PolynomialFactorDecomposition<Poly>` `SquareFreeFactorizationYunZeroCharacteristics​(Poly poly)`
Performs square-free factorization of a `poly` which coefficient ring has zero characteristic using Yun's algorithm.
`static <T extends IUnivariatePolynomial<T>>T` `SquareFreePart​(T poly)`
Returns square-free part of the `poly`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
• ## Method Details

• ### isSquareFree

public static <T extends IUnivariatePolynomial<T>> boolean isSquareFree​(T poly)
Returns `true` if `poly` is square-free and `false` otherwise
Parameters:
`poly` - the polynomial
Returns:
`true` if `poly` is square-free and `false` otherwise
• ### SquareFreeFactorization

public static <T extends IUnivariatePolynomial<T>>  SquareFreeFactorization​(T poly)
Performs square-free factorization of a `poly`.
Parameters:
`poly` - the polynomial
Returns:
square-free decomposition
• ### SquareFreePart

public static <T extends IUnivariatePolynomial<T>> T SquareFreePart​(T poly)
Returns square-free part of the `poly`
Parameters:
`poly` - the polynomial
Returns:
square free part
• ### SquareFreeFactorizationYunZeroCharacteristics

public static <Poly extends IUnivariatePolynomial<Poly>>  SquareFreeFactorizationYunZeroCharacteristics​(Poly poly)
Performs square-free factorization of a `poly` which coefficient ring has zero characteristic using Yun's algorithm.
Parameters:
`poly` - the polynomial
Returns:
square-free decomposition
• ### SquareFreeFactorizationMusserZeroCharacteristics

public static <Poly extends IUnivariatePolynomial<Poly>>  SquareFreeFactorizationMusserZeroCharacteristics​(Poly poly)
Performs square-free factorization of a poly which coefficient ring has zero characteristic using Musser's algorithm.
Parameters:
`poly` - the polynomial
Returns:
square-free decomposition
• ### SquareFreeFactorizationMusser

public static <Poly extends IUnivariatePolynomial<Poly>>  SquareFreeFactorizationMusser​(Poly poly)
Performs square-free factorization of a `poly` using Musser's algorithm (both zero and non-zero characteristic of coefficient ring allowed).
Parameters:
`poly` - the polynomial
Returns:
square-free decomposition