begin
library A0, A1, A4, A5, A15;
integer i, j, k, k1;
real t1, t2, c;
real procedure ICR(t); value t; real t;
kdf9 2/0/0/0;
SET 99; OUT; SET 47; FLOAT; {t}; -F; exit
algol
integer procedure ackermann(m, n);
value m, n;
integer m, n;
ackermann :=
if m = 0 then
n + 1
else if n = 0 then
ackermann(m - 1, 1)
else
ackermann(m - 1, ackermann(m, n - 1));
integer procedure Ack(m, n);
value m, n;
integer m, n;
TAIL:
if m = 0 then
Ack := n + 1
else if n = 0 then
begin
n := 1;
m := m - 1;
goto TAIL;
end
else
begin
n := Ack(m, n - 1);
m := m - 1;
goto TAIL;
end
c := ICR(0.0);
c := ICR(c);
writetext(30, {Fully _ recursive{c}});
k:= 16;
k1 := 1;
for i := 1 step 1 until 7 do
begin
t1 := ICR(0.0);
j := ackermann(3, i);
t2 := ICR(t1) - c;
write(30, format({nds}), i);
write(30, format({ndddd}), 3 × t2 / (512 × k1 - 15 × k + 9 × i + 37) );
writetext(30, { _ instructions _ per _ call{c}});
k1 := 4 × k1;
k := 2 × k;
end
writetext(30, {With _ tail _ calls _ looping{c}});
k:= 16;
k1 := 1;
for i := 1 step 1 until 7 do
begin
t1 := ICR(0.0);
j := Ack(3, i);
t2 := ICR(t1) - c;
write(30, format({nds}), i);
write(30, format({ndddd}), 3 × t2 / (512 × k1 - 15 × k + 9 × i + 37) );
writetext(30, { _ instructions _ per _ call{c}});
k1 := 4 × k1;
k := 2 × k;
end
end
|