|
|
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: 2304 (0x900)
Types: TextFile
Names: »algdiagtest«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦7e928b248⟧ »algbib«
└─⟦this⟧
;kemlab5 1
r=algol
\f
DIAGTEST, 16-5-77.
begin
integer i,j,k,n,m1,m2,r,s,N;
boolean sp;
sp:= false add 32;
read(in,N,n,m1,m2);
begin
real g,p,cpu1,cpu2,cpu3;
array x(1:N,1:N),H(1:N,0:n-1),ev1(1:N),
ev2,ev3,rem1,rem2,rem3(m1:m2);
for i:=n-1 step -1 until 1 do
for j:=n-1 step -1 until i do H(i,j):= 0;
for i:=1 step 1 until N do begin
k:= i-n; if k<1 then k:= 0;
for j:=1 step 1 until k do x(i,j):= 0;
for j:=k+1 step 1 until i do begin
read(in,p); x(i,j):= H(i,i-j):= p end
end;
begin
cpu1:= systime(1,0,p);
tridql(N,ev1,x);
cpu1:= systime(1,p,p) - cpu1;
for k:=m1 step 1 until m2 do begin
g:= 0;
for i:=1 step 1 until N do begin
p:= sum(H(i,j)*x(k,i-j),j,0,if i<n then i-1 else n-1)
- ev1(k)*x(k,i)
+ sum(H(i+j,j)*x(k,i+j),j,1,if i+n-1>N then N-i else n-1);
g:= g+p*p
end;
rem1(k):= sqrt(g)
end end;
begin array U(m1:m2,1:N);
cpu2:= systime(1,0,p);
if n=3 then pentadiag(N,m1,m2,ev2,H,U)
else banddiag(N,n,m1,m2,ev2,H,U);
cpu2:= systime(1,p,p) - cpu2;
for k:=m1 step 1 until m2 do begin
g:= 0;
for i:=1 step 1 until N do begin
p:= sum(H(i,j)*U(k,i-j),j,0,if i<n then i-1 else n-1)
- ev2(k)*U(k,i)
+ sum(H(i+j,j)*U(k,i+j),j,1,if i+n-1>N then N-i else n-1);
g:= g+p*p
end;
rem2(k):= sqrt(g)
end end;
comment slettet programdel:
s:= 0' r:= n*(n+1)//2'
for i:=1 step 1 until N do begin
k:= i-n' if k<1 then k:= 0'
for j:=1 step 1 until k do begin
s:= s+1' B(s):= 0 end'
for j:=k+1 step 1 until i do begin
s:= s+1' B(s):= H(i,i-j) end
end'
begin array x(1:N,1:N)'
cpu3:= systime(1,0,p)'
cpu3:= systime(1,p,p) - cpu3'
for k:=m1 step 1 until m2 do begin
g:= 0'
for i:=1 step 1 until N do begin
p:= sum(H(i,j)*x(k,i-j),j,0,if i<n then i-1 else n-1)
- ev3(k)*x(k,i)
+ sum(H(i+j,j)*x(k,i+j),j,1,if i+n-1>N then N-i else n-1)'
g:= g+p*p
end'
rem3(k):= sqrt(g)
end end;
for k:=m1 step 1 until m2 do
write(out,<:<10>:>,<<-d.dddddddddd'-dd>,ev1(k),sp,3,rem1(k),
<:<10>:>,ev2(k),sp,3,rem2(k),<:<10>:>);
comment <:<10>:>,ev3(k),sp,3,rem3(k),<:<10>:>);
write(out,<:<10>:>,sp,5,<<dd.dddd>,cpu1/60,sp,5,cpu2/60)
end end
rename r.diagtest
permanent diagtest.15
▶EOF◀