sig
  type ratio
  val null_denominator : Ratio.ratio -> bool
  val numerator_ratio : Ratio.ratio -> Big_int.big_int
  val denominator_ratio : Ratio.ratio -> Big_int.big_int
  val sign_ratio : Ratio.ratio -> int
  val normalize_ratio : Ratio.ratio -> Ratio.ratio
  val cautious_normalize_ratio : Ratio.ratio -> Ratio.ratio
  val cautious_normalize_ratio_when_printing : Ratio.ratio -> Ratio.ratio
  val create_ratio : Big_int.big_int -> Big_int.big_int -> Ratio.ratio
  val create_normalized_ratio :
    Big_int.big_int -> Big_int.big_int -> Ratio.ratio
  val is_normalized_ratio : Ratio.ratio -> bool
  val report_sign_ratio : Ratio.ratio -> Big_int.big_int -> Big_int.big_int
  val abs_ratio : Ratio.ratio -> Ratio.ratio
  val is_integer_ratio : Ratio.ratio -> bool
  val add_ratio : Ratio.ratio -> Ratio.ratio -> Ratio.ratio
  val minus_ratio : Ratio.ratio -> Ratio.ratio
  val add_int_ratio : int -> Ratio.ratio -> Ratio.ratio
  val add_big_int_ratio : Big_int.big_int -> Ratio.ratio -> Ratio.ratio
  val sub_ratio : Ratio.ratio -> Ratio.ratio -> Ratio.ratio
  val mult_ratio : Ratio.ratio -> Ratio.ratio -> Ratio.ratio
  val mult_int_ratio : int -> Ratio.ratio -> Ratio.ratio
  val mult_big_int_ratio : Big_int.big_int -> Ratio.ratio -> Ratio.ratio
  val square_ratio : Ratio.ratio -> Ratio.ratio
  val inverse_ratio : Ratio.ratio -> Ratio.ratio
  val div_ratio : Ratio.ratio -> Ratio.ratio -> Ratio.ratio
  val integer_ratio : Ratio.ratio -> Big_int.big_int
  val floor_ratio : Ratio.ratio -> Big_int.big_int
  val round_ratio : Ratio.ratio -> Big_int.big_int
  val ceiling_ratio : Ratio.ratio -> Big_int.big_int
  val eq_ratio : Ratio.ratio -> Ratio.ratio -> bool
  val compare_ratio : Ratio.ratio -> Ratio.ratio -> int
  val lt_ratio : Ratio.ratio -> Ratio.ratio -> bool
  val le_ratio : Ratio.ratio -> Ratio.ratio -> bool
  val gt_ratio : Ratio.ratio -> Ratio.ratio -> bool
  val ge_ratio : Ratio.ratio -> Ratio.ratio -> bool
  val max_ratio : Ratio.ratio -> Ratio.ratio -> Ratio.ratio
  val min_ratio : Ratio.ratio -> Ratio.ratio -> Ratio.ratio
  val eq_big_int_ratio : Big_int.big_int -> Ratio.ratio -> bool
  val compare_big_int_ratio : Big_int.big_int -> Ratio.ratio -> int
  val lt_big_int_ratio : Big_int.big_int -> Ratio.ratio -> bool
  val le_big_int_ratio : Big_int.big_int -> Ratio.ratio -> bool
  val gt_big_int_ratio : Big_int.big_int -> Ratio.ratio -> bool
  val ge_big_int_ratio : Big_int.big_int -> Ratio.ratio -> bool
  val int_of_ratio : Ratio.ratio -> int
  val ratio_of_int : int -> Ratio.ratio
  val ratio_of_nat : Nat.nat -> Ratio.ratio
  val nat_of_ratio : Ratio.ratio -> Nat.nat
  val ratio_of_big_int : Big_int.big_int -> Ratio.ratio
  val big_int_of_ratio : Ratio.ratio -> Big_int.big_int
  val div_int_ratio : int -> Ratio.ratio -> Ratio.ratio
  val div_ratio_int : Ratio.ratio -> int -> Ratio.ratio
  val div_big_int_ratio : Big_int.big_int -> Ratio.ratio -> Ratio.ratio
  val div_ratio_big_int : Ratio.ratio -> Big_int.big_int -> Ratio.ratio
  val approx_ratio_fix : int -> Ratio.ratio -> string
  val approx_ratio_exp : int -> Ratio.ratio -> string
  val float_of_rational_string : Ratio.ratio -> string
  val string_of_ratio : Ratio.ratio -> string
  val ratio_of_string : string -> Ratio.ratio
  val float_of_ratio : Ratio.ratio -> float
  val power_ratio_positive_int : Ratio.ratio -> int -> Ratio.ratio
  val power_ratio_positive_big_int :
    Ratio.ratio -> Big_int.big_int -> Ratio.ratio
end