\begin{ccRefConcept}{PolynomialTraits_d::MakeSquareFree}
\ccDefinition

This \ccc{AdaptableBinaryFunction} computes the square-free part of 
a polynomial of type \ccc{PolynomialTraits_d::Polynomial_d}  
{\em up to a constant factor}.  

A polynomial $p$ can be  factored into square-free and pairwise coprime 
non-constant factors $g_i$ with multiplicities $m_i$ and a constant factor $a$, 
such that $p = a  \cdot  g_1^{m_1}  \cdot  ...  \cdot  g_n^{m_n}$, where all $g_i$ are canonicalized.

Given this decomposition, the square free part is defined as the product $g_1  \cdot  ...  \cdot  g_n$, 
which is computed by this functor. 

\ccRefines 
\ccc{AdaptableUnaryFunction}\\
\ccc{CopyConstructible}\\
\ccc{DefaultConstructible}\\

\ccTypes

\ccSetThreeColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{xxx}{}
\ccCreationVariable{fo}
\ccTypedef{typedef PolynomialTraits_d::Polynomial_d   result_type;}{}
\ccGlue
\ccTypedef{typedef PolynomialTraits_d::Polynomial_d   argument_type;}{}

\ccOperations
\ccMethod{result_type operator()(argument_type  p);}
         { Returns the square-free part of $p$.}


%\ccHasModels

\ccSeeAlso

\ccRefIdfierPage{Polynomial_d}\\
\ccRefIdfierPage{PolynomialTraits_d}\\
\ccRefIdfierPage{PolynomialTraits_d::Canonicalize}\\
\ccRefIdfierPage{PolynomialTraits_d::SquareFreeFactorize}\\
\ccRefIdfierPage{PolynomialTraits_d::IsSquareFree}\\

\end{ccRefConcept}
