#include <CGAL/polynomial_utils.h>
Given a polynomial f, or a range of values that is interpreted as the principal SturmHabicht coefficients of f, the function computes
m:=# {α ∈ ℝ  f(α)=0} 
The coefficient type of the polynomial, or the value type of the iterator range, respectively must be a model of RealEmbeddable. In the second version, it is not required to pass the exact princiapl SturmHabicht coefficients to the functions; it is only required that the sign of each element corresponds to the sign of the actual principal SturmHabicht coefficient.
We explain the internals of this function. For a sequence I:=(a_{0}, … ,a_{n}) of real numbers with a_{0} ≠ 0, define
C(I)= 
 _{i} 
ε_{i}:= 

For f ∈ ℝ[x] with deg f=n, we have:
C(stha_{n}(f), … ,stha_{0}(f)) = #{α ∈ ℝ  f(α)=0} 
 

 
computes the number of distinct real roots of f  
 

 
computes the number of distinct real roots of f whose principal SturmHabicht coefficients are passed by the iterator range. 