sig
  type t
  type tref
  val name : unit -> string
  val zero : Numerix.Int_type.t
  val one : Numerix.Int_type.t
  val make_ref : Numerix.Int_type.t -> Numerix.Int_type.tref
  val copy_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> unit
  val copy_out : Numerix.Int_type.tref -> Numerix.Int_type.t
  val look : Numerix.Int_type.tref -> Numerix.Int_type.t
  val add : Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val add_1 : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val add_in :
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val add_1_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val sub : Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val sub_1 : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val sub_in :
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val sub_1_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val mul : Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val mul_1 : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val mul_in :
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val mul_1_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val quomod :
    Numerix.Int_type.t ->
    Numerix.Int_type.t -> Numerix.Int_type.t * Numerix.Int_type.t
  val quo : Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val modulo : Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val gquomod :
    Numerix.round_mode ->
    Numerix.Int_type.t ->
    Numerix.Int_type.t -> Numerix.Int_type.t * Numerix.Int_type.t
  val gquo :
    Numerix.round_mode ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val gmod :
    Numerix.round_mode ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val quomod_in :
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val quo_in :
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val mod_in :
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val gquomod_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val gquo_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val gmod_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val quomod_1 : Numerix.Int_type.t -> int -> Numerix.Int_type.t * int
  val quo_1 : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val mod_1 : Numerix.Int_type.t -> int -> int
  val gquomod_1 :
    Numerix.round_mode ->
    Numerix.Int_type.t -> int -> Numerix.Int_type.t * int
  val gquo_1 :
    Numerix.round_mode -> Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val gmod_1 : Numerix.round_mode -> Numerix.Int_type.t -> int -> int
  val quomod_1_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> int
  val quo_1_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val gquomod_1_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> int
  val gquo_1_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val abs : Numerix.Int_type.t -> Numerix.Int_type.t
  val abs_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> unit
  val neg : Numerix.Int_type.t -> Numerix.Int_type.t
  val neg_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> unit
  val sqr : Numerix.Int_type.t -> Numerix.Int_type.t
  val pow : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val pow_1 : int -> int -> Numerix.Int_type.t
  val powmod :
    Numerix.Int_type.t ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val gpowmod :
    Numerix.round_mode ->
    Numerix.Int_type.t ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val sqr_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> unit
  val pow_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val pow_1_in : Numerix.Int_type.tref -> int -> int -> unit
  val powmod_in :
    Numerix.Int_type.tref ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val gpowmod_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val sqrt : Numerix.Int_type.t -> Numerix.Int_type.t
  val root : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val gsqrt : Numerix.round_mode -> Numerix.Int_type.t -> Numerix.Int_type.t
  val groot :
    Numerix.round_mode -> Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val sqrt_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> unit
  val root_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val gsqrt_in :
    Numerix.round_mode -> Numerix.Int_type.tref -> Numerix.Int_type.t -> unit
  val groot_in :
    Numerix.round_mode ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val fact : int -> Numerix.Int_type.t
  val fact_in : Numerix.Int_type.tref -> int -> unit
  val gcd : Numerix.Int_type.t -> Numerix.Int_type.t -> Numerix.Int_type.t
  val gcd_ex :
    Numerix.Int_type.t ->
    Numerix.Int_type.t ->
    Numerix.Int_type.t * Numerix.Int_type.t * Numerix.Int_type.t
  val cfrac :
    Numerix.Int_type.t ->
    Numerix.Int_type.t ->
    Numerix.Int_type.t * Numerix.Int_type.t * Numerix.Int_type.t *
    Numerix.Int_type.t * Numerix.Int_type.t
  val gcd_in :
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val gcd_ex_in :
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val cfrac_in :
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> Numerix.Int_type.t -> unit
  val isprime : Numerix.Int_type.t -> Numerix.tristate
  val isprime_1 : int -> Numerix.tristate
  val sgn : Numerix.Int_type.t -> int
  val cmp : Numerix.Int_type.t -> Numerix.Int_type.t -> int
  val cmp_1 : Numerix.Int_type.t -> int -> int
  val eq : Numerix.Int_type.t -> Numerix.Int_type.t -> bool
  val eq_1 : Numerix.Int_type.t -> int -> bool
  val neq : Numerix.Int_type.t -> Numerix.Int_type.t -> bool
  val neq_1 : Numerix.Int_type.t -> int -> bool
  val inf : Numerix.Int_type.t -> Numerix.Int_type.t -> bool
  val inf_1 : Numerix.Int_type.t -> int -> bool
  val infeq : Numerix.Int_type.t -> Numerix.Int_type.t -> bool
  val infeq_1 : Numerix.Int_type.t -> int -> bool
  val sup : Numerix.Int_type.t -> Numerix.Int_type.t -> bool
  val sup_1 : Numerix.Int_type.t -> int -> bool
  val supeq : Numerix.Int_type.t -> Numerix.Int_type.t -> bool
  val supeq_1 : Numerix.Int_type.t -> int -> bool
  val of_int : int -> Numerix.Int_type.t
  val of_string : string -> Numerix.Int_type.t
  val of_int_in : Numerix.Int_type.tref -> int -> unit
  val of_string_in : Numerix.Int_type.tref -> string -> unit
  val int_of : Numerix.Int_type.t -> int
  val string_of : Numerix.Int_type.t -> string
  val bstring_of : Numerix.Int_type.t -> string
  val hstring_of : Numerix.Int_type.t -> string
  val ostring_of : Numerix.Int_type.t -> string
  val nrandom : int -> Numerix.Int_type.t
  val zrandom : int -> Numerix.Int_type.t
  val nrandom1 : int -> Numerix.Int_type.t
  val zrandom1 : int -> Numerix.Int_type.t
  val nrandom_in : Numerix.Int_type.tref -> int -> unit
  val zrandom_in : Numerix.Int_type.tref -> int -> unit
  val nrandom1_in : Numerix.Int_type.tref -> int -> unit
  val zrandom1_in : Numerix.Int_type.tref -> int -> unit
  val random_init : int -> unit
  val nbits : Numerix.Int_type.t -> int
  val lowbits : Numerix.Int_type.t -> int
  val highbits : Numerix.Int_type.t -> int
  val nth_word : Numerix.Int_type.t -> int -> int
  val nth_bit : Numerix.Int_type.t -> int -> bool
  val shl : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val shr : Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val split :
    Numerix.Int_type.t -> int -> Numerix.Int_type.t * Numerix.Int_type.t
  val join :
    Numerix.Int_type.t -> Numerix.Int_type.t -> int -> Numerix.Int_type.t
  val shl_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val shr_in : Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val split_in :
    Numerix.Int_type.tref ->
    Numerix.Int_type.tref -> Numerix.Int_type.t -> int -> unit
  val join_in :
    Numerix.Int_type.tref ->
    Numerix.Int_type.t -> Numerix.Int_type.t -> int -> unit
  val toplevel_print : Numerix.Int_type.t -> unit
  val toplevel_print_tref : Numerix.Int_type.tref -> unit
  exception Error of string
end