sig
  type t
  exception Nan_or_infinite
  exception Bottom
  type rounding_mode = Any | Nearest_Even
  val inject : Ival.F.t -> Ival.F.t -> Ival.Float_abstract.t
  val inject_r : Ival.F.t -> Ival.F.t -> bool * Ival.Float_abstract.t
  val inject_singleton : Ival.F.t -> Ival.Float_abstract.t
  val min_and_max_float : Ival.Float_abstract.t -> Ival.F.t * Ival.F.t
  val top : Ival.Float_abstract.t
  val add_float :
    Ival.Float_abstract.rounding_mode ->
    Ival.Float_abstract.t ->
    Ival.Float_abstract.t -> bool * Ival.Float_abstract.t
  val sub_float :
    Ival.Float_abstract.rounding_mode ->
    Ival.Float_abstract.t ->
    Ival.Float_abstract.t -> bool * Ival.Float_abstract.t
  val mult_float :
    Ival.Float_abstract.rounding_mode ->
    Ival.Float_abstract.t ->
    Ival.Float_abstract.t -> bool * Ival.Float_abstract.t
  val div_float :
    Ival.Float_abstract.rounding_mode ->
    Ival.Float_abstract.t ->
    Ival.Float_abstract.t -> bool * Ival.Float_abstract.t
  val contains_zero : Ival.Float_abstract.t -> bool
  val compare : Ival.Float_abstract.t -> Ival.Float_abstract.t -> int
  val pretty : Format.formatter -> Ival.Float_abstract.t -> unit
  val hash : Ival.Float_abstract.t -> int
  val zero : Ival.Float_abstract.t
  val is_zero : Ival.Float_abstract.t -> bool
  val is_included : Ival.Float_abstract.t -> Ival.Float_abstract.t -> bool
  val join :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val meet :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val contains_a_zero : Ival.Float_abstract.t -> bool
  val is_singleton : Ival.Float_abstract.t -> bool
  val neg_float : Ival.Float_abstract.t -> Ival.Float_abstract.t
  val sqrt_float :
    Ival.Float_abstract.rounding_mode ->
    Ival.Float_abstract.t -> bool * Ival.Float_abstract.t
  val minus_one_one : Ival.Float_abstract.t
  val cos_float : Ival.Float_abstract.t -> Ival.Float_abstract.t
  val cos_float_precise : Ival.Float_abstract.t -> Ival.Float_abstract.t
  val sin_float : Ival.Float_abstract.t -> Ival.Float_abstract.t
  val sin_float_precise : Ival.Float_abstract.t -> Ival.Float_abstract.t
  val exp_float : Ival.Float_abstract.t -> Ival.Float_abstract.t
  val widen :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val equal_float_ieee :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> bool * bool
  val maybe_le_ieee_float :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> bool
  val maybe_lt_ieee_float :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> bool
  val diff :
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val filter_le :
    bool ->
    typ_loc:Cil_types.typ ->
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val filter_ge :
    bool ->
    typ_loc:Cil_types.typ ->
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val filter_lt :
    bool ->
    typ_loc:Cil_types.typ ->
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
  val filter_gt :
    bool ->
    typ_loc:Cil_types.typ ->
    Ival.Float_abstract.t -> Ival.Float_abstract.t -> Ival.Float_abstract.t
end