package mopsa
Install
Dune Dependency
Authors
Maintainers
Sources
md5=fdee20e988343751de440b4f6b67c0f4
sha512=f5cbf1328785d3f5ce40155dada2d95e5de5cce4f084ea30cfb04d1ab10cc9403a26cfb3fa55d0f9da72244482130fdb89c286a9aed0d640bba46b7c00e09500
doc/itvUtils/ItvUtils/FloatItvNan/index.html
Module ItvUtils.FloatItvNan
Source
FloatItvNan - Floating-point intervals with special IEEE numbers.
Adds special IEEE number managenement (NaN, infinities) to FloatItv.
Types
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 = [
| `SINGLE
(*32-bit single precision
*)| `DOUBLE
(*64-bit double precision
*)| `EXTRA
(*anything larger than 64-bit double precision floats
*)| `REAL
(*real arithmetic
*)
]
Precision. All bounds are represented as double, whatever the precision.
type round = [
| `NEAR
(*To nearest
*)| `UP
(*Upwards
*)| `DOWN
(*Downwards
*)| `ZERO
(*Towards 0
*)| `ANY
(*Any rounding mode
*)
]
Rounding direction.
Constructors
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.
Set-theoretic
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
.
Printing
C predicates
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.
Forward arithmetic
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.
Filters
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_bot
C 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 arithmetic
Backward conversion from integer interval.