
\ccRefChapter{Polynomial}
%\label{ChapterRefPolynomial}

\ccChapterAuthor{Michael Hemmer and Who Soever}

\section{todo open questions:}

\begin{itemize} 
\item \ccc{PolynomialTraits_d::Evaluate}: take \ccc{Innermost_coefficient} as argument type only.
      this relates CoercionTraits (not documented yet) 
\item Do we need a SignAt for multivariate polynomials?
\item Some of the functors in PolynomialTraits can be implemented using some more basic ones. 
      On the other hand, the way they should be implemented may depend on  the way the polynomial is 
      represented and on the cost of the other functors. 
      I therefore decided to put them into the PolynomialTraits. 
      On the other hand one could decide to provide a very basic PolynomialTraits 
      (just constructor, access to coefficients, and properties (degree)) and call the current 
      PolynomialTraits a PolynomialToolBox. But I don't think that this is going to be very efficient 
      or used. 
\item \ccc{PolynomialTraits_d::ConstructPolynomial_d}, is there a nice interface to 
      constuct sparse multivariat polynomials?
\end{itemize}

\section{Classified Reference Pages}

\subsection*{Polynomial\_d} 

\ccRefConceptPage{Polynomial_d}\\
\ccRefConceptPage{PolynomialTraits_d}\\

\ccRefConceptPage{PolynomialTraits_d::ConstructPolynomial_d}\\
\ccRefConceptPage{PolynomialTraits_d::Degree}\\
\ccRefConceptPage{PolynomialTraits_d::TotalDegree}\\
\ccRefConceptPage{PolynomialTraits_d::LeadingCoefficient}\\
\ccRefConceptPage{PolynomialTraits_d::UnivariateContent}\\
\ccRefConceptPage{PolynomialTraits_d::MultivariateContent}\\

\ccRefConceptPage{PolynomialTraits_d::Shift}\\
\ccRefConceptPage{PolynomialTraits_d::Negate}\\
\ccRefConceptPage{PolynomialTraits_d::Invert}\\
\ccRefConceptPage{PolynomialTraits_d::Translate}\\
\ccRefConceptPage{PolynomialTraits_d::TranslateHomogeneous}\\
\ccRefConceptPage{PolynomialTraits_d::Scale}\\
\ccRefConceptPage{PolynomialTraits_d::ScaleHomogeneous}\\
%\ccRefConceptPage{PolynomialTraits_d::ScaleUp}\\
%\ccRefConceptPage{PolynomialTraits_d::ScaleDown}\\

\ccRefConceptPage{PolynomialTraits_d::Differentiate}\\
\ccRefConceptPage{PolynomialTraits_d::SquareFreeFactorization}\\
\ccRefConceptPage{PolynomialTraits_d::MakeSquareFree}\\

\ccRefConceptPage{PolynomialTraits_d::PseudoDivision}\\
\ccRefConceptPage{PolynomialTraits_d::PseudoDivisionQuotient}\\
\ccRefConceptPage{PolynomialTraits_d::PseudoDivisionRemainder}\\

\ccRefConceptPage{PolynomialTraits_d::GcdUpToConstantFactor}\\
\ccRefConceptPage{PolynomialTraits_d::IntegralDivisionUpToConstantFactor}\\
\ccRefConceptPage{PolynomialTraits_d::UnivariateContentUpToConstantFactor}\\
\ccRefConceptPage{PolynomialTraits_d::SquareFreeFactorizationUpToConstantFactor}\\
\ccRefConceptPage{PolynomialTraits_d::MakeSquareFreeUpToConstantFactor}\\


\ccRefConceptPage{PolynomialTraits_d::Evaluate}\\
\ccRefConceptPage{PolynomialTraits_d::EvaluateHomogeneous}\\

\ccRefConceptPage{PolynomialTraits_d::Resultant}\\