cgal/Algebraic_foundations/doc/Algebraic_foundations/Concepts/AlgebraicStructureTraits--U...

57 lines
1.6 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/// \addtogroup PkgAlgebraicFoundations Algebraic Foundations
/// @{
/// \addtogroup PkgAlgebraicFoundationsConcepts Concepts
/// @{
///
/// This `AdaptableUnaryFunction` computes the unit part of a given ring
/// element.
/// The mathematical definition of unit part is as follows: Two ring elements \f$a\f$
/// and \f$b\f$ are said to be associate if there exists an invertible ring element
/// (i.e. a unit) \f$u\f$ such that \f$a = ub\f$. 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 `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.
/// \refines ::AdaptableUnaryFunction
/// \sa `AlgebraicStructureTraits`
class AlgebraicStructureTraits::UnitPart {
public:
/// \name Types
/// @{
/*!
Is `AlgebraicStructureTraits::Type`.
*/
typedef Hidden_type result_type;
/// @}
/// \name Types
/// @{
/*!
Is `AlgebraicStructureTraits::Type`.
*/
typedef Hidden_type argument_type;
/// @}
/// \name Operations
/// @{
/*!
returns the unit part of \f$x\f$.
*/
result_type operator()(argument_type x);
/// @}
}; /* concept AlgebraicStructureTraits::UnitPart */
/// @}
/// @}