# UnivariatePolynomialDecompositionPackage(R, UP)¶

UnivariatePolynomialDecompositionPackage implements functional decomposition of univariate polynomial with coefficients in an IntegralDomain of CharacteristicZero.

completeDecompose: UP -> List UP if R has Field
completeDecompose(f) returns a list of factors of f for the functional decomposition of f. [f1, ..., fn] means f = f1 o ... o fn.
decomposeIfCan: UP -> Union(Record(left: UP, right: UP), failed) if R has Field
decomposeIfCan(f) returns a functional decomposition of the polynomial f or “failed” if it has not found any.
leftFactorIfCan: (UP, UP) -> Union(UP, failed)
leftFactorIfCan(f, h) returns the left factor (g in f = g o h) of the functional decomposition of the polynomial f with given h or "failed" if g does not exist.
monicCompleteDecompose: UP -> List UP
monicCompleteDecompose(f) returns a list of factors of f for the functional decomposition of monic polynomial f. [f1, ..., fn] means f = f1 o ... o fn.
monicDecomposeIfCan: UP -> Union(Record(left: UP, right: UP), failed)
monicDecomposeIfCan(f) returns a functional decomposition of the monic polynomial f or “failed” if it has not found any.
monicRightFactorIfCan: (UP, NonNegativeInteger) -> Union(UP, failed)
monicRightFactorIfCan(f, d) returns a candidate to be the monic right factor (h in f = g o h) of degree d of a functional decomposition of the polynomial f or "failed" if no such candidate.
rightFactorIfCan: (UP, NonNegativeInteger, R) -> Union(UP, failed)
rightFactorIfCan(f, d, c) returns a candidate to be the right factor (h in f = g o h) of degree d with leading coefficient c of a functional decomposition of the polynomial f or "failed" if no such candidate.