DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦d2d2aacc9⟧ TextFile

    Length: 14592 (0x3900)
    Types: TextFile
    Names: »nchanneltxt«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦d3633872f⟧ »cnch« 
└─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ.
    └─⟦4334b4c0b⟧ 
        └─⟦d3633872f⟧ »cnch« 
            └─⟦this⟧ 

TextFile

;ali time 3 0 lines.2500

(mode list.yes
lookup nchanneltxt
clear nchannel
nchannel=set 260
permanent nchannel.13
lookup rydrun
if ok.yes
mode 10.yes
lookup rydlist
if ok.yes
mode 15.yes
clear rydlist rydgtest
nchannel=hcalg xref.no
;nchannel mg1two l1.0 l2.1 x1.0.52 x2.0.45 print.no
;nchannel mg1two mix.yes l1.1
;nchannel mg1two print.no l1.1 x1.0.0.5 x2.0.67
;nchannel mg1two mix.yes l1.2 l2.1
mode 10.no 15.no list.no)
1979-09-07
n-channelprogram
begin
boolean print,endstate,mix,plot,weight,myrep;
real ind,rel,Ecm,
     minval,
     Na,maxns,nsmin,eps,eps1,x,y;
integer L,n,l,J,states,a,b,i,j,k,i1,k1,i2,k2,
        maxiter,maxiter1,c,char,par,Jc;
integer channels,mypar,thetapar,maxpar;

if -,readifp(<:channels:>,channels) then channels:=3;
case channels of begin
  begin mypar:=1; thetapar:=1; maxpar:=2; par:=1; end;
  begin mypar:=2; thetapar:=1; maxpar:=6; par:=5; end;
  begin mypar:=3; thetapar:=3; maxpar:=12; par:=9; end;
  begin mypar:=4; thetapar:=10; maxpar:=28; par:=18; end;
end case;

begin
integer array li(1:channels);
array PSI(1:maxpar),pname(1:3),cm,zi,A,N,F,C(1:channels,1:channels),
      Ipi,nstari,norm,myi,Nn,theta,stheta,ctheta(1:channels);
comment algol copy.platsymtxt;

algol list.off copy.ryproc;
algol list.off copy.rydstruct;
algol list.off copy.alutproc;
algol list.off copy.rydseg;

real procedure detsum(states,par,ny,my,W);
value states; integer states;
array par,ny,my,W;
if states<=0 then detsum:=0 else
begin
own integer eval;
integer i,j,k;
real D,p,q,r;
array s(1:channels,1:channels),mu,nyi,myi(1:mypar),
  theta,stheta,ctheta(1:thetapar);
D:=0;
for i:=1 step 1 until thetapar do
begin
  theta(i):=par(mypar+i);
  stheta(i):=sin(theta(i));
  ctheta(i):=cos(theta(i));
end;
for i:=1 step 1 until states do
begin
  for k:=1 step 1 until channels do nyi(k):=ny(k,i);
  for k:=1 step 1 until mypar do
    mu(k):=PSI(k)-PSI(mypar+thetapar+k)/ny(k,i)**2/2;
  for j:=1 step 1 until channels do
  for k:=1 step 1 until channels do s(j,k):=sin(pi*(nyi(j)+mu(k)));
  case channels of
  begin
  D:=1;
  D:=D+(
    stheta(1)**2*s(2,1)*s(1,2)+ctheta(1)**2*s(2,2)*s(1,1)
     )**2*W(i);
  D:=D+(
     ctheta(1)*ctheta(2)*(ctheta(1)*ctheta(3)-stheta(1)*stheta(2)*stheta(3))*
     ctheta(2)*ctheta(3)*s(1,1)*s(2,2)*s(3,3)+
     s(1,2)*s(2,1)*s(3,3)*stheta(1)*ctheta(2)**2*(stheta(1)*ctheta(3)+
       ctheta(1)*stheta(2)*stheta(3))*ctheta(3)+
     s(1,1)*s(2,3)*s(3,2)*ctheta(1)*ctheta(2)**2*stheta(3)*(ctheta(1)*stheta(3)+
      stheta(1)*stheta(2)*ctheta(3))+
    s(1,2)*s(2,3)*s(3,1)*stheta(1)*ctheta(2)**2*stheta(3)*(stheta(1)*stheta(3)-
      ctheta(1)*stheta(2)*ctheta(3))+
     s(1,3)*s(2,1)*s(3,2)*stheta(2)*(stheta(1)*ctheta(3)+ctheta(1)*stheta(2)*stheta(3))*
    (ctheta(1)*stheta(3)+stheta(1)*stheta(2)*ctheta(3))+
    s(1,3)*s(2,2)*s(3,1)*stheta(2)*(ctheta(1)*ctheta(3)-
      stheta(1)*stheta(2)*stheta(3))*
    (stheta(1)*stheta(3)-ctheta(1)*stheta(2)*ctheta(3))
        )**2*W(i);
  D:=D+(
    1
     )**2*W(i);
  end case;
  end summing over states;
