|
|
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: 3072 (0xc00)
Types: TextFile
Names: »gotdo«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦1248b0c55⟧ »gobib«
└─⟦this⟧
;kemlab5 1
tdo=set 120
permanent tdo.15
tdo=algol list.yes
begin
integer i,i1,i2,it,k,l,n,ns,nm,v;
real eps,xm,xmax;
boolean nl,plot;
input:
read(in,n); if n=0 then goto stop;
plot:=n<0; n:=abs n;
read(in,xm,xmax,v,l,eps);
nl:=false add 10;
write(out,nl,3,<:n = :>,<<ddd>,n,<: x-match = :>,<<d.d>,xm,
<: x-max = :>,xmax,<: v,l = :>,
<<dd>,v,l,<<d'-dd>,<: eps =:>,eps,nl,1);
begin
real e,de,g0,g1,g2,h0,h1,h2,d,x,x2,y1m,y2m,p,w,w0;
array y1,y2(0:n);
e:=v+1; d:=xmax/n; nm:=xm/d; k:=l+l+1; it:=0;
iterate:
if it>0 then write(out,nl,1,<:E = :>,<<dd.dddddddd>,
e,<: dE = :>,<<-d.ddd'-dd>,de);
it:=it+1; x:=d; x2:=x*x; p:=d/2;
h0:=-e/(l+1); h1:=-e-e+x2;
g0:=0; g1:=-k/x;
y1(0):=y2(n):=1; y2(0):=y1(n):=0;
i:=2; i1:=ns:=1; i2:=0;
rep:
y2(i1):=(((h1*p+g0)*p+1)*y2(i2)+(h0+h1)*p*y1(i2))/
(-(h1*p+g1)*p+1);
y1(i1):=y1(i2)+(y2(i2)+y2(i1))*p;
p:=d/12;
for i:=i step ns until nm do begin
x:=x+d; x2:=x*x; g2:=-k/x; h2:=-e-e+x2;
y2(i):=(((h2*p*5+g1)*p*8+1)*y2(i1)+
((h2*5+h1*8)*y1(i1)-h0*y1(i2)-(h2*p*5+g0)*y2(i2))*p)/
(-(h2*p*5+g2)*p*5+1);
y1(i):=(y2(i)*5+y2(i1)*8-y2(i2))*p+y1(i1);
i2:=i1; i1:=i; g0:=g1; g1:=g2; h0:=h1; h1:=h2;
end;
if ns=1 then begin
ns:=-1; i:=n-2; i1:=n-1; i2:=n; d:=-d; p:=d/2;
x:=xmax+d; x2:=x*x;
g0:=-k/xmax; g1:=-k/x;
h0:=0; h1:=-e-e+x2;
y1m:=y1(nm); y2m:=y2(nm);
goto rep
end;
w:=y2(nm)*y1m-y1(nm)*y2m;
d:=-d;
if it=1 then begin
w0:=w; de:=e*0.01; e:=e+de; goto iterate
end else if it<4 or abs w<abs w0 then begin
de:= -de*w/(w-w0); e:=e+de;
if abs de>e*eps then begin
w0:=w; goto iterate end
end;
p:=y1m/y1(nm);
for i:=nm step 1 until n do begin
y1(i):= y1(i)*p; y2(i):=y2(i)*p end;
x2:=w0:=0; x:=xmax;
for i:=n-1 step -1 until 1 do begin
x:=x-d; p:=y1(i); p:=(if l=0 then x else x**k)*p*p;
if i=2 then p:=p*11/12;
w0:=w0+p; x2:=x2+p*x*x;
end;
p:=p/4; w0:=w0+p; x2:=(x2+p*x*x)/w0;
write(out,nl,1,<:E = :>,<<dd.dddddddd>,e,<: dE = :>,
<<-d.ddd'-dd>,de,<: it = :>,<<dd>,it,<: <x2> = :>,
<<d.dddddd>,x2,nl,1,<< -d.ddd'-d>,
<:w,y2(nm),dy2(nm),y2(xmax) = :>,
w,y2m,y2(nm)-y2m,y2(n),nl,1);
setposition(out,0,0);
if plot then begin
setplotname(<:tek4006a:>,2);
plotform(0,17,13); plotadmini(0,xm,-1,1,0);
plotcurve(x*d,y1(x),x,0,n,1.0);
plotcurve(x*d,y2(x),x,n,0,-1.0);
plotclose;
end end;
goto input;
stop: end;
▶EOF◀