module Piecewise_linear_intf:sig
..end
create
enforces that x (key) values are non-decreasing.
It also enforces certain finiteness conditions: the x and y values must be finite
(non-nan, and non-infinite), and differences of consecutive x values and consecutive
y values must be finite.
module type Float_like =sig
..end
module type S =sig
..end
module type S_invertible =sig
..end
create
enforces that x (key) values are non-decreasing.
It also enforces certain finiteness conditions: the x and y values must be finite
(non-nan, and non-infinite), and differences of consecutive x values and consecutive
y values must be finite.
get t x
evaluates the piecewise linear function t
at x
.
It is possible to get discontinuous functions by using repeated x-values in the
knots. In that case, the function is evaluated in such a way that it is
right-continuous. For example, if t
has knots
[(0.,0.5); (1.,1.5); (1.,10.); (2.,11.)]
, then get t 1.
returns 10.
,
get t 0.999
returns 1.499
, and get t 1.001
returns 10.001
.
create
enforces that the x (key) values are strictly increasing. It also enforces
that the y (value) values are either strictly increasing or strictly
decreasing. These two properties give us invertibility.
It also enforces certain finiteness conditions: the x and y values must be finite (non-nan, and non-infinite), and differences of consecutive x values and consecutive y values must be finite.
(Conceivably, one might have a case where one wants to loosen the conditions on
x and y values to non-strict monotonicity, so that one does not have true
invertibility, but only a sort of formal invertibility. If that use case
arises, a separate functor like Make_formally_invertible
could be added,
so that Make_invertible
maintains its stricter semantics.)
get_inverse t value
is the inverse operation of get t key
.