module Int: Inttypet =int
The type for integer values.
val zero : intzero is the integer 0.
val one : intone is the integer 1.
val minus_one : intminus_one is the integer -1.
val neg : int -> intneg x is ~-x.
val add : int -> int -> intadd x y is the addition x + y.
val sub : int -> int -> intsub x y is the subtraction x - y.
val mul : int -> int -> intmul x y is the multiplication x * y.
val div : int -> int -> intRounding division.
div x y is the real quotient x / y rounded towards zero to an integer.
See (/) for details.
Division_by_zero if the second argument is 0.val rem : int -> int -> intrem x y is the remainder of the rounding division div x y.
We have rem x y = x - div x y * y.
See (mod) for details.
Division_by_zero if the second argument is 0.val fdiv : int -> int -> intFloor division.
fdiv x y is the real quotient x / y rounded down to an integer.
We have fdiv x y <= div x y <= cdiv x y and cdiv x y - fdiv x y <= 1.
Division_by_zero if the second argument is 0.val cdiv : int -> int -> intCeil division.
cdiv x y is the real quotient x / y rounded up to an integer.
We have fdiv x y <= div x y <= cdiv x y and cdiv x y - fdiv x y <= 1.
Division_by_zero if the second argument is 0.val ediv : int -> int -> intEuclidean division.
ediv x y is the real quotient x / y rounded down to an integer
if y > 0 and rounded up to an integer if y < 0.
The remainder erem x y = x - ediv x y * y is always non-negative.
Moreover, ediv x (-y) = - ediv x y.
Division_by_zero if the second argument is 0.val erem : int -> int -> intEuclidean remainder. If y is not zero, we have
x = ediv x y * y + erem x y and 0 <= erem x y <= abs y - 1.
The result of erem x y is always non-negative,
unlike the result of rem x y, which has the sign of x.
Division_by_zero if the second argument is 0.val succ : int -> intsucc x is add x 1.
val pred : int -> intpred x is sub x 1.
val abs : int -> intabs 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 Int.min_int.
val max_int : intmax_int is the greatest representable integer,
2Sys.int_size - 1-1.
val min_int : intmin_int is the smallest representable integer,
-2Sys.int_size - 1.
val logand : int -> int -> intlogand x y is the bitwise logical and of x and y.
val logor : int -> int -> intlogor x y is the bitwise logical or of x and y.
val logxor : int -> int -> intlogxor x y is the bitwise logical exclusive or of x and y.
val lognot : int -> intlognot x is the bitwise logical negation of x.
val shift_left : int -> int -> intshift_left x n shifts x to the left by n bits. The result
is unspecified if n < 0 or n > Sys.int_size.
val shift_right : int -> int -> intshift_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.
val shift_right_logical : int -> int -> intshift_right_logical 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.
val equal : int -> int -> boolequal x y is true if and only if x = y.
val compare : int -> int -> intcompare x y is compare x y but more efficient.
val min : int -> int -> intReturn the smaller of the two arguments.
val max : int -> int -> intReturn the greater of the two arguments.
val popcount : t -> intPopulation count, also known as Hamming weight.
popcount n is the number of 1 bits in the binary representation of n.
Negative n are represented in two's complement.
val unsigned_bitsize : t -> intunsigned_bitsize n is the minimal number of bits needed to represent
n as an unsigned binary number. It is the smallest integer i
between 0 and Sys.int_size inclusive such that
0 <= n < 2{^i} (unsigned).
val signed_bitsize : t -> intsigned_bitsize n is the minimal number of bits needed to represent
n as a signed, two's complement binary number.
It is the smallest integer i between 1 and Sys.int_size inclusive
such that -2{^i-1} <= n < 2{^i-1} (signed).
val leading_zeros : t -> intleading_zeros n is the number of leading (most significant) 0 bits in
the binary representation of n.
It is an integer between 0 and Sys.int_size inclusive.
If n is negative, leading_zeros n = 0 since the most significant
bit of n is 1.
leading_zeros n = {!Sys.int_size} if and only if n = zero.
Note that leading_zeros n + unsigned_bitsize n = {!Sys.int_size}.
val leading_sign_bits : t -> intleading_sign_bits n is the number of leading (most significant)
sign bits in the binary representation of n,
excluding the sign bit itself.
It is an integer between 0 and {!Sys.int_size} - 1 inclusive.
For positive n, it is the number of leading zero bits minus one.
For negative n, it is the number of leading one bits minus one.
Note that leading_sign_bits n + signed_bitsize n = {!Sys.int_size}.
val trailing_zeros : t -> inttrailing_zeros n is the number of trailing (least significant) 0 bits in
the binary representation of n.
It is an integer between 0 and Sys.int_size inclusive.
It is the largest integer i <= {!Sys.int_size}
such that 2{^i} divides n evenly.
For example, trailing_zeros n = 0 if and only if n is odd,
and trailing_zeros n = {!Sys.int_size} if and only if n = zero.
val to_float : int -> floatto_float x is x as a floating point number.
val of_float : float -> intof_float x truncates x to an integer. The result is
unspecified if the argument is nan or falls outside the range of
representable integers.
val to_string : int -> stringto_string x is the written representation of x in decimal.
val seeded_hash : int -> int -> intA seeded hash function for ints, with the same output value as
Hashtbl.seeded_hash. This function allows this module to be passed as
argument to the functor Hashtbl.MakeSeeded.
val hash : int -> intAn unseeded hash function for ints, with the same output value as
Hashtbl.hash. This function allows this module to be passed as argument
to the functor Hashtbl.Make.