public class Deriv implements DoubleFun {
    protected DoubleFun saved_g;
    protected double dx = 0.00001;
    public void set_dx(double eps) {
        if (0.0 < eps && eps < 0.1) {
            dx = eps;
        }
    }
    public double value(double x) {
        return (saved_g.value(x + dx)
                - saved_g.value(x))
               / dx;
    }
    public Deriv(DoubleFun g) {
        saved_g = g;
    }
    public static void main(String argv[]) {
        System.out.println("derivative of cos(pi) = " +
                           new Deriv(new Cosine())
                           .value(3.14159));
    }
}
