sig
  type t = Mpqf.t
  val pp : Format.formatter -> QQ.t -> unit
  val show : QQ.t -> string
  val compare : QQ.t -> QQ.t -> int
  val equal : QQ.t -> QQ.t -> bool
  val leq : QQ.t -> QQ.t -> bool
  val lt : QQ.t -> QQ.t -> bool
  val hash : QQ.t -> int
  val add : QQ.t -> QQ.t -> QQ.t
  val mul : QQ.t -> QQ.t -> QQ.t
  val div : QQ.t -> QQ.t -> QQ.t
  val idiv : QQ.t -> QQ.t -> ZZ.t
  val modulo : QQ.t -> QQ.t -> QQ.t
  val gcd : QQ.t -> QQ.t -> QQ.t
  val lcm : QQ.t -> QQ.t -> QQ.t
  val zero : QQ.t
  val one : QQ.t
  val negate : QQ.t -> QQ.t
  val inverse : QQ.t -> QQ.t
  val floor : QQ.t -> ZZ.t
  val ceiling : QQ.t -> ZZ.t
  val sub : QQ.t -> QQ.t -> QQ.t
  val exp : QQ.t -> int -> QQ.t
  val numerator : QQ.t -> ZZ.t
  val denominator : QQ.t -> ZZ.t
  val to_zz : QQ.t -> ZZ.t option
  val to_zzfrac : QQ.t -> ZZ.t * ZZ.t
  val to_float : QQ.t -> float
  val to_int : QQ.t -> int option
  val of_string : string -> QQ.t
  val of_int : int -> QQ.t
  val of_zz : ZZ.t -> QQ.t
  val of_frac : int -> int -> QQ.t
  val of_zzfrac : ZZ.t -> ZZ.t -> QQ.t
  val of_float : float -> QQ.t
  val min : QQ.t -> QQ.t -> QQ.t
  val max : QQ.t -> QQ.t -> QQ.t
  val abs : QQ.t -> QQ.t
  val nudge : ?accuracy:int -> QQ.t -> QQ.t * QQ.t
  val nudge_up : ?accuracy:int -> QQ.t -> QQ.t
  val nudge_down : ?accuracy:int -> QQ.t -> QQ.t
end