ItvUtils.FloatItvNanSourceFloatItvNan - Floating-point intervals with special IEEE numbers.
Adds special IEEE number managenement (NaN, infinities) to FloatItv.
type t = {itv : FI.t Utils_core.Bot.with_bot;Interval of non-special values. Bounds cannot be NaN. Bounds can be infinities to represent non-infinity floats outside the range of doubles.
*)nan : bool;Whether to include NaN.
*)pinf : bool;Whether to include +∞.
*)minf : bool;Whether to include -∞.
*)}A set of IEEE floating-point values. Represented as a set of non-special values, and boolean flags to indicate the presence of each special IEEE value. The value 0 in the interval represents both IEEE +0 and -0. Note: the type can naturally represent the empty set.
type prec = [ | `SINGLE32-bit single precision
*)| `DOUBLE64-bit double precision
*)| `EXTRAanything larger than 64-bit double precision floats
*)| `REALreal arithmetic
*) ]Precision. All bounds are represented as double, whatever the precision.
type round = [ | `NEARTo nearest
*)| `UPUpwards
*)| `DOWNDownwards
*)| `ZEROTowards 0
*)| `ANYAny rounding mode
*) ]Rounding direction.
Float set reduced to an interval of non-special values. lo should not be +oo nor NaN. up should not be -oo nor NaN. We can have lo = -oo and up = +oo to represent sets of non-infinity floats larger than the range of double.
Whether the finite parts of the sets have a non-empty intersection.
Whether the set contains a certain (finite, infinite or NaN) value.
Whether the argument contains only (possibly infinite) positive non-NaN values (or is empty).
Whether the argument contains only (possibly infinite) negative non-NaN values (or is empty).
Whether the argument contains only (possibly infinite) strictly positive non-NaN values (or is empty).
Whether the argument contains only (possibly infinite) strictly negative non-NaN values (or is empty).
Whether the argument contains only (possibly infinite or NaN) non-zero values (or is empty).
Whether the argument contains a (possibly NaN or infinite) non-0 value.
Whether the argument contains a (possibly infinite) positive value.
Whether the argument contains a (possibly infinite) negative value.
Whether the argument contains a (possibly infinite) strictly positive value.
Whether the argument contains a (possibly infinite) strictly negative value.
Whether the argument contains only finite values, and they are included in the range lo,up.
C comparison tests. Returns true if the test may succeed, false if it cannot. Note that NaN always compares different to all values (including NaN).
Returns true if the test may fail, false if it cannot. Due to NaN, which compare always different, <= (resp. >) do not return the boolean negation of > (resp. <). However, == is the negation of != even for NaN.
Conversion to integer range with truncation. NaN and infinities are discarded.
From bounds, with rounding, precision and handling of specials.
Conversion from integer intervals (handling overflows to infinities).
Conversion from integer intervals (handling overflows to infinities).
Conversion to integer interval with truncation. Handles infinities.
val lift_filter_itv :
(FI.t -> FI.t -> ('a * 'b) Utils_core.Bot.with_bot) ->
t ->
t ->
'a Utils_core.Bot.with_bot * 'b Utils_core.Bot.with_botC comparison filters. Keep the parts of the arguments that can satisfy the condition. NaN is assumed to be different from any value (including NaN).
Refine both arguments assuming that the test is true.
Refine both arguments assuming that the test is false.
Backward conversion from integer interval.