\begin{ccRefConcept}{PolynomialTraits_d} \ccDefinition A model of \ccc{PolynomialTraits_d} is associated to an type \ccc{Polynomial_d}, representing a multivariate polynomial \footnote{Univariate polynomials are not excluded by this concept.}. The number of variables is denoted as the dimension $d$ of the polynomial, it is arbitrary but fixed for a certain model of this concept. \ccc{PolynomialTraits_d} provides two different views on the multivariate polynomial. \begin{itemize} \item A recursive view, that sees the polynomial as an element of $R[x_0,\dots,x_{d-2}][x_{d-1}]$. In this view, the polynomial is handled as an univariate polynomial over the ring $R[x_0,\dots,x_{d-2}]$. \item A symmetric view, which is symmetric with respect to all variables, seeing the polynomials as element of $R[x_0,\dots,x_{d-1}]$. \end{itemize} The default view is the recursive view, therefore all functors are designed such that there default version performs the operation with respect to this view. \ccRefines \ccConstants \ccVariable{const int d;}{The dimension and the number of variables respectively.} \ccTypes \ccNestedType{Polynomial_d}{ Type representing $R[x_0,\dots,x_{d-1}]$.}\ccGlue \ccNestedType{Coefficient }{ Type representing $R[x_0,\dots,x_{d-2}]$.}\ccGlue \ccNestedType{Innermost_coefficient}{ Type representing the base ring $R$.} \ccNestedType{template struct Rebind} {This nested template class has to define a type \ccc{Other} which is a model of the concept \ccc{PolynomialTraits_d}, where \ccc{d} is the number of variables and \ccc{T} the \ccc{Innermost_coefficient_type}.} \ccHeading{Functors} In case a functor is not provided it is set to \ccc{CGAL::Null_functor}. %,e.g., \ccc{Sign_at} if \ccc{Innermost_coefficient} is not \ccc{RealEmbeddable}. \ccSetTwoColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{} \ccNestedType{Construct_polynomial} {A model of \ccc{PolynomialTraits_d::ConstructPolynomial}.} \ccNestedType{Get_coefficient} {A model of \ccc{PolynomialTraits_d::GetCoefficient}.} \ccNestedType{Get_innermost_coefficient} {A model of \ccc{PolynomialTraits_d::GetInnermostCoefficient}.} \ccNestedType{Swap} { A model of \ccc{PolynomialTraits_d::Swap}.} \ccNestedType{Move} { A model of \ccc{PolynomialTraits_d::Move}.} \ccNestedType{Degree} { A model of \ccc{PolynomialTraits_d::Degree}.} \ccNestedType{Total_degree} { A model of \ccc{PolynomialTraits_d::TotalDegree}.} \ccNestedType{Degree_vector} { A model of \ccc{PolynomialTraits_d::DegreeVector}.} \ccNestedType{Leading_coefficient} { A model of \ccc{PolynomialTraits_d::LeadingCoefficient}.} \ccNestedType{Innermost_leading_coefficient} {A model of \ccc{PolynomialTraits_d::InnermostLeadingCoefficient}.} \ccNestedType{Canonicalize} { A model of \ccc{PolynomialTraits_d::Canonicalize}.} \ccNestedType{Derive} { A model of \ccc{PolynomialTraits_d::Derive}.} %Evaluation \ccNestedType{Evaluate} { A model of \ccc{PolynomialTraits_d::Evaluate}.} \ccNestedType{Evaluate_homogeneous} { A model of \ccc{PolynomialTraits_d::EvaluateHomogeneous}.} \ccNestedType{Is_zero_at} { A model of \ccc{PolynomialTraits_d::IsZeroAt}.} \ccNestedType{Is_zero_at_homogeneous} { A model of \ccc{PolynomialTraits_d::IsZeroAtHomogeneous}.} \ccNestedType{Sign_at}{ A model of \ccc{PolynomialTraits_d::SignAt}. In case \ccc{Innermost_coefficient} is not \ccc{RealEmbeddable} this is \ccc{CGAL::Null_functor}.} \ccNestedType{Sign_at_homogeneous}{ A model of \ccc{PolynomialTraits_d::SignHomogeneous}. In case \ccc{Innermost_coefficient} is not \ccc{RealEmbeddable} this is \ccc{CGAL::Null_functor}.} \ccNestedType{Compare}{ A model of \ccc{PolynomialTraits_d::Compare}. In case \ccc{Innermost_coefficient} is not \ccc{LessThanComparable} this is \ccc{CGAL::Null_functor}.} \ccSeeAlso \ccRefIdfierPage{Polynomial_d}\\ \ccRefIdfierPage{PolynomialToolBox_d}\\ \end{ccRefConcept}