## `int`: operations on integers

  Integers are 31 bits wide (or 63 bits on 64-bit processors). All operations are taken modulo 2^{31} (or 2^{63}). They do not fail on overflow.

    exception Division_by_zero
    value minus : int -> int
    value minus_int : int -> int

  Unary negation. You can write `-e` instead of `minus e`.

    value succ : int -> int

  `succ x` is `x+1`.

    value pred : int -> int

  `pred x` is `x-1`.

    value prefix + : int -> int -> int
    value add_int : int -> int -> int

  Addition.

    value prefix - : int -> int -> int
    value sub_int : int -> int -> int

  Subtraction.

    value prefix * : int -> int -> int
    value mult_int : int -> int -> int

  Multiplication.

    value prefix / : int -> int -> int
    value div_int : int -> int -> int
    value prefix quo : int -> int -> int

  Integer division. Raise `Division_by_zero` if the second argument is 0. Give unpredictable results if either argument is negative.

    value prefix mod : int -> int -> int

  Remainder. Raise `Division_by_zero` if the second argument is 0. Give unpredictable results if either argument is negative.

    value eq_int : int -> int -> bool

  Integer equality. Equivalent to generic equality, just faster.

    value neq_int : int -> int -> bool

  Negation of `eq_int`.

    value lt_int : int -> int -> bool
    value gt_int : int -> int -> bool
    value le_int : int -> int -> bool
    value ge_int : int -> int -> bool

  Usual comparisons between integers.

    value abs : int -> int

  Return the absolute value of the argument.

    value max_int : int
    value min_int : int

  The greatest and smallest integer values.

### Bitwise operations

    value prefix land : int -> int -> int

  Bitwise logical and.

    value prefix lor : int -> int -> int

  Bitwise logical or.

    value prefix lxor : int -> int -> int

  Bitwise logical exclusive or.

    value lnot : int -> int

  Bitwise complement

    value prefix lsl : int -> int -> int
    value lshift_left : int -> int -> int

  `n lsl m`, or equivalently `lshift_left n m`, shifts `n` to the left by `m` bits.

    value prefix lsr : int -> int -> int

  `n lsr m` shifts `n` to the right by `m` bits. This is a logical shift: zeroes are inserted regardless of sign.

    value prefix asr : int -> int -> int
    value lshift_right : int -> int -> int

  `n asr m`, or equivalently `lshift_right n m`, shifts `n` to the right by `m` bits. This is an arithmetic shift: the sign bit is replicated.

### Conversion functions

    value string_of_int : int -> string

  Convert the given integer to its decimal representation.

    value int_of_string : string -> int

  Convert the given string to an integer, in decimal (by default) or in hexadecimal, octal or binary if the string begins with `0x`, `0o` or `0b`. Raise `Failure "int_of_string"` if the given string is not a valid representation of an integer.