sig
  type num =
    Num.num =
      Int of int
    | Big_int of Big_int.big_int
    | Ratio of Ratio.ratio
  type t = BatNum.num
  val zero : BatNum.num
  val one : BatNum.num
  val neg : BatNum.num -> BatNum.num
  val abs : BatNum.num -> BatNum.num
  val add : BatNum.num -> BatNum.num -> BatNum.num
  val sub : BatNum.num -> BatNum.num -> BatNum.num
  val mul : BatNum.num -> BatNum.num -> BatNum.num
  val div : BatNum.num -> BatNum.num -> BatNum.num
  val modulo : BatNum.num -> BatNum.num -> BatNum.num
  val pow : BatNum.num -> BatNum.num -> BatNum.num
  val compare : BatNum.num -> BatNum.num -> int
  val of_int : int -> BatNum.num
  val to_int : BatNum.num -> int
  val of_float : float -> BatNum.num
  val to_float : BatNum.num -> float
  val of_string : string -> BatNum.num
  val to_string : BatNum.num -> string
  val ( + ) : BatNum.num -> BatNum.num -> BatNum.num
  val ( - ) : BatNum.num -> BatNum.num -> BatNum.num
  val ( * ) : BatNum.num -> BatNum.num -> BatNum.num
  val ( / ) : BatNum.num -> BatNum.num -> BatNum.num
  val ( ** ) : BatNum.num -> BatNum.num -> BatNum.num
  val ( <> ) : BatNum.num -> BatNum.num -> bool
  val ( >= ) : BatNum.num -> BatNum.num -> bool
  val ( <= ) : BatNum.num -> BatNum.num -> bool
  val ( > ) : BatNum.num -> BatNum.num -> bool
  val ( < ) : BatNum.num -> BatNum.num -> bool
  val ( = ) : BatNum.num -> BatNum.num -> bool
  val max_num : BatNum.num -> BatNum.num -> BatNum.num
  val min_num : BatNum.num -> BatNum.num -> BatNum.num
  val quo : BatNum.num -> BatNum.num -> BatNum.num
  val square : BatNum.num -> BatNum.num
  val succ : BatNum.num -> BatNum.num
  val pred : BatNum.num -> BatNum.num
  val is_integer : BatNum.num -> bool
  val round : BatNum.num -> BatNum.num
  val floor : BatNum.num -> BatNum.num
  val ceil : BatNum.num -> BatNum.num
  val approx : BatNum.num -> BatNum.num
  val sign : BatNum.num -> int
  val operations : BatNum.num BatNumber.numeric
  val ( =/ ) : BatNum.num -> BatNum.num -> bool
  val ( </ ) : BatNum.num -> BatNum.num -> bool
  val ( >/ ) : BatNum.num -> BatNum.num -> bool
  val ( <=/ ) : BatNum.num -> BatNum.num -> bool
  val ( >=/ ) : BatNum.num -> BatNum.num -> bool
  val ( <>/ ) : BatNum.num -> BatNum.num -> bool
  val eq_num : BatNum.num -> BatNum.num -> bool
  val lt_num : BatNum.num -> BatNum.num -> bool
  val le_num : BatNum.num -> BatNum.num -> bool
  val gt_num : BatNum.num -> BatNum.num -> bool
  val ge_num : BatNum.num -> BatNum.num -> bool
  val approx_num_fix : int -> BatNum.num -> string
  val approx_num_exp : int -> BatNum.num -> string
  val nat_of_num : BatNum.num -> Nat.nat
  val num_of_nat : Nat.nat -> BatNum.num
  val num_of_big_int : Big_int.big_int -> BatNum.num
  val big_int_of_num : BatNum.num -> Big_int.big_int
  val ratio_of_num : BatNum.num -> Ratio.ratio
  val num_of_ratio : Ratio.ratio -> BatNum.num
  val float_of_num : BatNum.num -> float
  val print : 'BatInnerIO.output -> BatNum.t -> unit
  val ( +/ ) : BatNum.num -> BatNum.num -> BatNum.num
  val add_num : BatNum.num -> BatNum.num -> BatNum.num
  val minus_num : BatNum.num -> BatNum.num
  val ( -/ ) : BatNum.num -> BatNum.num -> BatNum.num
  val sub_num : BatNum.num -> BatNum.num -> BatNum.num
  val ( */ ) : BatNum.num -> BatNum.num -> BatNum.num
  val mult_num : BatNum.num -> BatNum.num -> BatNum.num
  val square_num : BatNum.num -> BatNum.num
  val ( // ) : BatNum.num -> BatNum.num -> BatNum.num
  val div_num : BatNum.num -> BatNum.num -> BatNum.num
  val quo_num : BatNum.num -> BatNum.num -> BatNum.num
  val mod_num : BatNum.num -> BatNum.num -> BatNum.num
  val ( **/ ) : BatNum.num -> BatNum.num -> BatNum.num
  val power_num : BatNum.num -> BatNum.num -> BatNum.num
  val abs_num : BatNum.num -> BatNum.num
  val succ_num : BatNum.num -> BatNum.num
  val pred_num : BatNum.num -> BatNum.num
  val incr_num : BatNum.num Pervasives.ref -> unit
  val decr_num : BatNum.num Pervasives.ref -> unit
  val is_integer_num : BatNum.num -> bool
  val integer_num : BatNum.num -> BatNum.num
  val floor_num : BatNum.num -> BatNum.num
  val round_num : BatNum.num -> BatNum.num
  val ceiling_num : BatNum.num -> BatNum.num
  val sign_num : BatNum.num -> int
  val string_of_num : BatNum.num -> string
  val num_of_string : string -> BatNum.num
  val int_of_num : BatNum.num -> int
  val num_of_int : int -> BatNum.num
  val compare_num : BatNum.num -> BatNum.num -> int
end