mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-02 17:44:40 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
1211 lines
96 KiB
Fortran
1211 lines
96 KiB
Fortran
FILE 5 = CRA, UNIT = READER, RECORD = 10, BUFFER = 2 00001000
|
|
FILE 6 = LPA, UNIT = PRINTER, RECORD = 15, BUFFER = 2 00001100
|
|
C 00001200
|
|
CBMD06R ASYMPTOTIC REGRESSION - MAIN PROGRAM SEPTEMBER 29, 1965 00001300
|
|
C 00001400
|
|
DIMENSION CF(9) 00001500
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00001600
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00001700
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00001800
|
|
3,N1(1000),N2(1000) 00001900
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00002000
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200002100
|
|
2,RS, AS,BS,SUMSQS,AVE 00002200
|
|
3,X2,Y2,Y3,I5,I6 00002300
|
|
EQUIVALENCE(X1,PRE,U) 00002400
|
|
C 00002500
|
|
C 00002600
|
|
C 00002700
|
|
C 00002800
|
|
502 FORMAT(45H1BMD06R - ASYMPTOTIC REGRESSION - VERSION OF , 00002900
|
|
X18HSEPTEMBER 29,1965/ 00003000
|
|
1 40H HEALTH SCIENCES COMPUTING FACILITY,UCLA//) 00003100
|
|
304 FORMAT(45H0CONTROL CARDS INCORRECTLY ORDERED OR PUNCHED) 00003200
|
|
501 FORMAT(2A6,I3,A2,A3,A3,I2,F6.0,4A3,I2,A3,F6.0, 14X, 2I2) 00003300
|
|
503 FORMAT(13H PROBLEM CARD//) 00003400
|
|
504 FORMAT(13H PROBLEM CODE6X,A6) 00003500
|
|
505 FORMAT(14H0ORIGINAL DATA//) 00003600
|
|
506 FORMAT(5H NO.6X,7HX VALUE6X,7HY VALUE//) 00003700
|
|
507 FORMAT(1H I4,2F13.4) 00003800
|
|
508 FORMAT(61H0NO Y VALUE FOR SOME X,PROGRAM WILL GO TO NEXT PROBLEM,I00003900
|
|
1F ANY) 00004000
|
|
509 FORMAT(I2) 00004100
|
|
513 FORMAT(9H0FIT NO. I3) 00004200
|
|
515 FORMAT(15H0ITERATION NO. I2) 00004300
|
|
516 FORMAT(2H *62X,1H*) 00004400
|
|
517 FORMAT(2H *3F20.8,7H * Y(I1,2H)=F20.8) 00004500
|
|
518 FORMAT(19H0INFORMATION MATRIX//) 00004600
|
|
519 FORMAT(30H0INVERSE OF INFORMATION MATRIX//) 00004700
|
|
520 FORMAT(/23H0INITIAL ESTIMATE OF R=F10.4//) 00004800
|
|
521 FORMAT(/1H 25X,19HPARAMETER ESTIMATES) 00004900
|
|
522 FORMAT(14H ITERATION NO.8X,1HA14X,1HB14X,1HR9X,20HSUM(E(Y)-MEAN(Y)00005000
|
|
1)**2//) 00005100
|
|
523 FORMAT(1H I9,F19.6,2F15.6,1X,F16.6) 00005200
|
|
524 FORMAT(/1H04X,5HFINAL6X,8HSTANDARD) 00005300
|
|
525 FORMAT(1H 4X,9HESTIMATES2X,10HDEVIATIONS//) 00005400
|
|
526 FORMAT(3H A=F11.4,2X,F10.4//) 00005500
|
|
527 FORMAT(3H B=F11.4,2X,F10.4//) 00005600
|
|
528 FORMAT(3H R=F11.4,2X,F10.4) 00005700
|
|
529 FORMAT(20H1 TABLE OF RESIDUALS//) 00005800
|
|
530 FORMAT(16H NO. OF X VALUES3X,I6,8X,14H INPUT PATTERN9X,A6) 00005900
|
|
532 FORMAT(12H X RE-SCALED 10X,A6,8X,5H SORT17X,A6) 00006000
|
|
535 FORMAT( 16H PRINT RESIDUALS 6X, A3) 00006100
|
|
537 FORMAT(13H X TRANS CODE6X,I6,8X,12H OUTPUT DATA10X,A3) 00006200
|
|
538 FORMAT(11H X CONSTANT8X,F11.5,3X,16H VARIABLE FORMAT3X,I6) 00006300
|
|
630 FORMAT(69H0 NO. X VALUE Y VALUE Y PREDICTED 00006400
|
|
1 RESIDUAL//) 00006500
|
|
631 FORMAT(1H I4,4F16.4) 00006600
|
|
701 FORMAT(20H REGRESSION EQUATION/1H015X,1HX/1H 4X,11HY = A + B.R//) 00006700
|
|
923 FORMAT(11H0ITERATION=I5, 3X, 2HA=F12.6,3X,2HB=F12.6,3X,2HR=F12.6 00006800
|
|
1,3X, 23HSUM(E(Y)-MEAN(Y))**2 =F12.6) 00006900
|
|
9309 FORMAT( 36H0CONVERGENCE CRITERION NOT MET AFTER I5, 11H ITERATION00007000
|
|
1S ) 00007100
|
|
C 00007200
|
|
C 00007300
|
|
C 00007400
|
|
C 00007500
|
|
I5=5 00007600
|
|
I6=6 00007700
|
|
A123=(+6HFINISH) 00007800
|
|
B123=(+6HPROBLM) 00007900
|
|
D123=(+3HYES) 00008000
|
|
C 00008100
|
|
100 READ (5,501)TODE,PROB,NXY,TXY,RES,SPARE, 00008200
|
|
1 LTRANX,CONSX,XSORT,GPLOT,STEP,XRED,MORE,OUT,RHO1,NTAPE,KVT 00008300
|
|
C 00008400
|
|
IF (TODE-A123) 300,326,300 00008500
|
|
300 IF (TODE-B123) 302,332,302 00008600
|
|
302 CONTINUE 00008700
|
|
WRITE (6,502) 00008800
|
|
WRITE (6,304) 00008900
|
|
326 CALL EXIT 00009000
|
|
332 CONTINUE 00009100
|
|
WRITE (6,502) 00009200
|
|
WRITE (6,701) 00009300
|
|
WRITE (6,503) 00009400
|
|
WRITE ( 6,504)PROB 00009500
|
|
WRITE ( 6,530)NXY,TXY 00009600
|
|
WRITE ( 6,532)XRED,XSORT 00009700
|
|
WRITE ( 6,535)RES 00009800
|
|
WRITE ( 6,537)LTRANX,OUT 00009900
|
|
WRITE ( 6,538)CONSX,KVT 00010000
|
|
IF((NXY-3)*(NXY-1000))305,302,302 00010100
|
|
305 CALL VFCHCK(KVT) 00010200
|
|
3 CONTINUE 00010300
|
|
SUMSQS(1)=0.0 00010400
|
|
SWITCH=0 00010500
|
|
LTRANX=LTRANX+1 00010600
|
|
CALL READ 00010700
|
|
NCN=NS 00010800
|
|
C 00010900
|
|
C CHECK INPUT DATA 00011000
|
|
DO 70 I=1,NXY 00011100
|
|
70 N2(I)=0 00011200
|
|
N2(1)=N1(1) 00011300
|
|
DO 71 I=2,NXY 00011400
|
|
71 N2(I)=N2(I-1)+N1(I) 00011500
|
|
IF (OUT-D123) 6,4,6 00011600
|
|
00011700
|
|
C PRINT INPUT DATA 00011800
|
|
4 WRITE (6,505) 00011900
|
|
WRITE (6,506) 00012000
|
|
DO 5 I=1,NXY 00012100
|
|
NE=N2(I) 00012200
|
|
NS=NE-N1(I)+1 00012300
|
|
DO 72 L=NS,NE 00012400
|
|
72 WRITE (I6,507)I,X1(I),Y2(L) 00012500
|
|
5 CONTINUE 00012600
|
|
6 DO 7 I=1,NXY 00012700
|
|
IF(N1(I))8,8,7 00012800
|
|
7 CONTINUE 00012900
|
|
GO TO 10 00013000
|
|
8 WRITE (I6,508) 00013100
|
|
IF (TRANS-D123) 100,9,100 00013200
|
|
9 DO 200 I=1,MORE 00013300
|
|
200 READ (5,509) 00013400
|
|
GO TO 100 00013500
|
|
00013600
|
|
C TRANSFORM X AND SORT X AND Y 00013700
|
|
10 IF(LTRANX-1) 302,73,74 00013800
|
|
74 CALL TRANX 00013900
|
|
GO TO 75 00014000
|
|
73 DO 76 I=1,NXY 00014100
|
|
76 X2(I)=X1(I) 00014200
|
|
75 IF (XSORT-D123) 15,11,15 00014300
|
|
11 CALL SORTX 00014400
|
|
GO TO 20 00014500
|
|
15 NF=0 00014600
|
|
DO 16 I=1,NXY 00014700
|
|
NE=N2(I) 00014800
|
|
NS=NE-N1(I)+1 00014900
|
|
DO 17 J=NS,NE 00015000
|
|
NF=NF+1 00015100
|
|
17 Y3(NF)=Y2(J) 00015200
|
|
16 CONTINUE 00015300
|
|
20 IF (XRED-D123) 600,601,600 00015400
|
|
00015500
|
|
C SCALE X 00015600
|
|
601 RNXY=NXY-1 00015700
|
|
SMAL=X2(1) 00015800
|
|
RANGE=X2(NXY)-SMAL 00015900
|
|
DO 602 I=1,NXY 00016000
|
|
602 X2(I)=((X2(I)-SMAL)/RANGE)*RNXY 00016100
|
|
600 IF(MORE) 302,26,27 00016200
|
|
26 MORE=1 00016300
|
|
00016400
|
|
C BEGIN REGRESSION LOOP 00016500
|
|
27 DO 1000 IMM=1,MORE 00016600
|
|
WRITE ( 6,513)IMM 00016700
|
|
NF=0 00016800
|
|
00016900
|
|
C SET UP Y FOR REGRESSION AND TRANSFORMATION 00017000
|
|
DO 29 I=1,NXY 00017100
|
|
NE=N2(I) 00017200
|
|
NS=NE-N1(I)+1 00017300
|
|
DO 28 L=NS,NE 00017400
|
|
NF=NF+1 00017500
|
|
28 Y2(NF)=Y3(L) 00017600
|
|
29 CONTINUE 00017700
|
|
21 CALL TRANSY 00017800
|
|
00017900
|
|
C GET START VALUE FOR R 00018000
|
|
25 CALL FINDR 00018100
|
|
XN = NXY 00018200
|
|
XB = 0. 00018300
|
|
DO 3993 I=1,NXY 00018400
|
|
3993 XB = XB + X2(I) 00018500
|
|
XB = XB/XN 00018600
|
|
I = XB 00018700
|
|
XB = I 00018800
|
|
DO 3994 I=1,NXY 00018900
|
|
3994 X2(I) = X2(I)-XB 00019000
|
|
IF(RHO1)2511,2511,2510 00019100
|
|
2510 R0 = RHO1 00019200
|
|
2511 CONTINUE 00019300
|
|
WRITE (I6,520)R0 00019400
|
|
PRINT = 0. 00019500
|
|
IF (STEP-D123) 4777,4877,4777 00019600
|
|
4777 CONTINUE 00019700
|
|
WRITE (I6, 522 ) 00019800
|
|
PRINT = 1. 00019900
|
|
4877 CONTINUE 00020000
|
|
C INITIALIZE LOOP 00020100
|
|
ICOUNT=0 00020200
|
|
NIT = 100 00020300
|
|
RS(1)=R0 00020400
|
|
TY0=0.0 00020500
|
|
DO 445 I=1,NXY 00020600
|
|
TY0=TY0+AVE(I)*(FLOAT (N1(I))) 00020700
|
|
445 CONTINUE 00020800
|
|
Y012(1)=TY0 00020900
|
|
R=R0 00021000
|
|
SUMSQ = 0. 00021100
|
|
C BEGIN ITERATION FOR ALPHA, BETA AND R. 00021200
|
|
996 CONTINUE 00021300
|
|
ICOUNT = ICOUNT + 1 00021400
|
|
R0 = R 00021500
|
|
CALL SETUP 00021600
|
|
CALL INVERT(C1,3) 00021700
|
|
A=C1(1,1)*TY0+C1(1,2)*TY1+C1(1,3)*TY2 00021800
|
|
B=C1(1,2)*TY0+C1(2,2)*TY1+C1(2,3)*TY2 00021900
|
|
R=R0+(C1(1,3)*TY0+C1(2,3)*TY1+C1(3,3)*TY2)/B 00022000
|
|
R = ABS (R) 00022100
|
|
40 CONTINUE 00022200
|
|
SUMSQ=0.0 00022300
|
|
DO 45 I=1,NXY 00022400
|
|
YEST=A+B*(R**X2(I)) 00022500
|
|
DIF=AVE(I)-YEST 00022600
|
|
SUMSQ=SUMSQ+DIF**2 00022700
|
|
45 CONTINUE 00022800
|
|
B = B*R**(-XB) 00022900
|
|
00023000
|
|
C PRINT ITERATION RESULTS IF DESIRED 00023100
|
|
IF (PRINT )477,481,477 00023200
|
|
477 CONTINUE 00023300
|
|
WRITE ( 6, 523) ICOUNT,A, B, R, SUMSQ 00023400
|
|
GO TO 47 00023500
|
|
481 CONTINUE 00023600
|
|
WRITE ( 6, 923) ICOUNT,A, B, R, SUMSQ 00023700
|
|
WRITE (6,518) 00023800
|
|
DO 39 I=1,3 00023900
|
|
WRITE (6,516) 00024000
|
|
K=I-1 00024100
|
|
WRITE ( 6,517)(C(I,J),J=1,3),K,Y012(I) 00024200
|
|
39 WRITE (6,516) 00024300
|
|
WRITE (6,519) 00024400
|
|
DO 49 I=1,3 00024500
|
|
WRITE (6,516) 00024600
|
|
K=I-1 00024700
|
|
WRITE ( 6,517)(C1(I,J),J=1,3),K,Y012(I) 00024800
|
|
49 WRITE (6,516) 00024900
|
|
47 IF(ABS (R-R0)-ABS (R)*1.E-5)60,60,308 00025000
|
|
308 IF (ICOUNT-NIT+1)99,99,309 00025100
|
|
99 CONTINUE 00025200
|
|
GO TO 996 00025300
|
|
00025400
|
|
C END OF ITERATION FOR ALPHA, BETA, AND R. 00025500
|
|
C PRINT RESULTS 00025600
|
|
309 CONTINUE 00025700
|
|
WRITE ( 6,9309 ) 00025800
|
|
1 NIT 00025900
|
|
60 CONTINUE 00026000
|
|
DO 6111 I=1,NXY 00026100
|
|
6111 X2(I) = X2(I) +XB 00026200
|
|
CALL SETUP 00026300
|
|
CALL INVERT(C1,3) 00026400
|
|
WRITE (6,518) 00026500
|
|
DO 62 I=1,3 00026600
|
|
WRITE (6,516) 00026700
|
|
K=I-1 00026800
|
|
WRITE ( 6,517)(C(I,J),J=1,3),K,Y012(I) 00026900
|
|
62 WRITE (6,516) 00027000
|
|
WRITE (6,519) 00027100
|
|
DO 63 I=1,3 00027200
|
|
WRITE (6,516) 00027300
|
|
K=I-1 00027400
|
|
WRITE ( 6,517)(C1(I,J),J=1,3),K,Y012(I) 00027500
|
|
63 WRITE (6,516) 00027600
|
|
WRITE (6,524) 00027700
|
|
WRITE (6,525) 00027800
|
|
N=0 00027900
|
|
SE=0.0 00028000
|
|
DO101 I=1,NXY 00028100
|
|
NE=N2(I) 00028200
|
|
NS=NE-N1(I)+1 00028300
|
|
PRE(I)=A+B*(R**X2(I)) 00028400
|
|
N=N+N1(I) 00028500
|
|
DO 101 J=NS,NE 00028600
|
|
SE=SE+(Y2(J)-PRE(I))**2 00028700
|
|
101 CONTINUE 00028800
|
|
FN=N-3 00028900
|
|
AS(1) = A 00029000
|
|
BS(1) = B 00029100
|
|
RS(1) = R 00029200
|
|
SE=SE/FN 00029300
|
|
SA=SQRT (C1(1,1)*SE) 00029400
|
|
SB=SQRT (C1(2,2)*SE) 00029500
|
|
SR=(SQRT (C1(3,3)*SE))/ABS (B) 00029600
|
|
WRITE ( 6, 526)A,SA 00029700
|
|
WRITE ( 6, 527)B,SB 00029800
|
|
WRITE ( 6,528)R, SR 00029900
|
|
CALL ANOVAR 00030000
|
|
IF (RES-D123) 641,640,641 00030100
|
|
640 CONTINUE 00030200
|
|
WRITE ( 6,529 ) 00030300
|
|
WRITE (6,630) 00030400
|
|
DO 64 I=1,NXY 00030500
|
|
NE=N2(I) 00030600
|
|
NS=NE-N1(I)+1 00030700
|
|
DO 65 J=NS,NE 00030800
|
|
DIFF=Y2(J)-PRE(I) 00030900
|
|
65 WRITE ( 6,631)I,X2(I),Y2(J),PRE(I),DIFF 00031000
|
|
64 CONTINUE 00031100
|
|
641 CONTINUE 00031200
|
|
IF (GPLOT-D123) 66,67,66 00031300
|
|
67 CALL PLOT (ICOUNT) 00031400
|
|
66 TRANS=D123 00031500
|
|
1000 CONTINUE 00031600
|
|
GO TO 100 00031700
|
|
STOP 00031800
|
|
END 00031900
|
|
CANOVAR SUBROUTINE ANOVAR FOR BMD06R SEPTEMBER 29,1965 00032000
|
|
SUBROUTINE ANOVAR 00032100
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00032200
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00032300
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00032400
|
|
3,N1(1000),N2(1000) 00032500
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00032600
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200032700
|
|
2,RS, AS,BS,SUMSQS,AVE 00032800
|
|
3,X2,Y2,Y3,I5,I6 00032900
|
|
EQUIVALENCE(X1,PRE,U) 00033000
|
|
ADD=0.0 00033100
|
|
TOT=0.0 00033200
|
|
TMEAN=0.0 00033300
|
|
YHAT=0.0 00033400
|
|
C N2(NXY) CONTAINS THE TOTAL NUMBER OF DEPENDENT VARIABLE VALUES AND 00033500
|
|
C TY0 CONTAINS THE SUM OF ALL DEPENDENT VARIABLE VALUES. 00033600
|
|
C SUM, THEREFORE, CONTAINS THE GRAND MEAN. 00033700
|
|
DIV=N2(NXY) 00033800
|
|
SUM=TY0/DIV 00033900
|
|
DO 10 I=1,NXY 00034000
|
|
NE=N2(I) 00034100
|
|
NS=NE-N1(I)+1 00034200
|
|
YHAT=YHAT+((AVE(I)-PRE(I))**2)*FLOAT (N1(I)) 00034300
|
|
DO 7 J=NS,NE 00034400
|
|
ADD=ADD+(Y2(J)-SUM)**2 00034500
|
|
TOT=TOT+(Y2(J)-AVE(I))**2 00034600
|
|
7 TMEAN=TMEAN+(Y2(J)-PRE(I))**2 00034700
|
|
10 CONTINUE 00034800
|
|
WRITE (6,100) 00034900
|
|
WRITE (6,101) 00035000
|
|
WRITE (6,106) 00035100
|
|
WRITE (6,102) ADD 00035200
|
|
WRITE (6,103)TOT 00035300
|
|
WRITE (6,104)TMEAN 00035400
|
|
WRITE (6,105)YHAT 00035500
|
|
WRITE (6,106) 00035600
|
|
100 FORMAT(1H020X,20HANALYSIS OF VARIANCE//) 00035700
|
|
101 FORMAT(11H DEVIATIONS20X,14HSUM OF SQUARES) 00035800
|
|
102 FORMAT(11H FROM MEAN 20X,F13.4) 00035900
|
|
103 FORMAT(16H FROM X(I) MEANS15X,F13.4//) 00036000
|
|
104 FORMAT(11H FROM CURVE20X,F13.4) 00036100
|
|
105 FORMAT(25H OF X(I) MEANS FROM CURVE6X,F13.4) 00036200
|
|
106 FORMAT(1H 44(1H*)) 00036300
|
|
RETURN 00036400
|
|
END 00036500
|
|
CEXPREG SUBROUTINE EXPREG FOR BMD06R FEBRUARY 21, 1964 00036600
|
|
SUBROUTINEEXPREG(G,N,X,A,B,R,P,SUM) 00036700
|
|
DIMENSION G(1),X(1), P(1) 00036800
|
|
X1 = 0. 00036900
|
|
X2 = 0. 00037000
|
|
N2 = N-2 00037100
|
|
D2 = G(2) - G(1) 00037200
|
|
D1 = D2 00037300
|
|
D2 = G(I+2) - G(I+1) 00037400
|
|
DO 10 I=1,N2 00037500
|
|
FI = G(I+1) - G(I) 00037600
|
|
FJ = G(I+2) - G(I+1) 00037700
|
|
X1 = X1 + FI**2 00037800
|
|
X2 = X2 + FI*FJ 00037900
|
|
WRITE (6,999)FI,FJ,X1,X2,G(I) 00038000
|
|
10 CONTINUE 00038100
|
|
R = X2/X1 00038200
|
|
IF(R) 15,30,30 00038300
|
|
15 R1 = -R 00038400
|
|
DO 20 I=1,N 00038500
|
|
T = 3.1415927*X(I) 00038600
|
|
P(I) = R1**X(I)*COS (T) 00038700
|
|
20 CONTINUE 00038800
|
|
GO TO 40 00038900
|
|
00039000
|
|
30 DO 35 I = 1,N 00039100
|
|
35 P(I)= R**X(I) 00039200
|
|
40 CONTINUE 00039300
|
|
SP = 0. 00039400
|
|
SPP = 0. 00039500
|
|
SPG = 0. 00039600
|
|
SG = 0. 00039700
|
|
DO 45 I=1,N 00039800
|
|
SP = SP + P(I) 00039900
|
|
SPP = SPP + P(I)**2 00040000
|
|
SPG = SPG + P(I)*G(I) 00040100
|
|
SG = SG + G(I) 00040200
|
|
45 CONTINUE 00040300
|
|
XN = N 00040400
|
|
DET = XN*SPP - SP**2 00040500
|
|
X1 = SPP/DET 00040600
|
|
X2 = -SP/DET 00040700
|
|
X3 = X2 00040800
|
|
X4 = XN/DET 00040900
|
|
A = X1*SG + X2*SPG 00041000
|
|
B = X3*SG + X4*SPG 00041100
|
|
SUM = 0. 00041200
|
|
DO 50 I=1,N 00041300
|
|
SUM = SUM + (G(I)-A-B*P(I))**2 00041400
|
|
50 CONTINUE 00041500
|
|
RETURN 00041600
|
|
999 FORMAT(3X,6F15.4) 00041700
|
|
END 00041800
|
|
CFINDR SUBROUTINE FINDR FOR BMD06R 9-6-6300041900
|
|
SUBROUTINE FINDR 00042000
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00042100
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00042200
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00042300
|
|
3,N1(1000),N2(1000) 00042400
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00042500
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200042600
|
|
2,RS, AS,BS,SUMSQS,AVE 00042700
|
|
3,X2,Y2,Y3,I5,I6 00042800
|
|
EQUIVALENCE(X1,PRE,U) 00042900
|
|
DIMENSIONCF(9) 00043000
|
|
DO 1 I=1,NXY 00043100
|
|
SUM=0.0 00043200
|
|
NE=N2(I) 00043300
|
|
NS=NE-N1(I)+1 00043400
|
|
DO 2 J=NS,NE 00043500
|
|
2 SUM = SUM + Y2(J) 00043600
|
|
AVE(I) = SUM/FLOAT (N1(I)) 00043700
|
|
1 CONTINUE 00043800
|
|
CALL REGRES( X2, AVE,NXY, CF) 00043900
|
|
IF(ABS (CF(2))-.01)50,50,55 00044000
|
|
50 R0 = .9999 00044100
|
|
GO TO 100 00044200
|
|
55 CONTINUE 00044300
|
|
IF(CF(5))60,65,60 00044400
|
|
65 CONTINUE 00044500
|
|
GO TO 50 00044600
|
|
60 CONTINUE 00044700
|
|
R0 = (CF(4)*(X2(2)-X2(NXY))+CF(5)*(X2(2)**2 -X2(NXY)**2))/ 00044800
|
|
1(CF(4)*(X2(1)-X2(NXY-1))+CF(5)*(X2(1)**2-X2(NXY-1)**2)) 00044900
|
|
IF(R0)50, 50,100 00045000
|
|
100 RETURN 00045100
|
|
END 00045200
|
|
CINVERT SUBROUTINE INVERT FOR BMD06R FEBRUARY 21, 1964 00045300
|
|
SUBROUTINE INVERT(A,N) 00045400
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00045500
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00045600
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00045700
|
|
3,N1(1000),N2(1000) 00045800
|
|
DIMENSION L(3),M(3),A(3,3) 00045900
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00046000
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200046100
|
|
2,RS, AS,BS,SUMSQS,AVE 00046200
|
|
3,X2,Y2,Y3,I5,I6 00046300
|
|
EQUIVALENCE(X1,PRE,U) 00046400
|
|
D=1.0 00046500
|
|
DO80 K=1,N 00046600
|
|
L(K)=K 00046700
|
|
M(K)=K 00046800
|
|
BIGA=A(K,K) 00046900
|
|
DO20 I=K,N 00047000
|
|
DO20 J=K,N 00047100
|
|
IF(ABS (BIGA)-ABS (A(I,J))) 10,20,20 00047200
|
|
10 BIGA=A(I,J) 00047300
|
|
L(K)=I 00047400
|
|
M(K)=J 00047500
|
|
20 CONTINUE 00047600
|
|
C INTERCHANGE ROWS 00047700
|
|
J=L(K) 00047800
|
|
IF(L(K)-K) 35,35,25 00047900
|
|
25 DO30 I=1,N 00048000
|
|
HOLD=-A(K,I) 00048100
|
|
A(K,I)=A(J,I) 00048200
|
|
30 A(J,I)=HOLD 00048300
|
|
C INTERCHANGE COLUMNS 00048400
|
|
35 I=M(K) 00048500
|
|
IF(M(K)-K) 45,45,37 00048600
|
|
37 DO40 J=1,N 00048700
|
|
HOLD=-A(J,K) 00048800
|
|
A(J,K)=A(J,I) 00048900
|
|
40 A(J,I)=HOLD 00049000
|
|
C DIVIDE COLUMN BY MINUS PIVOT 00049100
|
|
45 DO55 I=1,N 00049200
|
|
46 IF(I-K)50,55,50 00049300
|
|
50 A(I,K)=A(I,K)/(-A(K,K)) 00049400
|
|
55 CONTINUE 00049500
|
|
C REDUCE MATRIX 00049600
|
|
DO65 I=1,N 00049700
|
|
DO65 J=1,N 00049800
|
|
56 IF(I-K) 57,65,57 00049900
|
|
57 IF(J-K) 60,65,60 00050000
|
|
60 A(I,J)=A(I,K)*A(K,J)+A(I,J) 00050100
|
|
65 CONTINUE 00050200
|
|
C DIVIDE ROW BY PIVOT 00050300
|
|
DO75 J=1,N 00050400
|
|
68 IF(J-K)70,75,70 00050500
|
|
70 A(K,J)=A(K,J)/A(K,K) 00050600
|
|
75 CONTINUE 00050700
|
|
C CONTINUED PRODUCT OF PIVOTS 00050800
|
|
D=D*A(K,K) 00050900
|
|
C REPLACE PIVOT BY RECIPROCAL 00051000
|
|
A(K,K)=1.0/A(K,K) 00051100
|
|
80 CONTINUE 00051200
|
|
C FINAL ROW AND COLUMN INTERCHANGE 00051300
|
|
K=N 00051400
|
|
100 K=(K-1) 00051500
|
|
IF(K) 150,150,103 00051600
|
|
103 I=L(K) 00051700
|
|
IF(I-K) 120,120,105 00051800
|
|
105 DO110 J=1,N 00051900
|
|
HOLD=A(J,K) 00052000
|
|
A(J,K)=-A(J,I) 00052100
|
|
110 A(J,I)=HOLD 00052200
|
|
120 J=M(K) 00052300
|
|
IF(J-K) 100,100,125 00052400
|
|
125 DO130 I=1,N 00052500
|
|
HOLD=A(K,I) 00052600
|
|
A(K,I)=-A(J,I) 00052700
|
|
130 A(J,I)=HOLD 00052800
|
|
GO TO 100 00052900
|
|
150 CONTINUE 00053000
|
|
IF(D) 160,999,160 00053100
|
|
999 WRITE (6,995) 00053200
|
|
995 FORMAT(49H ERROR IN ATTEMPTING TO INVERT A SINGULAR MATRIX. ) 00053300
|
|
160 RETURN 00053400
|
|
END 00053500
|
|
CPLOT SUBROUTINE PLOT FOR BMD06R JULY 22, 1964 00053600
|
|
SUBROUTINE PLOT (ICOUNT) 00053700
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00053800
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00053900
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00054000
|
|
3,N1(1000),N2(1000) ,XY(51,101) 00054100
|
|
DIMENSION FMT(120) 00054200
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00054300
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200054400
|
|
2,RS, AS,BS,SUMSQS,AVE 00054500
|
|
3,X2,Y2,Y3,I5,I6 00054600
|
|
4,XR,YR,XMAX,XY,NCC,JX,XIJ,TC,TP,JY,YIJ,YMIN,IC,YMAX 00054700
|
|
EQUIVALENCE(X1,PRE,U) 00054800
|
|
A=AS(ICOUNT) 00054900
|
|
B=BS(ICOUNT) 00055000
|
|
R=RS(ICOUNT+1) 00055100
|
|
SS=10.0**10 00055200
|
|
FF=-10.0**10 00055300
|
|
XS=SS 00055400
|
|
XL=FF 00055500
|
|
DO 300 I=1,NXY 00055600
|
|
XS=AMIN1(XS,X2(I)) 00055700
|
|
XL=AMAX1(XL,X2(I)) 00055800
|
|
SS=AMIN1(SS,AVE(I),PRE(I)) 00055900
|
|
300 FF=AMAX1(FF,AVE(I),PRE(I)) 00056000
|
|
WRITE (6,100) 00056100
|
|
WRITE (6,201) 00056200
|
|
C MXY AND LYNN ARE DUMMY VARIABLES FOR SUBROUTINE SCALE. 00056300
|
|
CALL SCALE(SS,FF,100.0,MXY,S1,F1,LYNN,FF) 00056400
|
|
IF(B)210,211,211 00056500
|
|
210 WRITE (6,204) 00056600
|
|
GO TO 220 00056700
|
|
211 WRITE ( 6,215) 00056800
|
|
220 WRITE ( 6,218)S1,F1 00056900
|
|
MXY=NXY 00057000
|
|
LYNN=0 00057100
|
|
303 IF(MXY-50) 301,302,302 00057200
|
|
301 LYNN=LYNN+1 00057300
|
|
MXY=LYNN*MXY 00057400
|
|
GO TO 303 00057500
|
|
DIMENSION SYM(15),YYY(15) 00057600
|
|
302 SYM(1)=(+6HA00000) 00057700
|
|
SYM(2)=(+6HP00000) 00057800
|
|
DO 50 I=1,NXY 00057900
|
|
XX=X2(I) 00058000
|
|
YYY(2)=PRE(I) 00058100
|
|
YYY(1)=AVE(I) 00058200
|
|
CALL PLOTR(XX,XS,XL,YYY,SYM,SS,FF,2,-1,FF,XL) 00058300
|
|
IF(LYNN) 50,50,304 00058400
|
|
304 DO 305 J=1,LYNN 00058500
|
|
305 WRITE (6,101) 00058600
|
|
50 CONTINUE 00058700
|
|
CALL PLOTR(XX,XS,XL,YYY,SYM,SS,FF,-1,-1,FF,XL) 00058800
|
|
100 FORMAT(12H1GRAPH CODES//13H A=AVERAGED Y/14H P=PREDICTED Y) 00058900
|
|
101 FORMAT(1H ) 00059000
|
|
201 FORMAT(48H0X AND Y VALUES ARE PLOTTED IN TRANSFORMED UNITS) 00059100
|
|
204 FORMAT(19H ASYMPTOTE AT RIGHT) 00059200
|
|
215 FORMAT(18H ASYMPTOTE AT LEFT) 00059300
|
|
218 FORMAT(26H GRAPH SCALE EXTENDS FROM F10.4,4H TO F10.4) 00059400
|
|
403 RETURN 00059500
|
|
END 00059600
|
|
CPLOTR SUBROUTINE PLOTR JULY 20, 1964 00059700
|
|
SUBROUTINE PLOTR(X,ZMIN,ZMAX,Y,SYM,WMIN,WMAX,NC,NP,YRMA,XRMA) 00059800
|
|
DIMENSION XY(51,101),Y(15),CLAB(12),XM(6),SYM(15),GF(10),F2T(10) 00059900
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00060000
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00060100
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00060200
|
|
3,N1(1000),N2(1000) 00060300
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00060400
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200060500
|
|
2,RS, AS,BS,SUMSQS,AVE 00060600
|
|
3,X2,Y2,Y3,I5,I6 00060700
|
|
4,XR,YR,XMAX,XY,NCC,JX,XIJ,TC,TP,JY,YIJ,YMIN,IC,YMAX 00060800
|
|
EQUIVALENCE(X1,PRE,U) 00060900
|
|
C 00061000
|
|
C PLOTR WAS MODIFIED THIS DATE TO GIVE BETTER SCALES. 00061100
|
|
C 00061200
|
|
C 00061300
|
|
100 FORMAT(1H 6X5(F12.3,8X),F12.3/17X,5(F12.3,8X)) 00061400
|
|
101 FORMAT(1H F12.3,1X,A1,101A1,A1) 00061500
|
|
102 FORMAT(1H 13X,A1,101A1,A1) 00061600
|
|
1000 FORMAT(1H 14X,101A1) 00061700
|
|
1001 FORMAT(15X,20(5H+....),1H+) 00061800
|
|
BLANKS=(+6H ) 00061900
|
|
BLANK=(+1H ) 00062000
|
|
C XM(1)=770000000000 00062100
|
|
C XM(2)=007700000000 00062200
|
|
C XM(3)=000077000000 00062300
|
|
C XM(4)=000000770000 00062400
|
|
C XM(5)=000000007700 00062500
|
|
C XM(6)=000000000077 00062600
|
|
GF(1)=(+6H1X ) 00062700
|
|
GF(2)=(+6H2X ) 00062800
|
|
GF(3)=(+6H3X ) 00062900
|
|
GF(4)=(+6H4X ) 00063000
|
|
GF(5)=(+6H5X ) 00063100
|
|
GF(6)=(+6H6X ) 00063200
|
|
GF(7)=(+6H7X ) 00063300
|
|
GF(8)=(+6H8X ) 00063400
|
|
GF(9)=(+6H9X ) 00063500
|
|
GF(10)=(+6H10X ) 00063600
|
|
F2T(1)=(+6H (17X ) 00063700
|
|
F2T(2)=BLANKS 00063800
|
|
F2T(3)=BLANKS 00063900
|
|
F2T(4)=(+6H4(F12.) 00064000
|
|
F2T(5)=(+6H3,8X),) 00064100
|
|
F2T(6)=(+6HF12.3 ) 00064200
|
|
F2T(7)=(+6H/7X ) 00064300
|
|
F2T(8)=BLANKS 00064400
|
|
F2T(9)=(+6H5(F12.) 00064500
|
|
F2T(10)=(+6H3,8X))) 00064600
|
|
IF (JY.EQ.0) GO TO 3002 00064700
|
|
IF (JY.LT.11 .AND. JY.GT.0) GO TO 3000 00064800
|
|
JY=1 00064900
|
|
3000 F2T(3)=GF(JY) 00065000
|
|
F2T(8)=GF(JY) 00065100
|
|
3002 IF(NCC)48,50,48 00065200
|
|
50 KL=0 00065300
|
|
TC=(+1H.) 00065400
|
|
TP=(+1H+) 00065500
|
|
CALL SCALE(WMIN,WMAX,100.0,JY,YMIN,YMAX,YIJ,YRMA) 00065600
|
|
YR=YMAX-YMIN 00065700
|
|
230 J=JY 00065800
|
|
IF(J*(J-10))204,201,201 00065900
|
|
201 IF(KL)220,220,231 00066000
|
|
231 WRITE (6,1001 ) 00066100
|
|
IF(KL)250,250,220 00066200
|
|
220 CLAB(1)= YMIN 00066300
|
|
DO 222 I=2,11 00066400
|
|
222 CLAB(I)=CLAB(I-1)+YIJ 00066500
|
|
WRITE (6,100)(CLAB(I),I=1,11,2),(CLAB(K),K=2,10,2) 00066600
|
|
IF(KL)231,231,14 00066700
|
|
204 IF(J-5)205,221,207 00066800
|
|
207 J=J-5 00066900
|
|
205 JYT=5-J 00067000
|
|
221 CONTINUE 00067100
|
|
IF(KL)226,226,227 00067200
|
|
226 F2T(3)=GF(JY) 00067300
|
|
225 F2T(8)=GF(JY) 00067400
|
|
TT=JY 00067500
|
|
TT=TT*YIJ/10. 00067600
|
|
CLAB(1)= YMIN+TT 00067700
|
|
DO 223 I=2,10 00067800
|
|
223 CLAB(I)=CLAB(I-1) +YIJ 00067900
|
|
WRITE (6,F2T)(CLAB(I),I=2,10,2),(CLAB(K),K=1,9 ,2) 00068000
|
|
IF(KL)227,227,14 00068100
|
|
227 IF(JY-5)208,209,208 00068200
|
|
209 WRITE (6,1001 ) 00068300
|
|
IF(KL)250,250,226 00068400
|
|
208 WRITE (6,1000)(TC,I=1,J ),((TP,(TC,I=1,4)),K=1,19),TP,(00068500
|
|
1 TC,I=1,JYT) 00068600
|
|
IF(KL)250,250,226 00068700
|
|
250 CONTINUE 00068800
|
|
NCC=1 00068900
|
|
IC=0 00069000
|
|
IF(NP)80,11,11 00069100
|
|
11 DO 1 I=1,51 00069200
|
|
DO 1 J=1,101 00069300
|
|
1 XY(I,J)=BLANK 00069400
|
|
CALL SCALE (ZMIN,ZMAX,50.,JX,XMIN,XMAX,XIJ,XRMA) 00069500
|
|
XR=XMAX-XMIN 00069600
|
|
48 IF(NC)52,13,49 00069700
|
|
49 IF(NP)80,10,10 00069800
|
|
10 DO 9 N=1,NC 00069900
|
|
SYMB=SYM(N) 00070000
|
|
XDIFFR=XMAX-X 00070100
|
|
IF(XDIFFR)105,106,106 00070200
|
|
105 XDIFFR=0.0 00070300
|
|
106 YDIFFR=YMAX-Y(N) 00070400
|
|
IF(YDIFFR)107,108,108 00070500
|
|
107 YDIFFR=0.0 00070600
|
|
108 L=51.-(50.*XDIFFR)/XR+.5 00070700
|
|
K=101.-(100.*YDIFFR)/YR+.5 00070800
|
|
C CALL FORM2(T,M,SYMB) 00070900
|
|
XY(L,K)=SYM(N) 00071000
|
|
9 CONTINUE 00071100
|
|
GO TO 15 00071200
|
|
80 DO 86 I=1,101 00071300
|
|
86 XY(1,I)=BLANK 00071400
|
|
L=1 00071500
|
|
DO 95 N=1,NC 00071600
|
|
SYMB=SYM(N) 00071700
|
|
YDIFFR=YMAX-Y(N) 00071800
|
|
IF(YDIFFR)860,865,865 00071900
|
|
860 YDIFFR=0.0 00072000
|
|
865 K=101.-(100.*YDIFFR)/YR+.5 00072100
|
|
C CALL FORM2(T,M,SYMB) 00072200
|
|
IF (XY(L,K).EQ.BLANK) GO TO 3005 00072300
|
|
XY(L,K)=(+1HB) 00072400
|
|
GO TO 95 00072500
|
|
3005 XY(L,K)=SYM(N) 00072600
|
|
95 CONTINUE 00072700
|
|
IF( MOD (IC,5))97,96,97 00072800
|
|
96 W=TP 00072900
|
|
GO TO 98 00073000
|
|
97 W=TC 00073100
|
|
98 WRITE (6,101)X,W,(XY(1,N),N=1,101),W 00073200
|
|
IC=IC+1 00073300
|
|
GO TO 15 00073400
|
|
13 M=6-JX 00073500
|
|
LL=50+M 00073600
|
|
T=JX 00073700
|
|
IF(5-JX)131,131,135 00073800
|
|
131 T=0.0 00073900
|
|
135 RLAB=XMAX-(T*XIJ)/5.0 00074000
|
|
W=TC 00074100
|
|
K=52 00074200
|
|
DO 31 L=M,LL 00074300
|
|
K=K-1 00074400
|
|
I= MOD (L,5) 00074500
|
|
IF(I-1)2,3,2 00074600
|
|
3 W=TP 00074700
|
|
WRITE (6,101)RLAB,W,(XY(K,N),N=1,101),W 00074800
|
|
RLAB=RLAB-XIJ 00074900
|
|
W=TC 00075000
|
|
GO TO 31 00075100
|
|
2 WRITE (6,102)W,(XY(K,N),N=1,101),W 00075200
|
|
31 CONTINUE 00075300
|
|
52 KL=1 00075400
|
|
GO TO 230 00075500
|
|
14 NCC=0 00075600
|
|
15 RETURN 00075700
|
|
END 00075800
|
|
CREAD SUBROUTINE READ FOR BMD06R MAY 13, 1964 00075900
|
|
SUBROUTINE READ 00076000
|
|
DIMENSION FMT(120),Z(1000) 00076100
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00076200
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00076300
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00076400
|
|
3,N1(1000),N2(1000) 00076500
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00076600
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200076700
|
|
2,RS, AS,BS,SUMSQS,AVE 00076800
|
|
3,X2,Y2,Y3,I5,I6 00076900
|
|
EQUIVALENCE (X1,PRE,U),(IA1,A1) 00077000
|
|
A1=(+6HSAMSIZ) 00077100
|
|
G123=(+2HXY) 00077200
|
|
NS=0 00077300
|
|
NCARDS=(NXY+21)/22 00077400
|
|
L2=0 00077500
|
|
DO 50 J=1,NCARDS 00077600
|
|
L1=L2+1 00077700
|
|
L2=L2+22 00077800
|
|
IF(NXY-L2)35,36,36 00077900
|
|
35 L2=NXY 00078000
|
|
36 READ (5,103)ISAM,(N1(I),I=L1,L2) 00078100
|
|
IF(ISAM-IA1)40,50,40 00078200
|
|
40 WRITE (6, 4000)A1 00078300
|
|
NXY=-22 00078400
|
|
50 CONTINUE 00078500
|
|
IF(NXY)55,55,56 00078600
|
|
55 CALL EXIT 00078700
|
|
56 NTOT=0 00078800
|
|
DO 70 I=1,NXY 00078900
|
|
IF(N1(I))80,80,75 00079000
|
|
80 N1(I)= 1 00079100
|
|
75 NTOT=NTOT+N1(I) 00079200
|
|
70 CONTINUE 00079300
|
|
IF(NTOT-5000)4,4,300 00079400
|
|
4 KVT=KVT*12 00079500
|
|
READ (5,101)(FMT(I),I=1,KVT) 00079600
|
|
JUMP=1 00079700
|
|
5 IF (TXY-G123) 6,7,6 00079800
|
|
6 JUMP=2 00079900
|
|
7 DO 25 I=1,NXY 00080000
|
|
NY=N1(I) 00080100
|
|
GO TO (9,11), JUMP 00080200
|
|
9 READ (I5,FMT)D,(Z(J),J=1,NY) 00080300
|
|
X1(I)=D 00080400
|
|
DO 19 J=1,NY 00080500
|
|
16 NS=NS+1 00080600
|
|
Y2(NS)=Z(J) 00080700
|
|
19 CONTINUE 00080800
|
|
GO TO 25 00080900
|
|
11 READ ( 5,FMT)(Z(J),J=1,NY),D 00081000
|
|
X1(I)=D 00081100
|
|
DO 24 J=1,NY 00081200
|
|
26 NS=NS+1 00081300
|
|
Y2(NS)=Z(J) 00081400
|
|
24 CONTINUE 00081500
|
|
25 CONTINUE 00081600
|
|
101 FORMAT(12A6) 00081700
|
|
102 FORMAT(12F6.0) 00081800
|
|
103 FORMAT(A6,22I3) 00081900
|
|
4000 FORMAT(1H0,A6,33H CARD MISPUNCHED OR OUT OF ORDER.) 00082000
|
|
4010 FORMAT(84H0TOTAL NUMBER OF VALUES FOR DEPENDENT VARIABLE EXCEEDS 500082100
|
|
1000. PROGRAM CANNOT PROCEED.) 00082200
|
|
RETURN 00082300
|
|
300 WRITE (6, 4010) 00082400
|
|
GO TO 55 00082500
|
|
END 00082600
|
|
CREGRES SUBROUTINE REGRES FOR BMD06R 00082700
|
|
SUBROUTINE REGRES (X, F, N, C) 00082800
|
|
DIMENSIONA(9),B(3),C(9),F(1),X(1) 00082900
|
|
DO 1 I=1,9 00083000
|
|
1 A(I)=0. 00083100
|
|
B(1) = 0. 00083200
|
|
B(2) = 0. 00083300
|
|
B(3) = 0. 00083400
|
|
DO 100 I=1,N 00083500
|
|
X2 = X(I)**2 00083600
|
|
A(2) = A(2)+X(I) 00083700
|
|
A(3) = A(3) +X2 00083800
|
|
A(6) = A(6) + X2*X(I) 00083900
|
|
A(9) = A(9) + X2**2 00084000
|
|
B(1) = B(1) + F(I) 00084100
|
|
B(2) = B(2) +F(I)*X(I) 00084200
|
|
B(3) = B(3)+ F(I)*X2 00084300
|
|
100 CONTINUE 00084400
|
|
A(1) = N 00084500
|
|
A(4) = A(2) 00084600
|
|
A(5) = A(3) 00084700
|
|
A(7) = A(3) 00084800
|
|
A(8) = A(6) 00084900
|
|
D = A(1)*A(5)-A(2)**2 00085000
|
|
C(1) = (A(5)*B(1)-A(2)*B(2))/D 00085100
|
|
C(2) = (-A(2)*B(1)+A(1)*B(2))/D 00085200
|
|
CALL INVERT(A,3) 00085300
|
|
C(3) = A(1)*B(1)+A(2)*B(2) +A(3)*B(3) 00085400
|
|
C(4) = A(4) *B(1) + A(5)*B(2) + A(6)*B(3) 00085500
|
|
C(5) = A(7) *B(1) + A(8)*B(2) + A(9)*B(3) 00085600
|
|
RETURN 00085700
|
|
99 FORMAT(3X,3F20.5) 00085800
|
|
END 00085900
|
|
CSETUP SUBROUTINE SETUP FOR BMD06R SEPTEMBER 23,1965 00086000
|
|
SUBROUTINE SETUP 00086100
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00086200
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00086300
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00086400
|
|
3,N1(1000),N2(1000) 00086500
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00086600
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200086700
|
|
2,RS, AS,BS,SUMSQS,AVE 00086800
|
|
3,X2,Y2,Y3,I5,I6 00086900
|
|
EQUIVALENCE(X1,PRE,U) 00087000
|
|
V=ALOG(R) 00087100
|
|
DO 10 I=1,3 00087200
|
|
DO 10 J=1,3 00087300
|
|
10 C(I,J)=0.0 00087400
|
|
TY1=0.0 00087500
|
|
TY2=0.0 00087600
|
|
DO 20 I=1,NXY 00087700
|
|
FN=N1(I) 00087800
|
|
C(1,1)=C(1,1)+FN 00087900
|
|
U(I)=EXP (X2(I)*V) 00088000
|
|
U3=X2(I)*U(I)/R 00088100
|
|
U4=U(I)**2 00088200
|
|
U5=X2(I)*U4/R 00088300
|
|
U6=X2(I)*U5/R 00088400
|
|
C(1,2)=C(1,2)+(U(I)*FN) 00088500
|
|
C(1,3)=C(1,3)+(U3*FN) 00088600
|
|
C(2,2)=C(2,2)+(U4*FN) 00088700
|
|
C(2,3)=C(2,3)+(U5*FN) 00088800
|
|
C(3,3)=C(3,3)+(U6*FN) 00088900
|
|
TY1=TY1+U(I)*AVE(I)*FN 00089000
|
|
15 TY2=TY2+U3*AVE(I)*FN 00089100
|
|
20 CONTINUE 00089200
|
|
C(3,1)=C(1,3) 00089300
|
|
C(3,2)=C(2,3) 00089400
|
|
C(2,1)=C(1,2) 00089500
|
|
Y012(2)=TY1 00089600
|
|
Y012(3)=TY2 00089700
|
|
DO 30 I=1,3 00089800
|
|
DO 30 J=1,3 00089900
|
|
30 C1(I,J)=C(I,J) 00090000
|
|
RETURN 00090100
|
|
END 00090200
|
|
CSORTX SUBROUTINE SORTX FOR BMD06R 9-6-6300090300
|
|
SUBROUTINE SORTX 00090400
|
|
DIMENSION N3(1000),N4(1000) ,N1(1000),N2(1000) 00090500
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00090600
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00090700
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00090800
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00090900
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200091000
|
|
2,RS, AS,BS,SUMSQS,AVE 00091100
|
|
3,X2,Y2,Y3,I5,I6 00091200
|
|
EQUIVALENCE(X1,PRE,U) 00091300
|
|
NF=0 00091400
|
|
DO 60 I=1,NXY 00091500
|
|
33 N3(I)=I 00091600
|
|
60 N4(I)=N1(I) 00091700
|
|
DO 10 I=1,NXY 00091800
|
|
DO 5 J=I,NXY 00091900
|
|
IF(X2(I)-X2(J)) 5,5,4 00092000
|
|
4 XD=X2(I) 00092100
|
|
X2(I)=X2(J) 00092200
|
|
X2(J)=XD 00092300
|
|
K1=N3(I) 00092400
|
|
N3(I)=N3(J) 00092500
|
|
N3(J)=K1 00092600
|
|
K2=N1(I) 00092700
|
|
N1(I)=N1(J) 00092800
|
|
N1(J)=K2 00092900
|
|
5 CONTINUE 00093000
|
|
10 CONTINUE 00093100
|
|
DO 6 I=1,NXY 00093200
|
|
K1=N3(I) 00093300
|
|
NE=N2(K1) 00093400
|
|
NS=NE-N4(K1)+1 00093500
|
|
DO 3 K=NS,NE 00093600
|
|
NF=NF+1 00093700
|
|
3 Y3(NF)=Y2(K) 00093800
|
|
6 CONTINUE 00093900
|
|
DO 20 I=1,NXY 00094000
|
|
20 N2(I)=0 00094100
|
|
N2(1)=N1(1) 00094200
|
|
DO 30 I=2,NXY 00094300
|
|
30 N2(I)=N2(I-1)+N1(I) 00094400
|
|
RETURN 00094500
|
|
END 00094600
|
|
CTRANX SUBROUTINE TRANX FOR BMD06R MAY 13, 1964 00094700
|
|
SUBROUTINE TRANX 00094800
|
|
ASNF(XX)=ATAN (XX/(SQRT (1.0-XX**2))) 00094900
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00095000
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00095100
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00095200
|
|
3,N1(1000),N2(1000) 00095300
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00095400
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200095500
|
|
2,RS, AS,BS,SUMSQS,AVE 00095600
|
|
3,X2,Y2,Y3,I5,I6 00095700
|
|
EQUIVALENCE(X1,PRE,U) 00095800
|
|
LTRANX=LTRANX-1 00095900
|
|
KTRANX=LTRANX 00096000
|
|
IF(LTRANX*(LTRANX-11))5,150,175 00096100
|
|
5 DO 100 I=1,NXY 00096200
|
|
D=X1(I) 00096300
|
|
GO TO (10,20,30,40,50,60,70,80,90,200,170),LTRANX 00096400
|
|
10 IF(D)160,11,12 00096500
|
|
11 X2(I)=0.0 00096600
|
|
GO TO 100 00096700
|
|
12 X2(I)=SQRT (D) 00096800
|
|
GO TO 100 00096900
|
|
20 IF(D)160,21,22 00097000
|
|
21 X2(I)=1.0 00097100
|
|
GO TO 100 00097200
|
|
22 X2(I)=SQRT (D)+SQRT (D+1.0) 00097300
|
|
GO TO 100 00097400
|
|
30 IF(D)160,160,31 00097500
|
|
31 X2(I)=ALOG10(D) 00097600
|
|
GO TO 100 00097700
|
|
40 X2(I)=EXP (D) 00097800
|
|
GO TO 100 00097900
|
|
50 IF(D)160,11,51 00098000
|
|
51 IF(D-1.0)52,53,160 00098100
|
|
52 A=SQRT (D) 00098200
|
|
X2(I)=ASNF(A) 00098300
|
|
GO TO 100 00098400
|
|
53 X2(I)=1.57079633 00098500
|
|
GO TO 100 00098600
|
|
60 FN=NXY 00098700
|
|
A=D/(FN+1.0) 00098800
|
|
B=A+1.0/(FN+1.0) 00098900
|
|
IF(A)160,61,62 00099000
|
|
61 IF(B)160,11,64 00099100
|
|
62 IF(B)160,65,66 00099200
|
|
64 X2(I)=ASNF(SQRT (B)) 00099300
|
|
GO TO 100 00099400
|
|
65 X2(I)=ASNF(SQRT (A)) 00099500
|
|
GO TO 100 00099600
|
|
66 X2(I)=ASNF(SQRT (A))+ASNF(SQRT (B)) 00099700
|
|
GO TO 100 00099800
|
|
70 IF(D)71,160,71 00099900
|
|
71 X2(I)=1.0/D 00100000
|
|
GO TO 100 00100100
|
|
80 X2(I)=D+CONSX 00100200
|
|
GO TO 100 00100300
|
|
90 X2(I)=D*CONSX 00100400
|
|
GO TO 100 00100500
|
|
200 IF(D)210,11,210 00100600
|
|
210 X2(I)=D**CONSX 00100700
|
|
GO TO 100 00100800
|
|
170 IF(D)155,155,171 00100900
|
|
171 X2(I) = ALOG(D) 00101000
|
|
GO TO 100 00101100
|
|
150 WRITE (6, 4000) 00101200
|
|
4000 FORMAT(108H0ILLEGAL TRANSGENERATION CODE FOR THE INDEPENDENT VARIA00101300
|
|
1BLE. PROGRAM WILL PROCEED LEAVING VARIABLE UNCHANGED.) 00101400
|
|
X2(I)=D 00101500
|
|
GO TO 100 00101600
|
|
155 KTRANX=17 00101700
|
|
160 WRITE (6,4010)I,KTRANX 00101800
|
|
X2(I)=D 00101900
|
|
GO TO 100 00102000
|
|
4010 FORMAT(4H0THEI4,94HTH. VALUE OF THE INDEPENDENT VARIABLE VIOLATES 00102100
|
|
1THE RESTRICTION FOR TRANSGENERATION OF THE TYPEI3,1H./52H THE PROG00102200
|
|
2RAM CONTINUES LEAVING THIS VALUE UNCHANGED.) 00102300
|
|
175 IF(LTRANX-17)150,176,150 00102400
|
|
176 LTRANX=11 00102500
|
|
GO TO 5 00102600
|
|
100 CONTINUE 00102700
|
|
RETURN 00102800
|
|
END 00102900
|
|
CTRANSY SUBROUTINE TRANSY FOR BMD06R MAY 13, 1964 00103000
|
|
SUBROUTINE TRANSY 00103100
|
|
ASNF(XX)=ATAN (XX/(SQRT (1.0-XX**2))) 00103200
|
|
DIMENSION X1(1000),X2(1000), Y2(5000), NTL(00103300
|
|
110),CONT(10),Y3(5000),C(3,3),C1(3,3),Y012(3),RS(51),U(1000),AS(50)00103400
|
|
2,BS(50),SUMSQS(51),AVE(1000),PRE(1000) 00103500
|
|
3,N1(1000),N2(1000) 00103600
|
|
COMMON NXY,TXY,NY,D123, TRANS,LTRANX,CONST,CONSX,KVT,SWITCH00103700
|
|
1,X1,Y1,N1,NS,N2,NTL,CONT,IPASS,IX,IY,YV,R0,C,C1,TY0,TY1,TY2,R,Y01200103800
|
|
2,RS, AS,BS,SUMSQS,AVE 00103900
|
|
3,X2,Y2,Y3,I5,I6 00104000
|
|
EQUIVALENCE(X1,PRE,U) 00104100
|
|
C123=(+6HSPECTG) 00104200
|
|
READ (5,1101)TODE,NT,(NTL(I),CONT(I),I=1,NT) 00104300
|
|
IF (C123-TODE) 203,300,203 00104400
|
|
300 WRITE ( 6,1102) 00104500
|
|
WRITE (6,1103) 00104600
|
|
DO 114 I=1,NT 00104700
|
|
114 WRITE ( 6,1104)NTL(I),CONT(I),I 00104800
|
|
9 DO 99 I=1,NT 00104900
|
|
JUMP=NTL(I)+1 00105000
|
|
FMULY=CONT(I) 00105100
|
|
IF(JUMP*(JUMP-19))200,203,203 00105200
|
|
200 IF(11-JUMP)204,201,201 00105300
|
|
204 IF(JUMP-18)203,202,203 00105400
|
|
202 JUMP=12 00105500
|
|
201 DO 98 J=1,NXY 00105600
|
|
NE=N2(J) 00105700
|
|
NS=NE-N1(J)+1 00105800
|
|
GO TO(99,10,20,30,40,50,60,70,80,90,100,110),JUMP 00105900
|
|
10 DO 11 K=NS,NE 00106000
|
|
IF(Y2(K))88,13,14 00106100
|
|
13 Y2(K)=0.0 00106200
|
|
GO TO 11 00106300
|
|
14 Y2(K)=SQRT (Y2(K)) 00106400
|
|
11 CONTINUE 00106500
|
|
GO TO 98 00106600
|
|
20 DO 21 K=NS,NE 00106700
|
|
IF(Y2(K))88,22,23 00106800
|
|
22 Y2(K)=1.0 00106900
|
|
GO TO 21 00107000
|
|
23 Y2(K)=SQRT (Y2(K))+SQRT (Y2(K)+1.0) 00107100
|
|
21 CONTINUE 00107200
|
|
GO TO 98 00107300
|
|
30 DO 31 K=NS,NE 00107400
|
|
IF(Y2(K))88,88,31 00107500
|
|
31 Y2(K)=ALOG10(Y2(K)) 00107600
|
|
GO TO 98 00107700
|
|
40 DO 41 K=NS,NE 00107800
|
|
41 Y2(K)=EXP (Y2(K)) 00107900
|
|
GO TO 98 00108000
|
|
50 DO 51 K=NS,NE 00108100
|
|
IF(Y2(K))88,52,53 00108200
|
|
52 Y2(K)=0.0 00108300
|
|
GO TO 51 00108400
|
|
53 IF(Y2(K)-1.0)54,55,88 00108500
|
|
54 A=SQRT (Y2(K)) 00108600
|
|
Y2(K)=ASNF(A) 00108700
|
|
GO TO 51 00108800
|
|
55 Y2(K)=3.14159265/2.0 00108900
|
|
51 CONTINUE 00109000
|
|
GO TO 98 00109100
|
|
60 DIV=N1(J) 00109200
|
|
DO 61 K=NS,NE 00109300
|
|
A=Y2(K)/(DIV+1.0) 00109400
|
|
B=A+1.0/(DIV+1.0) 00109500
|
|
IF(A)88,62,63 00109600
|
|
62 IF(B)88,64,65 00109700
|
|
64 Y2(K)=0.0 00109800
|
|
GO TO 61 00109900
|
|
65 Y2(K)=ASNF(SQRT (B)) 00110000
|
|
GO TO 61 00110100
|
|
63 IF(B)88,66,67 00110200
|
|
66 Y2(K)=ASNF(SQRT (A)) 00110300
|
|
GO TO 61 00110400
|
|
67 Y2(K)=ASNF(SQRT (A))+ASNF(SQRT (B)) 00110500
|
|
61 CONTINUE 00110600
|
|
GO TO 98 00110700
|
|
70 DO 71 K=NS,NE 00110800
|
|
IF(Y2(K)) 71,88,71 00110900
|
|
71 Y2(K)=1.0/Y2(K) 00111000
|
|
GO TO 98 00111100
|
|
80 DO 81 K=NS,NE 00111200
|
|
81 Y2(K)=Y2(K)+FMULY 00111300
|
|
GO TO 98 00111400
|
|
90 DO 91 K=NS,NE 00111500
|
|
91 Y2(K)=Y2(K)*FMULY 00111600
|
|
GO TO 98 00111700
|
|
100 DO 101 K=NS,NE 00111800
|
|
IF(Y2(K))102,103,102 00111900
|
|
103 Y2(K)=0.0 00112000
|
|
GO TO 101 00112100
|
|
102 Y2(K)=Y2(K)**FMULY 00112200
|
|
101 CONTINUE 00112300
|
|
GO TO 98 00112400
|
|
110 DO 111 K=NS,NE 00112500
|
|
IF(Y2(K))88,88,111 00112600
|
|
111 Y2(K)=ALOG(Y2(K)) 00112700
|
|
98 CONTINUE 00112800
|
|
99 CONTINUE 00112900
|
|
GO TO 1000 00113000
|
|
203 WRITE (6,4000)NTL(I) 00113100
|
|
GO TO 99 00113200
|
|
4000 FORMAT(29H0ILLEGAL TRANSGENERATION CODEI3,93H SPECIFIED FOR THE DE00113300
|
|
1PENDENT VARIABLE. THE PROGRAM WILL PROCEED WITHOUT THIS TRANSGENER00113400
|
|
2ATION.) 00113500
|
|
88 N=K-NS+1 00113600
|
|
WRITE (6,4010)N,J,NTL(I) 00113700
|
|
GO TO 98 00113800
|
|
4010 FORMAT(4H0THEI4,56HTH. VALUE OF THE DEPENDENT VARIABLE CORRESPONDI00113900
|
|
1NG TO THEI4,37HTH. VALUE OF THE INDEPENDENT VARIABLE/57H VIOLATES 00114000
|
|
2THE RESTRICTION FOR TRANSGENERATION OF THE TYPEI3,1H.52H THE PROGR00114100
|
|
3AM CONTINUES LEAVING THIS VALUE UNCHANGED.) 00114200
|
|
1101 FORMAT(A6,I1,8(I2,F6.0)) 00114300
|
|
1102 FORMAT(20H0TRANSFORMATION CARD) 00114400
|
|
1103 FORMAT(27H0 CODE CONSTANT PASS NO.) 00114500
|
|
1104 FORMAT(1H0I5,F13.4,I5) 00114600
|
|
1000 RETURN 00114700
|
|
END 00114800
|
|
CVFCHCK SUBROUTINE TO CHECK FOR PROPER NUMBER OF VARIABLE FORMAT CRDS00114900
|
|
SUBROUTINE VFCHCK(NVF) 00115000
|
|
IF(NVF)10,10,20 00115100
|
|
10 WRITE (6,4000 ) 00115200
|
|
NVF=1 00115300
|
|
50 RETURN 00115400
|
|
C 00115500
|
|
20 IF(NVF-10)50,50,10 00115600
|
|
C 00115700
|
|
4000 FORMAT(1H023X71HNUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIF00115800
|
|
XIED, ASSUMED TO BE 1.) 00115900
|
|
C 00116000
|
|
END 00116100
|
|
CSCALE SUBROUTINE SCALE FOR SUB PLOTR AUGUST 18, 1964 00116200
|
|
SUBROUTINE SCALE(YMIN,YMAX,YINT,JY,TYMIN,TYMAX,YIJ,YRMA) 00116300
|
|
DIMENSION C(10) 00116400
|
|
C(1)= 1.0 00116500
|
|
C(2)=1.5 00116600
|
|
C(3)=2.0 00116700
|
|
C(4)=3.0 00116800
|
|
C(5)=4.0 00116900
|
|
C(6)=5.0 00117000
|
|
C(7)=7.5 00117100
|
|
C(8)=10.0 00117200
|
|
C TEST=154400000000 00117300
|
|
50 YR=YMAX-YMIN 00117400
|
|
TT=YR/YINT 00117500
|
|
J=ALOG10(TT) 00117600
|
|
E=10.0**J 00117700
|
|
TT=TT/E 00117800
|
|
I=0 00117900
|
|
IF(TT-1.0)205,201,201 00118000
|
|
205 TT=TT*10.0 00118100
|
|
E=E/10.0 00118200
|
|
201 I=I+1 00118300
|
|
IF(8-I)1,2,2 00118400
|
|
1 E=E*10.0 00118500
|
|
I=1 00118600
|
|
2 T3 = TT - C(I) 00118700
|
|
IF (T3 .GT. .000001 .OR. T3 .LT. -.000001) GO TO 252 00118800
|
|
TT = INT(TT* 1000000)/1000000 00118900
|
|
252 IF (TT-C(I)) 233,202,201 00119000
|
|
233 YIJ=C(I)*E 00119100
|
|
GO TO 203 00119200
|
|
202 Y=YMIN/C(I) 00119300
|
|
J=Y 00119400
|
|
T=J 00119500
|
|
C IF(0.0001-ABS (T-Y))204,233,233 00119600
|
|
GO TO 233 00119700
|
|
204 YIJ=C(I+1)*E 00119800
|
|
203 X=((YMAX+YMIN)/YIJ-YINT )/2.0+.00001 00119900
|
|
K=X 00120000
|
|
IF(K)235,240,240 00120100
|
|
235 Y=K 00120200
|
|
IF(X-Y)236,240,236 00120300
|
|
236 K=K-1 00120400
|
|
240 TYMIN=K 00120500
|
|
TYMIN=YIJ*TYMIN 00120600
|
|
TYMAX=TYMIN+ YINT*YIJ 00120700
|
|
TEST = YINT *(YIJ/10.0) 00120800
|
|
IF(YRMA-TYMAX-TEST)10,10,201 00120900
|
|
10 TT=YINT/10. 00121000
|
|
JY=TT+.000001 00121100
|
|
YIJ = TEST 00121200
|
|
J=TYMIN/ YIJ 00121300
|
|
IF (K)242,241,241 00121400
|
|
242 J=J-1 00121500
|
|
241 J=J*JY+JY-K 00121600
|
|
JY=J 00121700
|
|
RETURN 00121800
|
|
END 00121900
|