\begin{ccRefConcept}{PolynomialTraits_d::SquareFreeFactorization} \ccDefinition This \ccc{AdaptableFunctor} 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 provided operator returns the number of factors $n$. The factors $g_i$ and multiplicities $m_i$ are written through the respective output iterators.\\ \ccRefines \ccTypes \ccTypedef{typedef int result_type;}{} \ccOperations \ccSetThreeColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{xxx}{} \ccCreationVariable{square_free_factorization} \ccMethod{template int operator()(PolynomialTraits_d::Polynomial_d p, OutputIterator_1 it_1, OutputIterator_2 it_2);} { computes square-free factorization of $p$.\\ \ccPrecond \ccc{OutputIterator_1} must allow the value type \ccc{PolynomialTraits_d::Polynomial_d}. \ccPrecond \ccc{OutputIterator_2} must allow the value type int. } \ccMethod{template int operator()(PolynomialTraits_d::Polynomial_d p, OutputIterator_1 it_1, OutputIterator_2 it_2, PolynomialTraits_d::Innermost_coefficient& a);} { computes square-free factorization of $p$.\\ \ccPrecond \ccc{OutputIterator_1} must allow the value type \ccc{PolynomialTraits_d::Polynomial_d}. \ccPrecond \ccc{OutputIterator_2} must allow the value type int. } %\ccHasModels \ccSeeAlso \ccRefIdfierPage{Polynomial_d}\\ \ccRefIdfierPage{PolynomialTraits_d}\\ \ccRefIdfierPage{PolynomialTraits_d::SquareFreeFactorizationUpToConstantFactor}\\ \ccRefIdfierPage{PolynomialTraits_d::MakeSquareFree}\\ \end{ccRefConcept}