# Dom::Natural

Semi-ring of natural integer numbers

## Description

`Dom::Natural`

is the semi-ring of integer
numbers represented by elements of the domain `DOM_INT`

.

`Dom::Natural`

is the domain of natural integer
numbers represented by expressions of type `DOM_INT`

.

Elements of `Dom::Natural`

are usually not
created explicitly. However, if one creates elements using the usual
syntax, it is checked whether the input is an integer number. This
means that `Dom::Natural`

is a façade domain
which creates elements of domain type `DOM_INT`

.

Viewed as a differential ring `Dom::Natural`

is
trivial, it contains constants only.

`Dom::Natural`

has the domain `Dom::Numerical`

as its
super domain, i.e., it inherits each method which is defined by `Dom::Numerical`

and
not re-implemented by `Dom::Natural`

. Methods described
below are those implemented by `Dom::Natural`

.

## Examples

### Example 1

Creating some integer numbers using `Dom::Natural`

.
This example also shows that `Dom::Natural`

is a
façade domain.

Error: The arguments are invalid. [Dom::Natural::new]

### Example 2

By tracing the method `Dom::Natural::testtypeDom`

we
can see the interaction between `testtype`

and `Dom::Natural::testtypeDom`

.

enter Dom::Natural::testtypeDom(x, Dom::Natural)
computed FAIL

enter Dom::Natural::testtypeDom(3, Dom::Natural)
computed TRUE

## Methods

expand all

#### Mathematical Methods

`_divide`

— Division of two objects

`_divides`

— Decide if a number divides another one

`euclideanDegree`

— Euclidean degree

`gcdex`

— Applie the extended Euclidean algorithm

`_invert`

— Inverse of an element

`irreducible`

— Prime number test

`isUnit`

— Test if an element is a unit

`quo`

— Compute the euclidean quotient

`random`

— Random number generation

`random()`

`random(``n`

)

`random(``m, …`

, `n`

)

This methods returns a random number between 0 and *n* -
1.

This methods returns a random number between `m`

and `n`

.

`rem`

— Compute the Euclidean reminder

`unitNormal`

— Unit normal part

`unitNormalRep`

— Unit normal representation

#### Conversion Methods

`convert`

— Conversion of objects

`testtype`

— Type checking

`testtype(``x`

, `T`

)

Usually, this method is called from the function `testtype`

and not directly
by the user. Example 2 demonstrates
this behavior.