sig
  module Make :
    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 acos : Float_interval_sig.prec -> t -> t
        val asin : Float_interval_sig.prec -> t -> t
        val atan : 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
end