\begin{ccRefFunction}{integral_division}

\ccDefinition

The function \ccRefName\ (a.k.a. exact division or division without remainder) 
maps ring elements $(x,y)$ to ring element $z$ such that $x = yz$ if such a $z$ 
exists (i.e. if $x$ is divisible by $y$). Otherwise the effect of invoking 
this operation is undefined. Since the ring represented is an integral domain, 
$z$ is uniquely defined if it exists. 

In case the argument types \ccc{NT1} and \ccc{NT2} differ, 
the \ccc{result_type} is determined via \ccc{Coercion_traits}.\\
Thus, the \ccc{result_type} is well defined if \ccc{NT1} and \ccc{NT2} 
are a model of \ccc{ExplicitInteroperable}. \\
The actual \ccRefName\ is performed with the semantic of that type.

The function is guaranteed to be well defined in case \ccc{result_type}
is a model of the \ccc{IntegralDomain} concept.

\ccInclude{CGAL/number_utils.h}

\ccFunction{template <class NT1, class NT2> result_type 
        integral_division(const NT1& x, const NT2& y);}{}

\ccSeeAlso

\ccRefConceptPage{IntegralDomain}\\
\ccRefConceptPage{AlgebraicStructureTraits::IntegralDivision}\\

\end{ccRefFunction}

