// TODO There is no guarantee that F0 and V0 are grid points (it depends on the chosen step sizes), so we should do a surface interpolation (what fun!)
final double pdfPrice = res[(int) (F0 / deltaX)][(int) (V0 / deltaY)];
// System.out.print("\n");
final FFTPricer pricer = new FFTPricer();
final MartingaleCharacteristicExponent heston = new HestonCharacteristicExponent(KAPPA, THETA, V0, OMEGA, RHO);
final int n = 51;
final double alpha = -0.5;
final double tol = 1e-12;
final double[][] strikeNprice = pricer.price(F0, 1.0, T, true, heston, STRIKE / 2, STRIKE * 2, n, 0.2, alpha, tol);
final int nStrikes = strikeNprice.length;
final double[] k = new double[nStrikes];
final double[] price = new double[nStrikes];