include Base__.Int_intf.Int_without_module_typesinclude Base__.Int_intf.S with type t = intinclude 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 max_value_30_bits : tmax_value_30_bits = 2^30 - 1. It is useful for writing tests that work on both
64-bit and 32-bit platforms.
val ceil_pow2 : int ‑> intceil_pow2 x returns the smallest power of 2 that is greater than or equal to x.
The implementation may only be called for x > 0. Example: ceil_pow2 17 = 32
val floor_pow2 : int ‑> intfloor_pow2 x returns the largest power of 2 that is less than or equal to x. The
implementation may only be called for x > 0. Example: floor_pow2 17 = 16
val of_int : int ‑> tval to_int : t ‑> intval of_int32 : int32 ‑> t optionval to_int32 : t ‑> int32 optionval of_int64 : int64 ‑> t optionval of_nativeint : nativeint ‑> t optionval to_nativeint : t ‑> nativeintThese functions return the least-significant bits of the input. In cases
where optional conversions return Some x, truncating conversions return x.
val of_int32_trunc : int32 ‑> tval to_int32_trunc : t ‑> int32val of_int64_trunc : int64 ‑> tval of_nativeint_trunc : nativeint ‑> tmodule type Operators = Base__.Int_intf.Operatorsmodule type Operators_unbounded = Base__.Int_intf.Operators_unboundedmodule type Round = Base__.Int_intf.Roundmodule type S = Base__.Int_intf.Smodule type S_common = Base__.Int_intf.S_commonmodule type S_unbounded = Base__.Int_intf.S_unbounded