\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, $a$ is a constant factor of type \ccc{PolynomialTraits_d::Innermost_coefficient} \ccRefines \ccTypes \ccTypedef{typedef int result_type;}{} \ccOperations \ccSetThreeColumns{xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx}{xxx}{} \ccCreationVariable{sqaure_free_factorization} \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.} % This is the original documentation, but the manual tools are not able to handle this part: %\ccMethod{template % int % operator()(PolynomialTraits_d::Polynomial_d p, % OutputIterator_1 it_1, % OutputIterator_2 it_2, % PolynomialTraits_d::Innermost_coefficient& a);} % { factor the polynomial $p$ by multiplicities. % That means: factor it into square-free and pairwise coprime non-constant factors $g_i$ % with multiplicities $m_i$ such that $p = a \cdot g_1m_1 \cdot ... \cdot g_nm_n$. % % This is known as square-free factorization in the literature. % The number n is returned. The factors $g_i$ and multiplicities $m_i$ are written through % the respective output iterators.\\ % % \ccPrecond \ccc{OutputIterator_1} must allow the value type \ccc{PolynomialTraits_d:.Polynomial_d}. \\ % \ccPrecond \ccc{OutputIterator_1} must allow the value type int. % } %\ccHasModels \ccSeeAlso \ccRefIdfierPage{Polynomial_d}\\ \ccRefIdfierPage{PolynomialTraits_d}\\ \ccRefIdfierPage{PolynomialTraits_d::SquareFreeFactorizationUpToConstantFactor}\\ \ccRefIdfierPage{PolynomialTraits_d::MakeSquareFree}\\ \end{ccRefConcept}