1
0
mirror of https://github.com/retro-software/B5500-software.git synced 2026-03-02 17:44:40 +00:00
Files
Paul Kimpel 2c72f7fd1d Commit CUBE Library version 13 of February 1972.
1. Commit library tape images, directories, and extracted text files.
2. Commit additional utilities under Unisys-Emode-Tools.
2018-05-27 11:24:23 -07:00

1028 lines
81 KiB
Plaintext

BEGIN 00001000
% BMD03S ---- BIOLOGICAL ASSAY: PROBIT ANALYSIS (ALGOL) 00001100
FILE IN CARD 0(2,10); 00001200
FILE OUT PUNCH 0(2,10); 00001300
FILE OUT PRINT 4(2,15); 00001400
FILE TAPE1 2(2,15); 00001600
FILE TAPE2 2(2,15); 00001700
FILE TAPE3 2(2,15); 00001800
FILE TAPE4 2(2,15); 00001900
FILE TAPE5 0(2,10); 00002000
FILE TAPE7 2(2,15); 00002200
FILE TAPE8 2(2,15); 00002300
FILE TAPE9 2(2,15); 00002400
FILE TAPE10 2(2,15); 00002500
FILE TAPE11 2(2,15); 00002600
FILE TAPE13 2(2,15); 00002800
FILE TAPE14 2(2,15); 00002900
FILE TAPE15 2(2,15); 00003000
FILE TAPE16 2(2,15); 00003100
SWITCH FILE FILESW:=XXXXXX,TAPE1,TAPE2,TAPE3,TAPE4,TAPE5,TAPE6,TAPE7, 00003200
LABEL FINIS; 00003400
REAL ARRAY DATA[0:63,0:511]; COMMENT USED WITH DATA STATEMENTS ONLY;00003500
REAL Q,XPR; INTEGER K; 00003600
DEFINE B=BOOLEAN#; 00003700
FORMAT F(//////"STOP / PAUSE NO. ",I5), OKTL(256O); 00003800
INT:=SIGN(ARG1)|ENTIER(ABS(ARG1)); 00004000
REAL PROCEDURE TANH(ARG1); VALUE ARG1; REAL ARG1; 00004100
TANH:=((Q:=EXP(ARG1|2))-1)/(Q+1); 00004200
REAL PROCEDURE MAX(ARG1,ARG2); VALUE ARG1,ARG2; REAL ARG1,ARG2; 00004300
MAX:=IF ARG1 GEQ ARG2 THEN ARG1 ELSE ARG2; 00004400
MIN:=IF ARG1 LEQ ARG2 THEN ARG1 ELSE ARG2; 00004600
REAL PROCEDURE DIM(ARG1,ARG2); VALUE ARG1,ARG2; REAL ARG1,ARG2; 00004700
DIM:=MAX(ARG1-ARG2,0); 00004800
REAL PROCEDURE TSIGN(ARG1,ARG2); VALUE ARG1,ARG2; REAL ARG1,ARG2; 00004900
TSIGN:=SIGN(IF ARG2=0 THEN 1 ELSE ARG2)|ABS(ARG1); 00005000
LOG:=LN(ARG1)/2.30258509298; 00005200
PROCEDURE ERROR(ARG1); VALUE ARG1; REAL ARG1; 00005300
BEGIN WRITE(PRINT,F,ARG1); GO TO FINIS END; 00005400
REAL ARRAY R,SN,P,Z,X,YY,Y[0:1001],A[0:3],DC[0:9],FQQQQQQ[0:3], 00005500
DOSE,SMP,SMY[0:1001],CONST[0:64]; 00005600
REAL ARRAY CD,DV,D[0:10],DC0,CD0[0:9]; 00005800
INTEGER ARRAY ICODE[0:64]; 00005900
INTEGER M,IBG,KQQQQQQ; 00006000
REAL CODE,CG; 00006100
INTEGER IPR; 00006200
FORMAT FMT; 00006400
BEGIN 00006500
STREAM PROCEDURE FORM(FT,CODE); 00006600
BEGIN 00006700
DI~FT; 00006800
DS~15 WDS; 00007000
END; 00007100
LABEL RETURN,ERROR; 00007200
FORMAT F1(72A1); 00007300
ARRAY CODE[0:14]; 00007400
INTEGER I,K,REP,WIDTH,D,N; 00007600
INTEGER TENS,ONES,WT,WO,DEC0,DEC1,NN; 00007700
DEFINE S=CODE[K].[1:1]#, 00007800
C=CODE[K].[2:4]#, 00007900
W=CODE[K].[6:6]#, 00008000
D1=CODE[K].[20:4]#, 00008200
W2=CODE[K].[24:4]#, 00008300
W1=CODE[K].[28:4]#, 00008400
SKIP=CODE[K].[32:6]#, 00008500
REPEAT=CODE[K].[38:10]#, 00008600
F[I]="6" OR F[I]="7" OR F[I]="8" OR F[I]="9" OR F[I]="0" #, 00008800
CHAR=F[I]="A" OR F[I]="I" OR F[I]="X" OR F[I]="E" OR F[I]="F" 00008900
OR F[I] ="R" #; INTEGER TR,L1,L2,L3,L4; 00009000
BOOLEAN TRUTH; 00009100
DEFINE CHECK= BEGIN L1~L1+1; 00009200
L3~L3+1; 00009400
L4~L4+1; 00009500
END # ; 00009600
BOOLEAN FIRST; 00009700
INTEGER R1,R2,R3,R4; 00009800
FIRST~TRUE; 00010000
K~0; 00010100
TRUTH~FALSE; 00010200
L1~L2~L3~L4~TR~0; 00010300
FOR I~0 STEP 1 UNTIL 71 DO 00010400
IF F[I]="(" THEN 00010600
BEGIN 00010700
S~1; SKIP~1;CODE[K].[6:26]~0; 00010800
C~4; 00010900
NN~I; 00011000
ELSE 00011200
BEGIN 00011300
I~I-1; 00011400
IF NUMBER 00011500
THEN 00011600
I~I-1; 00011800
IF NUMBER 00011900
THEN BEGIN 00012000
TENS~F[I]; 00012100
ONES~F[I+1]; 00012200
ELSE BEGIN 00012400
TENS~0; 00012500
ONES~F[I+1]; 00012600
END; 00012700
REP~10|TENS+ONES; 00012800
END 00013000
ELSE REPEAT~0; 00013100
TRUTH~TRUE; 00013200
TR~TR+1; 00013300
IF TR =1 THEN BEGIN L1~0;R1~REP END ; 00013400
IF TR =3 THEN BEGIN L3~0;R3~REP END ; 00013600
IF TR =4 THEN BEGIN L4~0;R4~REP END ; 00013700
END; 00013800
I~NN; 00013900
K~K+1; 00014000
FIRST~FALSE; 00014200
GO TO NEXT; 00014300
END; 00014400
IF F[I]="/" THEN 00014500
BEGIN 00014600
CODE[K].[6:26]~0; REPEAT~0; 00014800
IF TRUTH THEN CHECK; 00014900
K~K+1; GO TO NEXT; 00015000
END; 00015100
IF F[I]="," THEN GO TO NEXT; 00015200
IF F[I]=")" THEN 00015400
BEGIN 00015500
LABEL DSK; 00015600
IF NOT TRUTH THEN 00015700
BEGIN 00015800
CODE[K].[6:26]~0; 00016000
REPEAT~1; 00016100
K~K+1; 00016200
END; 00016300
IF TR = 1 THEN IF R1 !0 THEN GO TO DSK; 00016400
IF TR=3 THEN IF R3!0 THEN GO TO DSK; 00016600
IF TR=4 THEN IF R4!0 THEN GO TO DSK; 00016700
S~1; SKIP~0; C~6; 00016800
CODE[K].[6:26]~0; 00016900
REPEAT~1; 00017000
IF TRUTH THEN CHECK; 00017200
DSK: 00017300
S~1;C~0;SKIP~0; 00017400
CODE[K].[6:26]~0; 00017500
IF TRUTH THEN BEGIN IF TR=1 THEN REP~L1; 00017600
IF TR=3 THEN REP~L3; 00017800
IF TR=4 THEN REP~L4; 00017900
END 00018000
ELSE REP~K; 00018100
TR~TR-1; 00018200
REPEAT~REP; 00018400
K~K+1; 00018500
IF TRUTH THEN CHECK; 00018600
GO TO NEXT 00018700
END; 00018800
BEGIN 00019000
NN~I; 00019100
I~I-1; 00019200
IF NUMBER THEN 00019300
BEGIN 00019400
I~I-1; 00019600
TENS~0; 00019700
IF I<0 THEN GO TO IMIN; 00019800
IF NUMBER THEN 00019900
BEGIN 00020000
ONES~F[I+1]; 00020200
END 00020300
; 00020400
IMIN:BEGIN 00020500
ONES~F[I+1]; 00020600
END; 00020800
I~I+1; 00020900
END ELSE REP~1; 00021000
IF REP=0 THEN REP~1; 00021100
I~I+2; 00021200
BEGIN 00021400
I~I+1; 00021500
IF NUMBER THEN 00021600
BEGIN 00021700
WT~F[I-1]; 00021800
WIDTH~10|WT+WO; 00022000
END 00022100
ELSE 00022200
BEGIN 00022300
WO~F[I-1]; 00022400
I~I-1; 00022600
END 00022700
END 00022800
ELSE 00022900
GO TO ERROR; 00023000
IF F[I]="." THEN 00023200
BEGIN 00023300
I~I+1; 00023400
IF NUMBER THEN 00023500
BEGIN 00023600
IF NUMBER THEN 00023800
BEGIN 00023900
DEC0~F[I-1]; 00024000
DEC1~F[I]; 00024100
D~10|DEC0+DEC1; 00024200
ELSE 00024400
BEGIN 00024500
DEC0~0; 00024600
DEC1~F[I-1]; 00024700
D~DEC1; 00024800
END 00025000
ELSE GO TO ERROR; 00025100
END; 00025200
I~NN; 00025300
IF F[I]="X" THEN 00025400
REPEAT~REP; 00025600
WO~WIDTH MOD 64; 00025700
W~WO; 00025800
SKIP~WO; 00025900
W1~WIDTH DIV 64; 00026000
D1~0; 00026200
D2~0; 00026300
S~0; 00026400
C~2; 00026500
K~K+1; 00026600
GO TO NEXT; 00026800
END; 00026900
IF F[I]="A" THEN 00027000
BEGIN 00027100
S~0; 00027200
REPEAT~REP; 00027400
W2~0; 00027500
D1~0; 00027600
D2~0; 00027700
W~WIDTH; 00027800
BEGIN 00028000
W1~WIDTH; 00028100
SKIP~0; 00028200
END 00028300
ELSE 00028400
W1~6; 00028600
SKIP~WIDTH-6; 00028700
END; 00028800
K~K+1; 00028900
IF TRUTH THEN CHECK; 00029000
END; 00029200
IF F[I]="I" THEN 00029300
BEGIN 00029400
S~0; 00029500
C~6; 00029600
W~WIDTH; 00029800
D1~0; 00029900
D2~0; 00030000
IF WIDTH>16 THEN SKIP~WIDTH-16 00030100
ELSE SKIP~0; 00030200
BEGIN 00030400
W1~WIDTH; 00030500
W2~0; 00030600
END 00030700
ELSE 00030800
W1~8; 00031000
W2~WIDTH-SKIP-8; 00031100
END; 00031200
K~K+1; 00031300
IF TRUTH THEN CHECK; 00031400
END; 00031600
IF F[I]="F" OR F[I]="E" OR F[I] = "R" THEN 00031700
BEGIN 00031800
S~0; 00031900
C~15; 00032000
W~WIDTH; 00032200
IF D>16 THEN GO TO ERROR; 00032300
IF D{8 THEN 00032400
BEGIN 00032500
D1~D; 00032600
END 00032800
ELSE 00032900
BEGIN 00033000
D1~8; 00033100
D2~D-8; 00033200
IF (N~WIDTH-D-1)>16 THEN SKIP~WIDTH-D-17 00033400
ELSE SKIP~0; 00033500
IF N>8 THEN 00033600
BEGIN 00033700
W1~8; 00033800
END 00034000
ELSE 00034100
BEGIN 00034200
W1~N; 00034300
W2~0; 00034400
K~K+1; 00034600
IF TRUTH THEN CHECK; 00034700
GO TO NEXT; 00034800
END; 00034900
END; 00035000
FORM(FMT,CODE[0]); 00035200
GO TO RETURN; 00035300
ERROR: 00035400
GO TO FINIS; 00035500
RETURN: END OF FIXFORM; 00035600
VALUE M,C; 00035800
INTEGER M; 00035900
REAL C; 00036000
REAL ARRAY X[0],YY[0],Z[0],P[0],R[0],SN[0],FQQQQQQ[0],D[0]; 00036100
BEGIN 00036200
OWN REAL CQ,PCC,PP,QQQQQQQ,PQ,XLP,XLPP,PA,PB,PC,PAA,PAB,PBB,PAC, 00036400
PBC; 00036500
COMMENT DERIV2 SUBROUTINE DERIV2 FOR BMD03S 00036600
DERIVATIVES WITH RESPECT TO A AND B.; 00036700
CQ:=1-C; 00036800
DO BEGIN 00037000
D[I]:=0; 00037100
END UNTIL (I:=(I+1)) GTR 4; 00037200
FQQQQQQ[1]:=0; 00037300
FQQQQQQ[2]:=0; 00037400
I:=1; 00037600
DO BEGIN 00037700
PP:=C+P[I]|CQ; 00037800
QQQQQQQ:=1-PP; 00037900
PQ:=PP|QQQQQQQ; 00038000
XLPP:=-R[I]/PP*2-(SN[I]-R[I])/QQQQQQQ*2; 00038200
PA:=CQ|Z[I]; 00038300
PB:=PA|X[I]; 00038400
PC:=1-P[I]; 00038500
PAA:=-PA|YY[I]; 00038600
PBB:=PAB|X[I]; 00038800
PAC:=-Z[I]; 00038900
PBC:=PAC|X[I]; 00039000
FQQQQQQ[1]:=FQQQQQQ[1]+XLP|PA; 00039100
FQQQQQQ[2]:=FQQQQQQ[2]+XLP|PB; 00039200
D[2]:=D[2]+XLPP|PA|PB+XLP|PAB; 00039400
D[4]:=D[4]+XLPP|PB|PB+XLP|PBB; 00039500
END UNTIL (I:=(I+1)) GTR M; 00039600
D[3]:=D[2]; 00039700
END; 00039800
VALUE M,C; 00040000
INTEGER M; 00040100
REAL C; 00040200
REAL ARRAY X[0],YY[0],Z[0],P[0],R[0],SN[0],FQQQQQQ[0],D[0]; 00040300
BEGIN 00040400
OWN REAL CQ,PCC,PP,QQQQQQQ,PQ,XLP,XLPP,PA,PB,PC,PAA,PAB,PBB,PAC, 00040600
PBC; 00040700
LABEL L13,L0; 00040800
COMMENT DERIV3 SUBROUTINE DERIV3 FOR BMD03S 00040900
DERIVATIVES WITH RESPECT TO A, B, AND C.; 00041000
I:=1; 00041200
DO BEGIN 00041300
FQQQQQQ[I]:=0; 00041400
D[I]:=0; 00041500
END UNTIL (I:=(I+1)) GTR 3; 00041600
DO BEGIN 00041800
D[I]:=0; 00041900
END UNTIL (I:=(I+1)) GTR 9; 00042000
PCC:=0; 00042100
M1:=M; 00042200
M1:=M+1; 00042400
L13: I:=1; 00042500
DO BEGIN 00042600
PP:=C+P[I]|CQ; 00042700
QQQQQQQ:=1-PP; 00042800
XLP:=(R[I]-PP|SN[I])/PQ; 00043000
XLPP:=-R[I]/PP*2-(SN[I]-R[I])/QQQQQQQ*2; 00043100
PA:=CQ|Z[I]; 00043200
PB:=PA|X[I]; 00043300
PC:=1-P[I]; 00043400
PAB:=-PB|YY[I]; 00043600
PBB:=PAB|X[I]; 00043700
PAC:=-Z[I]; 00043800
PBC:=PAC|X[I]; 00043900
FQQQQQQ[1]:=FQQQQQQ[1]+XLP|PA; 00044000
FQQQQQQ[3]:=FQQQQQQ[3]+XLP|PC; 00044200
D[1]:=D[1]+XLPP|PA|PA+XLP|PAA; 00044300
D[2]:=D[2]+XLPP|PA|PB+XLP|PAB; 00044400
D[5]:=D[5]+XLPP|PB|PB+XLP|PBB; 00044500
D[3]:=D[3]+XLPP|PA|PC+XLP|PAC; 00044600
D[9]:=D[9]+XLPP|PC|PC+XLP|PCC; 00044800
END UNTIL (I:=(I+1)) GTR M1; 00044900
D[4]:=D[2]; 00045000
D[8]:=D[6]; 00045100
D[7]:=D[3]; 00045200
PROCEDURE PHI2(X,PHI,PP); 00045400
VALUE X; 00045500
REAL X,PHI,PP; 00045600
BEGIN 00045700
OWN REAL SQ2,Y,YY,P1,ET,PH; 00045800
COMMENT PHI2 SUBROUTINE TO COMPUTE PHI(X) AND PHIPRIME(X).; 00046000
SQ2:=1.414213562; 00046100
Y:=ABS(X)/SQ2; 00046200
YY:=X|X/2; 00046300
PP:=EXP(-YY)|.39894228; 00046400
ET:=1/(1+.3275911|Y); 00046600
PH:=1-((((.94064607|ET-1.287822453)|ET+1.25969513)|ET-.252128668)| 00046700
ET+.225836846)|ET|P1; 00046800
IF (XPR:=(X)) GTR 0 THEN GO TO L3 ELSE IF XPR=0 THEN GO TO L4; 00046900
PH:=-PH; 00047000
GO TO L0; 00047200
L4: PHI:=0; 00047300
L0: END; 00047400
PROCEDURE DIFF; 00047500
BEGIN 00047600
COMMENT THE FOLLOWING PROCEDURES ARE USED: PHI2,DERIV2,DERIV3; 00047800
LABEL L300,L2050,L0; 00047900
COMMENT DIFF SUBROUTINE DIFF FOR BMD03S 00048000
DIFFERENTIAL COEFICIENTS AND FUNCTION AUXILIARY SUBROUTINE FOR NEWT 00048100
PREDICT PROBIT YY AND PROBABILITY P.; 00048200
DO BEGIN 00048400
Y[I]:=A[1]+A[2]|X[I]; 00048500
YY[I]:=Y[I]-5; 00048600
PHI2(YY[I],P[I],Z[I]); 00048700
END UNTIL (I:=(I+1)) GTR M; 00048800
P[M1]:=0; 00049000
X[M1]:=0; 00049100
IF CG LSS 0 THEN GO TO L300 ELSE GO TO L2050; 00049200
COMMENT C CONSTANT; 00049300
L2050: DERIV2(X,YY,Z,P,R,SN,M,A[3],FQQQQQQ,DC); 00049400
COMMENT OPTIMIZE C; 00049600
L300: DERIV3(X,YY,Z,P,R,SN,M,A[3],FQQQQQQ,DC); 00049700
L0: END; 00049800
PROCEDURE INVERT(G,TEMP,NM,N,DET,ER); 00049900
VALUE N,NM; 00050000
REAL DET,ER,NM; 00050200
REAL ARRAY G[0],TEMP[0]; 00050300
BEGIN 00050400
OWN REAL ARRAY R[0:1001]; 00050500
OWN INTEGER KQQQQQQ,I,J; 00050600
LABEL L10,L20,L30,L0,L80,L99; 00050800
SWITCH SWGO1:=L10,L20,L30; 00050900
COMMENT INVERT MATRIX OF DIMENSION 2 OR 3.; 00051000
ER:=0; 00051100
KQQQQQQ:=N; 00051200
L10: R[1]:=1/G[1]; 00051400
GO TO L0; 00051500
L20: DET:=G[1]|G[4]-G[3]|G[2]; 00051600
IF DET NEQ 0 THEN GO TO L80; 00051700
L99: ER:=1; 00051800
L80: R[1]:=G[4]/DET; 00052000
R[2]:=-G[2]/DET; 00052100
R[3]:=-G[3]/DET; 00052200
R[4]:=G[1]/DET; 00052300
GO TO L0; 00052400
R[4]:=-(G[4]|G[9]-G[6]|G[7]); 00052600
R[7]:=(G[4]|G[8]-G[5]|G[7]); 00052700
R[2]:=-(G[2]|G[9]-G[3]|G[8]); 00052800
R[5]:=(G[1]|G[9]-G[3]|G[7]); 00052900
R[8]:=-(G[1]|G[8]-G[2]|G[7]); 00053000
R[6]:=-(G[1]|G[6]-G[3]|G[4]); 00053200
R[9]:=(G[1]|G[5]-G[2]|G[4]); 00053300
DET:=R[1]|G[1]+R[4]|G[2]+R[7]|G[3]; 00053400
IF DET=0 THEN GO TO L99; 00053500
I:=1; 00053600
R[I]:=R[I]/DET END UNTIL (I:=(I+1)) GTR 9; 00053800
GO TO L0; 00053900
L0: 00054000
J ~ 1; 00054100
FOR I ~ NM STEP 1 UNTIL NM + 8 DO 00054200
TEMP[I] ~ R[J]; 00054400
J ~ J + 1; 00054500
END; 00054600
END OF INVERT; 00054700
PROCEDURE LINREG(X,Y,M,A,B); 00054800
INTEGER M; 00055000
REAL A,B; 00055100
REAL ARRAY X[0],Y[0]; 00055200
BEGIN 00055300
OWN INTEGER I; 00055400
LABEL L0; 00055600
COMMENT LINREG SUBROUTINE LINREG FOR BMD03S 00055700
REGRESS Y AS A FUNCTION OF X. Y=AX + B.; 00055800
XM:=M; 00055900
SX:=0; 00056000
SXX:=0; 00056200
SXY:=0; 00056300
I:=1; 00056400
DO BEGIN 00056500
SXY:=SXY+X[I]|Y[I]; 00056600
SY:=SY+Y[I]; 00056800
SXX:=SXX+X[I]*2; 00056900
END UNTIL (I:=(I+1)) GTR M; 00057000
A:=(XM|SXY-SX|SY)/(XM|SXX-SX*2); 00057100
B:=(SY-A|SX)/XM; 00057200
PROCEDURE MNVAR(X,N,XB,XV); 00057400
VALUE N; 00057500
INTEGER N; 00057600
REAL XB,XV; 00057700
REAL ARRAY X[0]; 00057800
OWN INTEGER I; 00058000
OWN REAL XN1,XN; 00058100
COMMENT MNVAR SUBROUTINE TO COMPUTE MEAN AND VARIANCE; 00058200
XN1:=N-1; 00058300
XN:=N; 00058400
XB:=0; 00058600
I:=1; 00058700
DO BEGIN 00058800
XB:=XB+X[I]; 00058900
END UNTIL (I:=(I+1)) GTR N; 00059000
I:=1; 00059200
DO BEGIN 00059300
XV:=XV+(X[I]-XB)*2; 00059400
END UNTIL (I:=(I+1)) GTR N; 00059500
XV:=XV/XN1; 00059600
PROCEDURE NEWT(DIFF,D,FQQQQQQ,N,NI,TEMP,EPS,ER,NPR,A); 00059800
VALUE N,EPS,NPR; 00059900
INTEGER N,NI,NPR; 00060000
REAL EPS,ER; 00060100
REAL ARRAY D[0],FQQQQQQ[0],TEMP[0],A[0]; 00060200
BEGIN 00060400
OWN INTEGER DX1; 00060500
OWN INTEGER NM,NF,NN,IPR,KQQQQQQ,I,IJ,J,JL,JU; 00060600
OWN REAL DET,DEL; 00060700
COMMENT THE FOLLOWING PROCEDURES ARE USED: INVERT; 00060800
FL805(" ",7R16.6), 00061000
FL801(" APPROXIMATION TO SOLUTION."), 00061100
FL802(" DIFFERENTIAL COEFFICIENT MATRIX."), 00061200
FL806(/" CRITERION FOR CONVERGENCE IS NOT MET AFTER",I5," ITERATIONS"), 00061300
FL807(/ 00061400
" BE CONTINUED."); 00061600
LIST LIST1(KQQQQQQ); 00061700
LIST LIST2(FOR DX1:=1 STEP 1 UNTIL N DO FQQQQQQ[DX1]); 00061800
LIST LIST3(FOR DX1:=1 STEP 1 UNTIL N DO A[DX1]); 00061900
LIST LIST4(FOR DX1:=JL STEP 1 UNTIL JU DO D[DX1]); 00062000
LABEL L8,L99,L18,L0; 00062200
COMMENT NEWT NON-LINEAR SYSTEM SOLVER; 00062300
ER:=0; 00062400
NM:=N+1; 00062500
NF:=N; 00062600
IPR:=NI+1; 00062800
IF NPR LEQ 0 THEN GO TO L8; 00062900
IPR:=1; 00063000
L8: KQQQQQQ:=1; 00063100
DO BEGIN 00063200
INVERT(D,TEMP,NM,NF,DET,TEMP[20]); 00063400
DEL:=0; 00063500
IF DET=0 THEN GO TO L99; 00063600
I:=1; 00063700
DO BEGIN 00063800
IJ:=I; 00064000
J:=1; 00064100
DO BEGIN 00064200
IJ:=IJ+N; 00064300
TEMP[I]:=TEMP[I]-FQQQQQQ[J]|TEMP[IJ]; 00064400
DEL:=DEL+TEMP[I]*2; 00064600
A[I]:=A[I]+TEMP[I]; 00064700
END UNTIL (I:=(I+1)) GTR N; 00064800
IF KQQQQQQ NEQ IPR THEN GO TO L18; 00064900
IPR:=IPR+NPR; 00065000
WRITE(TAPE6,FL805,LIST2); 00065200
WRITE(TAPE6,FL801); 00065300
WRITE(TAPE6,FL805,LIST3); 00065400
WRITE(TAPE6,FL802); 00065500
J:=1; 00065600
JL:=N|(J-1)+1; 00065800
JU:=JL+N-1; 00065900
WRITE(TAPE6,FL805,LIST4); 00066000
END UNTIL (J:=(J+1)) GTR N; 00066100
L18: IF DEL LEQ EPS THEN GO TO L0; 00066200
WRITE(TAPE6,FL806,LIST5); 00066400
ER:=1; 00066500
GO TO L0; 00066600
L99: WRITE(TAPE6,FL807); 00066700
ER:=-1; 00066800
GO TO L0; 00067000
L0: END; 00067100
REAL PROCEDURE PHINV(P); 00067200
VALUE P; 00067300
REAL P; 00067400
OWN REAL QQQQQQQ,T,E,X; 00067600
LABEL L10,L12,L0,L13,L122; 00067700
COMMENT PHINV SUBROUTINE USINGS HASTINGS APPROXIMATION.; 00067800
IF (XPR:=(P-.5)) GTR 0 THEN GO TO L12 ELSE IF XPR LSS 0 THEN GO TO 00067900
L10; 00068000
GO TO L0; 00068200
L12: QQQQQQQ:=1-P; 00068300
T:=-1; 00068400
GO TO L13; 00068500
L10: QQQQQQQ:=P; 00068600
L13: IF QQQQQQQ GTR 0 THEN GO TO L122; 00068800
PHINV:=-T|999; 00068900
GO TO L0; 00069000
L122: E:=SQRT(LN(1/QQQQQQQ*2)); 00069100
X:=-E+((.010328|E+.802853)|E+2.515517)/(((.001308|E+.189269)|E+1.432788)00069200
PHINV:=T|X; 00069400
L0: END; 00069500
PROCEDURE TPWD(NT1,NT2); 00069600
INTEGER NT1,NT2; 00069700
BEGIN 00069800
LABEL L40,L12,L19,L24,L0; 00070000
COMMENT TPWD SUBROUTINE TPWD FOR BMD03S VERSION OF SEPT. 00070100
26, 1963; 00070200
IF (XPR:=(NT1)) GTR 0 THEN GO TO L12 ELSE IF XPR LSS 0 THEN GO TO 00070300
L40; 00070400
L12: IF NT1=NT2 THEN GO TO L19; 00070600
IF NT2 GEQ 5 THEN GO TO L19; 00070700
REWIND(FILESW[NT2]); 00070800
L19: IF NT1=5 THEN GO TO L24; 00070900
IF NT1=6 THEN GO TO L40; 00071000
L24: NT2:=NT1; 00071200
GO TO L0; 00071300
L40: WRITE(TAPE6,FL49); 00071400
GO TO FINIS; 00071500
L0: END; 00071600
VALUE M,KQQQQQQ,IK; 00071800
INTEGER M,KQQQQQQ,IERROR,IK; 00071900
INTEGER ARRAY ICODEE[0]; 00072000
REAL ARRAY DOSE[0],CONSTT[0],X[0]; 00072100
BEGIN 00072200
OWN REAL ARRAY CONST[0:64]; 00072400
OWN INTEGER J2,JK,JUMP,J; 00072500
OWN INTEGER I; 00072600
OWN REAL FM,D,TD,A,SAMP,B; 00072700
FORMAT FL9980(/" TRANSFORMATION CANNOT BE PERFORMED. CODE =",I4, 00072800
LIST LIST1(JUMP,DOSE[J],D); 00073000
LABEL L8,L10,L20,L30,L40,L50,L60,L70,L80,L90,L110,L99,L12,L22,L52, 00073100
L53,L0; 00073200
SWITCH SWGO1:=L10,L20,L30,L40,L50,L60,L70,L80,L90,L110; 00073300
COMMENT TRNGEN SUBROUTINE TO TRANSFORM DOSE.; 00073400
VALUE ARGX; 00073600
REAL ARGX; 00073700
ASN:=ARCTAN(ARGX/SQRT(1-ARGX*2)); 00073800
J~1; 00073900
FOR I~IK STEP 1 UNTIL 64 DO BEGIN 00074000
J ~ J + 1; END; 00074200
IERROR:=0; 00074300
J2:=1; 00074400
DO BEGIN 00074500
X[J2]:=DOSE[J2] END UNTIL (J2:=(J2+1)) GTR M; 00074600
JK:=1; 00074800
DO BEGIN 00074900
JUMP:=ICODE[JK]; 00075000
FM:=CONST[JK]; 00075100
IF JUMP|(JUMP-11) GEQ 0 THEN GO TO L0; 00075200
DO BEGIN 00075400
D:=X[J]; 00075500
GO TO SWGO1[JUMP]; 00075600
COMMENT 1 SQRT(DOSE); 00075700
L10: IF (XPR:=(D)) GTR 0 THEN GO TO L12 ELSE IF XPR LSS 0 THEN GO 00075800
TD:=0; 00076000
GO TO L8; 00076100
L12: TD:=SQRT(D); 00076200
GO TO L8; 00076300
COMMENT 2 SQRT(DOSE) + SQRT(DOSE + 1); 00076400
TO L99; 00076600
TD:=1; 00076700
GO TO L8; 00076800
L22: TD:=SQRT(D)+SQRT(D+1); 00076900
GO TO L8; 00077000
L30: IF D LEQ 0 THEN GO TO L99; 00077200
TD:=LOG(D); 00077300
GO TO L8; 00077400
COMMENT 4 EXP(DOSE).; 00077500
L40: TD:=EXP(D); 00077600
COMMENT 5 ARCSINE(DOSE); 00077800
L50: IF (XPR:=(D)) GTR 0 THEN GO TO L52 ELSE IF XPR LSS 0 THEN GO 00077900
TO L99; 00078000
TD:=0; 00078100
GO TO L8; 00078200
TO L53; 00078400
TD:=1.570796325; 00078500
GO TO L8; 00078600
L53: TD:=ASN(A); 00078700
GO TO L8; 00078800
L60: SAMP:=M; 00079000
A:=D/(SAMP+1); 00079100
B:=A+1/(SAMP+1); 00079200
IF A LSS 0 THEN GO TO L99; 00079300
TD:=ASN(SQRT(A)); 00079400
TD:=TD+ASN(SQRT(B)); 00079600
GO TO L8; 00079700
COMMENT 7 1/ DOSE; 00079800
L70: IF D=0 THEN GO TO L99; 00079900
TD:=1/D; 00080000
L80: TD:=D+FM; 00080200
GO TO L8; 00080300
COMMENT 9 DOSE X CONST; 00080400
L90: TD:=D|FM; 00080500
GO TO L8; 00080600
L110: TD:=D*FM; 00080800
L8: X[J]:=TD END UNTIL (J:=(J+1)) GTR M; 00080900
END UNTIL (JK:=(JK+1)) GTR 8; 00081000
GO TO L0; 00081100
L99: IERROR:=-999; 00081200
GO TO L0; 00081400
L0: 00081500
J~1; FOR I~IK STEP 1 UNTIL 64 DO BEGIN 00081600
CONSTT[I] ~ CONST[J]; ICODEE[I] ~ ICODE[J]; J~J+1; END; 00081700
END OF TRNGEN; 00081800
INTEGER NVF; 00082000
BEGIN 00082100
FORMAT FL4000(/" ",X23, 00082200
"NUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIFIED, ASSUMED ", 00082300
"TO BE 1."); 00082400
COMMENT VFCHCK SUBROUTINE TO CHECK FOR PROPER NUMBER OF VARIABLE 00082600
FORMAT CRDS; 00082700
IF NVF GTR 0 THEN GO TO L20; 00082800
L10: WRITE(TAPE6,FL4000); 00082900
NVF:=1; 00083000
L20: IF NVF LEQ 10 THEN GO TO L0 ELSE GO TO L10; 00083200
L0: END; 00083300
PROCEDURE READIN; 00083400
BEGIN 00083500
OWN REAL ARRAY AA[0:3]; 00083600
OWN INTEGER INDEX1; 00083800
OWN INTEGER NTAP,IC, MTAP,IVF,M1,I,I2,I3,KODE,K1, 00083900
ITRG; 00084000
OWN REAL PPP,AAA,TRG,ER,PRBLM,SMALN,SMALP,QC; 00084100
COMMENT THE FOLLOWING PROCEDURES ARE USED: VFCHCK,TPWD,PHINV,REMOVE; 00084200
FORMAT FL11( 00084400
" BMD03S - BIOLOGICAL ASSAY, PROBIT ANALYSIS - VERSION OF JUNE ", 00084500
"1, 1964"/" HEALTH SCIENCES COMPUTING FACILITY, UCLA."/), 00084600
FL10(A6,A6,I1,R5.4,I4,4R6.0,X18,I2,2I1,2I2), 00084700
FL19(A6,I1,8(I2,R6.0)), 00084800
FL9990(" PROBLEM",X1,A6,"."), 00085000
FL9991(" CONTROL GROUP DATA. SAMPLE SIZE N=",R6.0,", RESPONSE R=",R6.0, 00085100
".",X3,3A6), 00085200
FL9992(" UNTRANSFORMED DOSE."), 00085300
FL9993(X3,9R12.2), 00085400
FL9996(" SAMPLE SIZE."), 00085600
FL9985(/" DATA INCORRECT,PROBLEM DELETED. "), 00085700
FL38(/" ",X5,"END OF OUTPUT FOR PROBLEM ",A6), 00085800
FL9981(" SAMPLE PROBIT"), 00085900
FL9982(" SAMPLE PROBABILITY"), 00086000
FL9997(/ 00086200
" NON PROBLEM CARD ENCOUNTERED CHECK DATA DECK. EXECUTION DELETE", 00086300
"D. "), 00086400
FL9998( 00086500
" THE NUMBER OF SPECIAL TRANSGENERATION CARDS IS ILLEGAL. PROBLE", 00086600
FL9999(/" ILLEGAL NUMBER OF DOSES SPECIFIED. EXECUTION DELETED."), 00086800
FL9989(/" CONTROL CARD ERROR. SPECTG CARD EXPECTED BUT A ",A6, 00086900
" CARD WAS FOUND. EXECUTION DELETED."); 00087000
LIST LIST1(PRBLM,CODE,IC,CG,M,R[1],SN[1],A[1],A[2],IBG,KQQQQQQ,IPR, 00087100
MTAP,IVF); 00087200
]); 00087400
LIST LIST4(CODE); 00087500
LIST LIST5(SN[M1],R[M1],FOR INDEX1:=1 STEP 1 UNTIL 3 DO AA[INDEX1]); 00087600
LIST LIST6(FOR DX1:=1 STEP 1 UNTIL M DO DOSE[DX1]); 00087700
LIST LIST7(FOR DX1:=1 STEP 1 UNTIL M DO R[DX1]); 00087800
LIST LIST9(FOR DX1:=1 STEP 1 UNTIL M DO SMY[DX1]); 00088000
LIST LIST10(FOR DX1:=1 STEP 1 UNTIL M DO SMP[DX1]); 00088100
LIST LIST11(CODE,KQQQQQQ); 00088200
LIST LIST12(KODE); 00088300
BEGIN 00088400
L301,L303,L291,L32,L610,L612,L210,L25,L0,L992,L999,L889; 00088600
COMMENT READIN SUBROUTINE READIN FOR BMD03S JUNE 1, 00088700
1964; 00088800
PPP:=("PROBLM"); 00088900
AAA:=("FINISH"); 00089000
IF NTAP GTR 0 THEN GO TO L2; 00089200
L1: NTAP:=5; 00089300
L2: ER:=0; 00089400
READ(TAPE5,FL10,LIST1)[FINIS]; 00089500
IF PRBLM ! PPP THEN GO TO L990; 00089600
M1:=M+1; 00089800
COMMENT R(M1) = R; 00089900
R[M1]:=R[1]; 00090000
SN[M1]:=MAX(SN[1],0); 00090100
KQQQQQQ:=MIN(KQQQQQQ,8); 00090200
I:=1; 00090400
DO BEGIN 00090500
I2:=1+8|(I-1); 00090600
I3:=I2+7; 00090700
READ(TAPE5,FL19,LIST2)[FINIS]; 00090800
L501: END UNTIL (I:=(I+1)) GTR KQQQQQQ; 00091000
IF -KQQQQQQ GEQ 0 THEN GO TO L887; 00091100
VFCHCK(IVF); 00091200
IVF:=IVF|12; 00091300
FIXFORM(FMT); %READ VARIABLE FORMAT ***************************** 00091400
READ(TAPE5,FMT,LIST6)[FINIS]; 00091600
READ(TAPE5,FMT,LIST7)[FINIS]; 00091700
READ(TAPE5,FMT,LIST8)[FINIS]; 00091800
COMMENT GET SAMPLE P ( = R/S ) 00091900
GET INVERSE NORMAL OF SAMPLE P.; 00092000
DO BEGIN 00092200
IF SN[I] LEQ 0 THEN GO TO L54; 00092300
SMP[I]:=R[I]/SN[I]; 00092400
IF SMP[I]|(SMP[I]-1) GTR 0 THEN GO TO L54; 00092500
END UNTIL (I:=(I+1)) GTR M; 00092600
IF ABS(CG) GEQ 1 THEN GO TO L28; 00092800
IF CG LSS 0 THEN GO TO L29; 00092900
IF IC=0 THEN GO TO L30; 00093000
IF CG=0 THEN GO TO L28 ELSE GO TO L29; 00093100
COMMENT WE GUESS C; 00093200
SN[M1]:=0; 00093400
R[M1]:=0; 00093500
SMALN:=SN[1]; 00093600
SMALP:=SMP[1]; 00093700
GO TO L2821; 00093800
SMALN:=SN[M1]; 00094000
L2821: I:=1; 00094100
DO BEGIN 00094200
IF SMP[I] GEQ SMALP THEN GO TO L301; 00094300
SMALN:=SN[I]; 00094400
L301: END UNTIL (I:=(I+1)) GTR M; 00094600
A[3]:=SMALP; 00094700
IF (XPR:=(A[3])) GTR 0 THEN GO TO L303 ELSE IF XPR LSS 0 THEN GO TO 00094800
L54; 00094900
A[3]:=.5/SMALN; 00095000
COMMENT USER GUESS C; 00095200
L29: A[3]:=ABS(CG); 00095300
L291: AA[1]:=("OPTIMI"); 00095400
AA[2]:=("ZE C. "); 00095500
AA[3]:=(" "); 00095600
GO TO L32; 00095800
COMMENT HOLD C CONSTANT; 00095900
L30: AA[1]:=("C HELD"); 00096000
AA[2]:=(" CONST"); 00096100
AA[3]:=("ANT. "); 00096200
L32: IF SN[M1] GTR 0 THEN GO TO L610; 00096400
SMP[M1]:=0; 00096500
SMY[M1]:=5+PHINV(0); 00096600
GO TO L612; 00096700
L610: SMP[M1]:=R[M1]/SN[M1]; 00096800
L612: QC:=1-A[3]; 00097000
I:=1; 00097100
DO BEGIN 00097200
SMP[I]:=(SMP[I]-A[3])/QC; 00097300
SMY[I]:=5+PHINV(SMP[I]); 00097400
COMMENT PRINT INPUT DATA; 00097600
L210: WRITE(TAPE6[PAGE]); 00097700
WRITE(TAPE6,FL11); 00097800
WRITE(TAPE6,FL9990,LIST4); 00097900
WRITE(TAPE6,FL9991,LIST5); 00098000
WRITE(TAPE6,FL9992); 00098200
WRITE(TAPE6,FL9993,LIST6); 00098300
WRITE(TAPE6,FL9994); 00098400
WRITE(TAPE6,FL9993,LIST7); 00098500
WRITE(TAPE6,FL9996); 00098600
IF ER=0 THEN GO TO L25; 00098800
WRITE(TAPE6,FL9985); 00098900
WRITE(TAPE6,FL38,LIST4); 00099000
GO TO L1; 00099100
L25: WRITE(TAPE6,FL9981); 00099200
WRITE(TAPE6,FL9982); 00099400
WRITE(TAPE6,FL9993,LIST10); 00099500
GO TO L0; 00099600
L990: IF PRBLM = AAA 00099700
THEN GO TO L999 ELSE GO TO L992; 00099800
L54: ER:=1; 00100000
GO TO L210; 00100100
COMMENT LAST PROBLEM COMPLETED.; 00100200
L999: WRITE(TAPE6,FL9995); 00100300
L887: IF NTAP LEQ 5 THEN GO TO L889; 00100400
COMMENT PROBLEM CARD ERROR; 00100600
L992: WRITE(TAPE6[PAGE]); 00100700
WRITE(TAPE6,FL11); 00100800
WRITE(TAPE6,FL9997); 00100900
GO TO L887; 00101000
WRITE(TAPE6,FL11); 00101200
WRITE(TAPE6,FL9998,LIST11); 00101300
GO TO L887; 00101400
L993: WRITE(TAPE6[PAGE]); 00101500
WRITE(TAPE6,FL11); 00101600
GO TO L887; 00101800
L994: WRITE(TAPE6[PAGE]); 00101900
WRITE(TAPE6,FL11); 00102000
WRITE(TAPE6,FL9989,LIST12); 00102100
KQQQQQQ:=-1001; 00102200
L0: END END; 00102400
PROCEDURE MAINPRO; 00102500
BEGIN 00102600
OWN REAL ARRAY 00102700
RX[0:1000]; 00102800
OWN INTEGER JK,IK,IERROR,I1,I,M2,NPR,NK,NV,NIT,N1, 00103000
NN,IDF,M1,I3; 00103100
OWN REAL ER,SAVC,XAV,XVAR,EPS,CG1,HAMU,ALPHAQQ,ALPHA1,HAMU0, 00103200
HASI,AAA,DET,CHI,RI,PP; 00103300
COMMENT THE FOLLOWING PROCEDURES ARE USED: READIN,TRNGEN,LINREG, 00103400
FORMAT FL9998(////" TRANSFORMED DOSE FOR TRANSFORMATION CARD NO ",I3, 00103600
" OF",I3), 00103700
FL9993(X3,9R12.2), 00103800
FL9988(/" THE INITIAL VALUES AT START OF ITERATION ARE, ALPHA= ",R9.3, 00103900
X3,"BETA=",R9.3,X3,"C=",R9.3), 00104000
FL9885(/ 00104200
" THE FINAL VALUES OF THE PARAMETERS AND THE PARTIAL DERIVATIVES", 00104300
" ARE"/X5,"FOR PROBIT LINE (ALPHA1+BETA*(X-XBAR)) ",X17,"*",X5, 00104400
"FOR PROBIT LINE (ALPHA+BETA*(X)) "), 00104500
FL9980(X5,"ALPHA1=",R8.3,X10,"DL/DA=",X3,R10.4,X13,"*",X5,"ALPHA =", 00104600
X5,"C",X5,"=",R8.3,X10,"DL/DC=",X3,R10.4,X13,"*",X5,"C",X5,"=",R8.3// 00104800
" THE ESTIMATES MU-HAT AND SIGMA-HAT OF THE MEAN AND STANDARD DE", 00104900
"VIATION OF THE TRANSFORMED DOSE TOLERANCE ARE AS FOLLOWS."/X5, 00105000
" MU-HAT=",X3,R9.4/X5,"SIGMA-HAT=",X3,R9.4), 00105100
FL9981(/" THE COVARIANCE MATRICES ARE AS FOLLOWS"/X5,"FOR ALPHA1, BETA",00105200
FL9883(X3,2R12.4,X35,"*",2R12.4), 00105400
FL9884(X3,3R12.4,X23,"*",3R12.4), 00105500
FL9982(X5,"FOR MU, SIGMA",A6), 00105600
FL9983(X3,9R12.4), 00105700
FL9984(/" CHI-SQUARE=",X3,R12.4,", WITH",I5," DEGREES OF FREEDOM."), 00105800
FL38(/" ",X5,"END OF OUTPUT FOR PROBLEM ",A6), 00106000
FL9985(" THE MEAN AND VARIANCE OF THE TRANSFORMED DOSE ARE"/" MEAN= ", 00106100
R8.4," VAR= ",R8.4); 00106200
LIST LIST1(JK,KQQQQQQ); 00106300
LIST LIST2(FOR DX1:=1 STEP 1 UNTIL M DO X[DX1]); 00106400
LIST LIST4(ALPHA1,FQQQQQQ[1],ALPHAQQ,A[2],FQQQQQQ[2],A[2],A[3],FQQQQQQ[300106600
],A[3],HAMU0,HASI); 00106700
LIST LIST5(AAA,AAA); 00106800
LIST LIST6(FOR DX1:=I1 STEP 1 UNTIL I3 DO CD[DX1],FOR DX1:=I1 STEP 1 00106900
UNTIL I3 DO CD0[DX1]); 00107000
LIST LIST8(FOR DX1:=I1 STEP 1 UNTIL I3 DO D[DX1]); 00107200
LIST LIST9(CHI,IDF); 00107300
LIST LIST10(CODE); 00107400
BEGIN 00107500
LABEL L998,L2098,L2000,L2001,L2210,L2201,L2041,L2042,L2043,L2377, 00107600
SWITCH SWGO1:=L3071,L3170,L3171; 00107800
COMMENT ID 0901HS 15 150 $BMD03S BIOLOGICAL ASSAY, PROBIT 00107900
ANALYSIS 00108000
BMD03S BIOLOGICAL ASSAY - PROBIT ANALYSIS JUNE 1, 1964 00108100
DIFF; 00108200
COMMENT READ IN DATA; 00108400
L998: READIN; 00108500
SAVC:=A[3]; 00108600
JK:=1; 00108700
DO BEGIN 00108800
IK:=1+8|(JK-1); 00109000
COMMENT TRANSFORM DOSE.; 00109100
WRITE(TAPE6,FL9998,LIST1); 00109200
TRNGEN(DOSE,CONST,IK,M,ICODE,1,IERROR,X); 00109300
IF IERROR NEQ 0 THEN GO TO L2098; 00109400
IF A[2] LEQ 0 THEN GO TO L2000 ELSE GO TO L2001; 00109600
COMMENT GET LEAST SQUARES FIT; 00109700
L2000: I1:=1; 00109800
I:=1; 00109900
DO BEGIN 00110000
IF SMP[I] LEQ 0 THEN GO TO L2210; 00110200
TEMP[I1]:=SMY[I]; 00110300
RX[I1]:=X[I]; 00110400
M2:=I1; 00110500
I1:=I1+1; 00110600
LINREG(RX,TEMP,M2,A[2],A[1]); 00110800
L2001: MNVAR(X,M,XAV,XVAR); 00110900
WRITE(TAPE6,FL9988,LIST3); 00111000
IF A[2] GTR 0 THEN GO TO L2201; 00111100
WRITE(TAPE6,FL46); 00111200
L2201: I:=1; 00111400
DO BEGIN 00111500
X[I]:=X[I]-XAV END UNTIL (I:=(I+1)) GTR M; 00111600
A[1]:=A[1]+A[2]|XAV; 00111700
COMMENT SOLVE FOR MAXIMUM LIKLIHOOD BY NEWTONS METHOD; 00111800
NPR:=IPR; 00112000
COMMENT FIRST TIME GET BEST APPROX TO ALPHA, BETA; 00112100
CG1:=CG; 00112200
CG:=1; 00112300
NK:=1; 00112400
IF CG GEQ 0 THEN GO TO L2041; 00112600
NV:=3; 00112700
GO TO L2042; 00112800
L2041: NV:=2; 00112900
L2042: NIT:=50; 00113000
CG:=CG1; 00113200
IF (XPR:=(ER)) LSS 0 THEN GO TO L2098 ELSE IF XPR=0 THEN GO TO 00113300
L2043; 00113400
L2043: IF CG1 GEQ 0 THEN GO TO L2377; 00113500
END UNTIL (NK:=(NK+1)) GTR 2; 00113600
DIFF; 00113800
CG:=CG1; 00113900
HAMU:=(5-A[1])/A[2]; 00114000
ALPHAQQ:=A[1]-A[2]|XAV; 00114100
ALPHA1:=A[1]; 00114200
HAMU0:=(5-A[1])/A[2]; 00114400
HASI:=1/A[2]; 00114500
COMMENT COMPUTR COVARIANCE MATRICES; 00114600
IF CG1 LSS 0 THEN GO TO L305 ELSE GO TO L207; 00114700
COMMENT TWO DIMENSION CASE; 00114800
NN:=4; 00115000
AAA:=(". "); 00115100
IDF:=M-2; 00115200
DC[4]:=DC[5]; 00115300
DC[3]:=DC[2]; 00115400
DV[4]:=-(HAMU|(HAMU|DC[1]+2|DC[2])+DC[5])/HASI*4+2|(HAMU|FQQQQQQ[1]+FQ00115600
QQQQQ[2])/HASI*3; 00115700
DV[2]:=(HAMU|DC[1]+DC[2])/HASI*3; 00115800
DV[3]:=DV[2]; 00115900
DC0[1]:=-DC[1]; 00116000
DC0[4]:=-DC[4]-2|DC[2]|XAV-DC[1]|XAV*2; 00116200
DC0[3]:=DC0[2]; 00116300
GO TO L306; 00116400
COMMENT THREE DIMENSION CASE; 00116500
L305: N1:=3; 00116600
AAA:=(", C. "); 00116800
IDF:=M-3; 00116900
IF SN[M+1] LEQ 0 THEN GO TO L3051; 00117000
IDF:=IDF+1; 00117100
L3051: DV[1]:=-DC[1]/HASI*2; 00117200
QQQQQ[2])/HASI*3; 00117400
DV[9]:=-DC[9]; 00117500
DV[2]:=(HAMU|DC[1]+DC[2])/HASI*3; 00117600
DV[4]:=DV[2]; 00117700
DV[3]:=-DC[3]/HASI; 00117800
DV[6]:=(HAMU|DC[3]+DC[6])/HASI*2; 00118000
DV[8]:=DV[6]; 00118100
DC0[1]:=-DC[1]; 00118200
DC0[2]:=-DC[1]|XAV-DC[4]; 00118300
DC0[3]:=-DC[3]; 00118400
DC0[6]:=-DC[3]|XAV-DC[6]; 00118600
DC0[9]:=-DC[9]; 00118700
DC0[4]:=DC0[2]; 00118800
DC0[7]:=DC0[3]; 00118900
DC0[8]:=DC0[6]; 00119000
DO BEGIN 00119200
DC[I]:=-DC[I] END UNTIL (I:=(I+1)) GTR NN; 00119300
INVERT(DC,CD,1,N1,DET,TEMP[20]); 00119400
INVERT(DV,D,1, N1,DET,TEMP[20]); 00119500
INVERT(DC0,CD0,1,N1,DET,TEMP[20]); 00119600
M1:=M; 00119800
IF CG1 GEQ 0 THEN GO TO L3081; 00119900
M1:=M+1; 00120000
L3081: CHI:=0; 00120100
I:=1; 00120200
RI:=R[I]; 00120400
PP:=A[3]+P[I]|(1-A[3]); 00120500
CHI:=CHI+(RI-SN[I]|PP)*2/(PP-PP*2)/SN[I]; 00120600
END UNTIL (I:=(I+1)) GTR M; 00120700
COMMENT PRINT RESULTS; 00120800
WRITE(TAPE6,FL9980,LIST4); 00121000
WRITE(TAPE6,FL9981,LIST5); 00121100
I:=1; 00121200
DO BEGIN 00121300
I1:=1+N1|(I-1); 00121400
GO TO SWGO1[N1]; 00121600
L3170: WRITE(TAPE6,FL9883,LIST6); 00121700
GO TO L3071; 00121800
L3171: WRITE(TAPE6,FL9884,LIST6); 00121900
L3071: END UNTIL (I:=(I+1)) GTR N1; 00122000
I:=1; 00122200
DO BEGIN 00122300
I1:=1+N1|(I-1); 00122400
I3:=N1|I; 00122500
WRITE(TAPE6,FL9983,LIST8); 00122600
WRITE(TAPE6,FL9984,LIST9); 00122800
L2098: WRITE(TAPE6,FL9989,LIST1); 00122900
A[2]:=0; 00123000
END UNTIL (JK:=(JK+1)) GTR KQQQQQQ; 00123100
WRITE(TAPE6,FL38,LIST10); 00123200
COMMENT NORMAL OUTPUT FORMAT; 00123400
COMMENT ERROR OUTPUT FORMAT; 00123500
END END; 00123600
COMMENT INITIALIZING BLOCK; 00123700
XPR:=Q:=K:=0; 00123800
END. 00124000
END;END. LAST CARD ON 0CRDING TAPE 99999999