CGAL 4.7 - Algebraic Foundations: AlgebraicStructureTraits Concept Reference

\( \newcommand{\E}{\mathrm{E}} \) \( \newcommand{\A}{\mathrm{A}} \) \( \newcommand{\R}{\mathrm{R}} \) \( \newcommand{\N}{\mathrm{N}} \) \( \newcommand{\Q}{\mathrm{Q}} \) \( \newcommand{\Z}{\mathrm{Z}} \) \( \def\ccSum #1#2#3{ \sum_{#1}^{#2}{#3} } \def\ccProd #1#2#3{ \sum_{#1}^{#2}{#3} }\)

CGAL 4.7 - Algebraic Foundations

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
List of all members
AlgebraicStructureTraits Concept Reference
Concepts

## Definition

A model of `AlgebraicStructureTraits` reflects the algebraic structure of an associated type `Type`.

Depending on the concepts that `Type` fulfills, it contains various functors and descriptive tags. Moreover it gives access to the several possible algebraic operations within that structure.

See Also
  `IntegralDomainWithoutDivision`
  `IntegralDomain`
  `UniqueFactorizationDomain`
  `EuclideanRing`
  `Field`
  `FieldWithSqrt`
  `FieldWithKthRoot`
  `FieldWithRootOf`
  `CGAL::Integral_domain_without_division_tag`
  `CGAL::Integral_domain_tag`
  `CGAL::Unique_factorization_domain_tag`
  `CGAL::Euclidean_ring_tag`
  `CGAL::Field_tag`
  `CGAL::Field_with_sqrt_tag`
  `CGAL::Field_with_kth_root_tag`
  `CGAL::Field_with_root_of_tag`

Has Models:
  `CGAL::Algebraic_structure_traits<T>`

## Types

A model of `AlgebraicStructureTraits` is supposed to provide:
typedef unspecified_type | Type
| The associated type.
typedef unspecified_type | Algebraic_category
| Tag indicating the algebraic structure of the associated type. More...
typedef unspecified_type | Is_exact
| Tag indicating whether `Type` is exact. More...
typedef unspecified_type | Is_numerical_sensitive
| Tag indicating whether `Type` is numerical sensitive. More...
typedef unspecified_type | Boolean
| This type specifies the return type of the predicates provided by this traits. More...

## Functors

In case a functor is not provided, it is set to `CGAL::Null_functor`.
typedef unspecified_type | Is_zero
| A model of `AlgebraicStructureTraits_::IsZero`. More...
typedef unspecified_type | Is_one
| A model of `AlgebraicStructureTraits_::IsOne`. More...
typedef unspecified_type | Square
| A model of `AlgebraicStructureTraits_::Square`. More...
typedef unspecified_type | Simplify
| A model of `AlgebraicStructureTraits_::Simplify`. More...
typedef unspecified_type | Unit_part
| A model of `AlgebraicStructureTraits_::UnitPart`. More...
typedef unspecified_type | Integral_division
| A model of `AlgebraicStructureTraits_::IntegralDivision`. More...
typedef unspecified_type | Divides
| A model of `AlgebraicStructureTraits_::Divides`. More...
typedef unspecified_type | Is_square
| A model of `AlgebraicStructureTraits_::IsSquare`. More...
typedef unspecified_type | Gcd
| A model of `AlgebraicStructureTraits_::Gcd`. More...
typedef unspecified_type | Mod
| A model of `AlgebraicStructureTraits_::Mod`. More...
typedef unspecified_type | Div
| A model of `AlgebraicStructureTraits_::Div`. More...
typedef unspecified_type | Div_mod
| A model of `AlgebraicStructureTraits_::DivMod`. More...
typedef unspecified_type | Inverse
| A model of `AlgebraicStructureTraits_::Inverse`. More...
typedef unspecified_type | Sqrt
| A model of `AlgebraicStructureTraits_::Sqrt`. More...
typedef unspecified_type | Kth_root
| A model of `AlgebraicStructureTraits_::KthRoot`. More...
typedef unspecified_type | Root_of
| A model of `AlgebraicStructureTraits_::RootOf`. More...

## Member Typedef Documentation

typedef unspecified_type AlgebraicStructureTraits::Algebraic_category

Tag indicating the algebraic structure of the associated type.

Tag is: | `Type` is model of:

`CGAL::Null_tag` | no algebraic concept
`CGAL::Integral_domain_without_division_tag` | `IntegralDomainWithoutDivision`
`CGAL::Integral_domain_tag` | `IntegralDomain`
`CGAL::Unique_factorization_domain_tag` | `UniqueFactorizationDomain`
`CGAL::Euclidean_ring_tag` | `EuclideanRing`
`CGAL::Field_tag` | `Field`
`CGAL::Field_with_sqrt_tag` | `FieldWithSqrt`
`CGAL::Field_with_kth_root_tag` | `FieldWithKthRoot`
`CGAL::Field_with_root_of_tag` | `FieldWithRootOf`

typedef unspecified_type AlgebraicStructureTraits::Boolean

This type specifies the return type of the predicates provided by this traits.

The type must be convertible to `bool` and typically the type indeed maps to `bool`. However, there are also cases such as interval arithmetic, in which it is `Uncertain<bool>` or some similar type.

typedef unspecified_type AlgebraicStructureTraits::Div

A model of `AlgebraicStructureTraits_::Div`.

Required by the concept `EuclideanRing`.

typedef unspecified_type AlgebraicStructureTraits::Div_mod

A model of `AlgebraicStructureTraits_::DivMod`.

Required by the concept `EuclideanRing`.

typedef unspecified_type AlgebraicStructureTraits::Divides

A model of `AlgebraicStructureTraits_::Divides`.

Required by the concept `IntegralDomain`.

typedef unspecified_type AlgebraicStructureTraits::Gcd

A model of `AlgebraicStructureTraits_::Gcd`.

Required by the concept `UniqueFactorizationDomain`.

typedef unspecified_type AlgebraicStructureTraits::Integral_division

A model of `AlgebraicStructureTraits_::IntegralDivision`.

Required by the concept `IntegralDomain`.

typedef unspecified_type AlgebraicStructureTraits::Inverse

A model of `AlgebraicStructureTraits_::Inverse`.

Required by the concept `Field`.

typedef unspecified_type AlgebraicStructureTraits::Is_exact

Tag indicating whether `Type` is exact.

This is either `CGAL::Tag_true` or `CGAL::Tag_false`.

An algebraic structure is considered exact, if all operations required by its concept are computed such that a comparison of two algebraic expressions is always correct. The exactness covers only those operations that are required by the algebraic structure concept.

e.g. an exact `Field` may have a `Sqrt` functor that is not exact.

typedef unspecified_type AlgebraicStructureTraits::Is_numerical_sensitive

Tag indicating whether `Type` is numerical sensitive.

This is either `CGAL::Tag_true` or `CGAL::Tag_false`.

An algebraic structure is considered as numerically sensitive, if the performance of the type is sensitive to the condition number of an algorithm.

typedef unspecified_type AlgebraicStructureTraits::Is_one

A model of `AlgebraicStructureTraits_::IsOne`.

Required by the concept `IntegralDomainWithoutDivision`.

typedef unspecified_type AlgebraicStructureTraits::Is_square

A model of `AlgebraicStructureTraits_::IsSquare`.

Required by the concept `IntegralDomainWithoutDivision`.

typedef unspecified_type AlgebraicStructureTraits::Is_zero

A model of `AlgebraicStructureTraits_::IsZero`.

Required by the concept `IntegralDomainWithoutDivision`. In case `Type` is also model of `RealEmbeddable` this is a model of `RealEmbeddableTraits_::IsZero`.

typedef unspecified_type AlgebraicStructureTraits::Kth_root

A model of `AlgebraicStructureTraits_::KthRoot`.

Required by the concept `FieldWithKthRoot`.

typedef unspecified_type AlgebraicStructureTraits::Mod

A model of `AlgebraicStructureTraits_::Mod`.

Required by the concept `EuclideanRing`.

typedef unspecified_type AlgebraicStructureTraits::Root_of

A model of `AlgebraicStructureTraits_::RootOf`.

Required by the concept `FieldWithRootOf`.

typedef unspecified_type AlgebraicStructureTraits::Simplify

A model of `AlgebraicStructureTraits_::Simplify`.

Required by the concept `IntegralDomainWithoutDivision`.

typedef unspecified_type AlgebraicStructureTraits::Sqrt

A model of `AlgebraicStructureTraits_::Sqrt`.

Required by the concept `FieldWithSqrt`.

typedef unspecified_type AlgebraicStructureTraits::Square

A model of `AlgebraicStructureTraits_::Square`.

Required by the concept `IntegralDomainWithoutDivision`.

typedef unspecified_type AlgebraicStructureTraits::Unit_part

A model of `AlgebraicStructureTraits_::UnitPart`.

Required by the concept `IntegralDomainWithoutDivision`.