sig
  external z_initialize : unit -> unit = "_mlgmp_z_initialize"
  type t
  external from_int : dest:Gmp41.Z2.t -> int -> unit = "_mlgmp_z2_from_int"
  external from_string_base : dest:Gmp41.Z2.t -> base:int -> string -> unit
    = "_mlgmp_z2_from_string_base"
  external from_float : dest:Gmp41.Z2.t -> float -> unit
    = "_mlgmp_z2_from_float"
  external create : unit -> Gmp41.Z2.t = "_mlgmp_z_create"
  external copy : dest:Gmp41.Z2.t -> from:Gmp41.Z2.t -> unit
    = "_mlgmp_z_copy"
  external add : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_add"
  external sub : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_sub"
  external mul : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_mul"
  external tdiv_q : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_tdiv_q"
  external tdiv_r : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_tdiv_r"
  external cdiv_q : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_cdiv_q"
  external cdiv_r : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_cdiv_r"
  external fdiv_q : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_fdiv_q"
  external fdiv_r : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_fdiv_r"
  external divexact : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> Gmp41.Z2.t -> unit
    = "_mlgmp_z2_divexact"
  external neg : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> unit = "_mlgmp_z2_neg"
  external abs : dest:Gmp41.Z2.t -> Gmp41.Z2.t -> unit = "_mlgmp_z2_abs"
end