Trailing-Edge
-
PDP-10 Archives
-
decuslib20-05
-
decus/20-0137/bmd/bmd06v.for
There is 1 other file named bmd06v.for in the archive. Click here to see a list.
C GENERAL LINEAR HYPOTHESIS WITH CONTRASTS AUGUST 8, 1966
C THIS IS A SYSTEM/360 FORTRAN IV (LEVEL H) VERSION OF BMD06V
C ORIGINALLY WRITTEN IN FORTRAN II. THE PROGRAM HAS BEEN SIFTED
C AND SLIGHTLY MODIFIED TO MAKE IT OPERABLE ON THE 7094.
C IT HAS BEEN FURTHER MODIFIED TO ALLOW ITS EXECUTION ON THE 360.
C
DIMENSION DATA(100),FMT(10),B(61),C(61,61),CI(61,61),NV(61),
1MV(61),NN(61),P(6),A(61,61),XM(61),GUNK(180),Q(6)
DIMENSION DUMFMT(120)
DOUBLE PRECISION P,RPR,GOBLE0,GOBLE1,GOBLE2,RRD,FMT,
1 RRE,URGLY,COEFFS
COMMON DATA , GUNK , B , C , CI , NV
COMMON MV , NN , Q , A , PR , RD
COMMON NP , NO , NT , NEW , NH , NC
COMMON ND , ON , RE , N1 , N2 , N3
COMMON N4 , NNT , NPP , MMT , MD , OON
COMMON NTAPE , XM , NCOV , NT1 , NT2
C
902 FORMAT('1BMD06V - GENERAL LINEAR HYPOTHESIS WITH CONTRASTS - ',
1'REVISED SEPTEMBER 18, 1968'/
241H HEALTH SCIENCES COMPUTING FACILITY, UCLA)
C
DATA P /6H66F1.0,6H33F2.0,6H22F3.0,6H16F4.0,6H13F5.0,
16H11F6.0/
NTAPE=5
CALL USAGEB('BMD06V')
NT1=2
NT2=3
REWIND NT1
REWIND NT2
10 READ (5,900) RPR,RRD,NP,NO,NT,NEW,NH,NC,MD,MTAPE,NCOV,ND
DATA GOBLE0/6HPROBLM/
IF(RPR.EQ. GOBLE0) GO TO 30
DATA GOBLE1/6HFINISH/
15 IF(RPR.EQ. GOBLE1) GO TO 1000
WRITE(6,10000)
10000 FORMAT(87H0PROBLM OR FINISH IS PUNCHED WRONG ON THE PROPER CARD OR
1 EITHER CARD IS OUT OF SEQUENCE)
STOP
6000 WRITE(6,7000)
7000 FORMAT(55H0COVARS IS PUNCHED WRONG OR COVARS CARD OUT OF SEQUENCE)
STOP
8000 WRITE(6,9000)
9000 FORMAT(55H0COEFFS IS PUNCHED WRONG OR COEFFS CARD OUT OF SEQUEBCE)
STOP
20 WRITE (6,901)
STOP
C
C
C
22 WRITE(6,1022)
1022 FORMAT(55H0VIOLATING THE LIMITATION FOR TOTAL NUMBER OF VARIABLES)
STOP
66 WRITE(6,666)
666 FORMAT(41H0WRONG SET UP IN COL.13-72 ON CNTRST CARD)
GO TO 170
2000 WRITE(6,3000)
3000 FORMAT(39H0ILLEGAL NUMBER OF CASES ON PRMBLM CARD)
STOP
4000 WRITE(6,5000)
5000 FORMAT(45H0ILLEGALLY SPECIFIED NUMBER OF CNTRST CARD(S))
STOP
30 IF((MTAPE-NT1)*(MTAPE-NT2))8,20,8
8 CALL TPWD(MTAPE,NTAPE)
34 NNT=NP+NEW
MMT=NNT-1
ON=NO
IF(NNT.LE.0.OR.NNT.GT.60)GO TO 22
C
WRITE(6,902)
IF(NO.LE.0) GO TO 2000
IF(NH.LE.0) GO TO 4000
WRITE(6,903)RRD,NNT,NO
IF(NC) 40, 40, 35
35 NPP=NP+1
GO TO 45
40 NPP=NP
45 DO 47 I=1,NNT
47 XM(I)=0.0
CALL READ
IF(NEW) 50, 50, 1000
50 IF(NCOV) 53, 53, 52
52 READ(5,924)RRD,(NN(J), J=1,NCOV)
DATA URGLY/6HCOVARS/
DATA COEFFS/6HCOEFFS/
IF(RRD.NE.URGLY) GO TO 6000
53 CALL ADJUST
DO 170 IJ=1,NH
READ(5,904)RRD,NT,ND,MD,(NV(I),I=1,MMT)
DATA GOBLE2/6HCNTRST/
IF(RRD.EQ. GOBLE2) GO TO 60
55 WRITE (6,905) IJ
GO TO 170
60 WRITE (6,906)IJ,(NV(I),I=1,MMT)
NP=0
DO 70 I=1,MMT
IF(NV(I)) 70, 70, 65
65 NP=NP+1
MV(NP)=I
70 CONTINUE
IF(NP) 66, 66, 75
75 DO 80 J=1,NP
N1=MV(J)
DATA(J)=C(N1,NNT)
DO 80 I=1,NP
N2=MV(I)
80 CI(I,J)=C(N2,N1)
WRITE (6,907)
DO 85 I=1,NP
WRITE (6,908)I
85 WRITE (6,909)(CI(I,J),J=1,NP),DATA(I)
CALL INVERT (CI,NP,RD,NV,NN)
WRITE (6,910)
DO 90 I=1,NP
WRITE (6,908)I
90 WRITE (6,909)(CI(I,J),J=1,NP)
DO 95 J=1,NP
B(J)=0.0
DO 95 I=1,NP
95 B(J)=B(J)+CI(I,J)*DATA(I)
IF(MD) 98, 98, 96
96 WRITE (6,921)
98 RD=0.0
NDF=0
DO 108 I=1,NO
READ(NTAPE)(DATA(J),J=1,NNT),PR
RE=0.0
DO 100 J=1,NP
N1=MV(J)
100 RE=RE+DATA(N1)*B(J)
IF(RE) 101, 108, 101
101 OON=DATA(NNT)-RE
NDF=NDF+1
IF(MD) 105, 105, 102
102 WRITE (6,922)I,DATA(NNT),RE,OON
105 RD=RD+(OON**2)*PR
108 CONTINUE
REWIND NTAPE
NDF=NDF-NP
RE=NDF
RD=RD/RE
RE=SQRT(RD)
DO 110 I=1,NP
110 DATA(I)=SQRT(RD*CI(I,I))
WRITE (6,911)
WRITE (6,909)(B(I),I=1,NP)
WRITE (6,912)
WRITE (6,909)(DATA(I),I=1,NP)
WRITE (6,913)RD
WRITE (6,914)RE
WRITE (6,923)NDF
DATA FMT(1)/'( '/
DATA FMT(2)/'A6, '/
FMT(3)=P(ND)
DATA FMT(4)/'/ '/
FMT(5) = FMT(1)
DATA FMT(6)/'6X, '/
FMT(7)=P(ND)
DATA FMT(8)/', '/
DATA FMT(9)/') '/
FMT(10) = FMT(9)
DO 115 I=1,NT
115 READ(5,FMT)RRE,(A(I,J),J=1,NP)
IF(RRE.NE.COEFFS) GO TO 8000
DO 120 I=1,NT
DATA(I)=0.0
DO 120 J=1,NP
120 DATA(I)=DATA(I)+A(I,J)*B(J)
DO 130 I=1,NT
DUMFMT(I)=0.0
DO 125 K=1,NP
DO 125 J=1,NP
125 DUMFMT(I)=DUMFMT(I)+A(I,K)*A(I,J)*CI(J,K)
130 DUMFMT(I)=SQRT(DUMFMT(I)*RD)
DO 132 I=1,NT
132 NN(I)=I
WRITE (6,915)
N1=1
N2=0
135 IF(NT-7) 140, 140, 145
140 N2=N2+NT
GO TO 150
145 N2=N2+7
150 WRITE (6,920)(NN(J),J=N1,N2)
DO 160 I=1,NP
160 WRITE (6,916)MV(I),(A(J,I),J=N1,N2)
WRITE (6,917)(DATA(J),J=N1,N2)
WRITE (6,918) (DUMFMT(J),J=N1,N2)
WRITE (6,919)
NT=NT-7
IF(NT) 170, 170, 165
165 N1=N1+7
GO TO 135
170 CONTINUE
GO TO 10
900 FORMAT(A6,A2,I2,I4,7I2,42X,I2)
901 FORMAT(33H1ERROR ON ASSIGNMENT OF TAPE UNIT)
903 FORMAT(17H0PROBLEM NUMBER A2//17H NO. OF VARIABLESI4/15H SAMPLE S
1IZE I6//)
904 FORMAT(A6,3I2,60I1)
905 FORMAT(43H0CNTRST IS PUNCHED WRONG ON CNTRST CARD NO.,I4,31H OR TH
1E CARD IS OUT OF SEQUENCE)
906 FORMAT(1H0//9H0CONTRAST/9H CARD NO.I3,5X,60I1)
907 FORMAT(1H0//23H SUMS OF CROSS PRODUCTS)
908 FORMAT(4H0ROWI3)
909 FORMAT(8F15.5)
910 FORMAT(1H0//31H INVERTED CROSS PRODUCTS MATRIX)
911 FORMAT(1H0//24H REGRESSION COEFFICIENTS)
912 FORMAT(47H0STANDARD DEVIATIONS OF REGRESSION COEFFICIENTS)
913 FORMAT(1H0//21H VARIANCE OF ESTIMATEF15.5)
914 FORMAT(23H STD. ERROR OF ESTIMATEF13.5//)
915 FORMAT(24H0CONTRASTS AND ESTIMATES)
916 FORMAT(1H I5,3X,7F15.4)
917 FORMAT(10H0ESTIMATE 7F15.5)
918 FORMAT(9H0STANDARD/10H ERROR OF 7F15.5)
919 FORMAT(9H ESTIMATE//)
920 FORMAT(10H0PARAMETER7X,I4,6(11X,I4))
921 FORMAT(1H0/1H019X,18HTABLE OF RESIDUALS/12H OBSERVATION5X,7HY VALU
1E9X,10HY ESTIMATE8X,8HRESIDUAL)
922 FORMAT(I7,2F18.5,F16.5)
923 FORMAT(19H DEGREES OF FREEDOM5X,I6///)
924 FORMAT(A6,33I2,/(6X,33I2))
9876 FORMAT(20A4)
1000 IF(NTAPE-5)1001,1002,1001
1001 REWIND NTAPE
1002 STOP
END
C SUBROUTINE ADJUST FOR BMD06V MAY 10, 1966
SUBROUTINE ADJUST
DIMENSION DATA(100),FMT(180),B(61),C(61,61),CI(61,61),NV(61),
1MV(61),NN(61),P(6),A(61,61),XM(61)
COMMON DATA , FMT , B , C , CI , NV
COMMON MV , NN , P , A , PR , RD
COMMON NP , NO , NT , NEW , NH , NC
COMMON ND , ON , RE , N1 , N2 , N3
COMMON N4 , NNT , NPP , MMT , MD , OON
COMMON NTAPE , XM , NCOV , NT1 , NT2
C
MMMT=MMT-NCOV
DO 3 I=1,MMT
3 MV(I)=I
IF(NCOV) 40, 40, 10
10 WRITE (6,901)
I=0
DO 5 J=1,MMT
DO 1 K=1,NCOV
IF(NN(K)-J)1,5,1
1 CONTINUE
I=I+1
MV(I)=J
5 CONTINUE
DO 20 I=1,NCOV
K=NN(I)
DO 15 L=1,MMMT
J=MV(L)
15 DATA(L)=C(J,K)/C(J,J)
WRITE (6,902)K
20 WRITE (6,900)(DATA(J), J=1,MMMT)
30 WRITE (6,903)
GO TO 45
40 WRITE (6,904)
45 DO 50 L=1,MMMT
J=MV(L)
50 DATA(L)=C(J,NNT)/C(J,J)
WRITE (6,900)(DATA(J), J=1,MMMT)
IF(NCOV) 1000, 1000, 60
60 DO 70 J=1,NNT
DO 70 I=1,NNT
70 C(I,J)=0.0
DO 80 I=1,NCOV
K=NN(I)
80 XM(K)=XM(K)/ON
DO 100 I=1,NO
READ(NT1)(DATA(J),J=1,NNT),PR
DO 85 J=1,NCOV
K=NN(J)
85 DATA(K)=DATA(K)-XM(K)
DO 90 J=1,NNT
DO 90 L=J,NNT
90 C(J,L)=C(J,L)+DATA(J)*DATA(L)*PR
100 WRITE(NT2)(DATA(J),J=1,NNT),PR
REWIND NT1
END FILE NT2
REWIND NT2
NTAPE = NT2
N1=NNT-1
DO 110 I=1,N1
N2=I+1
DO 110 J=N2,NNT
110 C(J,I)=C(I,J)
900 FORMAT(8F15.5)
901 FORMAT(1H0//36H ORIGINAL MEANS FOR DESIGN VARIABLES)
902 FORMAT(13H0VARIABLE NO.I3,13H (COVARIATE))
903 FORMAT(19H0DEPENDENT VARIABLE)
904 FORMAT(1H0//11H CELL MEANS)
9876 FORMAT(20A4)
1000 RETURN
END
C SUBROUTINE INVERT FOR BMD06V MAY 10, 1966
SUBROUTINE INVERT (A,N,D,L,M)
DIMENSION A(61,61),L(61),M(61)
C
D=1.0
DO80 K=1,N
L(K)=K
M(K)=K
BIGA=A(K,K)
DO20 I=K,N
DO20 J=K,N
IF(ABS(BIGA)-ABS(A(I,J))) 10,20,20
10 BIGA=A(I,J)
L(K)=I
M(K)=J
20 CONTINUE
J=L(K)
IF(L(K)-K) 35,35,25
25 DO30 I=1,N
HOLD=-A(K,I)
A(K,I)=A(J,I)
30 A(J,I)=HOLD
35 I=M(K)
IF(M(K)-K) 45,45,37
37 DO40 J=1,N
HOLD=-A(J,K)
A(J,K)=A(J,I)
40 A(J,I)=HOLD
45 DO55 I=1,N
46 IF(I-K)50,55,50
50 A(I,K)=A(I,K)/(-A(K,K))
55 CONTINUE
DO65 I=1,N
DO65 J=1,N
56 IF(I-K) 57,65,57
57 IF(J-K) 60,65,60
60 A(I,J)=A(I,K)*A(K,J)+A(I,J)
65 CONTINUE
DO75 J=1,N
68 IF(J-K)70,75,70
70 A(K,J)=A(K,J)/A(K,K)
75 CONTINUE
D=D*A(K,K)
A(K,K)=1.0/A(K,K)
80 CONTINUE
K=N
100 K=(K-1)
IF(K) 150,150,103
103 I=L(K)
IF(I-K) 120,120,105
105 DO110 J=1,N
HOLD=A(J,K)
A(J,K)=-A(J,I)
110 A(J,I)=HOLD
120 J=M(K)
IF(J-K) 100,100,125
125 DO130 I=1,N
HOLD=A(K,I)
A(K,I)=-A(J,I)
130 A(J,I)=HOLD
GO TO 100
150 RETURN
END
C SUBROUTINE READ FOR BMD06V MAY 10, 1966
SUBROUTINE READ
DIMENSION DATA(100),FMT(180),B(61),C(61,61),CI(61,61),NV(61),
1MV(61),NN(61),P(6),A(61,61),XM(61)
DOUBLE PRECISION GOBLE3,RRD
COMMON DATA , FMT , B , C , CI , NV
COMMON MV , NN , P , A , PR , RD
COMMON NP , NO , NT , NEW , NH , NC
COMMON ND , ON , RE , N1 , N2 , N3
COMMON N4 , NNT , NPP , MMT , MD , OON
COMMON NTAPE , XM , NCOV , NT1 , NT2
ASN(XX)=ATAN(XX/SQRT(1.0-XX**2))
C
NEW=0
IF(NT) 20, 20, 8
8 OON=ON+1.0
WRITE (6,900)
WRITE (6,901)
DATA GOBLE3/6HTRNGEN/
DO 18 I=1,NT
READ(5,905)RRD,(A(I,J), J=1,4)
IF(RRD.EQ. GOBLE3) GO TO 12
10 WRITE (6,906)
11 STOP
12 N1=A(I,1)
N2=A(I,2)
N3=A(I,3)
N4=A(I,4)
IF(N2-8) 13, 14, 14
13 WRITE (6,902)I,N1,N2,N3
GO TO 18
14 IF(N2-10) 15, 16, 16
15 WRITE (6,903)I,N1,N2,N3,A(I,4)
GO TO 18
16 WRITE (6,902)I,N1,N2,N3,N4
18 CONTINUE
20 IF(ND.GT.0.AND.ND.LE.10)GO TO 25
ND=1
WRITE(6,4000)
25 ND=ND*18
WRITE(6,5000)
5000 FORMAT(24H0VARIABLE FORMAT CARD(S))
READ (5,912)(FMT(I), I=1,ND)
WRITE(6,6000)(FMT(I),I=1,ND)
6000 FORMAT(1X,18A4)
DO 70 J=1,NNT
DO 70 I=1,NNT
70 C(I,J)=0.0
ITAPE=5
IF(NTAPE.GT.0)ITAPE=NTAPE
DO 280 I=1,NO
75 READ (ITAPE,FMT)(DATA(J), J=1,NPP)
77 IF(NC) 81, 81, 82
81 PR=1.0
GO TO 84
82 PR=DATA(NPP)
IF(PR) 84, 81, 84
84 IF(NT) 260, 260, 90
90 DO 255 J=1,NT
N1=A(J,1)
N2=A(J,2)
N3=A(J,3)
D3=DATA(N3)
N4=A(J,4)
GO TO (110,110,110,140,150,160,170,180,190,200,210,220,230,240),N2
110 IF(D3)113,111,115
111 IF(N2-2) 114, 112, 114
112 D1=1.0
GO TO 250
113 WRITE (6,904)N2,N3,I,D3
NEW=NEW+1
114 D1=0.0
GO TO 250
115 GO TO (118,120,130), N2
118 D1=SQRT(D3)
GO TO 250
120 D1=SQRT(D3)+SQRT(D3+1.0)
GO TO 250
130 D1=ALOG10(D3)
GO TO 250
140 D1=EXP(D3)
GO TO 250
150 IF(-D3)154,154,113
154 RD=SQRT(D3)
IF(RD-1.0) 155, 156, 113
155 D1=ASN(RD)
GO TO 250
156 D1=1.5708
GO TO 250
160 IF(-D3)161,161,113
161 RD=SQRT(D3/OON)
RE=SQRT((D3+1.0)/OON)
IF(RD-1.0) 162, 163, 113
162 RD=ASN(RD)
GO TO 164
163 RD=1.5708
164 IF(RE-1.0) 165, 166, 113
165 RE=ASN(RE)
GO TO 167
166 RE=1.5708
167 D1=RD+RE
GO TO 250
170 IF(D3)175,113,175
175 D1=1.0/D3
GO TO 250
180 D1=D3+A(J,4)
GO TO 250
190 D1=D3*A(J,4)
GO TO 250
200 D1=D3**N4
GO TO 250
210 D1=D3+DATA(N4)
GO TO 250
220 D1=D3-DATA(N4)
GO TO 250
230 D1=D3*DATA(N4)
GO TO 250
240 IF(DATA(N4)) 242, 241, 242
241 WRITE (6,904)N2,N4,I,DATA(N4)
NEW=NEW+1
GO TO 255
242 D1=D3/DATA(N4)
250 DATA(N1)=D1
255 CONTINUE
260 DO 270 J=1,NNT
XM(J)=XM(J)+DATA(J)
DO 270 L=J,NNT
270 C(J,L)=C(J,L)+DATA(J)*DATA(L)*PR
280 WRITE(NT1)(DATA(J),J=1,NNT),PR
END FILE NT1
REWIND NT1
IF(NEW) 285, 285, 295
285 N1=NNT-1
DO 290 I=1,N1
N2=I+1
DO 290 J=N2,NNT
290 C(J,I)=C(I,J)
295 IF(MD) 1000, 1000, 296
296 WRITE (6,908)
IF(NC) 297, 297, 298
297 N3=NNT
GO TO 299
298 N3=NNT+1
299 DO 350 I=1,NO
READ(NT1)(DATA(J),J=1,NNT),PR
IF(NC) 305, 305, 300
300 DATA(N3)=PR
305 N1=1
N2=0
310 IF((N3-N2)-8) 315, 315, 320
315 N2=N3
GO TO 325
320 N2=N2+8
325 IF(N1-1) 330, 330, 335
330 WRITE (6,909)I,(DATA(J), J=N1,N2)
GO TO 340
335 WRITE (6,910)(DATA(J), J=N1,N2)
340 IF(N3-N2) 350, 350, 345
345 N1=N1+8
GO TO 310
350 CONTINUE
REWIND NT1
900 FORMAT(15H0TRANSFORMATION4X,12HVARIABLE NO.6X,7HTYPE OF9X,8HVARIAB
1LE6X,12H2ND VARIABLE)
901 FORMAT(12H CARD NO.9X,8HASSIGNED5X,14HTRANSFORMATION4X,11HTRANS
1FORMED4X,12HOR CONSTANT)
902 FORMAT(1H 4X,I4,13X,I4,13X,I3,13X,I3,10X,I6)
903 FORMAT(1H 4X,I4,13X,I4,13X,I3,13X,I3,10X,F12.5)
904 FORMAT(1H0//27H TRANSFORMATION OF THE TYPEI3,24H CANNOT BE PERFOR
1MED ON/9H VARIABLEI3,6H CASEI5,15H. THE VALUE ISF12.5)
905 FORMAT(A6,F3.0,F2.0,F3.0,F6.0)
906 FORMAT(29H0ERROR ON TRANSFORMATION CARD)
907 FORMAT(12I6)
908 FORMAT(1H0//1H 10X,34HINPUT DATA AS READ FROM CARDS/9H CASE N
1O.)
909 FORMAT(I6,8F13.5)
910 FORMAT(6X,8F13.5)
912 FORMAT (18A4)
4000 FORMAT(1H023X71HNUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIF
1IED, ASSUMED TO BE 1.)
9876 FORMAT(20A4)
1000 NTAPE=NT1
RETURN
END
C SUBROUTINE TPWD FOR BMD06V MAY 10, 1966
SUBROUTINE TPWD(NT1,NT2)
IF(NT1)40,10,12
10 NT1=5
12 IF(NT1-NT2)14,19,14
14 IF(NT2.EQ.5)GO TO 18
17 REWIND NT2
19 IF(NT1-5)18,24,18
18 IF(NT1-6)22,40,22
22 REWIND NT1
24 NT2=NT1
28 RETURN
40 WRITE (6,49)
STOP
49 FORMAT(25H ERROR ON TAPE ASSIGNMENT)
END