`Stdlib.Int`

Integer values.

Integers are `Sys.int_size`

bits wide and use two's complement representation. All operations are taken modulo 2^{Sys.int_size}. They do not fail on overflow.

`div x y`

is the division `x / y`

. See `Stdlib.(/)`

for details.

`rem x y`

is the remainder `x mod y`

. See `Stdlib.(mod)`

for details.

`abs x`

is the absolute value of `x`

. That is `x`

if `x`

is positive and `neg x`

if `x`

is negative. **Warning.** This may be negative if the argument is `min_int`

.

`shift_left x n`

shifts `x`

to the left by `n`

bits. The result is unspecified if `n < 0`

or `n > `

`Sys.int_size`

.

`shift_right x n`

shifts `x`

to the right by `n`

bits. This is an arithmetic shift: the sign bit of `x`

is replicated and inserted in the vacated bits. The result is unspecified if `n < 0`

or `n > `

`Sys.int_size`

.

`shift_right x n`

shifts `x`

to the right by `n`

bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of `x`

. The result is unspecified if `n < 0`

or `n > `

`Sys.int_size`

.

`compare x y`

is `Stdlib.compare`

` x y`

but more efficient.

`of_float x`

truncates `x`

to an integer. The result is unspecified if the argument is `nan`

or falls outside the range of representable integers.