cgal/Polynomial/doc/Polynomial/Concepts/PolynomialTraits_d--Princip...

65 lines
1.8 KiB
C++

/*!
\ingroup PkgPolynomialConcepts
\cgalConcept
Computes the principal leading coefficients of the Sturm-Habicht sequence
of a polynomials \f$ f\f$ of type `PolynomialTraits_d::Polynomial_d`
with respect a certain variable \f$ x_i\f$.
This means that for the \f$ j\f$-th Sturm-Habicht polynomial, this methods returns
the coefficient of \f$ x_i^j\f$.
Note that the degree of the \f$ j\f$-th Sturm-Habicht polynomial is at most \f$ j\f$,
but the principal coefficient might be zero, thus, this functor does not
necessarily give the leading coefficient of the Sturm-Habicht polynomials.
In case that `PolynomialTraits_d::Coefficient_type` is `RealEmbeddable`, the function `CGAL::number_of_real_roots` can be used
on the resulting sequence to count the number of distinct real roots of
the polynomial \f$ f\f$.
\note This functor is optional.
\cgalRefines `AdaptableBinaryFunction`
\cgalRefines `CopyConstructible`
\cgalRefines `DefaultConstructible`
\sa `Polynomial_d`
\sa `PolynomialTraits_d`
\sa `CGAL::number_of_real_roots()`
\sa `PolynomialTraits_d::Resultant`
\sa `PolynomialTraits_d::SturmHabichtSequence`
\sa `PolynomialTraits_d::PrincipalSubresultants`
*/
class PolynomialTraits_d::PrincipalSturmHabichtSequence {
public:
/// \name Operations
/// @{
/*!
computes the principal coefficients of the
Sturm-Habicht sequence of \f$ f\f$,
with respect to the outermost variable. Each element is of type
`PolynomialTraits_d::Coefficient_type`.
*/
template<typename OutputIterator>
OutputIterator operator()(Polynomial_d f,
OutputIterator out);
/*!
computes the principal coefficients
of the Sturm-Habicht sequence of \f$ f\f$
with respect to the variable \f$ x_i\f$.
*/
template<typename OutputIterator>
OutputIterator operator()(Polynomial_d f,
OutputIterator out,
int i);
/// @}
}; /* end PolynomialTraits_d::PrincipalSturmHabichtSequence */