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