//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void derivatives() public virtual void derivatives() { // AD v Finite Difference ScalarFieldFirstOrderDifferentiator differentiator = new ScalarFieldFirstOrderDifferentiator(FiniteDifferenceType.CENTRAL, 1.0E-5); for (int i = 0; i < N; i++) { System.Func <DoubleArray, double> function = (DoubleArray x) => { SsviFormulaData data = SsviFormulaData.of(x.get(3), x.get(4), x.get(5)); return(SSVI_FUNCTION.volatility(x.get(0), x.get(1), x.get(2), data)); }; System.Func <DoubleArray, DoubleArray> d = differentiator.differentiate(function); DoubleArray fd = d(DoubleArray.of(FORWARD, STRIKES[i], TIME_EXP, VOL_ATM, RHO, ETA)); ValueDerivatives ad = SSVI_FUNCTION.volatilityAdjoint(FORWARD, STRIKES[i], TIME_EXP, DATA); for (int j = 0; j < 6; j++) { assertEquals(fd.get(j), ad.Derivatives.get(j), TOLERANCE_AD); } } }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test public void testSin() public virtual void testSin() { //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final com.opengamma.strata.collect.array.DoubleArray parms = com.opengamma.strata.collect.array.DoubleArray.of(-1.0, 0.5); DoubleArray parms = DoubleArray.of(-1.0, 0.5); assertEquals(-Math.Sin(1.0), VECTOR_PARAMS.evaluate(2.0, parms), 0.0); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.function.Function<double, double> func = VECTOR_PARAMS.asFunctionOfArguments(parms); System.Func <double, double> func = VECTOR_PARAMS.asFunctionOfArguments(parms); assertEquals(1.0, func(-Math.PI), 0.0); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final com.opengamma.strata.math.impl.differentiation.ScalarFirstOrderDifferentiator diff = new com.opengamma.strata.math.impl.differentiation.ScalarFirstOrderDifferentiator(); ScalarFirstOrderDifferentiator diff = new ScalarFirstOrderDifferentiator(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.function.Function<double, double> grad = diff.differentiate(func); System.Func <double, double> grad = diff.differentiate(func); assertEquals(-0.5, grad(0.0), 1e-8); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.function.Function<com.opengamma.strata.collect.array.DoubleArray, double> params_func = VECTOR_PARAMS.asFunctionOfParameters(1.0); System.Func <DoubleArray, double> params_func = VECTOR_PARAMS.asFunctionOfParameters(1.0); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final com.opengamma.strata.math.impl.differentiation.ScalarFieldFirstOrderDifferentiator vdiff = new com.opengamma.strata.math.impl.differentiation.ScalarFieldFirstOrderDifferentiator(); ScalarFieldFirstOrderDifferentiator vdiff = new ScalarFieldFirstOrderDifferentiator(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final java.util.function.Function<com.opengamma.strata.collect.array.DoubleArray, com.opengamma.strata.collect.array.DoubleArray> vgrad = vdiff.differentiate(params_func); System.Func <DoubleArray, DoubleArray> vgrad = vdiff.differentiate(params_func); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final com.opengamma.strata.collect.array.DoubleArray res = vgrad.apply(com.opengamma.strata.collect.array.DoubleArray.of(Math.PI, 0)); DoubleArray res = vgrad(DoubleArray.of(Math.PI, 0)); assertEquals(0.0, res.get(0), 1e-8); assertEquals(Math.PI, res.get(1), 1e-8); }