# SturmHabichtPackage(R, x)ΒΆ

- R: OrderedIntegralDomain
- x: Symbol

This package produces functions for counting etc. real roots of univariate polynomials in `x`

over `R`

, which must be an OrderedIntegralDomain

- countRealRoots: UnivariatePolynomial(x, R) -> Integer
`countRealRoots(p)`

says how many real roots`p`

has

- countRealRootsMultiple: UnivariatePolynomial(x, R) -> Integer if R has GcdDomain
`countRealRootsMultiple(p)`

says how many real roots`p`

has, counted with multiplicity

- SturmHabicht: (UnivariatePolynomial(x, R), UnivariatePolynomial(x, R)) -> Integer
`SturmHabicht(p1, p2)`

computes`c_`

{+}`-c_`

{-} where`c_`

{+} is the number of real roots of`p1`

with`p2>0`

and`c_`

{-} is the number of real roots of`p1`

with`p2<0`

. If`p2=1`

what you get is the number of real roots of`p1`

.

- SturmHabichtCoefficients: (UnivariatePolynomial(x, R), UnivariatePolynomial(x, R)) -> List R
`SturmHabichtCoefficients(p1, p2)`

computes the principal Sturm-Habicht coefficients of`p1`

and`p2`

- SturmHabichtMultiple: (UnivariatePolynomial(x, R), UnivariatePolynomial(x, R)) -> Integer if R has GcdDomain
`SturmHabichtMultiple(p1, p2)`

computes`c_`

{+}`-c_`

{-} where`c_`

{+} is the number of real roots of`p1`

with`p2>0`

and`c_`

{-} is the number of real roots of`p1`

with`p2<0`

. If`p2=1`

what you get is the number of real roots of`p1`

.

- SturmHabichtSequence: (UnivariatePolynomial(x, R), UnivariatePolynomial(x, R)) -> List UnivariatePolynomial(x, R)
`SturmHabichtSequence(p1, p2)`

computes the Sturm-Habicht sequence of`p1`

and`p2`

- subresultantSequence: (UnivariatePolynomial(x, R), UnivariatePolynomial(x, R)) -> List UnivariatePolynomial(x, R)
`subresultantSequence(p1, p2)`

computes the (standard) subresultant sequence of`p1`

and`p2`