Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Base32.I63
Sourceinclude module type of struct include Optint.Int63 end
The type of integers with exactly 63-bits.
val zero : t
Integer 0.
val one : t
Integer 1.
val minus_one : t
Integer (-1).
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
.
val max_int : t
The greatest representable integer.
val min_int : t
The smallest representable integer.
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)
.
val of_int : int -> t
Convert the given integer (type int
) to t
. It's an unsafe function whose semantic is different from architecture.
val to_int : t -> int
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.
val of_int32 : int32 -> t
Convert the given 32-bit integer (type int32
) to t
integer. It's an unsafe function whose semantic is different from architecture.
val of_float : float -> t
val of_string : string -> t
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
.
val of_string_opt : string -> t option
Same as of_string
, but return None
instead of raising.
val to_string : t -> string
Return the string representation of its argument, in decimal.
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
.
val pp : Format.formatter -> t -> unit
The pretty-printer for t
.
Efficient fixed-length big-endian encoding functions for t
integers:
val encode : bytes -> off:int -> t -> unit
val decode : string -> off:int -> t
val to_unsigned_int32 : t -> int32
val of_unsigned_int32 : int32 -> t
val to_unsigned_int : t -> int
val of_unsigned_int : int -> t
An implementation of 63-bit integers that always uses a boxed representation regardless of word size.
is_immediate
reveals the implementation of t
on the current platform, and can be used to build Int63
operations that behave differently depending on the underlying representation, such as FFIs.