Param ->
  sig
    type t = Gmp.f
    val zero : Gmp.F.Make.t
    val one : Gmp.F.Make.t
    val minus_one : Gmp.F.Make.t
    external compare : Gmp.F.Make.t -> Gmp.F.Make.t -> int
      = "mlgmp_f_compare"
    external compare_int : Gmp.F.Make.t -> int -> int = "mlgmp_f_compare_int"
    val neg : Gmp.F.Make.t -> Gmp.F.Make.t
    val abs : Gmp.F.Make.t -> Gmp.F.Make.t
    val add : Gmp.F.Make.t -> Gmp.F.Make.t -> Gmp.F.Make.t
    val add_int : Gmp.F.Make.t -> int -> Gmp.F.Make.t
    val sub : Gmp.F.Make.t -> Gmp.F.Make.t -> Gmp.F.Make.t
    val sub_int : Gmp.F.Make.t -> int -> Gmp.F.Make.t
    val mul : Gmp.F.Make.t -> Gmp.F.Make.t -> Gmp.F.Make.t
    val mul_int : Gmp.F.Make.t -> int -> Gmp.F.Make.t
    val div : Gmp.F.Make.t -> Gmp.F.Make.t -> Gmp.F.Make.t
    val fma : Gmp.F.Make.t -> Gmp.F.Make.t -> Gmp.F.Make.t -> Gmp.F.Make.t
    val pow_int : base:Gmp.F.Make.t -> exponent:int -> Gmp.F.Make.t
    val int_pow_int : base:int -> exponent:int -> Gmp.F.Make.t
    val scale : Gmp.F.Make.t -> base:int -> exponent:int -> Gmp.F.Make.t
    val root : nth:int -> Gmp.F.Make.t -> Gmp.F.Make.t
    val sqrt : Gmp.F.Make.t -> Gmp.F.Make.t
    external nearly_equal : int -> Gmp.F.Make.t -> Gmp.F.Make.t -> bool
      = "mlgmp_f_nearly_equal"
    val frexp : Gmp.F.Make.t -> Gmp.F.Make.t * int
    val ldexp : Gmp.F.Make.t -> int -> Gmp.F.Make.t
    val trunc : Gmp.F.Make.t -> Gmp.F.Make.t
    val ceil : Gmp.F.Make.t -> Gmp.F.Make.t
    val floor : Gmp.F.Make.t -> Gmp.F.Make.t
    val log : Gmp.F.Make.t -> Gmp.F.Make.t
    val based_log : base:int -> Gmp.F.Make.t -> Gmp.F.Make.t
    val of_based_string : base:int -> string -> Gmp.F.Make.t
    val of_string : string -> Gmp.F.Make.t
    external to_based_string : base:int -> Gmp.F.Make.t -> string
      = "mlgmp_based_string_of_f"
    val to_string : Gmp.F.Make.t -> string
    val of_int : int -> Gmp.F.Make.t
    val of_float : float -> Gmp.F.Make.t
    external to_float : Gmp.F.Make.t -> float = "mlgmp_float_of_f"
    val of_z : Gmp.z -> Gmp.F.Make.t
  end