Module FloatDomain.F32Interval

include Lattice.S
include Lattice.PO
include Printable.S
type t
val equal : t -> t -> bool
val hash : t -> int
val compare : t -> t -> int
val show : t -> string
val pretty : unit -> t -> Printable.Pretty.doc
val printXml : 'a BatInnerIO.output -> t -> unit
val name : unit -> string
val to_yojson : t -> Yojson.Safe.t
val tag : t -> int

Unique ID, given by HConsed, for context identification in witness

val arbitrary : unit -> t QCheck.arbitrary
val relift : t -> t
val leq : t -> t -> bool
val join : t -> t -> t
val meet : t -> t -> t
val widen : t -> t -> t

widen x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).

val narrow : t -> t -> t
val pretty_diff : unit -> (t * t) -> Lattice.Pretty.doc

If leq x y = false, then pretty_diff () (x, y) should explain why.

val bot : unit -> t
val is_bot : t -> bool
val top : unit -> t
val is_top : t -> bool
include FloatArith with type t := t
val neg : t -> t

Negating a float value: -x

val add : t -> t -> t

Addition: x + y

val sub : t -> t -> t

Subtraction: x - y

val mul : t -> t -> t

Multiplication: x * y

val div : t -> t -> t

Division: x / y

val fmax : t -> t -> t

Maximum

val fmin : t -> t -> t

Minimum

Unary functions

val ceil : t -> t

ceil(x)

val floor : t -> t

floor(x)

val fabs : t -> t

fabs(x)

val acos : t -> t

acos(x)

val asin : t -> t

asin(x)

val atan : t -> t

atan(x)

val cos : t -> t

cos(x)

val sin : t -> t

sin(x)

val tan : t -> t

tan(x)

val sqrt : t -> t

sqrt(x)

val inv_ceil : ?asPreciseAsConcrete:bool -> t -> t

nversions of unary functions

(inv_ceil z -> x) if (z = ceil(x))

val inv_floor : ?asPreciseAsConcrete:bool -> t -> t

(inv_ceil z -> x) if (z = ceil(x))

(inv_floor z -> x) if (z = floor(x))

val inv_fabs : t -> t

(inv_floor z -> x) if (z = floor(x))

(inv_fabs z -> x) if (z = fabs(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