final SwaptionIntegrant integrant = new SwaptionIntegrant(discountedCashFlowFixed, alphaFixed, tau2Fixed, discountedCashFlowIbor, alphaIbor, tau2Ibor, rhobar,
swaption.getUnderlyingSwap(), strike);
final double limit = 10.0;
final double absoluteTolerance = 1.0E-0;
final double relativeTolerance = 1.0E-5;
final RungeKuttaIntegrator1D integrator1D = new RungeKuttaIntegrator1D(absoluteTolerance, relativeTolerance, NB_INTEGRATION);
final IntegratorRepeated2D integrator2D = new IntegratorRepeated2D(integrator1D);
double pv = 0.0;
try {
pv = 1.0 / (2.0 * Math.PI * Math.sqrt(1 - rhobar * rhobar)) * integrator2D.integrate(integrant, new Double[] {-limit, -limit}, new Double[] {limit, limit});
} catch (final Exception e) {