PROCEDURE Sqrt(x: REAL): REAL;
(*0 < x < 2*)
VAR y, c: REAL;
BEGIN y := x; c := 1.0 – x;
WHILE c > e DO
(*y2 = x×(1-c),
c >= 0*)
y := y × (1.0 + 0.5×c);
c := c × c × (0.75 + 0.25×c)
END ;
RETURN y
(*x×(1-e) <= y2 < x*)
END Sqrt