# Dom::Natural

Semi-ring of natural integer numbers

### Use only in the MuPAD Notebook Interface.

This functionality does not run in MATLAB.

## Syntax

```Dom::Natural(`x`)
```

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

## Superdomain

`Dom::Numerical`

## Examples

### Example 1

Creating some integer numbers using `Dom::Natural`. This example also shows that `Dom::Natural` is a façade domain.

`Dom::Natural(2); domtype(%)`

`Dom::Natural(2/3)`
```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`.

```prog::trace(Dom::Natural::testtypeDom): delete x: testtype(x, Dom::Natural); testtype(3, Dom::Natural); prog::untrace(Dom::Natural::testtypeDom):```
```enter Dom::Natural::testtypeDom(x, Dom::Natural) computed FAIL ```

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

## Parameters

 `x` An integer

expand all

## Mathematical Methods

### `_divide` — Division of two objects

`_divide(x, y)`

### `_divides` — Decide if a number divides another one

`_divides(x, y)`

### `euclideanDegree` — Euclidean degree

`euclideanDegree(x)`

### `factor` — Factorization

`factor(x)`

### `gcd` — Gcd computation

`gcd(x1, x2, …)`

### `gcdex` — Applie the extended Euclidean algorithm

`gcdex(x, y)`

### `_invert` — Inverse of an element

`_invert(x)`

### `irreducible` — Prime number test

`irreducible(x)`

### `isUnit` — Test if an element is a unit

`isUnit(x)`

### `lcm` — Compute the lcm

`lcm(x1, x2, …)`

### `quo` — Compute the euclidean quotient

`quo(x, y)`

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

`rem(x, y)`

### `unitNormal` — Unit normal part

`unitNormal(x)`

### `unitNormalRep` — Unit normal representation

`unitNormalRep(x)`

## Conversion Methods

### `convert` — Conversion of objects

`convert(x)`

### `convert_to` — Conversion to other domains

`convert_to(x, T)`

The following domains are allowed for for `T`: `DOM_INT`, `Dom::Natural`, `Dom::Rational`, `DOM_FLOAT`, `Dom::Float` and `Dom::Numerical`.

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

Get trial now