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

⟦d90fdd2ec⟧ TextFile

    Length: 6912 (0x1b00)
    Types: TextFile
    Names: »fcc«

Derivation

└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ.  Detaljer om "HC8000" projekt.
    └─⟦0364f57e3⟧ 
        └─⟦this⟧ »fcc« 

TextFile


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◀