# UnivariatePolynomialDecompositionPackage(R, UP)¶

updecomp.spad line 41 [edit on github]

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.