FloatDomain.F64Interval
include Lattice.S
include Lattice.PO
widen x y
assumes leq x y
. Solvers guarantee this by calling widen old (join old new)
.
val bot : unit -> t
val is_bot : t -> bool
val top : unit -> t
val is_top : t -> bool
include FloatArith with type t := t
Unary functions
nversions of unary functions
(inv_ceil z -> x) if (z = ceil(x))
(inv_ceil z -> x) if (z = ceil(x))
(inv_floor z -> x) if (z = floor(x))
Comparison operators
val lt : t -> t -> IntDomain.IntDomTuple.t
Less than: x < y
val gt : t -> t -> IntDomain.IntDomTuple.t
Greater than: x > y
val le : t -> t -> IntDomain.IntDomTuple.t
Less than or equal: x <= y
val ge : t -> t -> IntDomain.IntDomTuple.t
Greater than or equal: x >= y
val eq : t -> t -> IntDomain.IntDomTuple.t
Equal to: x == y
val ne : t -> t -> IntDomain.IntDomTuple.t
Not equal to: x != y
val unordered : t -> t -> IntDomain.IntDomTuple.t
Unordered
Unary functions returning int
val isfinite : t -> IntDomain.IntDomTuple.t
__builtin_isfinite(x)
val isinf : t -> IntDomain.IntDomTuple.t
__builtin_isinf(x)
val isnan : t -> IntDomain.IntDomTuple.t
__builtin_isnan(x)
val isnormal : t -> IntDomain.IntDomTuple.t
__builtin_isnormal(x)
val signbit : t -> IntDomain.IntDomTuple.t
__builtin_signbit(x)
val to_int : GoblintCil.Cil.ikind -> t -> IntDomain.IntDomTuple.t
val nan : unit -> t
val of_const : float -> t
val of_interval : (float * float) -> t
val of_string : string -> t
val of_int : IntDomain.IntDomTuple.t -> t
val ending : float -> t
val starting : float -> t
val ending_before : float -> t
val starting_after : float -> t
val finite : t
val minimal : t -> float option
val maximal : t -> float option
val is_exact : t -> bool