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

package lib;

public class FixedPoint implements DoubleSolverIF {

    protected double tolerance = 0.00001;

    public FixedPoint() { }

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

    public double solve(DoubleFun f, double firstGuess) {
        double guess = firstGuess;;
        double next = f.value(guess);
        while (!closeEnough(guess, next)) {
            guess = next;
            next = f.value(guess);
        }
        return next;
    }


    protected boolean closeEnough(double v1, double v2) {
        return Math.abs(v1 - v2) < tolerance;
    }
}
