functor (Float : Float_sig.S->
  sig
    type t
    val packed_descr : Structural_descr.pack
    val compare : t -> t -> int
    val equal : t -> t -> bool
    val pretty : Format.formatter -> t -> unit
    val hash : t -> int
    val min_and_max : t -> (Float.t * Float.t) option * bool
    val nan : t
    val pos_infinity : Float_interval_sig.prec -> t
    val neg_infinity : Float_interval_sig.prec -> t
    val inject : ?nan:bool -> Float.t -> Float.t -> t
    val singleton : Float.t -> t
    val top : Float_interval_sig.prec -> t
    val top_finite : Float_interval_sig.prec -> t
    val is_included : t -> t -> bool
    val join : t -> t -> t
    val widen : Float.widen_hints -> Float_interval_sig.prec -> t -> t -> t
    val narrow : t -> t -> t Bottom.Type.or_bottom
    val contains_a_zero : t -> bool
    val contains_pos_zero : t -> bool
    val contains_neg_zero : t -> bool
    val contains_non_zero : t -> bool
    val contains_pos_infinity : t -> bool
    val contains_neg_infinity : t -> bool
    val contains_nan : t -> bool
    val is_singleton : t -> bool
    val is_negative : t -> Abstract_interp.Comp.result
    val is_finite : t -> Abstract_interp.Comp.result
    val is_not_nan : t -> Abstract_interp.Comp.result
    val backward_is_finite :
      positive:bool ->
      Float_interval_sig.prec -> t -> t Bottom.Type.or_bottom
    val backward_is_nan : positive:bool -> t -> t Bottom.Type.or_bottom
    val has_greater_min_bound : t -> t -> int
    val has_smaller_max_bound : t -> t -> int
    val forward_comp :
      Abstract_interp.Comp.t -> t -> t -> Abstract_interp.Comp.result
    val backward_comp_left_true :
      Abstract_interp.Comp.t ->
      Float_interval_sig.prec -> t -> t -> t Bottom.or_bottom
    val backward_comp_left_false :
      Abstract_interp.Comp.t ->
      Float_interval_sig.prec -> t -> t -> t Bottom.Type.or_bottom
    val neg : t -> t
    val abs : Float_interval_sig.prec -> t -> t
    val add : Float_interval_sig.prec -> t -> t -> t
    val sub : Float_interval_sig.prec -> t -> t -> t
    val mul : Float_interval_sig.prec -> t -> t -> t
    val div : Float_interval_sig.prec -> t -> t -> t
    val floor : t -> t
    val ceil : t -> t
    val trunc : t -> t
    val fround : t -> t
    val exp : Float_interval_sig.prec -> t -> t
    val log : Float_interval_sig.prec -> t -> t
    val log10 : Float_interval_sig.prec -> t -> t
    val sqrt : Float_interval_sig.prec -> t -> t
    val pow : Float_interval_sig.prec -> t -> t -> t
    val fmod : Float_interval_sig.prec -> t -> t -> t
    val cos : Float_interval_sig.prec -> t -> t
    val sin : Float_interval_sig.prec -> t -> t
    val atan2 : Float_interval_sig.prec -> t -> t -> t
    val backward_add :
      Float_interval_sig.prec ->
      left:t -> right:t -> result:t -> (t * t) Bottom.Type.or_bottom
    val backward_sub :
      Float_interval_sig.prec ->
      left:t -> right:t -> result:t -> (t * t) Bottom.Type.or_bottom
    val forward_cast : dst:Float_interval_sig.prec -> t -> t
    val backward_cast :
      src:Float_interval_sig.prec -> t -> t Bottom.Type.or_bottom
    val cast_int_to_float :
      Float_interval_sig.prec -> Integer.t option -> Integer.t option -> t
    val bits_of_float64_list : t -> (Integer.t * Integer.t) list
    val bits_of_float32_list : t -> (Integer.t * Integer.t) list
    val subdivide : Float_interval_sig.prec -> t -> t * t
  end