|
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: »fcc«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »fcc«
begin integer slut; integer antal,rumdim,rkkydim,periferspin,randomstart; antal:=100; 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◀