home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / ucb / spencer_2bsd.tar.gz / 2bsd.tar / src / pascal / tests / powersoftwo.p < prev    next >
Text File  |  1980-02-17  |  919b  |  35 lines

  1. program powersoftwo(output);
  2. const m = 30; n = 90;  { m >= n*log(2) }
  3. var exp,i,j,l: integer;
  4.     c,r,t: integer;
  5.     d: array [0..m] of integer;  {positive powers}
  6.     f: array [1..n] of integer;  {negative powers}
  7. begin l := 0; r := 1; d[0] := 1;
  8.   writeln(wallclock);
  9.   for exp := 1 to n do
  10.   begin {compute and print 2**exp }  c := 0;
  11.     for i := 0 to l do
  12.     begin t := 2*d[i] + c;
  13.       if t >= 10 then
  14.         begin d[i] := t-10; c := 1;
  15.         end
  16.       else
  17.         begin d[i] := t; c:= 0;
  18.         end
  19.     end ;
  20.     if c > 0 then
  21.       begin l := l+1; d[l] := 1
  22.       end ;
  23.     for i := m downto l do write(' ');
  24.     for i := l downto 0 do write(d[i]:1);
  25.     write(exp:5, '  .');
  26.     {compute and print 2**(-exp) }
  27.     for j := 1 to exp-1 do
  28.     begin r := 10*r + f[j];
  29.       f[j] := r div 2; r := r - 2*f[j]; write(f[j]:1)
  30.     end ;
  31.     f[exp] := 5; writeln('5'); r := 0
  32.   end ;
  33.   writeln(wallclock)
  34. end .
  35.