sig
type t = Gmp.q
val zero : Gmp.Q.t
val one : Gmp.Q.t
val minus_one : Gmp.Q.t
external compare : Gmp.Q.t -> Gmp.Q.t -> int = "mlgmp_q_compare"
external compare_int : Gmp.Q.t -> int -> int = "mlgmp_q_compare_int"
external neg : Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_neg"
external abs : Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_abs"
external add : Gmp.Q.t -> Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_add"
external add_int : Gmp.Q.t -> int -> Gmp.Q.t = "mlgmp_q_add_int"
external sub : Gmp.Q.t -> Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_sub"
external sub_int : Gmp.Q.t -> int -> Gmp.Q.t = "mlgmp_q_sub_int"
external mul : Gmp.Q.t -> Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_mul"
external mul_int : Gmp.Q.t -> int -> Gmp.Q.t = "mlgmp_q_mul_int"
external div : Gmp.Q.t -> Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_div"
external fma : Gmp.Q.t -> Gmp.Q.t -> Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_fma"
external pow_int : base:Gmp.Q.t -> exponent:int -> Gmp.Q.t
= "mlgmp_q_pow_int"
external int_pow_int : base:int -> exponent:int -> Gmp.Q.t
= "mlgmp_q_int_pow_int"
external scale : Gmp.Q.t -> base:int -> exponent:int -> Gmp.Q.t
= "mlgmp_q_scale"
external root : nth:int -> Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_root"
external sqrt : Gmp.Q.t -> Gmp.Q.t = "mlgmp_q_sqrt"
external num : Gmp.Q.t -> Gmp.z = "mlgmp_q_num"
external den : Gmp.Q.t -> Gmp.z = "mlgmp_q_den"
external of_based_string : base:int -> string -> Gmp.Q.t
= "mlgmp_q_of_based_string"
val of_string : string -> Gmp.Q.t
external to_based_string : base:int -> Gmp.Q.t -> string
= "mlgmp_based_string_of_q"
val to_string : Gmp.Q.t -> string
external of_int : int -> Gmp.Q.t = "mlgmp_q_of_int"
external of_float : float -> Gmp.Q.t = "mlgmp_q_of_float"
external to_float : Gmp.Q.t -> float = "mlgmp_float_of_q"
external of_z : Gmp.z -> Gmp.Q.t = "mlgmp_q_of_z"
external make_int : int -> int -> Gmp.Q.t = "mlgmp_q_make_int"
external make_z : Gmp.z -> Gmp.z -> Gmp.Q.t = "mlgmp_q_make_z"
end