|
|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 51456 (0xc900)
Types: TextFile
Names: »tsystest5 «
└─⟦9ccaf6601⟧ Bits:30008165 Bånd med SW8000 kildetekst/release værktøjer
└─⟦f546e193b⟧
└─⟦this⟧ »tsystest5 «
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◀