|
|
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: 6912 (0x1b00)
Types: TextFile
Names: »fcc1«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt.
└─⟦0364f57e3⟧
└─⟦this⟧ »fcc1«
begin
integer slut;
integer antal,rumdim,rkkydim,periferspin,randomstart;
antal:=10;
rumdim:=3;
rkkydim:=3;
periferspin:=0;
begin
real reelkonc;
integer faktor;
integer lillelang,lillefaktor;
real gitter;
real perikonc;
integer minantal;
integer jobnr;
integer i,j,k,l,n;
integer counter;
real sum,sum2;
real tal,tal1,tal2,tal3;
real konc,lang,veksel;
integer expo,mant,tilf;
real lillefaktor2;
real afstand,sqrtaf;
real periferfaktor;
real x,y,z;
for counter:=1 step 1 until 54 do
begin
gitter:=24.37103432;
minantal:=antal;
periferfaktor:=1.0;
begin
integer array tail(1:10);
zone z1,z2(128,1,stderror);
lookuptail(<:rkkyfil:>,tail);
tail(1):=tail(1)+10;
createentry(<:rkkyfil1:>,tail);
scopeuser(<:rkkyfil1:>);
open(z1,4,<:rkkyfil:>,0);
open(z2,4,<:rkkyfil1:>,0);
tal:=0.0;
tal1:=0.0;
tal2:=0.0;
i:=0;
rep:
tal2:=tal1;
tal1:=tal;
read(z1,tal);
if tal<>987654321 then
begin
i:=i+1;
if i=1 then write(z2,<<dddd>,tal,<: :>);
if i>1 then write(z2,<<+d.ddddddddddd'+zdd>,tal,<: :>);
if i=3 then
begin
write(z2,<:<10>:>);
i:=0;
end;
goto rep;
end;
randomstart:=entier(tal2);
tilf:=randomstart;
for expo:=-6,-5,-4,-3,-2,-1 do
begin
for mant:=1,2,3,4,5,6,7,8,9 do
begin
konc:=mant*(10**expo);
if konc-konc/1000>tal1 then goto nykonc;
end;
end;
slut:=1;
goto programslut;
nykonc:
lang:=1 + entier((minantal/(4*konc))**(1/3));
stor:
antal:=antal+1;
reelkonc:=antal/(4*lang**3);
if reelkonc<konc then goto stor;
antal:=antal-1;
reelkonc:=antal/(4*lang**3);
begin
integer array p(0:antal,1:rumdim);
real array d(1:antal+6,1:2);
for i:=0 step 1 until antal do
begin
for j:=1 step 1 until rumdim do
p(i,j):=0;
end;
for i:=1 step 1 until antal+6 do
begin
for j:=1,2 do
d(i,j):=0.0;
end;
faktor:=2*lang ;
for n:=1 step 1 until antal do
begin
nytx:
p(n,1):=entier(faktor*random(tilf));
p(n,2):=entier(faktor*random(tilf));
p(n,3):=entier(faktor*random(tilf));
if (p(n,1)+p(n,2)+p(n,3)) mod 2 = 1 then goto nytx;
if n>1 then
begin
for k:=1 step 1 until n-1 do
begin
if p(n,1)=p(k,1) then
begin
if p(n,2)=p(k,2) then
begin
if p(n,3)=p(k,3) then goto nytx;
end;
end;
end;
end;
end;
veksel:=0.0;
for i:=1 step 1 until antal-1 do
begin
for j:=i+1 step 1 until antal do
begin
x:=p(i,1)-p(j,1);
x:=x*x;
y:=p(i,2)-p(j,2);
y:=y*y;
z:=p(i,3)-p(j,3);
z:=z*z;
afstand:=gitter*(x+y+z);
sqrtaf:=sqrt(afstand);
veksel:=(sqrtaf*cos(sqrtaf)-sin(sqrtaf))/(afstand*afstand);
d(i,1):=d(i,1)+veksel;
d(j,1):=d(j,1)+veksel;
d(i,2):=d(i,2)+veksel*veksel;
d(j,2):=d(j,2)+veksel*veksel;
end;
end;
periferspin:=entier(konc*4*lang**3*((1+2*periferfaktor)**3-1));
lillelang:=1+entier(periferfaktor*lang);
stor1:
periferspin:=periferspin+1;
perikonc:=(periferspin+antal)/(4*((lang+2*lillelang))**3);
if perikonc<konc then goto stor1;
periferspin:=periferspin-1;
lillefaktor:=2*lillelang;
lillefaktor2:=2*lillefaktor;
for n:=1 step 1 until periferspin do
begin
nytx1:
p(0,1):=-(1+entier(lillefaktor2*random(tilf)));
if p(0,1)<-lillefaktor then p(0,1):=p(0,1)+faktor+lillefaktor2;
p(0,2):=-(1+entier(lillefaktor2*random(tilf)));
if p(0,2)<-lillefaktor then p(0,2):=p(0,2)+faktor+lillefaktor2;
p(0,3):=-(1+entier(lillefaktor2*random(tilf)));
if p(0,3)<-lillefaktor then p(0,3):=p(0,3)+faktor+lillefaktor2;
if (p(0,1)+p(0,2)+p(0,3)) mod 2 = 1 then goto nytx1;
for i:=1 step 1 until antal do
begin
x:=p(i,1)-p(0,1);
x:=x*x;
y:=p(i,2)-p(0,2);
y:=y*y;
z:=p(i,3)-p(0,3);
z:=z*z;
afstand:=gitter*(x+y+z);
sqrtaf:=sqrt(afstand);
veksel:=(sqrtaf*cos(sqrtaf)-sin(sqrtaf))/(afstand*afstand);
d(i,1):=d(i,1)+veksel;
d(i,2):=d(i,2)+veksel*veksel;
end;
end;
sum:=0.0;
sum2:=0.0;
for n:=1 step 1 until antal do
begin
sum:=sum+d(n,1);
sum2:=sum2+sqrt(d(n,2));
end;
d(antal+1,1):=sum/antal;
d(antal+1,2):=sum2/antal;
d(antal+2,1):=antal;
d(antal+2,2):=periferspin;
d(antal+3,1):=rkkydim;
d(antal+3,2):=rumdim;
d(antal+4,1):=lang;
d(antal+4,2):=lillelang;
d(antal+5,1):=randomstart;
d(antal+5,2):=reelkonc;
d(antal+6,1):=tilf;
d(antal+6,2):=konc;
for n:=1 step 1 until antal+6 do
begin
if n <= antal then write(z2,<<dddd>,n,<: :>) else write(z2,<<dddd>,1000+n-antal ,<: :>);
for i:=1,2 do
begin
write(z2,<<+d.ddddddddddd'+zdd>,d(n,i),<: :>);
end;
write(z2,<:<10>:>);
end;
end;
programslut:
write(z2,<:<10>:>,<:<10>:>);
write(z2,987654321,"em",3);
close(z1,true);
close(z2,true);
removeentry(<:rkkyfil:>);
renameentry(<:rkkyfil1:>,<:rkkyfil:>);
write(out,<:KONCENTRATION=:>,konc);
end;
end;
end;
end;
end;
end;
end;
▶EOF◀