home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug175.arc / JRTPAS3.LBR / SQRT.PAS < prev    next >
Pascal/Delphi Source File  |  1979-12-31  |  640b  |  44 lines

  1. extern
  2. function sqrt ( x : real ): real;
  3.  
  4. var
  5. sq,a,b : real;
  6. exponent,i : integer;
  7. zap : record
  8.     case integer of
  9.     0 : (num : real);
  10.     1 : (ch8 : array [1..8] of char);
  11.     end;
  12.  
  13. begin
  14. if x = 0.0 then sqrt:=0.0 
  15. else
  16. begin
  17. sq:=abs(x);
  18.  
  19. zap.num:=sq;
  20. exponent:=ord(zap.ch8[1]);
  21. exponent:=(exponent div 2) + 32;
  22. zap.ch8[1]:=chr(exponent);
  23. a:=zap.num;
  24.  
  25. b:=0;
  26. i:=0;
  27.  
  28. while a <> b do
  29.   begin
  30.   b:=sq/a;
  31.   a:=(a+b)/2;
  32.   i:=i+1;
  33.   if i > 4 then
  34.     begin
  35.     i:=0;
  36.     if abs(a-b) < (1.0e-12 * a) then a:=b;
  37.     end;
  38.   end;
  39.  
  40. sqrt:=a;
  41. end; (* else *)
  42.  
  43. end; (* sqrt *).
  44.