A good answer might be:

The completed program is given below


Complete Square Root Program

In the completed program, the roles of "oldGuess" and of "newGuess" can both be played by the variable guess.

class  SquareRoot
{

  public static void main( String[] args ) 
  {
    final double smallValue = 1.0E-14 ;
    double N     = 3.00 ;
    double guess = 1.00 ;

    while ( Math.abs( N/(guess*guess) - 1.0 ) > smallValue )
    {
       // calculate a new value for the guess
       guess =  N/(2*guess) + guess/2 ;

    }

    System.out.println("The square root of " + N + " is " + guess ) ;
  }

}

Here is the output of the program:

C:JavaLessons\chap19>java SquareRoot

The square root of 3.0 is 1.7320508075688772

The last several digits of this output are probably in error since the program only computes 14 decimal places of accuracy.

QUESTION 15:

If you asked for more accuracy than is possible in double precision variables, what might happen? For example, say that smallValue were 1.0E-21?