An int of exactly 32 bits, regardless of the machine.
Side note: There's not much reason to want an int of at least 32 bits (i.e., 32 on
32-bit machines and 63 on 64-bit machines) because Int63 is basically just as
efficient.
Overflow issues are not generally considered and explicitly handled. This may be more of an issue for 32-bit ints than 64-bit ints.
Int32.t is boxed on both 32-bit and 64-bit machines.
include Base__.Int_intf.S with type t = int32include Identifiable.S with type t := tinclude Comparable.S with type t := tinclude Base__.Comparable_intf.Polymorphic_compareascending is identical to compare. descending x y = ascending y x. These are
intended to be mnemonic when used like List.sort ~compare:ascending and List.sort
~cmp:descending, since they cause the list to be sorted in ascending or descending
order, respectively.
clamp_exn t ~min ~max returns t', the closest value to t such that
between t' ~low:min ~high:max is true.
Raises if not (min <= max).
val clamp : t ‑> min:t ‑> max:t ‑> t Or_error.tinclude Comparator.S with type t := tval comparator : (t, comparator_witness) Comparator.comparatorinclude Base__.Comparable_intf.Validate with type t := tval validate_lbound : min:t Maybe_bound.t ‑> t Validate.checkval validate_ubound : max:t Maybe_bound.t ‑> t Validate.checkval validate_bound : min:t Maybe_bound.t ‑> max:t Maybe_bound.t ‑> t Validate.checkinclude Comparable.With_zero with type t := tval validate_positive : t Validate.checkval validate_non_negative : t Validate.checkval validate_negative : t Validate.checkval validate_non_positive : t Validate.checkval is_positive : t ‑> boolval is_non_negative : t ‑> boolval is_negative : t ‑> boolval is_non_positive : t ‑> boolval sign : t ‑> Base__.Sign0.tReturns Neg, Zero, or Pos in a way consistent with the above functions.
val zero : tval one : tval minus_one : tNegation
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.
include Base__.Int_intf.Round with type t := tround 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.
| `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.
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.
The results are unspecified for negative shifts and shifts >= num_bits.
val decr : t Base__.Import.ref ‑> unitval incr : t Base__.Import.ref ‑> unitval of_int32_exn : int32 ‑> tval to_int32_exn : t ‑> int32val of_int64_exn : int64 ‑> tval to_int64 : t ‑> int64val of_nativeint_exn : nativeint ‑> tval to_nativeint_exn : t ‑> nativeintval of_float_unchecked : float ‑> tof_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.
val num_bits : intThe number of bits available in this integer type. Note that the integer representations are signed.
module O : Base__.Int_intf.Operators with type t := tA sub-module designed to be opened to make working with ints more convenient.
val of_int : int ‑> t optionval to_int : t ‑> int optionval of_int32 : int32 ‑> tval to_int32 : t ‑> int32val of_nativeint : nativeint ‑> t optionval to_nativeint : t ‑> nativeintval of_int64 : int64 ‑> t optionThese functions return the least-significant bits of the input. In cases where
optional conversions return Some x, truncating conversions return x.
val of_int_trunc : int ‑> tval to_int_trunc : t ‑> intval of_nativeint_trunc : nativeint ‑> tval of_int64_trunc : int64 ‑> tval bits_of_float : float ‑> tRounds a regular 64-bit OCaml float to a 32-bit IEEE-754 "single" float, and returns its bit representation. We make no promises about the exact rounding behavior, or what happens in case of over- or underflow.
val float_of_bits : t ‑> floatCreates a 32-bit IEEE-754 "single" float from the given bits, and converts it to a regular 64-bit OCaml float.