# SturmHabichtPackage(R, x)¶

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