Int63.Boxed
SourceAn implementation of 63-bit integers that always uses a boxed representation regardless of word size.
Integer division. Raise Division_by_zero
if the second argument is zero. This division rounds the real quotient of its arguments towrds zero.
Integer remainder. If y
is not zero, the result of rem x y
satisfies the following property: x = add (mul (div x y) y) (rem x y)
. if y = 0
, rem x y
raises Division_by_zero
.
shift_left x y
shifts x
to the left by y
bits. The result is unspecified if y < 0
or y >= (32 || 63)
.
shift_right x y
shifts x
to the right by y
bits. This is an arithmetic shift: the sign bit of x
is replicated and inserted in the vacated bits. The result is unspecified if y < 0
or y >= (32 || 63)
.
shift_right_logical x y
shifts x
to the right by y
bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x
/ The result is unspecified if y < 0
or y >= (32 || 63)
.
Convert the given integer (type int
) to t
. It's an unsafe function whose semantic is different from architecture.
Convert the given t
integer to an integer (type int
). On 64-bit platforms, the conversion is exact. On 32-bit platforms, the 32-bit integer is taken modulo 2 31, i.e. the high-order bit is lost during the conversion.
Convert the given 32-bit integer (type int32
) to t
integer. It's an unsafe function whose semantic is different from architecture.
Convert the given string to a t
integer. The string is read in decimal (by default, or if the string begins with 0u
) or in hexadecimal, octal or binary if the string begins with 0x
, 0o
or 0b
respectively.
The 0u
prefix reads the input as an unsigned integer in the range [0, 2 * max_int + 1]
. If the input exceeds max_int
it is converted to the signed integer min_int + input - max_int - 1
.
The _
(underscore) character can appear anywhere in the string is ignored. Raise Failure _
if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integer, or if the integer represented exceeds the range of integers representable in type t
.
The comparison function for t
integers, with the same specification as Stdlib.compare
. Along with the type t
, this function compare
allows the module Optint
to be passed as argument to the functors Set.Make
and Map.Make
.
The pretty-printer for t
.
Efficient fixed-length big-endian encoding functions for t
integers: