previousInterpolation function
A function providing the previous value of a discrete monotonically
increasing set of sample points xs
and ys
. Returns left
if there is
no previous sample point.
Implementation
UnaryFunction<double> previousInterpolation({
required Vector<double> xs,
required Vector<double> ys,
double left = double.nan,
}) {
checkPoints(
DataType.float,
xs: xs,
ys: ys,
min: 1,
ordered: true,
unique: true,
);
return (double x) {
if (x < xs.getUnchecked(0)) {
return left;
} else if (xs.getUnchecked(xs.count - 1) < x) {
return ys.getUnchecked(ys.count - 1);
} else {
return ys.getUnchecked(
DataType.float.comparator.binarySearchRight(xs, x).clamp(1, xs.count) -
1,
);
}
};
}