sig
  type t
  val zero : Gmp.F.t
  external create : unit -> Gmp.F.t = "_mlgmp_f_create"
  val default_prec : int Pervasives.ref
  external from_z_prec : prec:int -> Gmp.Z.t -> Gmp.F.t = "_mlgmp_f_from_z"
  external from_q_prec : prec:int -> Gmp.Z.t -> Gmp.F.t = "_mlgmp_f_from_q"
  external from_si_prec : prec:int -> int -> Gmp.F.t = "_mlgmp_f_from_si"
  external from_float_prec : prec:int -> float -> Gmp.F.t
    = "_mlgmp_f_from_float"
  external from_string_prec_base : prec:int -> base:int -> string -> Gmp.F.t
    = "_mlgmp_f_from_string"
  external float_from : Gmp.F.t -> float = "_mlgmp_f_to_float"
  external to_float : Gmp.F.t -> float = "_mlgmp_f_to_float"
  external to_string_exp_base_digits :
    base:int -> digits:int -> Gmp.F.t -> string * int
    = "_mlgmp_f_to_string_exp_base_digits"
  external add_prec : prec:int -> Gmp.F.t -> Gmp.F.t -> Gmp.F.t
    = "_mlgmp_f_add"
  external sub_prec : prec:int -> Gmp.F.t -> Gmp.F.t -> Gmp.F.t
    = "_mlgmp_f_sub"
  external mul_prec : prec:int -> Gmp.F.t -> Gmp.F.t -> Gmp.F.t
    = "_mlgmp_f_mul"
  external div_prec : prec:int -> Gmp.F.t -> Gmp.F.t -> Gmp.F.t
    = "_mlgmp_f_div"
  external add_prec_ui : prec:int -> Gmp.F.t -> int -> Gmp.F.t
    = "_mlgmp_f_add_ui"
  external sub_prec_ui : prec:int -> Gmp.F.t -> int -> Gmp.F.t
    = "_mlgmp_f_sub_ui"
  external mul_prec_ui : prec:int -> Gmp.F.t -> int -> Gmp.F.t
    = "_mlgmp_f_mul_ui"
  external div_prec_ui : prec:int -> Gmp.F.t -> int -> Gmp.F.t
    = "_mlgmp_f_div_ui"
  external neg_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_neg"
  external abs_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_abs"
  external inv_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_div"
  external reldiff_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_reldiff"
  external floor_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_floor"
  external ceil_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_ceil"
  external trunc_prec : prec:int -> Gmp.F.t -> Gmp.F.t = "_mlgmp_f_trunc"
  val from_z : Gmp.Z.t -> Gmp.F.t
  val from_q : Gmp.Z.t -> Gmp.F.t
  val from_si : int -> Gmp.F.t
  val from_int : int -> Gmp.F.t
  val from_float : float -> Gmp.F.t
  val from_string_base : base:int -> string -> Gmp.F.t
  val from_string : string -> Gmp.F.t
  val add : Gmp.F.t -> Gmp.F.t -> Gmp.F.t
  val sub : Gmp.F.t -> Gmp.F.t -> Gmp.F.t
  val mul : Gmp.F.t -> Gmp.F.t -> Gmp.F.t
  val div : Gmp.F.t -> Gmp.F.t -> Gmp.F.t
  val reldiff : Gmp.F.t -> Gmp.F.t
  val add_ui : Gmp.F.t -> int -> Gmp.F.t
  val sub_ui : Gmp.F.t -> int -> Gmp.F.t
  val mul_ui : Gmp.F.t -> int -> Gmp.F.t
  val div_ui : Gmp.F.t -> int -> Gmp.F.t
  val neg : Gmp.F.t -> Gmp.F.t
  val abs : Gmp.F.t -> Gmp.F.t
  val inv : Gmp.F.t -> Gmp.F.t
  val floor : Gmp.F.t -> Gmp.F.t
  val ceil : Gmp.F.t -> Gmp.F.t
  val trunc : Gmp.F.t -> Gmp.F.t
  external cmp : Gmp.F.t -> Gmp.F.t -> int = "_mlgmp_f_cmp"
  external compare : Gmp.F.t -> Gmp.F.t -> int = "_mlgmp_f_cmp"
  external sgn : Gmp.F.t -> int = "_mlgmp_f_sgn"
  external eq : Gmp.F.t -> Gmp.F.t -> prec:int -> bool = "_mlgmp_f_eq"
  external urandomb_prec :
    prec:int -> state:Gmp.RNG.randstate_t -> nbits:int -> Gmp.F.t
    = "_mlgmp_f_urandomb"
  external random2 : prec:int -> nlimbs:int -> max_exp:int -> Gmp.F.t
    = "_mlgmp_f_random2"
  val urandomb : state:Gmp.RNG.randstate_t -> nbits:int -> Gmp.F.t
  val equal : Gmp.F.t -> Gmp.F.t -> bool
  val to_string_base_digits : base:int -> digits:int -> Gmp.F.t -> string
  val to_string : Gmp.F.t -> string
end