eval:=eval+1;
detsum:=D;
end detsum;


real procedure hkena(n,PSI,PHI,S,rho,sig,fn,maxeval);
value n,rho,sig,maxeval;
integer n,maxeval;
real rho,sig;
array PSI,PHI,S;
real fn;
comment Hooke and Jeeves direct search
        n        = number of variables
        PSI(1:n) = starting points and subsequent base points
        PHI(1:n) = points for call of fn
        S(1:n)   = step lengths
        spsi     = function value at base point
        rho      = reduction factor for step lengths
        sig      = significant figures required in PSI
        fn       = the function
        maxeval  = maximum no of function values permitted
;

begin
boolean cont;
integer l,k,eval;
array theta(1:n);
real sphi,ss,stheta,spsi;

real procedure E;
begin
for k:=1 step 1 until n do
begin
  PHI(k):=PHI(k)+S(k);
  sphi:=fn;
  eval:=eval+1;
  if ind=0 or sphi>=ss then
  begin
    S(k):=-S(k);
    PHI(k):=PHI(k)+2*S(k);
    sphi:=fn;
    eval:=eval+1;
    if ind=0 or sphi>=ss then PHI(k):=PHI(k)-S(k) else
      ss:=sphi;
   end else ss:=sphi;
end k;
 
printpar;
end E;

procedure printpar;
if print then
begin
  write(out,nl,3);
  for l:=1 step 1 until n do write(out,PSI(l));
  write(out,nl,1,<:spsi =:>,spsi);
  write(out,nl,1,<:iteration =:>,eval);
end print;

for k:=1 step 1 until n do PHI(k):=PSI(k);
spsi:=fn;
eval:=1;
printpar;
label1:
cont:=true;
for k:=k while eval<=maxeval  and cont do
begin
  ss:=spsi;
  for k:=1 step 1 until n do PHI(k):=PSI(k);
  E;
  if ss<spsi then
label2:
  begin
    for k:=1 step 1 until n do
    begin
      if PHI(k)>PSI(k) and S(k)<0 then S(k):=-S(k);
      if PHI(k)<PSI(k) and S(k)>0 then S(k):=-S(k);
      theta(k):=PHI(k);
      PHI(k):=2*PHI(k)-PSI(k);
    end for k;
    stheta:=ss;
    ss:=sphi:=fn;
    eval:=eval+1;
    printpar;
    if ind=0 or ss>=stheta then
    begin
      for k:=1 step 1 until n do
        PSI(k):=theta(k);
      spsi:=stheta;
      goto label1;
    end else
    begin
      for k:=1 step 1 until n do if abs(PHI(k)-PSI(k))>.5*abs S(k) then
        goto label2;
    end;
  end ss<sphi;
cont:=false;

for k:=1 step 1 until n do cont:=cont or abs S(k)>=sig*abs PSI(k);
for k:=1 step 1 until n do S(k):=rho*S(k);
if print then write(out,nl,2,<:step lengths reduced:>);
end main loop;
maxiter:=eval;
hkena:=fn;
end hkena;

algol list.off copy.ryglobal;

