Hi,
It is my pleasure to announce the release of the library Interval, version 1.4. Interval is a library developed by Jean-Marc Alliot, Jean-Baptiste Gotteland and slightly improved by myself, which implements interval-arithmetic: a mathematical value x is represented on the computer as an interval [x] with machine numbers as bounds such that x ∈ [x] (of course the tighter the interval, the better). All mathematical functions are lifted to functions taking and returning intervals. The following interactive session:
# #require "interval";;
~/.opam/4.05.0/lib/interval: added to search path
~/.opam/4.05.0/lib/interval/interval.cma: loaded
# open Interval;;
# let x = I.v 1. 1.;;
val x : Interval.t = {low = 1.; high = 1.}
# I.sin x;;
- : Interval.t = {low = 0.841470984807896505; high = 0.841470984807896616}
constructs an interval x
with lower and upper bounds 1 (thus 1 ∈ x since 1 is exactly representable) and the next line computes an interval containing the true value of the sine on 1 (thus taking into account all rounding and truncation errors along the computation). You can read this as the fact that the exact value of sin(1) belongs to the interval [0.841470984807896505, 0.841470984807896616].
Hope you find that library useful. For more information, contributing, bug reports,… see the Github page.
Happy hacking,
C.