private void testSensitivity(double[] xValues, double[] yValues, double[] keys, double delta) {
PiecewisePolynomialWithSensitivityFunction1D func = new PiecewisePolynomialWithSensitivityFunction1D();
PiecewisePolynomialResultsWithSensitivity resultSensi = INTERP.interpolateWithSensitivity(xValues, yValues);
DoubleArray[] computedArray = func.nodeSensitivity(resultSensi, keys);
for (int i = 0; i < keys.length; ++i) {
double base = func.evaluate(resultSensi, keys[i]).get(0);
DoubleArray computed = func.nodeSensitivity(resultSensi, keys[i]);
assertEquals(computed, computedArray[i]);
for (int j = 0; j < yValues.length; ++j) {
double[] yValuesBump = Arrays.copyOf(yValues, yValues.length);
yValuesBump[j] += delta;
PiecewisePolynomialResult resultBump = INTERP.interpolate(xValues, yValuesBump);
double expected = (func.evaluate(resultBump, keys[i]).get(0) - base) / delta;
assertEquals(computed.get(j), expected, delta);
}
}
}
}