// $Id: Deriv.java,v 1.1 1999/10/03 00:43:30 leavens Exp $

// cf. pp. 74 of SICP

package lib;

public class Deriv implements DoubleFun {

    protected DoubleFun saved_g;

    public Deriv(DoubleFun g) {
        saved_g = g;
    }

    protected double dx = 0.00001;

    public Deriv(DoubleFun g, double epsilon) {
        saved_g = g;
        if (epsilon > 0.0) {
            dx = epsilon;
        }
    }

    public double value(double x) {
        return (saved_g.value(x + dx) - saved_g.value(x)) / dx;
    }
}
