The concept RingNumberType defines the syntactic requirements a number type must meet in order to be used in CGAL as a ring type. This implies that CGAL::Number_type_traits<RingNumberType>::Has_division is not required to be CGAL::Tag_true. Unsigned numbers are excluded due to semantical limitations in the ordering.
CopyConstructible, Assignable
| |
Declaration of a variable.
| |
| |
Declaration and initialization with a small integer
constant , . The neutral elements for addition
(zero) and multiplication (one) are needed quite often, but sometimes
other small constants are useful too. The value 127 was chosen such
that even signed 8 bit number types can fulfill this condition.
|
The comparison operators need to be provided.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
In addition, the comparisons with small values of type int are also required.
The arithmetic operators for the addition, subtraction and multiplication are required as well.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
And similarly, the mixed operators with small values of type int are also required.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The following accessory functions are needed for special purposes :
C++ built-in number types
CGAL::Filtered_exact<RingNumberType, ET>
CGAL::Fixed_precision_nt
CGAL::Gmpq
CGAL::Gmpz
CGAL::Interval_nt
CGAL::Interval_nt_advanced
CGAL::Lazy_exact_nt<RingNumberType>
CGAL::MP_Float
CGAL::Quotient<RingNumberType>
leda_integer
leda_rational
leda_bigfloat
leda_real