home *** CD-ROM | disk | FTP | other *** search
- extern
- function sqrt ( x : real ): real;
-
- var
- sq,a,b : real;
- exponent,i : integer;
- zap : record
- case integer of
- 0 : (num : real);
- 1 : (ch8 : array [1..8] of char);
- end;
-
- begin
- if x = 0.0 then sqrt:=0.0
- else
- begin
- sq:=abs(x);
-
- zap.num:=sq;
- exponent:=ord(zap.ch8[1]);
- exponent:=(exponent div 2) + 32;
- zap.ch8[1]:=chr(exponent);
- a:=zap.num;
-
- b:=0;
- i:=0;
-
- while a <> b do
- begin
- b:=sq/a;
- a:=(a+b)/2;
- i:=i+1;
- if i > 4 then
- begin
- i:=0;
- if abs(a-b) < (1.0e-12 * a) then a:=b;
- end;
- end;
-
- sqrt:=a;
- end; (* else *)
-
- end;. (* sqrt *)
-