\begin{ccRefConcept}{PolynomialTraits_d} \ccDefinition A model of \ccc{PolynomialTraits_d} is associated to an type \ccc{Polynomial_d}, representing a multivariate polynomial. The number of variables is denoted as the dimension of the polynomial, it is arbitrary but fixed for a certain model of this concept. Note: That this concept does not exclude univariate polynomial. \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_1,\dots,x_{d-1}][x_d]$. In this view, the polynomial is handled as an univariate polynomial over the ring $R[x_1,\dots,x_{d-1}]$. \item A symmetric view, which is symmetric with respect to all variables, seeing the polynomials as element of $R[x_1,\dots,x_d]$. \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_1,\dots,x_{d}]$.}\ccGlue \ccNestedType{Coefficient }{ Type representing $R[x_1,\dots,x_{d-1}]$.}\ccGlue \ccNestedType{Innermost_coefficient}{ Type representing the base ring $R$.} \ccHeading{Functors} \ccSetTwoColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{} \ccNestedType{Construct_polynomial_d}{ A model of \ccc{PolynomialTraits_d::ConstructPolynomial_d}} %Properties \ccNestedType{Degree}{ A model of \ccc{PolynomialTraits_d::Degree}} \ccNestedType{Total_degree}{ A model of \ccc{PolynomialTraits_d::TotalDegree}} \ccNestedType{Leading_coefficient}{ A model of \ccc{PolynomialTraits_d::LeadingCoefficient}} \ccNestedType{Univariate_content}{ In case \ccc{PolynomialTraits_d::Coefficient} is {\bf not} a model of \ccc{UFDomain}, this is \ccc{CGAL::Null_type}, otherwise this is a model of \ccc{PolynomialTraits_d::UnivariateContent}} \begin{ccAdvanced} \ccNestedType{Multivariate_content}{ In case \ccc{PolynomialTraits_d::Innermost_coefficient} is {\bf not} a model of \ccc{UFDomain}, this is \ccc{CGAL::Null_type}, otherwise this is a model of \ccc{PolynomialTraits_d::MultivariateContent}} \end{ccAdvanced} %Manipulation \ccNestedType{Shift}{ A model of \ccc{PolynomialTraits_d::Shift}} \ccNestedType{Negate}{ A model of \ccc{PolynomialTraits_d::Negate}} \ccNestedType{Invert}{ A model of \ccc{PolynomialTraits_d::Invert}} \ccNestedType{Translate}{ A model of \ccc{PolynomialTraits_d::Translate}} \ccNestedType{Translate_homogeneous}{ A model of \ccc{PolynomialTraits_d::TranslateHomogeneous}} \ccNestedType{Scale}{ A model of \ccc{PolynomialTraits_d::Scale}} \ccNestedType{Scale_homogeneous}{ A model of \ccc{PolynomialTraits_d::ScaleHomogeneous}} \begin{ccAdvanced} //\ccNestedType{Scale_up}{ A model of \ccc{PolynomialTraits_d::ScaleUp, return $p(a*x)$}} //\ccNestedType{Scale_down}{ A model of \ccc{PolynomialTraits_d::ScaleDown, return $b^{degree}*p(x/b)$}} \end{ccAdvanced} %unary operations \ccNestedType{Differentiate}{ A model of \ccc{PolynomialTraits_d::Differentiate}} \ccNestedType{Make_square_free}{ A model of \ccc{PolynomialTraits_d::MakeSquareFree}} \ccNestedType{Square_free_factorization}{ In case \ccc{PolynomialTraits::Polynomial_d} is not a model of \ccc{UFDomain}, this is of type \ccc{CGAL::Null_type}, otherwise this is a model of \ccc{PolynomialTraits_d::SquareFreeFactorization}} %pseudo division \ccNestedType{Pseudo_division }{ A model of \ccc{PolynomialTraits_d::Pseudo_division}} \ccNestedType{Pseudo_division_remainder}{ A model of \ccc{PolynomialTraits_d::Pseudo_division_remainder}} \ccNestedType{Pseudo_division_quotient }{ A model of \ccc{PolynomialTraits_d::Pseudo_division_quotient}} %utcf \ccNestedType{Gcd_up_to_constant_factor}{ A model of \ccc{PolynomialTraits_d::GcdUpToConstantFactor}} \ccNestedType{Integral_division_up_to_constant_factor}{ A model of \ccc{PolynomialTraits_d::IntegralDivisionUpToConstantFactor}} \ccNestedType{Content_up_to_constant_factor}{ A model of \ccc{PolynomialTraits_d::ContentUpToConstantFactor}} \ccNestedType{Square_free_factorization_up_to_constant_factor}{ A model of \ccc{PolynomialTraits_d::SquareFreeFactorizationUpToConstantFactor}} %Evaluation \ccNestedType{Evaluate}{ A model of \ccc{PolynomialTraits_d::Evaluate}} \ccNestedType{Evaluate_homogeneous}{ A model of \ccc{PolynomialTraits_d::EvaluateHomogeneous}} %\ccNestedType{Sign_at}{ A model of \ccc{PolynomialTraits_d::SignAt}} %resultant \ccNestedType{Resultant}{ A model of \ccc{PolynomialTraits_d::Resultant}} \ccSeeAlso \ccRefIdfierPage{AlgebraicStructureTraits}\\ \ccRefIdfierPage{Polynomial_d}\\ \end{ccRefConcept}