! A simple iterative computation of the square root

program iterative_square_root

real :: value, guess, next_guess
real, parameter :: eps = 1.0e-5

do      ! infinite loop until zero entered

print *, "Enter a number, zero to stop:"
read *, value

if (value <= 0.0) then
  stop
end if

guess = value/2.0

  do
    next_guess = guess - (guess**2 - value)/(2*guess)
    print "(f14.8)", next_guess
    if (abs(guess - next_guess) > eps) then
      guess = next_guess
    else
      exit
    end if
  end do

  print *, "The square root of ", value, &
           " is approximately ", next_guess

end do
end program iterative_square_root
