include Base.Int.S_unbounded with type t := t
Sourceval compare__local : t -> t -> int
Sourceval of_string_opt : string -> t option
Sourceval to_string_hum : ?delimiter:char -> t -> string
delimiter
is an underscore by default.
Infix operators and constants
Negation
There are two pairs of integer division and remainder functions, /%
and %
, and /
and rem
. They both satisfy the same equation relating the quotient and the remainder:
x = (x /% y) * y + (x % y);
x = (x / y) * y + (rem x y);
The functions return the same values if x
and y
are positive. They all raise if y = 0
.
The functions differ if x < 0
or y < 0
.
If y < 0
, then %
and /%
raise, whereas /
and rem
do not.
x % y
always returns a value between 0 and y - 1
, even when x < 0
. On the other hand, rem x y
returns a negative value if and only if x < 0
; that value satisfies abs (rem x y) <= abs y - 1
.
Float division of integers.
Other common functions
round
rounds an int to a multiple of a given to_multiple_of
argument, according to a direction dir
, with default dir
being `Nearest
. round
will raise if to_multiple_of <= 0
. If the result overflows (too far positive or too far negative), round
returns an incorrect result.
| `Down | rounds toward Int.neg_infinity |
| `Up | rounds toward Int.infinity |
| `Nearest | rounds to the nearest multiple, or `Up in case of a tie |
| `Zero | rounds toward zero |
Here are some examples for round ~to_multiple_of:10
for each direction:
| `Down | {10 .. 19} --> 10 | { 0 ... 9} --> 0 | {-10 ... -1} --> -10 |
| `Up | { 1 .. 10} --> 10 | {-9 ... 0} --> 0 | {-19 .. -10} --> -10 |
| `Zero | {10 .. 19} --> 10 | {-9 ... 9} --> 0 | {-19 .. -10} --> -10 |
| `Nearest | { 5 .. 14} --> 10 | {-5 ... 4} --> 0 | {-15 ... -6} --> -10 |
For convenience and performance, there are variants of round
with dir
hard-coded. If you are writing performance-critical code you should use these.
Sourceval round :
?dir:[ `Zero | `Nearest | `Up | `Down ] ->
t ->
to_multiple_of:t ->
t
Sourceval round_towards_zero : t -> to_multiple_of:t -> t
Sourceval round_down : t -> to_multiple_of:t -> t
Sourceval round_up : t -> to_multiple_of:t -> t
Sourceval round_nearest : t -> to_multiple_of:t -> t
Returns the absolute value of the argument. May be negative if the input is min_value
.
Successor and predecessor functions
Exponentiation
pow base exponent
returns base
raised to the power of exponent
. It is OK if base <= 0
. pow
raises if exponent < 0
, or an integer overflow would occur.
Bit-wise logical operations
These are identical to land
, lor
, etc. except they're not infix and have different names.
Returns the number of 1 bits in the binary representation of the input.
Bit-shifting operations
The results are unspecified for negative shifts and shifts >= num_bits
.
Shifts left, filling in with zeroes.
Shifts right, preserving the sign of the input.
Increment and decrement functions for integer references
Sourceval of_int32_exn : int32 -> t
Sourceval to_int32_exn : t -> int32
Sourceval of_int64_exn : int64 -> t
Sourceval of_nativeint_exn : nativeint -> t
Sourceval to_nativeint_exn : t -> nativeint
Sourceval of_float_unchecked : float -> t
of_float_unchecked
truncates the given floating point number to an integer, rounding towards zero. The result is unspecified if the argument is nan or falls outside the range of representable integers.
A sub-module designed to be opened to make working with ints more convenient.