DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen GIER Computer

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

See our Wiki for more about RegneCentralen GIER Computer

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦4941c0208⟧ Bits:30000665 linlign, 8-hole paper tape

    Length: 8627 (0x21b3)
    Description: Bits:30000665 linlign
    Types: 8-hole paper tape
    Notes: Gier Text, Has10

GIER Text (HTML)

                                                algol<
begin _____
integer nr,dataomraade1,dataomraade2,orden,ordenet,ordenmet,ordenmto, _______
getkanaler,putkanaler,i,j,k;
real max,min,løsning; ____
real array række1,række2[1:40]; ____ _____
boolean ud,normering; _______
procedure alarm(sted); _________
value sted; _____
integer sted; _______
begin writetext(|< alarm|); write(|ddd|,sted); _____ < > < >
goto slut; ____
end alarm; ___
select(9); nr:=0; start: nr:=nr+1; writechar(72);
if where(case nr of (|<matrixa|,|<matrixb|,|<matrixc|, __ ____ __ < > < > < >
|<matrixd|,|<matrixe|),dataomraade1)<0 then alarm(1); < > < > ____
if get(række1,dataomraade1,1)<0then alarm(2); __ ____
orden:=række1[1]; ordenet:=orden+1; ordenmet:=orden-1; ordenmto:=orden-2; max:=0; min:=105;
if orden_0 then __ < ____
begin writetext(|< orden forkert|); _____ < >
goto slut ____
end; ___
for i:=ordenet step -1 until 2 do ___ ____ _____ __
begin if get(række1,dataomraade1,i)<0 then alarm(3); _____ __ ____
for j:=1 step 1 until ordenet do ___ ____ _____ __
begin if max<abs række1[j] then max:=abs række1[j]; _____ __ ___ ____ ___
if min>abs række1[j] then min:=abs række1[j] __ ___ ____ ___
end ___
end den største og mindste numeriske koefficient eller højreside er fundet ___
oglagret i max og min.Systemets orden er lagret i orden.End- videre staar den første række i systemet i arrayet række1; getkanaler:=ordenet;
if reserve(|<matrix|,orden)|0 then alarm(4); __ < > = ____
if where(|<matrix|,dataomraade2)|0 then alarm(5); __ < > = ____
comment dataomraadet matrix er reserveret med orden kanaler; _______
if max=0 then __ ____
begin writetext(|<uendelig mange løsninger|); _____ < >
goto slut ____
end hvis alle koefficienter og højresider er lig nul; ___
if række1[1]=0 then goto slut; __ ____ ____
normering:=(min=0∧max<107∧max>1)∨(min/max>10-7∧min|0∧max>1); =
if normering then __ ____
for i:=1 step 1 until ordenet do række1[i]:=række1[i]/max; ___ ____ _____ __
if put(række1,dataomraade2,1)<0 then alarm(6); __ ____
putkanaler:=1;
for i:=3 step 1 until ordenet do ___ ____ _____ __
begin if get(række2,dataomraade1,i)<0 then alarm(7); _____ __ ____
løsning:=if normering then række2[1]/max else række2[1]; __ ____ ____
ud:=abs række1[1]_ abs løsning; ___ > ___
if række2[1]|0 then __ = ____
begin for j:=1 step 1 until ordenet do _____ ___ ____ _____ __
begin if normering then række2[j]:=række2[j]/max; _____ __ ____
række2[j]:= if ud then __ ____
-række1[j]/række1[1]⨯løsning+række2[j] else ____
-række2[j]/løsning⨯række1[1]+række1[j]
end ___
end else for j:=1 step 1 until ordenet do ___ ____ ___ ____ _____ __
if normering then række2[j]:=række2[j]/max; __ ____
if put(række2,dataomraade2,i-1)<0 then alarm(8); __ ____
end (normering og) elimination af den første ubekendte; ___
putkanaler:=putkanaler+ordenmet; getkanaler:=getkanaler+ordenmet;
for i:=2 step 1 until ordenmet do ___ ____ _____ __
begin if get(række1,dataomraade2,i)<0 then alarm(9); _____ __ ____
comment nu følger en ombytning af 2 rækker hvis Gier støder _______
paa et nul paa diagonalen under eliminationen;
if abs række1[i]<10-9 then __ ___ ____
begin række2[i]:=0; j:=0; _____
for j:=j+1 while abs række1[j]<10-9 do ___ _____ ___ __
begin if j=orden then _____ __ ____
begin if abs række1[j+1]<10-9 then _____ __ ___ ____
writetext(|<uendelig mange løsninger|) else < > ____
writetext(|<ingen løsning|); < >
goto slut1 ____
end hvis alle koefficienter i den paagældende række er lig nul ___
end; ___
j:=i-1;
for j:=j+1 while abs række2[j]<10-9 do ___ _____ ___ __
begin if get(række2,dataomraade2,j)<0 then alarm(10); _____ __ ____
k:=i-1; for k:=k+1 while abs række2[k]<10-9 do ___ _____ ___ __
begin if k=orden then _____ __ ____
begin if abs række2[k+1]<10-9 then _____ __ ___ ____
writetext(|<uendelig mange løsninger|) else < > ____
writetext(|<ingen løsning|); < >
getkanaler:=getkanaler+j-i;
goto slut1 ____
end hvis alle koefficienter i den paagældende række er lig nul ___
end; ___
if j=orden then __ ____
begin writetext(|<systemet har enten ingen eller|); _____ < >
writetext(|< uendelig mange løsninger|); < >
getkanaler:=getkanaler+j-i;
goto slut1 ____
end hvis en ubekendt er elimineret væk ___
end; ___
getkanaler:=getkanaler+j-i;
if put(række1,dataomraade2,j)<0 then alarm(11); __ ____
putkanaler:=putkanaler+1;
for j:=1 step 1 until ordenet do række1[j]:=række2[j] ___ ____ _____ __
end; ___
for j:=i+1 step 1 until orden do ___ ____ _____ __
begin if get(række2,dataomraade2,j)<0 then alarm(12); _____ __ ____
løsning:=række2[i];
ud:=abs række1[i]_ abs løsning; ___ > ___
if række2[i]|0 then __ = ____
for k:=i step 1 until ordenet do ___ ____ _____ __
række2[k]:=if ud then __ ____
-række1[k]/række1[i]⨯løsning+række2[k] else ____
-række2[k]/løsning⨯række1[i]+række1[k];
if put(række2,dataomraade2,j)<0 then alarm(13); __ ____
end elimination af den iende ubekendte ___
end nu kendes den sidste ubekendte og ved at indsætte bagfra findes ___
løsningen.Men først revideres antallet af overførte kanaler med put og get; j:=1;
for i:=2 step 1 until ordenmto do j:=j⨯i; ___ ____ _____ __
putkanaler:=putkanaler+j; getkanaler:=getkanaler+j+ordenmto;
if abs række2[orden]<10-9 then __ ___ ____
begin if abs række2[ordenet]<10-9 then writetext(|<uendelig mange løsninger|) _____ __ ___ ____ < >
else writetext(|<ingen løsning|); ____ < >
goto slut ____
end; ___
løsning:=række2[ordenet]/række2[orden]; række1[ordenmet]:=(række1[ordenet]-række1[orden]⨯løsning)/række1[ordenmet]; række1[orden]:=løsning;
for i:=ordenmto step -1 until 1 do ___ ____ _____ __
begin if get(række2,dataomraade2,i)<0 then alarm(14); _____ __ ____
løsning:=0;
for j:=orden step -1 until i+1 do ___ ____ _____ __
løsning:=løsning+række2[j]⨯række1[j]; række1[i]:=(række2[ordenet]-løsning)/række2[i];
end løsningen er fundet og er i arrayet række1; ___
if get(række2,dataomraade1,1)<0 then alarm(15); __ ____
getkanaler:=getkanaler+ordenmet;
comment nu følger udskrift; _______
ud:=| -d.ddd ddd ddd10-dd|; < >
writetext(|< fundne løsning exakt løsning afvigelse|); < >
writecr;
for i:=1 step 1 until orden do ___ ____ _____ __
begin writecr; _____
write(ud,række1[i]); write(ud,række2[i+1]);
write(ud,abs (række1[i]-række2[i+1])) ___
end; ___
writecr; writecr; writecr;
writetext(|<kontrol af de fundne løsninger ved indsættelse: |); < >
writecr;
writetext(|< venstre side højre side afvigelse|); < >
writecr;
for i:=2 step 1 until orden+1 do ___ ____ _____ __
begin if get(række2,dataomraade1,i)<0 then alarm(16); _____ __ ____
løsning:=0; writecr;
for j:=1 step 1 until orden do ___ ____ _____ __
løsning:=løsning+række1[j]⨯række2[j]; write(ud,løsning); write(ud,række2[orden+1]);
write(ud,abs(løsning-række2[orden+1])); ___
end; ___
getkanaler:=getkanaler+orden;
if true then i:=i else __ ____ ____ ____
begin _____
slut1: j:=1; i:=i-2;
for k:=2 step 1 until i do j:=j⨯k; ___ ____ _____ __
getkanaler:=getkanaler+j+1
end revision af getkanaler hvis Gier finder enten ingen eller ___
uendelig mange løsninger; slut: writecr; writecr; writecr;
writetext(|<antal overførte kanaler med get: |); < >
writeinteger(|ddd ddd|,getkanaler); < >
writecr;
writetext(|<antal overførte kanaler med put: |); < >
writeinteger(|ddd ddd|,putkanaler); < >
cancel(|<matrix|); < >
if nr<5 then goto start; __ ____ ____
end ___
t<[stop]