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

package lib;

public class SqrtByNewtonsMethod implements DoubleFun {
    protected double tolerance = 0.0001;

    public SqrtByNewtonsMethod() { }

    public SqrtByNewtonsMethod(double epsilon) {
        if (epsilon > 0.0) {
            tolerance = epsilon;
        }
    }

    public double value(double given_x)
    //@ requires x >= 0.0;
    {
        final double x = given_x;
        return new NewtonsMethod(tolerance)
            .solve(new DoubleFun()
                       { public double value(double y) { return y*y - x; } },
                   1.0);
    }
}
