private double solveByBisection(double optionPrice, double lowerSigma, double upperSigma) { BisectionSingleRootFinder rootFinder = new BisectionSingleRootFinder(VOL_TOL); Function<Double, Double> func = new Function<Double, Double>() { @Override public Double apply(Double volatility) { double trialPrice = priceFunc.apply(volatility); return trialPrice / optionPrice - 1.0; } }; return rootFinder.getRoot(func, lowerSigma, upperSigma); }
BisectionSingleRootFinder rootFinder = new BisectionSingleRootFinder(EPS); Function<Double, Double> func = new Function<Double, Double>() { @Override