public class WurzelRechner
{

    private static double EPSILON = 1E-14 ; 

    private double eingabe ; 
    private double naeherung ;
    private boolean ungenau ; 

   /** erzeugt einen Naeherungsrechner fuer einen 
    *  gegebenen Radikanden
    * @param eingabe der Radikand 
    */
    public WurzelRechner(double eingabe) 
    {
	this.eingabe = eingabe ; 
	naeherung = 1.0 ; 
	ungenau = true ; 
    }

    /** 
     * @return zeigt an, ob die aktuelle Naeherung noch ungenau ist   
     */ 
    public boolean nochUngenau() 
    {
	return ungenau ;
    }

    /**
     * @return einen neuen Naeherungswert  
     */
    public double naechsteNaeherung() 
    {

	double neueNaeherung = (naeherung + eingabe/naeherung)/2.0 ;
	if ( Math.abs( neueNaeherung - naeherung ) < EPSILON ) 
	    ungenau = false ; 
	naeherung = neueNaeherung ;      
	return naeherung ; 
    } 

}
