sig
  type 'a tt
  type m
  type f
  type t = Mpq.m Mpq.tt
  external canonicalize : 'Mpq.tt -> unit = "camlidl_mpq_mpq_canonicalize"
  val print : Format.formatter -> 'Mpq.tt -> unit
  external init : unit -> 'Mpq.tt = "camlidl_mpq_mpq_init"
  external set : Mpq.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_set"
  external set_z : Mpq.t -> 'Mpz.tt -> unit = "camlidl_mpq_mpq_set_z"
  external set_si : Mpq.t -> int -> int -> unit = "camlidl_mpq_mpq_set_si"
  external _set_str : Mpq.t -> string -> int -> unit
    = "camlidl_mpq_mpq__set_str"
  val set_str : Mpq.t -> string -> base:int -> unit
  external swap : Mpq.t -> Mpq.t -> unit = "camlidl_mpq_mpq_swap"
  val init_set : 'Mpq.tt -> 'Mpq.tt
  val init_set_z : 'Mpz.tt -> 'Mpq.tt
  val init_set_si : int -> int -> 'Mpq.tt
  val init_set_str : string -> base:int -> 'Mpq.tt
  val init_set_d : float -> 'Mpq.tt
  external get_d : 'Mpq.tt -> float = "camlidl_mpq_mpq_get_d"
  external set_d : Mpq.t -> float -> unit = "camlidl_mpq_mpq_set_d"
  external get_z : Mpz.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_get_z"
  external _get_str : int -> 'Mpq.tt -> string = "camlidl_mpq_mpq__get_str"
  val get_str : base:int -> Mpq.t -> string
  val to_string : 'Mpq.tt -> string
  val to_float : 'Mpq.tt -> float
  val of_string : string -> 'Mpq.tt
  val of_float : float -> 'Mpq.tt
  val of_int : int -> 'Mpq.tt
  val of_frac : int -> int -> 'Mpq.tt
  val of_mpz : 'Mpz.tt -> 'Mpq.tt
  val of_mpz2 : 'Mpz.tt -> 'Mpz.tt -> 'Mpq.tt
  external add : Mpq.t -> 'Mpq.tt -> 'Mpq.tt -> unit
    = "camlidl_mpq_mpq_add"
  external sub : Mpq.t -> 'Mpq.tt -> 'Mpq.tt -> unit
    = "camlidl_mpq_mpq_sub"
  external mul : Mpq.t -> 'Mpq.tt -> 'Mpq.tt -> unit
    = "camlidl_mpq_mpq_mul"
  external mul_2exp : Mpq.t -> 'Mpq.tt -> int -> unit
    = "camlidl_mpq_mpq_mul_2exp"
  external div : Mpq.t -> 'Mpq.tt -> 'Mpq.tt -> unit
    = "camlidl_mpq_mpq_div"
  external div_2exp : Mpq.t -> 'Mpq.tt -> int -> unit
    = "camlidl_mpq_mpq_div_2exp"
  external neg : Mpq.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_neg"
  external abs : Mpq.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_abs"
  external inv : Mpq.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_inv"
  external cmp : 'Mpq.tt -> 'Mpq.tt -> int = "camlidl_mpq_mpq_cmp"
  external cmp_si : 'Mpq.tt -> int -> int -> int = "camlidl_mpq_mpq_cmp_si"
  external sgn : 'Mpq.tt -> int = "camlidl_mpq_mpq_sgn"
  external equal : 'Mpq.tt -> 'Mpq.tt -> bool = "camlidl_mpq_mpq_equal"
  external get_num : Mpz.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_get_num"
  external get_den : Mpz.t -> 'Mpq.tt -> unit = "camlidl_mpq_mpq_get_den"
  external set_num : Mpq.t -> 'Mpz.tt -> unit = "camlidl_mpq_mpq_set_num"
  external set_den : Mpq.t -> 'Mpz.tt -> unit = "camlidl_mpq_mpq_set_den"
end