comment START OF PROGRAM;
myrep:=false;
if -,readbfp(<:plot:>,plot) then plot:=false;
if -,readbfp(<:mix:>,mix) then mix:=false;
if -,readbfp(<:list:>,list) then list:=true;
if -,readbfp(<:print:>,print) then print:=false;
if -,readbfp(<:weight:>,weight) then weight:=false;
readifp(<:par:>,par);
if -,readifp(<:iterations:>,maxiter) then maxiter:=2000;
maxiter1:=maxiter;
if -,readrfp(<:nsmin:>,nsmin) then nsmin:=3;
if -,readrfp(<:nsmax:>,nsmax) then nsmax:=35;
if readsfp(<:plotter:>,pname) then setplotname(string inc(pname),0) else
  setplotname(<:houstona:>,0);
if mix then
begin
  unstackcuri;
   j:=mypar+thetapar;
   for k:=1 step 1 until channels do read(in,PSI(k),PSI(j+k));
   for k:=1 step 1 until thetapar do read(in,PSI(mypar+k));
  connectinp(1);
end;
readatsym(in,S,atno,Z);
write(out,ff,1,nl,4);
writeatsym(out,S,atno,Z);
read(in,i,i);
for i:=1 step 1 until channels do
begin
  if -,readifp(case i of (<:l1:>,<:l2:>,<:l3:>,<:l4:>),li(i)) then
  li(i):=case i of (0,2,2,2) else li(i):=2*li(i);
  Ipi(i):=readr(case i of(<:Ip1:>,<:Ip2:>,<:Ip3:>,<:Ip4:>));
  write(out,sp,4,false add ryalf(li(i)+256),1,<:limit:>);
end i;
if -,readifp(<:j:>,Jc) then Jc:=-1;
if Jc>=0 then write(out,<: J = :>,Jc,if Jc mod 2=1 then <:/2:> else <::>);
if -,readrfp(<:eps:>,eps) then eps:=8;
eps1:=eps:=10**(-eps);
if -,readrfp(<:steplengths:>,rel) then rel:=6;
rel:=10**(-rel);
states:=nsmax-nsmin+10;
begin
array PHI,ACCP,ACCP1(1:maxpar),ny,my(1:channels,1:states),W(1:states);
integer array nn,ll,JJ(1:states);

for i:=1 step 1 until maxpar do
begin
  if -,mix then PSI(i):=0;
  ACCP(i):=ACCP1(i):=.05;
end;
if -,mix  then
begin
  for k:=1 step 1 until mypar do
  begin
   if -,readrfp(case k of(<:x1:>,<:x2:>,<:x3:>,<:x4:>),PSI(k)) then
      PSI(k):=.5 else write(out,nl,1,<:x:>,<<d>,k,<: = :>,PSI(k));
end;
  for i:=1 step 1 until thetapar do
  begin
  if -,readrfp(case i of (
     <:theta1:>,<:theta2:>,<:theta3:>,<:theta4:>,<:theta5:>,
     <:theta6:>,<:theta7:>,<:theta8:>,<:theta9:>,<:theta10:>
     ),PSI(mypar+i)) then
        PSI(mypar+i):=.6 else
  write(out,nl,1,<:theta:>,<<d>,i,<: = :>,PSI(mypar+i),cos(PSI(mypar+i)),sin(PSI(mypar+i)));
  end i;
end;

states:=0;
endstate:=false;
if list then
begin
  write(out,nl,2,<:state:>,sp,6,<:Ecm:>);
  for k:=1 step 1 until channels do write(out,sp,4,<:n*:>,<<d>,k);
  for k:=1 step 1 until channels do write(out,sp,4,<:my:>,<<d>,k);
end;
maxns:=0;
for states:=states while -,endstate do
begin
  readstate(in,L,n,l,J);
  if L<0 then L:=l;
  read(in,Ecm);
  repeatchar(in);
  for c:=readchar(in,char) while c>=7 and char<>25 do;
  if char=101 or char=105 or char=60 then endstate:=true;
  repeatchar(in);
  if L=li(1) and (Jc>=0 =>Jc=J) then
  begin
  for k:=1 step 1 until channels do
  nstari(k):=if Ecm<Ipi(k) then Z*sqrt(ryinf/100/(Ipi(k)-Ecm)) else 0;
  if nstari(1)>=nsmin and nstari(1)<=nsmax then
  begin
  j:=states:=states+1;
  nn(j):=n;
  ll(j):=l;
  JJ(j):=J;
  for k:=1 step 1 until channels do
  begin
    ny(k,j):=nstari(k);
    my(k,j):=nstari(k) - entier nstari(i);
    if k>1 then my(k,j):=1-my(k,j);
  end k;
  W(j):=if weight then 1/nstari(1) else 1;
  if nstari(1)>maxns then maxns:=nstari(1);
  if print or list then
  begin
    write(out,nl,1);
    writestate(out,L,n,l,J);
    write(out,sp,2,<<ddddddddd.d>,Ecm);
     for k:=1 step 1 until channels do write(out,<<  dd.ddd>,nstari(k));
     for k:=1 step 1 until channels do write(out,<<  dd.ddd>,my(k,j));
  end;
  end nsmin and nsmax;
  end l=l1;
