\begin{ccRefConcept}{PolynomialTraits_d::SquareFreeFactorize} \ccDefinition This \ccc{Functor} computes a square-free factorization of a \ccc{PolynomialTraits_d::Polynomial_d}. A polynomial $p$ is 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_1m_1 \cdot ... \cdot g_nm_n$. The pairs $(g_i,m_i)$ are written into the given output iterator.\\ This functor is well defined if \ccc{PolynomialTraits_d::Polynomial_d} is a \ccc{UniqueFactorizationDomain}. \ccRefines Assignable\\ CopyConstructible\\ DefaultConstructible\\ %\ccTypes \ccOperations \ccSetThreeColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{xxx}{} \ccCreationVariable{fo} \ccMethod{template OutputIterator operator()(PolynomialTraits_d::Polynomial_d p, OutputIterator it, PolynomialTraits_d::Innermost_coefficient_type& a);} { Computes square-free factorization of $p$.\\ The \ccc{OutputIterator} must allow the value type \ccc{std::pair}. } \ccMethod{template OutputIterator operator()(PolynomialTraits_d::Polynomial_d p, OutputIterator it);} { As the first operator, just not computing the factor $a$. } %\ccHasModels \ccSeeAlso \ccRefIdfierPage{Polynomial_d}\\ \ccRefIdfierPage{PolynomialTraits_d}\\ \ccRefIdfierPage{PolynomialTraits_d::SquareFreeFactorizeUpToConstantFactor}\\ \ccRefIdfierPage{PolynomialTraits_d::MakeSquareFree}\\ \end{ccRefConcept}