package name.abuchen.portfolio.math; import name.abuchen.portfolio.math.NewtonGoalSeek.Function; /* package */class PseudoDerivativeFunction implements Function { private final Function function; public PseudoDerivativeFunction(Function function) { this.function = function; } @Override public double compute(double x) { double delta = Math.abs(x) / 1e6; double left = function.compute(x - delta); double right = function.compute(x + delta); return (right - left) / (2 * delta); } }