end states;
for i:=1 step 1 until maxpar do PHI(i):=PSI(i);
if -,mix and par>=mypar+thetapar then
begin
minval:=hkena(mypar+thetapar,PSI,PHI,ACCP1,.5,rel,detsum(states,PHI,ny,my,W),maxiter1);
  write(out,nl,2);
  for k:=1 step 1 until channels do write(out,nl,1,<: my:>,<<d>,k,
    sp,3,<< d.dddddd>,PSI(k));
  for k:=1 step 1 until thetapar do
    write(out,nl,1,<:theta:>,<<d>,mypar+k,PSI(mypar+k),cos(PSI(mypar+k)),
      sin(PSI(mypar+k)));
  write(out,nl,1,<:iterations :>,<< dddddd>,maxiter1,sp,2);
  write(out,<:minimum :>,<< d.ddd'-d>,minval);
              write(out,nl,1,<:steplength :>,ACCP1(1));
end;
ind:=1;
if mix or par>mypar+thetapar then
minval:=if mix then detsum(states,PSI,ny,my,W) else
        hkena(par,PSI,PHI,ACCP,.5,rel,detsum(states,PHI,ny,my,W),maxiter);
write(out,nl,2);
for k:=1 step 1 until mypar do
  write(out,nl,1,<:my:>,<<d>,k,<:(0):>,<< d.dddddd>,PSI(k),
    <:  my:>,<<d>,k,<:(1):>,<< d.dddddd>,PSI(mypar+thetapar+k));
for k:=1 step 1 until thetapar do
  write(out,nl,1,<:theta:>,<<d>,k,<< d.dddddd>,
    PSI(mypar+k),cos(PSI(mypar+k)),sin(PSI(mypar+k)));
if -,mix  then write(out,nl,1,<:iterations:>,<< ddddd>,maxiter,sp,2);
write(out,nl,if mix  then 1 else 0,<:minimum :>,
              << d.dddd'-dd>,minval);
if -,mix  then write(out,<: steplength :>,ACCP(1));
for i:=1 step 1 until channels do
begin
theta(i):=PSI(mypar+i);
stheta(i):=sin(theta(i)); ctheta(i):=cos(theta(i));
end i;
if mix then write(out,nl,2,<:calculation of mixing coefficients only:>);
write(out,nl,3,<:state:>,sp,1);
for k:=1 step 1 until channels do
  write(out,sp,5,<:z:>,<<d>,k);
write(out,sp,5,<:norm:>,sp,6,<:Nn:>);
for k:=1 step 1 until channels do
  write(out,sp,5,<:A:>,<<d>,k);
for j:=1 step 1 until states do
begin
  for i:=1 step 1 until channels do
  myi(i):=PSI(i)-PSI(mypar+thetapar+i)/(ny(i,j)**2)/2;
  for i:=1 step 1 until channels do
  for k:=1 step 1 until channels do
  cm(i,k):=sin(pi*(ny(i,j)+myi(k)));
  comment set up F matrix;
  case channels of begin
  F(1,1):=1;
  for i:=1,2 do
  for k:=1,2 do
  F(i,k):=case (2*k-2)+i of (ctheta(1),-stheta(2),stheta(1),ctheta(2));
  for i:=1 step 1 until 3 do
  for k:=1 step 1 until 3 do
  F(i,k):=case (3*k-3)+i of(
    ctheta(1)*ctheta(2),
    -(stheta(1)*ctheta(3)+ctheta(1)*stheta(2)*stheta(3)),
    stheta(1)*stheta(3)-ctheta(1)*stheta(2)*ctheta(3),
    stheta(1)*ctheta(2),
    ctheta(1)*ctheta(3)-stheta(1)*stheta(2)*stheta(3),
    -(ctheta(1)*stheta(3)+stheta(1)*stheta(2)*ctheta(3)),
    stheta(2),
    ctheta(2)*stheta(3),
    ctheta(2)*ctheta(3));
  F(4,4):=1;
  end case;
  for i:=1 step 1 until channels do
  for k:=1 step 1 until channels do
  begin
  k1:=k mod channels+1;
  i1:=i mod channels+1;
  k2:=(k+1)mod channels+1;
  i2:=(i+1)mod channels+1;
  C(i,k):=(((i+k)mod 2)*2-1)*(
          case channels of(1,cm(i1,k1)*F(i1,k1),
          cm(i1,k1)*F(i1,k1)*
          cm(i2,k2)*F(i2,k2)-
          cm(i1,k2)*F(i1,k2)*
          cm(i2,k1)*F(i2,k1)
          ));
  end i,k;
  for i:=1 step 1 until channels do
  begin
  Na:=0;
  for k:=1 step 1 until channels do Na:=Na+C(i,k)**2;
  Na:=sqrt(Na);
  for k:=1 step 1 until channels do A(i,k):=C(i,k)/Na;
  for a:=1 step 1 until channels do
  begin
    N(i,a):=0;
    for b:=1 step 1 until channels do
    begin
      y:=0;
      for k:=1 step 1 until channels do y:=y+(F(b,k)*cos(pi*(ny(b,j)+myi(k)))*A(i,k));
      N(i,b):=N(i,b)+y**2;
    end b;
  end a;
  y:=0;
  for k:=1 step 1 until channels do y:=y+PSI(mypar+thetapar+k)*A(i,k)**2;
  for k:=1 step 1 until channels do y:=y+ny(k,j)**3*N(i,k);
  Nn(i):=y;
  for b:=1 step 1 until channels do
  begin
    y:=0;
    for k:=1 step 1 until channels do y:=y+F(b,k)*cos(pi*(ny(b,j)+myi(k)));
    zi(i,b):=y*A(i,k)/Nn(i)*ny(b,j)**(3/2);
  end b;
  norm(i):=0;
  for k:=1 step 1 until channels do
  for b:=1 step 1 until channels do
    norm(i):=norm(i)+zi(i,k)*zi(i,b)*(if k=b then 1 else 0);
  end i;
  write(out,nl,1);
  char:=writestate(out,li(1),nn(j),ll(j),JJ(j));
  for i:=1 step 1 until channels do
  begin
  write(out,nl,if i=1 then 0 else 1,sp,if i=1 then 2 else char+2);
  for k:=1 step 1 until channels do write(out,zi(i,k));
  write(out,norm(i),<< dd.ddd>,Nn(i));
  for k:=1 step 1 until channels do write(out,A(i,k));
  end i;
end for states;

if plot then 
begin
<*
stheta2:=sin(theta)**2;
ctheta2:=cos(theta)**2;
plotform(0,12,14);
setmargin(1,13);
writeplot(ff,1,<:z2**2  :>);
plotatsym(S,atno,Z);
writeplot(sp,3,false add ryalf(l1+256),1,<:-series:>);
if Jc>=0 then writeplot(sp,2,<:J =:>,Jc,if Jc mod 2=1 then <:/2:> else <::>);
plotsubform(0,12,0,12,false);
plotscale(0,maxns,0,1.1);
plotframe(0.0,0.0);
for j:=1 step 1 until states do plotpoint(ny(1,j),z2(1,j)**2,2);
plotform(0,12,14);
setmargin(1,13);
writeplot(ff,1,<:Lu-Fano plot  :>);
plotatsym(S,atno,Z);
writeplot(sp,3,false add ryalf(l1+256),1,<:-series:>);
plotsubform(0,12,0,12,false);
plotscale(-.1,1.1,-.1,1.1);
plotframe(0.0,0.0);
for j:=1 step 1 until states do
begin
  x:=-my(1,j); y:=ny(2,j);
  plotpoint(x,y,1);
  if list then write(out,j,x,y);
end;
plotgraph(x,ny1ny2(x),'-2,1,1/100);
*>
end plot;
end block for array
end inner block;
end;
▶EOF◀