gen
produces integers representable within Quickcheck.size
bytes, with a random
sign.
include Core_kernel.Int_intf.S_unbounded with type t := t
include Core_kernel.Int_intf.Extension
include sig ... end
val typerep_of_t : t Typerep_lib.Std.Typerep.t
val typename_of_t : t Typerep_lib.Std.Typename.t
val bin_t : t Bin_prot.Type_class.t
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (int ‑> t) Bin_prot.Read.reader
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_shape_t : Bin_prot.Shape.t
include Core_kernel.Identifiable.S with type t := t
include sig ... end
val t_of_sexp : Sexplib.Sexp.t ‑> t
val sexp_of_t : t ‑> Sexplib.Sexp.t
val bin_t : t Bin_prot.Type_class.t
val bin_read_t : t Bin_prot.Read.reader
val __bin_read_t__ : (Core_kernel__.Import.int ‑> t) Bin_prot.Read.reader
val bin_reader_t : t Bin_prot.Type_class.reader
val bin_size_t : t Bin_prot.Size.sizer
val bin_write_t : t Bin_prot.Write.writer
val bin_writer_t : t Bin_prot.Type_class.writer
val bin_shape_t : Bin_prot.Shape.t
include Core_kernel__.Import.Stringable.S with type t := t
val of_string : string ‑> t
val to_string : t ‑> string
include Core_kernel.Comparable.S_binable with type t := t
include Core_kernel__.Comparable_intf.S_common
include Base.Comparable_intf.S
include Base.Comparable_intf.Polymorphic_compare
ascending
is identical to compare
. descending x y = ascending y x
. These are
intended to be mnemonic when used like List.sort ~cmp: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 Base.Or_error.t
include Base.Comparator.S with type t := t
val comparator : (t, comparator_witness) Base.Comparator.comparator
include Base.Comparable_intf.Validate with type t := t
val validate_lbound : min:t Base.Maybe_bound.t ‑> t Base.Validate.check
val validate_ubound : max:t Base.Maybe_bound.t ‑> t Base.Validate.check
val validate_bound : min:t Base.Maybe_bound.t ‑> max:t Base.Maybe_bound.t ‑> t Base.Validate.check
module Replace_polymorphic_compare : Core_kernel__.Comparable_intf.Polymorphic_compare with type t := t
include Core_kernel__.Comparable_intf.Map_and_set_binable with type t := t with type comparator_witness := comparator_witness
include Core_kernel.Comparator.S with type t := t
val comparator : (t, comparator_witness) Core_kernel.Comparator.comparator
module Map : Core_kernel__.Core_map.S_binable with type Key.t = t with type Key.comparator_witness = comparator_witness
module Set : Core_kernel__.Core_set.S_binable with type Elt.t = t with type Elt.comparator_witness = comparator_witness
include Core_kernel.Hashable.S_binable with type t := t
val hash : t ‑> Core_kernel__.Import.int
val hashable : t Core_kernel.Hashable.Hashtbl.Hashable.t
module Table : Core_kernel.Hashable.Hashtbl.S_binable with type key = t
module Hash_set : Core_kernel.Hash_set.S_binable with type elt = t
module Hash_queue : Core_kernel.Hash_queue.S with type Key.t = t
include Core_kernel__.Import.Pretty_printer.S with type t := t
val pp : Caml.Format.formatter ‑> t ‑> unit
include Core_kernel.Quickcheckable.S_int with type t := t
gen_incl lower_bound upper_bound
produces values between lower_bound
and
upper_bound
, inclusive. It uses an ad hoc distribution that stresses boundary
conditions more often than a uniform distribution, while still able to produce any
value in the range. Raises if lower_bound > upper_bound
.
gen_uniform_incl lower_bound upper_bound
produces a generator for values uniformly
distributed between lower_bound
and upper_bound
, inclusive. Raises if
lower_bound > upper_bound
.
include Base.Int_intf.S_unbounded with type t := t with type comparator_witness := comparator_witness with module Hex := Hex
include Base.Int_intf.S_common
include sig ... end
val t_of_sexp : Base__.Sexplib.Sexp.t ‑> t
val sexp_of_t : t ‑> Base__.Sexplib.Sexp.t
val hash_fold_t : Base__.Ppx_hash_lib.Std.Hash.state ‑> t ‑> Base__.Ppx_hash_lib.Std.Hash.state
val hash : t ‑> Base__.Ppx_hash_lib.Std.Hash.hash_value
include Base.Identifiable.S with type t := t
include sig ... end
val t_of_sexp : Base__.Sexplib.Sexp.t ‑> t
val sexp_of_t : t ‑> Base__.Sexplib.Sexp.t
val hash_fold_t : Base__.Ppx_hash_lib.Std.Hash.state ‑> t ‑> Base__.Ppx_hash_lib.Std.Hash.state
val hash : t ‑> Base__.Ppx_hash_lib.Std.Hash.hash_value
include Base.Comparable.S with type t := t
include Base.Comparable_intf.Polymorphic_compare
ascending
is identical to compare
. descending x y = ascending y x
. These are
intended to be mnemonic when used like List.sort ~cmp: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 Base.Or_error.t
include Base.Comparator.S with type t := t
val comparator : (t, comparator_witness) Base.Comparator.comparator
include Base.Comparable_intf.Validate with type t := t
val validate_lbound : min:t Base.Maybe_bound.t ‑> t Base.Validate.check
val validate_ubound : max:t Base.Maybe_bound.t ‑> t Base.Validate.check
val validate_bound : min:t Base.Maybe_bound.t ‑> max:t Base.Maybe_bound.t ‑> t Base.Validate.check
include Base.Comparable.With_zero with type t := t
val validate_positive : t Base.Validate.check
val validate_non_negative : t Base.Validate.check
val validate_negative : t Base.Validate.check
val validate_non_positive : t Base.Validate.check
val is_positive : t ‑> bool
val is_non_negative : t ‑> bool
val is_negative : t ‑> bool
val is_non_positive : t ‑> bool
val sign : t ‑> Base__.Sign0.t
Returns Neg
, Zero
, or Pos
in a way consistent with the above functions.
val zero : t
val one : t
val minus_one : t
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 := t
round
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 ‑> unit
val incr : t Base__.Import.ref ‑> unit
val of_int32_exn : int32 ‑> t
val to_int32_exn : t ‑> int32
val of_int64_exn : int64 ‑> t
val to_int64 : t ‑> int64
val of_nativeint_exn : nativeint ‑> t
val to_nativeint_exn : t ‑> nativeint
val of_float_unchecked : float ‑> t
of_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.
module O : Base.Int_intf.Operators_unbounded with type t := t
A sub-module designed to be opened to make working with ints more convenient.
val to_int64_exn : t ‑> Core_kernel.Int64.t
val to_int : t ‑> int option
val to_int32 : t ‑> Core_kernel.Int32.t option
val to_int64 : t ‑> Core_kernel.Int64.t option
val to_nativeint : t ‑> nativeint option
val of_int : int ‑> t
val of_int32 : Core_kernel.Int32.t ‑> t
val of_int64 : Core_kernel.Int64.t ‑> t
val of_nativeint : nativeint ‑> t
val to_zarith_bigint : t ‑> Bignum.Zarith_1_4.Z.t
val of_zarith_bigint : Bignum.Zarith_1_4.Z.t ‑> t
val random : ?state:Core_kernel.Random.State.t ‑> t ‑> t
random t
produces a value uniformly distributed between zero
(inclusive) and
t
(exclusive), or raises if t <= zero
.
val gen_positive : t Core_kernel.Quickcheck.Generator.t
val gen_negative : t Core_kernel.Quickcheck.Generator.t
module Stable : sig ... end