\begin{ccRefFunctionObjectConcept}{AlgebraicStructureTraits::UnitPart} \ccDefinition This \ccc{AdaptableUnaryFunction} computes the unit part of a given ring element. The mathematical definition of unit part is as follows: Two ring elements $a$ and $b$ are said to be associate if there exists an invertible ring element (i.e. a unit) $u$ such that $a = ub$. This defines an equivalence relation. We can distinguish exactly one element of every equivalence class as being unit normal. Then each element of a ring possesses a factorization into a unit (called its unit part) and a unit-normal ring element (called its unit normal associate). For the integers, the non-negative numbers are by convention unit normal, hence the unit-part of a non-zero integer is its sign. For a \ccc{Field}, every non-zero element is a unit and is its own unit part, its unit normal associate being one. The unit part of zero is, by convention, one. \ccRefines \ccc{AdaptableUnaryFunction} \ccTypes \ccNestedType{result_type} { Is \ccc{AlgebraicStructureTraits::Type}.} \ccNestedType{argument_type} { Is \ccc{AlgebraicStructureTraits::Type}.} \ccOperations \ccThree{xxxxxxxxxxx}{xxxxxxxxxxx}{} \ccCreationVariable{unit_part} \ccMethod{result_type operator()(argument_type x);} { returns the unit part of $x$.} %\ccHasModels \ccSeeAlso \ccRefIdfierPage{AlgebraicStructureTraits} \end{ccRefFunctionObjectConcept}