CGAL 6.2 - Algebraic Foundations: AlgebraicStructureTraits Concept Reference

CGAL 6.2 - Algebraic Foundations

Loading...
Searching...
No Matches
List of all members
AlgebraicStructureTraits Concept Reference
Reference Manual » 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.
typedef unspecified_type | Is_exact
| Tag indicating whether `Type` is exact.
typedef unspecified_type | Is_numerical_sensitive
| Tag indicating whether `Type` is numerical sensitive.
typedef unspecified_type | Boolean
| This type specifies the return type of the predicates provided by this traits.

## 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`.
typedef unspecified_type | Is_one
| A model of `AlgebraicStructureTraits_::IsOne`.
typedef unspecified_type | Square
| A model of `AlgebraicStructureTraits_::Square`.
typedef unspecified_type | Simplify
| A model of `AlgebraicStructureTraits_::Simplify`.
typedef unspecified_type | Unit_part
| A model of `AlgebraicStructureTraits_::UnitPart`.
typedef unspecified_type | Integral_division
| A model of `AlgebraicStructureTraits_::IntegralDivision`.
typedef unspecified_type | Divides
| A model of `AlgebraicStructureTraits_::Divides`.
typedef unspecified_type | Is_square
| A model of `AlgebraicStructureTraits_::IsSquare`.
typedef unspecified_type | Gcd
| A model of `AlgebraicStructureTraits_::Gcd`.
typedef unspecified_type | Mod
| A model of `AlgebraicStructureTraits_::Mod`.
typedef unspecified_type | Div
| A model of `AlgebraicStructureTraits_::Div`.
typedef unspecified_type | Div_mod
| A model of `AlgebraicStructureTraits_::DivMod`.
typedef unspecified_type | Inverse
| A model of `AlgebraicStructureTraits_::Inverse`.
typedef unspecified_type | Sqrt
| A model of `AlgebraicStructureTraits_::Sqrt`.
typedef unspecified_type | Kth_root
| A model of `AlgebraicStructureTraits_::KthRoot`.
typedef unspecified_type | Root_of
| A model of `AlgebraicStructureTraits_::RootOf`.

## Member Typedef Documentation

## ◆ Algebraic_category

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`

## ◆ Boolean

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 `CGAL::Uncertain<bool>` or some similar type.

## ◆ Div

typedef unspecified_type AlgebraicStructureTraits::Div

A model of `AlgebraicStructureTraits_::Div`.

Required by the concept `EuclideanRing`.

## ◆ Div_mod

typedef unspecified_type AlgebraicStructureTraits::Div_mod

A model of `AlgebraicStructureTraits_::DivMod`.

Required by the concept `EuclideanRing`.

## ◆ Divides

typedef unspecified_type AlgebraicStructureTraits::Divides

A model of `AlgebraicStructureTraits_::Divides`.

Required by the concept `IntegralDomain`.

## ◆ Gcd

typedef unspecified_type AlgebraicStructureTraits::Gcd

A model of `AlgebraicStructureTraits_::Gcd`.

Required by the concept `UniqueFactorizationDomain`.

## ◆ Integral_division

typedef unspecified_type AlgebraicStructureTraits::Integral_division

A model of `AlgebraicStructureTraits_::IntegralDivision`.

Required by the concept `IntegralDomain`.

## ◆ Inverse

typedef unspecified_type AlgebraicStructureTraits::Inverse

A model of `AlgebraicStructureTraits_::Inverse`.

Required by the concept `Field`.

## ◆ Is_exact

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.

## ◆ Is_numerical_sensitive

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.

## ◆ Is_one

typedef unspecified_type AlgebraicStructureTraits::Is_one

A model of `AlgebraicStructureTraits_::IsOne`.

Required by the concept `IntegralDomainWithoutDivision`.

## ◆ Is_square

typedef unspecified_type AlgebraicStructureTraits::Is_square

A model of `AlgebraicStructureTraits_::IsSquare`.

Required by the concept `IntegralDomainWithoutDivision`.

## ◆ Is_zero

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`.

## ◆ Kth_root

typedef unspecified_type AlgebraicStructureTraits::Kth_root

A model of `AlgebraicStructureTraits_::KthRoot`.

Required by the concept `FieldWithKthRoot`.

## ◆ Mod

typedef unspecified_type AlgebraicStructureTraits::Mod

A model of `AlgebraicStructureTraits_::Mod`.

Required by the concept `EuclideanRing`.

## ◆ Root_of

typedef unspecified_type AlgebraicStructureTraits::Root_of

A model of `AlgebraicStructureTraits_::RootOf`.

Required by the concept `FieldWithRootOf`.

## ◆ Simplify

typedef unspecified_type AlgebraicStructureTraits::Simplify

A model of `AlgebraicStructureTraits_::Simplify`.

Required by the concept `IntegralDomainWithoutDivision`.

## ◆ Sqrt

typedef unspecified_type AlgebraicStructureTraits::Sqrt

A model of `AlgebraicStructureTraits_::Sqrt`.

Required by the concept `FieldWithSqrt`.

## ◆ Square

typedef unspecified_type AlgebraicStructureTraits::Square

A model of `AlgebraicStructureTraits_::Square`.

Required by the concept `IntegralDomainWithoutDivision`.

## ◆ Unit_part

typedef unspecified_type AlgebraicStructureTraits::Unit_part

A model of `AlgebraicStructureTraits_::UnitPart`.

Required by the concept `IntegralDomainWithoutDivision`.