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

57 lines
1.7 KiB
C++

/*!
\ingroup PkgPolynomialConcepts
\cgalConcept
This `Functor` substitutes all variables of a given multivariate
`PolynomialTraits_d::Polynomial_d` \f$ p\f$ by the values given in the
iterator range, where begin refers the value for the innermost variable.
In contrast to `PolynomialTraits_d::Substitute` the given polynomial \f$ p\f$
is interpreted as a homogeneous polynomial.
Hence the iterator range is required to be of length `PolynomialTraits_d::d+1`.
For instance the polynomial \f$ p(x_0,x_1) = x_0^2x_1^3+x_1^4\f$ is interpreted as the homogeneous
polynomial \f$ p(x_0,x_1,w) = x_0^2x_1^3+x_1^4w^1\f$.
\cgalRefines Assignable
\cgalRefines CopyConstructible
\cgalRefines DefaultConstructible
\cgalHeading{Types}
Note that the `result_type` is the coercion type of the value type of the
given iterator range and `PolynomialTraits_d::Innermost_coefficient_type`.
In particular `std::iterator_traits<Input_iterator>::%value_type` must be
`ExplicitInteroperable` with `PolynomialTraits_d::Innermost_coefficient_type`.
Hence, it can not be provided as a public type in advance.
\sa `Polynomial_d`
\sa `PolynomialTraits_d`
\sa `PolynomialTraits_d::Substitute`
\sa `CGAL::Coercion_traits`
*/
class PolynomialTraits_d::SubstituteHomogeneous {
public:
/// \name Operations
/// @{
/*!
Substitutes each variable of \f$ p\f$ by the values given in the iterator range,
where \f$ p\f$ is interpreted as a homogeneous polynomial in all variables.
The begin iterator refers to the innermost variable \f$ x_0\f$.
\pre (`end-begin` == `PolynomialTraits_d::d`)+1
*/
template<class Input_iterator>
result_type operator()(PolynomialTraits_d::Polynomial_d p,
Input_iterator begin, Input_iterator end);
/// @}
}; /* end PolynomialTraits_d::SubstituteHomogeneous */