DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦7f0d3d22a⟧ TextFile

    Length: 51456 (0xc900)
    Types: TextFile
    Names: »tsystest5   «

Derivation

└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer
    └─⟦f546e193b⟧ 
        └─⟦this⟧ »tsystest5   « 

TextFile

 message de enkelte måleprocedurer part 1 (tsystest5);

 procedure mål_for (antal);
  long antal;
  begin <* mål for-løkke *>
    systemtid (0, test_tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
     ;
    end;
    systemtid (begin_tid, tid);

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_for;
\f


  procedure mål_repeat (antal);
  long antal;
  begin <* mål repeat-løkke *>
    systemtid (0, test_tid);

    nr := antal;
    systemtid (0, begin_tid);
    repeat
      nr := nr - 1;
    until nr = 1;
    systemtid (begin_tid, tid);

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_repeat;
\f


  procedure mål_while (antal);
  long antal;
  begin <* mål while-løkke *>
    systemtid (0, test_tid);

    nr := antal;
    systemtid (0, begin_tid);
    while nr <> 1 do nr := nr - 1;
    systemtid (begin_tid, tid);

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_while;
\f


  procedure mål_i_plus_pos (antal);
  long antal;
  begin <* mål integer plus positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_plus_pos;
\f


  procedure mål_i_plus_neg (antal);
  long antal;
  begin <* mål integer plus negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
        i3 := i1 + i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_plus_neg;
\f


  procedure mål_i_minus_pos (antal);
  long antal;
  begin <* mål integer minus positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_minus_pos;
\f


  procedure mål_i_minus_neg (antal);
  long antal;
  begin <* mål integer minus negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
        i3 := i1 - i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_minus_neg;
\f


  procedure mål_i_gange_pos (antal);
  long antal;
  begin <* mål integer gange positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_gange_pos;
\f


  procedure mål_i_gange_neg (antal);
  long antal;
  begin <* mål integer gange negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
        i3 := i1 * i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_gange_neg;
\f


  procedure mål_i_div_pos (antal);
  long antal;
  begin <* mål integer div positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_div_pos;
\f


  procedure mål_i_div_neg (antal);
  long antal;
  begin <* mål integer div negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
        i3 := i1 // i2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := - 1 step - 1 until - 100 do
      for i2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_div_neg;
\f


  procedure mål_i_exp (antal);
  long antal;
  begin <* mål integer exponentation *>
    systemtid (0, test_tid);

    antal := (antal + 9999) // 10000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := - 49 step 1 until 50 do r := i1 ** i2;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for i1 := 1 step 1 until 100 do
      for i2 := - 49 step 1 until 50 do ;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 10000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_i_exp;
\f


  procedure mål_l_plus_pos (antal);
  long antal;
  begin <* mål long plus positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_plus_pos;
\f


  procedure mål_l_plus_neg (antal);
  long antal;
  begin <* mål long plus negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
        l3 := l1 + l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_plus_neg;
\f


  procedure mål_l_minus_pos (antal);
  long antal;
  begin <* mål long minus positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_minus_pos;
\f


  procedure mål_l_minus_neg (antal);
  long antal;
  begin <* mål long minus negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
        l3 := l1 - l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_minus_neg;
\f


  procedure mål_l_gange_pos (antal);
  long antal;
  begin <* mål long gange positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_gange_pos;
\f


  procedure mål_l_gange_neg (antal);
  long antal;
  begin <* mål long gange negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
        l3 := l1 * l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_gange_neg;
\f


  procedure mål_l_div_pos (antal);
  long antal;
  begin <* mål long div positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_div_pos;
\f


  procedure mål_l_div_neg (antal);
  long antal;
  begin <* mål long div negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
        l3 := l1 // l2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := - 1 step - 1 until - 100 do
      for l2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_div_neg;
\f


  procedure mål_l_exp (antal);
  long antal;
  begin <* mål long exponentation *>
    systemtid (0, test_tid);

    antal := (antal + 9999) // 10000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := - 49 step 1 until 50 do r := l1 ** l2;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for l1 := 1 step 1 until 100 do
      for l2 := - 49 step 1 until 50 do ;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 10000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_l_exp;
\f


  procedure mål_r_plus_pos (antal);
  long antal;
  begin <* mål real plus positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_plus_pos;
\f


  procedure mål_r_plus_neg (antal);
  long antal;
  begin <* mål real plus negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
        r3 := r1 + r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_plus_neg;
\f


  procedure mål_r_minus_pos (antal);
  long antal;
  begin <* mål real minus positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_minus_pos;
\f


  procedure mål_r_minus_neg (antal);
  long antal;
  begin <* mål real minus negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
        r3 := r1 - r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_minus_neg;
\f


  procedure mål_r_gange_pos (antal);
  long antal;
  begin <* mål real gange positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_gange_pos;
\f


  procedure mål_r_gange_neg (antal);
  long antal;
  begin <* mål real gange negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
        r3 := r1 * r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_gange_neg;
\f


  procedure mål_r_div_pos (antal);
  long antal;
  begin <* mål real div positive tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* 10 stk *>
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := 1 step 1 until 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_div_pos;
\f


  procedure mål_r_div_neg (antal);
  long antal;
  begin <* mål real div negative tal *>
    systemtid (0, test_tid);

    antal := (antal + 99999) // 100000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* 10 stk *>
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
        r3 := r1 / r2;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := - 1 step - 1 until - 100 do
      for r2 := - 1 step - 1 until - 100 do
      begin <* dummy *>
      end;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 100000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_div_neg;
\f


  procedure mål_r_exp (antal);
  long antal;
  begin <* mål real exponentation *>
    systemtid (0, test_tid);

    antal := (antal + 9999) // 10000; <* pga indre loop *>

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := - 49 step 1 until 50 do r := r1 ** r2;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      for r1 := 1 step 1 until 100 do
      for r2 := - 49 step 1 until 50 do ;
    end;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>
    antal := antal * 10000;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_r_exp;
\f


  procedure mål_tofrom (antal);
  long antal;
  begin
    <* mål tofrom, antal angiver antal 1024 words af 24 bit *>

    integer array buf, buf1 (1 : 1024); <* 3 kbyte *>

    systemtid (0, test_tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      tofrom (buf, buf1, 1024);
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do ;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_tofrom;
\f


  procedure mål_system5 (antal);
  long antal;
  begin
    <* mål system5, antal angiver antal 1024 words af 24 bit *>

    integer array buf (1 : 1024); <* 3 kbyte *>

    systemtid (0, test_tid);

    if system (5, 0, buf) <> 1 then system (9, 5, <:<10>system:>);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      system (5, 0, buf);
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do ;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_system5;
\f


  procedure mål_sieve (antal, size);
  long antal;
  integer size;
  begin
    integer i, prime, k, count, nr, ejok;
    boolean array flags (0 : size);

    ejok := 0;
    systemtid (0, test_tid);

    if datawrite then
    begin <* gem data *>
      d_init (testno); <* open og positioner *>
      d_iwrite (size); <* write size *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      d_init (testno); <* open og positioner *>
      if size <> d_iread <* read size *>
      then fejl (<:Fejl ved aftestningssize:>, size);
    end datatest;

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do
    begin
      count := 0;
      for i := 0 step 1 until size do flags (i) := true;
      for i := 0 step 1 until size do
      begin
        if flags (i) then
        begin
          prime := i + i + 3;
          for k := i + prime step prime until size do flags (k) := false;
          count := count + 1;

          if not datatest then <* intet *> else
          if datawrite then d_iwrite (prime) <* gem data *>
          else
          if prime <> d_iread then
          begin <* fejl *>
            ejok := ejok + 1;
            fejl (<:Fejl ved primtalsberegning, idx no.:>, i);
            if ejok >= stop then
            begin <* for mange fejl *>
              wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
              i := size;
            end for mange fejl;
          end fejl;
        end;
      end;
    end;
    systemtid (begin_tid, tid);

    systemtid (0, begin_tid);
    for nr := antal step - 1 until 1 do ;
    systemtid (begin_tid, loop_tid);

    tid := tid - loop_tid; <* træk loop fra *>

    if datawrite then
    begin <* gem data *>
      d_iwrite (count); <* write antal primtal *>
      d_exit; <* close *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      if count <> d_iread <* read antal primtal *>
      then fejl (<:Fejl ved primtalsberegning, antal:>, count);
      d_exit; <* close *>
    end datatest;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_sieve;
\f


  procedure mål_qsort (antal, size);
  value size;
  long antal;
  integer size;
  begin
    integer array ar (0 : size - 1);
    integer nr, i, j, x, ejok;

    procedure qsort (ar, bot, top);
    value bot, top;
    integer array ar;
    integer bot, top;
    begin
      integer i, j, temp;

      x := x + 1;

      while bot < top do
      begin
        i := bot;
        j := top;
        temp := ar (bot);
        while i < j do
        begin
          comment test
          write (out, "nl", 1, <<ddd>, x, <:: :>, <<d>, bot, <:/:>, top, <: :>, i, <:/:>, j);

          while ar (j) > temp do j := j - 1;
          ar (i) := ar (j);
          while (i < j) and (ar (i) <= temp) do i := i + 1;
          ar (j) := ar (i);
        end;
        ar (i) := temp;

        qsort (ar, bot, i - 1);
        bot := i + 1;
      end;

      x := x - 1;
    end procedure qsort;

    ejok := 0;
    systemtid (0, test_tid);

    tid := 0;

    for nr := antal step - 1 until 1 do
    begin
      resetrandom;
      for i := 0 step 1 until size - 1 do ar (i) := irandom (1, size);

      x := 0;
      systemtid (0, begin_tid);

      qsort (ar, 0, size - 1);

      systemtid (0, end_tid);
      tid := tid + end_tid - begin_tid;
    end;

    if datawrite then
    begin <* gem data *>
      d_init (testno); <* open og positioner *>
      d_iwrite (size); <* size for sieve *>
      for i := 0 step 1 until size - 1 do d_iwrite (ar (i)); <* gem data *>
      d_exit; <* close *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      d_init (testno); <* open og positioner *>
      if size <> d_iread <* read data *>
      then fejl (<:Fejl ved aftestningssize:>, size)
      else
      for i := 0 step 1 until size - 1 do
      if ar (i) <> d_iread then
      begin <* fejl *>
        ejok := ejok + 1;
        fejl (<:Fejl ved sortering, uventet data, idx no.:>, i);
        if ejok >= stop then
        begin <* for mange fejl *>
          wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
          i := size;
        end for mange fejl;
      end fejl;

      d_exit; <* close *>
    end datatest;

    for nr := 1 step 1 until size - 1 do if ar (nr) < ar (nr - 1)
    then fejl (<:sortering ikke stigende, element nr.:>, nr);

    if test and not datatest then
    begin
      for nr := 0 step 1 until size - 1 do
      write (out, "nl", if nr mod 8 <> 0 then 0 else 1,
        <<-ddddddddd>, ar (nr));
      write (out, "nl", 1);
    end;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_qsort;
\f


  procedure mål_ssort (antal, size);
  value size;
  long antal;
  integer size;
  begin
    integer array ar (0 : size - 1);
    integer nr, i, j, ejok;

    procedure ssort (ar, bot, top);
    value bot, top;
    integer array ar;
    integer bot, top;
    begin
      integer i, gap, temp;
      boolean nex;

      gap := (top - bot) // 2;
      repeat
        repeat
          nex := true;
          for i := 0 step 1 until top - gap do
          begin
            comment test
            write (out, "nl", 1, <:bot::>, bot, <: top::>, top,
              <: gap::>, gap, <: nex::>, if nex then <:true:> else <:false:>, <: i::>, i);

            if ar (i) > ar (i + gap) then
            begin
              temp := ar (i);
              ar (i) := ar (i + gap);
              ar (i + gap) := temp;
              nex := false;
            end;
          end;
        until nex;
        gap := gap // 2;
      until gap = 0;
    end procedure ssort;

    ejok := 0;
    systemtid (0, test_tid);

    tid := 0;

    for nr := antal step - 1 until 1 do
    begin
      resetrandom;
      for i := 0 step 1 until size - 1 do ar (i) := irandom (1, size);

      systemtid (0, begin_tid);

      ssort (ar, 0, size - 1);

      systemtid (0, end_tid);
      tid := tid + end_tid - begin_tid;
    end;

    if datawrite then
    begin <* gem data *>
      d_init (testno); <* open og positioner *>
      d_iwrite (size); <* size for sieve *>
      for i := 0 step 1 until size - 1 do d_iwrite (ar (i)); <* gem data *>
      d_exit; <* close *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      d_init (testno); <* open og positioner *>
      if size <> d_iread <* read data *>
      then fejl (<:Fejl ved aftestningssize:>, size)
      else
      for i := 0 step 1 until size - 1 do
      if ar (i) <> d_iread then
      begin <* fejl *>
        ejok := ejok + 1;
        fejl (<:Fejl ved sortering, uventet data, idx no.:>, i);
        if ejok >= stop then
        begin <* for mange fejl *>
          wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
          i := size;
        end for mange fejl;
      end fejl;

      d_exit; <* close *>
    end datatest;

    for nr := 1 step 1 until size - 1 do if ar (nr) < ar (nr - 1)
    then fejl (<:sortering ikke stigende, element nr.:>, nr);

    if test and not datatest then
    begin
      for nr := 0 step 1 until size - 1 do
      write (out, "nl", if nr mod 8 <> 0 then 0 else 1,
        <<-ddddddddd>, ar (nr));
      write (out, "nl", 1);
    end;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_ssort;
\f


  procedure mål_hsort (antal, size);
  value size;
  long antal;
  integer size;
  begin
    integer array ar (0 : size - 1);
    integer nr, i, j, ejok;

    procedure hsort (ar, bot, top);
    value bot, top;
    integer array ar;
    integer bot, top;
    begin
      integer i, temp;

      procedure sift (ar, i, j);
      value i, j;
      integer array ar;
      integer i, j;
      begin
        integer k, temp;

        while 2 * i <= j do
        begin
          k := 2 * i;

          comment test
          write (out, "nl", 1, <<dddddddd>, i, j, k, ar (i), ar (k), ar (k + 1));

          if k < j then
          begin
            if ar (k) < ar (k + 1) then k := k + 1;
          end;

          if ar (i) < ar (k) then
          begin
            temp := ar (k);
            ar (k) := ar (i);
            ar (i) := temp;
            i := k;
          end
          else i := j + 1;
        end;
      end procedure sift;

      i := top // 2;
      while i >= 1 do <* ifølge Byte jun/1988: i > 1 *>
      begin
        sift (ar, i, top);
        i := i - 1;
      end;

      i := top;
      while i > 1 do
      begin
        sift (ar, 0, i);
        temp := ar (0);
        ar (0) := ar (i);
        ar (i) := temp;
        i := i - 1;
      end;
    end procedure hsort;

    ejok := 0;
    systemtid (0, test_tid);

    tid := 0;

    for nr := antal step - 1 until 1 do
    begin
      resetrandom;
      for i := 0 step 1 until size - 1 do ar (i) := irandom (1, size);

      systemtid (0, begin_tid);

      hsort (ar, 0, size - 1);

      systemtid (0, end_tid);
      tid := tid + end_tid - begin_tid;
    end;

    if datawrite then
    begin <* gem data *>
      d_init (testno); <* open og positioner *>
      d_iwrite (size); <* size for sieve *>
      for i := 0 step 1 until size - 1 do d_iwrite (ar (i)); <* gem data *>
      d_exit; <* close *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      d_init (testno); <* open og positioner *>
      if size <> d_iread <* read data *>
      then fejl (<:Fejl ved aftestningssize:>, size)
      else
      for i := 0 step 1 until size - 1 do
      if ar (i) <> d_iread then
      begin <* fejl *>
        ejok := ejok + 1;
        fejl (<:Fejl ved sortering, uventet data, idx no.:>, i);
        if ejok >= stop then
        begin <* for mange fejl *>
          wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
          i := size;
        end for mange fejl;
      end fejl;

      d_exit; <* close *>
    end datatest;

    for nr := 1 step 1 until size - 1 do if ar (nr) < ar (nr - 1)
    then fejl (<:sortering ikke stigende, element nr.:>, nr);

    if test and not datatest then
    begin
      for nr := 0 step 1 until size - 1 do
      write (out, "nl", if nr mod 8 <> 0 then 0 else 1,
        <<-ddddddddd>, ar (nr));
      write (out, "nl", 1);
    end;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_hsort;
\f


  procedure mål_matrix (antal, size);
  value size;
  long antal;
  integer size;
  begin
    integer nr, i, j, ejok;
    integer array mx1, mx2, mx_r1, mx_r2, mx_r3 (1 : size, 1 : size);

    procedure mxadd (mx1, mx2, mx_r, size);
    value size;
    integer array mx1, mx2, mx_r;
    integer size;
    begin <* adds two square matrices *>
      integer r, c;

      for r := 1 step 1 until size do
      for c := 1 step 1 until size do mx_r (r, c) := mx1 (r, c) + mx2 (r, c);
    end procedure mxadd;

    procedure mxmult (mx1, mx2, mx_r, size);
    value size;
    integer array mx1, mx2, mx_r;
    integer size;
    begin <* multiplies two square matrices *>
      integer r, c, i;

      for r := 1 step 1 until size do
      for c := 1 step 1 until size do
      begin
        mx_r (r, c) := 0;
        for i := 1 step 1 until size do mx_r (r, c) := mx_r (r, c) + mx1 (r, i) * mx2 (i, c);
      end;
    end procedure mxmult;

    procedure mxtrans (mx1, mx_r, size);
    value size;
    integer array mx1, mx_r;
    integer size;
    begin <* transputation of square matrice *>
      integer r, c;

      for r := 1 step 1 until size do
      for c := 1 step 1 until size do mx_r (c, r) := mx1 (r, c);
    end procedure mxtrans;

    ejok := 0;
    systemtid (0, test_tid);

    tid := 0;

    for nr := antal step - 1 until 1 do
    begin
      resetrandom;
      k := 0;
      for i := 1 step 1 until size do
      for j := 1 step 1 until size do
      begin
        mx1 (i, j) := irandom (- size, size);
        mx2 (i, j) := irandom (- size, size);
        mx_r1 (i, j) := irandom (- size, size);
        mx_r2 (i, j) := irandom (- size, size);
        mx_r3 (i, j) := irandom (- size, size);
      end;

      systemtid (0, begin_tid);

      mxadd (mx1, mx2, mx_r1, size);
      mxmult (mx1, mx2, mx_r2, size);
      mxtrans (mx1, mx_r3, size);

      systemtid (0, end_tid);
      tid := tid + end_tid - begin_tid;
    end;

    if datawrite then
    begin <* gem data *>
      d_init (testno); <* open og positioner *>
      d_iwrite (size); <* size for sieve *>

      for i := 1 step 1 until size do
      for j := 1 step 1 until size do
      begin
        d_iwrite (mx_r1 (i, j));
        d_iwrite (mx_r2 (i, j));
        d_iwrite (mx_r3 (i, j));
      end;
      d_exit; <* close *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      d_init (testno); <* open og positioner *>
      if size <> d_iread <* read data *>
      then fejl (<:Fejl ved aftestningssize:>, size)
      else
      for i := 1 step 1 until size do
      for j := 1 step 1 until size do
      begin
        i1 := d_iread;
        i2 := d_iread;
        i3 := d_iread;

        if mx_r1 (i, j) <> i1
        or mx_r2 (i, j) <> i2
        or mx_r3 (i, j) <> i3 then
        begin <* fejl *>
          ejok := ejok + 1;

          fejl (<:Fejl ved integer-matrixberegning:>, - 1);
          write (out, <<d>, <: element :>, i, ",", 1, j,
            "nl", 1,
            true, 10, <:forventet:>, true, 10, <:fundet:>, true, 10, <:forskel:>);

          if mx_r1 (i, j) <> i1 then
          begin
            write (out, "nl", 1, << -bddddddd>,
              i1, mx_r1 (i, j), i1 - mx_r1 (i, j), <:(addition):>,
              "nl", 1, <:beregning: :>,
              mx1 (i, j), <: + :>, mx2 (i, j));
          end;

          if mx_r2 (i, j) <> i2 then
          begin
            write (out, "nl", 1, << -bddddddd>,
              i2, mx_r2 (i, j), i2 - mx_r2 (i, j), <:(multiplikation):>,
              "nl", 1, <:beregning: :>);
            for k := 1 step 1 until size do
            write (out, "nl", 1, << -bddddddd>,
              <:+ :>, mx1 (i, k), <: * :>, mx2 (k, j),
              <: (=:>, mx1 (i, k) * mx2 (k, j), <:):>);
          end;

          if mx_r3 (i, j) <> i3 then
          begin
            write (out, "nl", 1, << -bddddddd>,
              i3, mx_r3 (i, j), i3 - mx_r3 (i, j), <:(transcription):>,
              "nl", 1, true, 10, <:beregning: :>, mx1 (j, i));
          end;

          if online then setposition (out, 0, 0);

          if ejok >= stop then
          begin <* for mange fejl *>
            wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
            i := j := size;
          end for mange fejl;
        end fejl;
      end check;

      d_exit; <* close *>
    end datatest;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_matrix;
\f


  procedure mål_fmatrix (antal, size);
  value size;
  long antal;
  integer size;
  begin
    integer nr, i, j, ejok;
    real array mx1, mx2, mx_r1, mx_r2, mx_r3 (1 : size, 1 : size);

    procedure mxadd (mx1, mx2, mx_r, size);
    value size;
    real array mx1, mx2, mx_r;
    integer size;
    begin <* adds two square matrices *>
      integer r, c;

      for r := 1 step 1 until size do
      for c := 1 step 1 until size do mx_r (r, c) := mx1 (r, c) + mx2 (r, c);
    end procedure mxadd;

    procedure mxmult (mx1, mx2, mx_r, size);
    value size;
    real array mx1, mx2, mx_r;
    integer size;
    begin <* multiplies two square matrices *>
      integer r, c, i;

      for r := 1 step 1 until size do
      for c := 1 step 1 until size do
      begin
        mx_r (r, c) := 0;
        for i := 1 step 1 until size do mx_r (r, c) := mx_r (r, c) + mx1 (r, i) * mx2 (i, c);
      end;
    end procedure mxmult;

    procedure mxtrans (mx1, mx_r, size);
    value size;
    real array mx1, mx_r;
    integer size;
    begin <* transputation of square matrice *>
      integer r, c;

      for r := 1 step 1 until size do
      for c := 1 step 1 until size do mx_r (c, r) := mx1 (r, c);
    end procedure mxtrans;

    ejok := 0;
    systemtid (0, test_tid);

    tid := 0;

    for nr := antal step - 1 until 1 do
    begin
      resetrandom;
      k := 0;
      for i := 1 step 1 until size do
      for j := 1 step 1 until size do
      begin
        mx1 (i, j) := rrandom (- size, size);
        mx2 (i, j) := rrandom (- size, size);
        mx_r1 (i, j) := rrandom (- size, size);
        mx_r2 (i, j) := rrandom (- size, size);
        mx_r3 (i, j) := rrandom (- size, size);
      end;

      systemtid (0, begin_tid);

      mxadd (mx1, mx2, mx_r1, size);
      mxmult (mx1, mx2, mx_r2, size);
      mxtrans (mx1, mx_r3, size);

      systemtid (0, end_tid);
      tid := tid + end_tid - begin_tid;
    end;

    if datawrite then
    begin <* gem data *>
      d_init (testno); <* open og positioner *>
      d_iwrite (size); <* size for sieve *>

      for i := 1 step 1 until size do
      for j := 1 step 1 until size do
      begin
        d_rwrite (mx_r1 (i, j));
        d_rwrite (mx_r2 (i, j));
        d_rwrite (mx_r3 (i, j));
      end;
      d_exit; <* close *>
    end datawrite
    else
    if datatest then
    begin <* check data *>
      d_init (testno); <* open og positioner *>
      if size <> d_iread <* read data *>
      then fejl (<:Fejl ved aftestningssize:>, size)
      else
      for i := 1 step 1 until size do
      for j := 1 step 1 until size do
      begin
        r1 := d_rread;
        r2 := d_rread;
        r3 := d_rread;

        if mx_r1 (i, j) <> r1
        or mx_r2 (i, j) <> r2
        or mx_r3 (i, j) <> r3 then
        begin <* fejl *>
          ejok := ejok + 1;

          fejl (<:Fejl ved flydende-matrixberegning:>, - 1);
          write (out, <<d>, <: element :>, i, ",", 1, j,
            "nl", 1,
            true, 18, <:forventet:>, true, 18, <:fundet:>, true, 18, <:forskel:>);

          if mx_r1 (i, j) <> r1 then
          begin
            write (out, "nl", 1, <<-d.ddddddddd'-dd__>,
              r1, mx_r1 (i, j), r1 - mx_r1 (i, j), <:(addition):>,
              "nl", 1, true, 18, <:beregning: :>,
              mx1 (i, j), <: + :>, mx2 (i, j));
          end;

          if mx_r2 (i, j) <> r2 then
          begin
            write (out, "nl", 1, <<-d.ddddddddd'-dd__>,
              r2, mx_r2 (i, j), r2 - mx_r2 (i, j), <:(multiplikation):>,
              "nl", 1, <:beregning: :>);
            for k := 1 step 1 until size do
            write (out, "nl", 1, <<-d.ddddddddd'-dd__>,
              <:+ :>, mx1 (i, k), <: * :>, mx2 (k, j),
              <: (=:>, mx1 (i, k) * mx2 (k, j), <:):>);
          end;

          if mx_r3 (i, j) <> r3 then
          begin
            write (out, "nl", 1, <<-d.ddddddddd'-dd__>,
              r3, mx_r3 (i, j), r3 - mx_r3 (i, j), <:(transcription):>,
              "nl", 1, true, 18, <:beregning: :>, mx1 (j, i));
          end;

          if online then setposition (out, 0, 0);

          if ejok >= stop then
          begin <* for mange fejl *>
            wr_test (<:for mange fejl observeret, testen stoppes:>, - 1);
            i := j := size;
          end for mange fejl;
        end fejl;
      end check;

      d_exit; <* close *>
    end datatest;

    systemtid (test_tid, test_tid);
    if kl then wr_test (<:antalsfaktor::>, antal * 10000 // test_tid);
  end procedure mål_fmatrix;

▶EOF◀