public void sameIntervalsTest() {
DoubleArray xValues = DoubleArray.of(-1., 0., 1., 2., 3., 4., 5., 6., 7., 8.);
DoubleArray[] yValues = new DoubleArray[] {
DoubleArray.of(1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001, 1.001),
DoubleArray.of(11., 11., 8., 5., 1.001, 1.001, 5., 8., 11., 11.),
DoubleArray.of(1.001, 1.001, 5., 8., 9., 9., 11., 12., 18., 18.)
};
int nKeys = 100;
double[] keys = new double[nKeys];
double interval = 0.061;
for (int i = 0; i < nKeys; ++i) {
keys[i] = xValues.get(0) + interval * i;
}
CurveExtrapolator extrap = InterpolatorCurveExtrapolator.INSTANCE;
int yDim = yValues.length;
for (int k = 0; k < yDim; ++k) {
BoundCurveInterpolator boundInterp = CurveInterpolators.SQUARE_LINEAR.bind(xValues, yValues[k], extrap, extrap);
AbstractBoundCurveInterpolator baseInterp = (AbstractBoundCurveInterpolator) boundInterp;
for (int j = 0; j < nKeys; ++j) {
assertEquals(boundInterp.interpolate(keys[j]), baseInterp.doInterpolate(keys[j]), TOL);
assertEquals(boundInterp.firstDerivative(keys[j]), baseInterp.doFirstDerivative(keys[j]), TOL);
assertTrue(boundInterp.parameterSensitivity(keys[j]).equalWithTolerance(baseInterp.doParameterSensitivity(keys[j]), TOL));
}
}
}