//TODO make this general - not SABR specific
final Curve<Double, Double> cAlpha = curves.get(ALPHA);
final Curve<Double, Double> cBeta = curves.get(BETA);
final Curve<Double, Double> cRho = curves.get(RHO);
final Curve<Double, Double> cNu = curves.get(NU);
final VolatilityModel1D volModel = new SABRTermStructureParameters(cAlpha, cBeta, cRho, cNu);
final int nCaps = _capPricers.size();
final int m = x.getNumberOfElements();
final double[][] jac = new double[nCaps][m];
double f, k, t;