final BlackImpliedStdDevHelper f = new BlackImpliedStdDevHelper(optionType, strike, forward, blackPrice / discount);
final NewtonSafe solver = new NewtonSafe();
solver.setMaxEvaluations(maxIterations);
final double minSdtDev = 0.0, maxstddev = 3.0;
final double stddev = solver.solve(f, accuracy, guess, minSdtDev, maxstddev);
if (stddev >= 0.0) return stddev;
throw new ArithmeticException("a negative value was calculated"); // TODO: add more logging
}