real procedure cputime;
inline("my_dsa.retval.u.real val = (double)clock() / (double)CLOCKS_PER_SEC;");
begin
comment library 3;
integer i,cl,n,rep;
array r,a,b[1:30],c[1:10];
real j,root,x;
integer procedure even(x);
value x;
integer x;
even:=if x%2*2 = x then 1 else -1;
procedure gamm(r,a,b,c);
array r,a,b,c;
begin integer rep,i,cl;
real j,root,x;
rep:=100*n;
outreal(1, cputime);
for cl:= 1 step 1 until rep do
;
outreal(1, cputime);
rep:=n;
outreal(1, cputime);
for cl:=1 step 1 until rep do
for i:= 1 step 1 until 30 do
r[i]:=a[i]+b[i];
outreal(1, cputime);
for cl:=1 step 1 until rep do
for i:=1 step 1 until 30 do
r[i]:=a[i]*b[i];
outreal(1, cputime);
rep:=6*n;
x := .5;
outreal(1, cputime);
for cl:= 1 step 1 until rep do
begin j:=0.0;
for i:= 1 step 1 until 10 do
j:=(j+c[i])*x
end;
outreal(1, cputime);
outreal(1, j);
outreal(1, cputime);
for cl:= 1 step 1 until rep do
begin j:=c[1];
for i:=2 step 1 until 10 do
if c[i]>j then j:=c[i]
end;
outreal(1, cputime);
j:=2;
rep := 8*n;
outreal(1, cputime);
for cl:=1 step 1 until rep do
begin root:=1.0;
for i:=1 step 1 until 5 do
root:= 0.5*(root+j/root)
end;
outreal(1, cputime);
outreal(1, root);
end of gamm;
i:=1;
for j:=104.5,3.7,-68.9,228.2,-1004.4,500.0,308.1,45.0,152.35,161.8 do
begin c[i]:=j;
i:=i+1
end;
for i:=1 step 1 until 30 do
begin a[i]:=even(i)*i*i;
b[i]:=1-even(i)*i*i
end;
n := 2000;
rep:=100*n;
outreal(1, cputime);
for cl:= 1 step 1 until rep do
;
outreal(1, cputime);
rep:=n;
outreal(1, cputime);
for cl:=1 step 1 until rep do
for i:= 1 step 1 until 30 do
r[i]:=a[i]+b[i];
outreal(1, cputime);
for cl:=1 step 1 until rep do
for i:=1 step 1 until 30 do
r[i]:=a[i]*b[i];
outreal(1, cputime);
rep:=6*n;
x := .5;
outreal(1, cputime);
for cl:= 1 step 1 until rep do
begin j:=0.0;
for i:= 1 step 1 until 10 do
j:=(j+c[i])*x
end;
outreal(1, cputime);
outreal(1, j);
outreal(1, cputime);
for cl:= 1 step 1 until rep do
begin j:=c[1];
for i:=2 step 1 until 10 do
if c[i]>j then j:=c[i]
end;
outreal(1, cputime);
j:=2;
rep := 8*n;
outreal(1, cputime);
for cl:=1 step 1 until rep do
begin root:=1.0;
for i:=1 step 1 until 5 do
root:= 0.5*(root+j/root)
end;
outreal(1, cputime);
outreal(1, root);
gamm(r,a,b,c);
end