\( \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.3 - Algebraic Foundations

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

## Definition

This is the most basic concept for algebraic structures considered within CGAL.

A model `IntegralDomainWithoutDivision` represents an integral domain, i.e. commutative ring with 0, 1, +, * and unity free of zero divisors.

Note: A model is not required to offer the always well defined integral division.

It refines `Assignable`, `CopyConstructible`, `DefaultConstructible` and `FromIntConstructible`.

It refines `EqualityComparable`, where equality is defined w.r.t. the ring element being represented.

The operators unary and binary plus +, unary and binary minus -, multiplication * and their compound forms +=, -=, *= are required and implement the respective ring operations.

Moreover, `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >` is a model of `AlgebraicStructureTraits` providing:

- `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Algebraic_category` derived from `CGAL::Integral_domain_without_division_tag`
- `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Is_zero` which is a model of `AlgebraicStructureTraits_::IsZero`
- `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Is_one` which is a model of `AlgebraicStructureTraits_::IsOne`
- `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Square` which is a model of `AlgebraicStructureTraits_::Square`
- `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Simplify` which is a model of `AlgebraicStructureTraits_::Simplify`
- `CGAL::Algebraic_structure_traits< IntegralDomainWithoutDivision >::Unit_part` which is a model of `AlgebraicStructureTraits_::UnitPart`

Refines:

  `Assignable`

  `CopyConstructible`

  `DefaultConstructible`

  `EqualityComparable`

  `FromIntConstructible`

See Also
  `IntegralDomainWithoutDivision`
  `IntegralDomain`
  `UniqueFactorizationDomain`
  `EuclideanRing`
  `Field`
  `FieldWithSqrt`
  `FieldWithKthRoot`
  `FieldWithRootOf`
  `AlgebraicStructureTraits`

## Operations
IntegralDomainWithoutDivision | operator+ (const IntegralDomainWithoutDivision &a)
| unary plus
IntegralDomainWithoutDivision | operator- (const IntegralDomainWithoutDivision &a)
| unary minus
IntegralDomainWithoutDivision | operator+ (const IntegralDomainWithoutDivision &a, const IntegralDomainWithoutDivision &b)
IntegralDomainWithoutDivision | operator- (const IntegralDomainWithoutDivision &a, const IntegralDomainWithoutDivision &b)
IntegralDomainWithoutDivision | operator* (const IntegralDomainWithoutDivision &a, const IntegralDomainWithoutDivision &b)
IntegralDomainWithoutDivision | operator+= (const IntegralDomainWithoutDivision &b)
IntegralDomainWithoutDivision | operator-= (const IntegralDomainWithoutDivision &b)
IntegralDomainWithoutDivision | operator*= (const IntegralDomainWithoutDivision &b)
result_type | operator== (const IntegralDomainWithoutDivision &a, const IntegralDomainWithoutDivision &b)
| The `result_type` is convertible to `bool`.
result_type | operator!= (const IntegralDomainWithoutDivision &a, const IntegralDomainWithoutDivision &b)
| The `result_type` is convertible to `bool`.