Module Float64

type t

t is currently implemented by OCaml's float type.

Beware: NaNs have a sign and a payload, while they should be indistinguishable from Coq's perspective.

val is_nan : t -> bool

Test functions for special values to avoid calling classify

val is_infinity : t -> bool
val is_neg_infinity : t -> bool
val to_string : t -> string
val of_string : string -> t
val compile : t -> string
val of_float : float -> t
val sign : t -> bool

Return true for "-", false for "+".

val opp : t -> t
val abs : t -> t
type float_comparison =
| FEq
| FLt
| FGt
| FNotComparable
val eq : t -> t -> bool
val lt : t -> t -> bool
val le : t -> t -> bool
val compare : t -> t -> float_comparison

The IEEE 754 float comparison. * NotComparable is returned if there is a NaN in the arguments

type float_class =
| PNormal
| NNormal
| PSubn
| NSubn
| PZero
| NZero
| PInf
| NInf
| NaN
val classify : t -> float_class
val mul : t -> t -> t
val add : t -> t -> t
val sub : t -> t -> t
val div : t -> t -> t
val sqrt : t -> t
val of_int63 : Uint63.t -> t

Link with integers

val normfr_mantissa : t -> Uint63.t
val eshift : int

Shifted exponent extraction

val frshiftexp : t -> t * Uint63.t
val ldshiftexp : t -> Uint63.t -> t
val next_up : t -> t
val next_down : t -> t
val equal : t -> t -> bool

Return true if two floats are equal. * All NaN values are considered equal.

val hash : t -> int
val total_compare : t -> t -> int

Total order relation over float values. Behaves like Pervasives.compare.

val is_float64 : Stdlib.Obj.t -> bool