PROGRAM ex5_7_2
IMPLICIT NONE
REAL :: a = 0.0E0, x, d = 1.0E-5, b, r

DO
    PRINT *, 'Input a positive real number: '
    READ *, b
    IF (b > 0.0E0) EXIT
END DO

x = (a + b) / 2.0E0
r = b

DO WHILE (ABS(x**2 - r) / r > d)
    IF (x**2 > r) THEN
        b = x
    ELSE
        a = x
    END IF

    x = (a + b) / 2.0E0
    PRINT '(1X, E12.5)', x
END DO

END PROGRAM ex5_7_2