public void test_lastNode() { BoundCurveInterpolator bci = LNDFC_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); assertEquals(bci.interpolate(5.0), 2.0, TOL); assertEquals(bci.firstDerivative(5.0), bci.firstDerivative(4.99999999), 1e-6); }
public void test_firstNode() { BoundCurveInterpolator bci = LL_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); assertEquals(bci.interpolate(0.0), 3.0, TOL); assertEquals(bci.firstDerivative(0.0), bci.firstDerivative(0.00000001), 1e-6); }
Bound(DoubleArray xValues, DoubleArray yValues, BoundCurveInterpolator interpolator) { this.nodeCount = xValues.size(); this.firstXValue = xValues.get(0); this.firstYValue = yValues.get(0); this.firstDfValue = Math.exp(-firstXValue * firstYValue); this.firstYGradient = interpolator.firstDerivative(firstXValue); double gradient = -firstYValue * firstDfValue - firstXValue * firstDfValue * firstYGradient; this.eps = EPS * (xValues.get(nodeCount - 1) - firstXValue); this.leftQuadCoef = gradient / firstXValue - (firstDfValue - 1d) / firstXValue / firstXValue; this.leftLinCoef = -gradient + 2d * (firstDfValue - 1d) / firstXValue; this.leftSens = Suppliers.memoize(() -> interpolator.parameterSensitivity(firstXValue + eps)); }
public void test_firstNode() { BoundCurveInterpolator bci = DQ_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); assertEquals(bci.interpolate(0.0), 3.0, TOL); assertEquals(bci.firstDerivative(0.0), bci.firstDerivative(0.00000001), 1e-6); }
public void test_lastNode() { BoundCurveInterpolator bci = LL_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); assertEquals(bci.interpolate(5.0), 2.0, TOL); assertEquals(bci.firstDerivative(5.0), bci.firstDerivative(4.99999999), 1e-6); }
Bound(DoubleArray xValues, DoubleArray yValues, BoundCurveInterpolator interpolator) { this.nodeCount = xValues.size(); this.firstXValue = xValues.get(0); this.firstYValue = yValues.get(0); this.lastXValue = xValues.get(nodeCount - 1); double gradient = interpolator.firstDerivative(firstXValue); this.eps = EPS * (lastXValue - firstXValue); this.leftQuadCoef = gradient / firstXValue - (firstYValue - 1d) / firstXValue / firstXValue; this.leftLinCoef = -gradient + 2d * (firstYValue - 1d) / firstXValue; this.leftSens = Suppliers.memoize(() -> interpolator.parameterSensitivity(firstXValue + eps)); }
public void test_firstNode() { BoundCurveInterpolator bci = LINEAR_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); assertEquals(bci.interpolate(0.0), 3.0, TOL); assertEquals(bci.firstDerivative(0.0), bci.firstDerivative(0.01), TOL); assertEquals(bci.parameterSensitivity(0.0).get(0), 1d, TOL); assertEquals(bci.parameterSensitivity(0.0).get(1), 0d, TOL); }
public void test_firstDerivative() { BoundCurveInterpolator bci = LL_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_firstDerivative() { BoundCurveInterpolator bci = LINEAR_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_firstDerivative() { BoundCurveInterpolator bci = DQ_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_firstDerivative() { BoundCurveInterpolator bci = NATURAL_CUBLIC_SPLINE_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_firstDerivative() { BoundCurveInterpolator bci = INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_firstDerivative() { BoundCurveInterpolator bci = TIME_SQUARE_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_firstDerivative() { BoundCurveInterpolator bci = LNCMP_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); double eps = 1e-8; double lo = bci.interpolate(0.2); double hi = bci.interpolate(0.2 + eps); double deriv = (hi - lo) / eps; assertEquals(bci.firstDerivative(0.2), deriv, 1e-6); }
public void test_lastNode() { BoundCurveInterpolator bci = LINEAR_INTERPOLATOR.bind(X_DATA, Y_DATA, FLAT_EXTRAPOLATOR, FLAT_EXTRAPOLATOR); assertEquals(bci.interpolate(5.0), 2.0, TOL); assertEquals(bci.firstDerivative(5.0), bci.firstDerivative(4.99), TOL); assertEquals(bci.parameterSensitivity(5.0).get(X_DATA.size() - 2), 0d, TOL); assertEquals(bci.parameterSensitivity(5.0).get(X_DATA.size() - 1), 1d, TOL); }
public void test_noRight() { BoundCurveInterpolator bci = CurveInterpolators.LINEAR.bind(X_DATA, Y_DATA, QL_EXTRAPOLATOR, QL_EXTRAPOLATOR); assertThrowsIllegalArg(() -> bci.interpolate(10d)); assertThrowsIllegalArg(() -> bci.firstDerivative(10d)); assertThrowsIllegalArg(() -> bci.parameterSensitivity(10d)); }
public void noLeftTest() { BoundCurveInterpolator bci = PRODUCT_LINEAR.bind( X_VALUES, Y_VALUES, DISCOUNT_FACTOR_LINEAR_RIGHT_ZERO_RATE, DISCOUNT_FACTOR_LINEAR_RIGHT_ZERO_RATE); assertThrowsIllegalArg(() -> bci.interpolate(0.2d)); assertThrowsIllegalArg(() -> bci.firstDerivative(0.3d)); assertThrowsIllegalArg(() -> bci.parameterSensitivity(0.6d)); }
public void noRightTest() { BoundCurveInterpolator bci = LINEAR.bind( X_DATA, Y_DATA, DISCOUNT_FACTOR_QUADRATIC_LEFT_ZERO_RATE, DISCOUNT_FACTOR_QUADRATIC_LEFT_ZERO_RATE); assertThrowsIllegalArg(() -> bci.interpolate(10d)); assertThrowsIllegalArg(() -> bci.firstDerivative(10d)); assertThrowsIllegalArg(() -> bci.parameterSensitivity(10d)); }
public void smallKeyTest() { DoubleArray xValues = DoubleArray.of(1e-13, 3e-8, 2e-5); DoubleArray yValues = DoubleArray.of(1.0, 13.2, 1.5); double keyDw = 1.0e-12; BoundCurveInterpolator bound = INTERP.bind(xValues, yValues); assertThrowsIllegalArg(() -> bound.interpolate(keyDw)); assertThrowsIllegalArg(() -> bound.firstDerivative(keyDw)); assertThrowsIllegalArg(() -> bound.parameterSensitivity(keyDw)); }
public void smallKeyTest() { DoubleArray xValues = DoubleArray.of(1e-13, 3e-8, 2e-5); DoubleArray yValues = DoubleArray.of(1.0, 13.2, 1.5); double keyDw = 1.0e-12; BoundCurveInterpolator bound = INTERP.bind(xValues, yValues); assertThrowsIllegalArg(() -> bound.interpolate(keyDw)); assertThrowsIllegalArg(() -> bound.firstDerivative(keyDw)); assertThrowsIllegalArg(() -> bound.parameterSensitivity(keyDw)); }