SYSTEMREALFN SQRT(REAL ARG)
INTEGER I,J
REAL Y,OLD
REALARRAY A(0:15)
!      %IF ARG<0.0 %THEN MLIBERR(50) %AND ARG=-ARG
      IF ARG<0.0 THEN PRINTSTRING("SQRT ARG NEG
") AND RESULT=-1
      IF ARG=0 THEN RESULT=0.0
      CYCLE I=0,1,15
         Y=ARG/2^I
         IF Y<1 THEN ->OUT
      REPEAT
OUT:  IF Y>1 THEN I=17 AND Y=Y/4 ELSE I=I+1 AND Y=Y/2
      IF Y>0.34375 THEN A(0)=Y/2 +0.4368 ELSE A(0)=Y/2+0.381
      CYCLE J=0,1,14
         OLD=A(J)
         A(J+1)=(OLD+Y/OLD)/2
         IF MOD(A(J+1)-OLD)<0.000000000000005 THEN EXIT
      REPEAT
      RESULT=A(J+1)*2^(I//2)
END
ENDOFFILE