home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progpas / tspas18.arj / TSUNTB.TST < prev    next >
Text File  |  1989-10-18  |  5KB  |  236 lines

  1. (* This is a test program for the TSUNTB.TPU unit
  2.    Updated 27-Jul-89, 18-Oct-89 *)
  3.  
  4. uses TSUNTB;
  5.  
  6. const loop = 200;   (* If you do want to make it quickly, change this to 1 *)
  7.  
  8. var time : real;    (* For timing the tests *)
  9.  
  10. procedure LOGO;
  11. begin
  12.   writeln;
  13.   writeln ('TSUNTB unit test by Prof. Timo Salmi');
  14.   writeln ('University of Vaasa, Finland, ts@chyde.uwasa.fi');
  15.   writeln;
  16. end;
  17.  
  18. (* Raise a positive number to a power the traditional way *)
  19. procedure TEST1;
  20. var i : integer;
  21.     a : real;
  22. begin
  23.   time := TIMERFN;
  24.   for i := 1 to loop do
  25.     a := POWERFN (2, 15);
  26.   time := TIMERFN - time;
  27.   writeln ('POWERFN 2^15 = ', a:0:0);
  28.   writeln ('Elapsed ', time:0:2);
  29.   writeln;
  30. end;
  31.  
  32. (* Raise a longint number to a power fast *)
  33. procedure TEST1A;
  34. var i : integer;
  35.     a : real;
  36. begin
  37.   time := TIMERFN;
  38.   for i := 1 to loop do
  39.     a := POWERLFN (-2, 15);
  40.   time := TIMERFN - time;
  41.   writeln ('POWERLFN -2^15 = ', a:0:0);
  42.   writeln ('Elapsed ', time:0:2);
  43.   writeln;
  44. end;  (* test1a *)
  45.  
  46. (* Raise any number to a power, the improved function *)
  47. procedure TEST2;
  48. var i : integer;
  49.     a : real;
  50. begin
  51.   time := TIMERFN;
  52.   for i := 1 to loop do
  53.     a := POWERGFN (-2, 15);
  54.   time := TIMERFN - time;
  55.   writeln ('POWERGFN -2^15 = ', a:0:0);
  56.   writeln ('Elapsed ', time:0:2);
  57.   writeln;
  58. end;  (* test2 *)
  59.  
  60. (* Raise two to a power, that is 2^exponent, very fast *)
  61. procedure TEST3;
  62. var i : integer;
  63.     a : word;
  64. begin
  65.   time := TIMERFN;
  66.   for i := 1 to loop do
  67.     a := TWOTOFN (15);
  68.   time := TIMERFN - time;
  69.   writeln ('TWOTOFN 2^15 = ', a);
  70.   writeln ('Elapsed ', time:0:2);
  71.   writeln;
  72. end;
  73.  
  74. (* Convert a binary string fast to a decimal word *)
  75. procedure TEST4;
  76. var i : integer;
  77.     a : word;
  78. begin
  79.   time := TIMERFN;
  80.   for i := 1 to loop do
  81.                    {123456789 123456}
  82.     a := BINDECFN ('1000000000000000');
  83.   time := TIMERFN - time;
  84.   writeln ('BINDECFN (''1000000000000000'') = ', a);
  85.   writeln ('Elapsed ', time:0:2);
  86.   writeln;
  87. end;
  88.  
  89. (* Convert a decimal word to a binary string fast *)
  90. procedure TEST5;
  91. const x = 32768;
  92. var i : integer;
  93.     a : string;
  94. begin
  95.   time := TIMERFN;
  96.   for i := 1 to loop do
  97.     a := DECBINFN (x);
  98.   time := TIMERFN - time;
  99.   writeln ('DECBINFN (', x:0, ') = ', a);
  100.   writeln ('Elapsed ', time:0:2);
  101.   writeln;
  102. end;  (* test5 *)
  103.  
  104. (* Convert a decimal word to a binary string fast *)
  105. procedure TEST5A;
  106. const x = 32768;
  107. var i : integer;
  108.     a : string;
  109. begin
  110.   time := TIMERFN;
  111.   for i := 1 to loop do
  112.     a := BINFN (x);
  113.   time := TIMERFN - time;
  114.   writeln ('BINFN (', x:0, ') = ', a);
  115.   writeln ('Elapsed ', time:0:2);
  116.   writeln;
  117. end;  (* test5a *)
  118.  
  119. (* Convert a decimal longint to a binary string fast *)
  120. procedure TEST5B;
  121. var i : integer;
  122.     a : string;
  123.     x : longint;
  124. begin
  125.   x := 5;
  126.   time := TIMERFN;
  127.   for i := 1 to loop do
  128.     a := LBINFN (x);
  129.   time := TIMERFN - time;
  130.   writeln ('LBINFN (', x:0, ') = ', a);
  131.   writeln ('Elapsed ', time:0:2);
  132.   writeln;
  133. end;  (* test5b *)
  134.  
  135. (* Convert a number from any base to any base (2-36) *)
  136. procedure TEST6;
  137. var i      : integer;
  138.     result : string;
  139.     x      : string;
  140.     b1, b2 : byte;
  141. begin
  142.   x := '32768';
  143.   b1 := 10;
  144.   b2 := 2;
  145.   time := TIMERFN;
  146.   for i := 1 to loop do
  147.     result := CONVBFN (x, b1, b2);
  148.   time := TIMERFN - time;
  149.   writeln ('CONVBFN (', x, ',', b1:0, ',', b2:0, ') = ', result);
  150.   writeln ('Elapsed ', time:0:2);
  151.   writeln;
  152. end;  (* test6 *)
  153.  
  154. (* Convert a hexadecimal string fast to a decimal word *)
  155. procedure TEST7;
  156. var i : integer;
  157.     d : word;
  158.     h : string;
  159. begin
  160.   h := 'F1a7';
  161.   time := TIMERFN;
  162.   for i := 1 to loop do
  163.     d := HEXDECFN (h);
  164.   time := TIMERFN - time;
  165.   writeln ('HEXDECFN (', h, ') = ', d);
  166.   writeln ('Elapsed ', time:0:2);
  167.   writeln;
  168. end;  (* test7 *)
  169.  
  170. (* Convert a decimal word to a hexadecimal string fast *)
  171. procedure TEST8;
  172. var i : integer;
  173.     a : string;
  174.     d : word;
  175. begin
  176.   d := 32768;
  177.   time := TIMERFN;
  178.   for i := 1 to loop do
  179.     a := DECHEXFN (d);
  180.   time := TIMERFN - time;
  181.   writeln ('DECHEXFN (', d:0, ') = ', a);
  182.   writeln ('Elapsed ', time:0:2);
  183.   writeln;
  184. end;  (* test8 *)
  185.  
  186. (* Convert a decimal word to a hexadecimal string very fast *)
  187. procedure TEST8A;
  188. var i : integer;
  189.     a : string;
  190.     d : word;
  191. begin
  192.   d := 32768;
  193.   time := TIMERFN;
  194.   for i := 1 to loop do
  195.     a := HEXFN (d);
  196.   time := TIMERFN - time;
  197.   writeln ('HEXFN (', d:0, ') = ', a);
  198.   writeln ('Elapsed ', time:0:2);
  199.   writeln;
  200. end;  (* test8A *)
  201.  
  202. (* Convert a decimal longint to a hexadecimal string fast *)
  203. procedure TEST8B;
  204. var i : integer;
  205.     a : string;
  206.     x : longint;
  207. begin
  208.   x := maxint+1;
  209.   time := TIMERFN;
  210.   for i := 1 to loop do
  211.     a := LHEXFN (x);
  212.   time := TIMERFN - time;
  213.   writeln ('LHEXFN (', x:0, ') = ', a);
  214.   writeln ('Elapsed ', time:0:2);
  215.   writeln;
  216. end;  (* test8b *)
  217.  
  218. (* Main program
  219.    If you just want a particular test, comment the others away *)
  220. begin
  221.   LOGO;         {If you want pauses, use readln;}
  222.   TEST1;
  223.   TEST1A;
  224.   TEST2;
  225.   TEST3;
  226.   TEST4;
  227.   TEST5;
  228.   TEST5A;
  229.   TEST5B;
  230.   TEST6;
  231.   TEST7;
  232.   TEST8;
  233.   TEST8A;
  234.   TEST8B;
  235. end.  (* tsuntb.tst *)
  236.