5 * Revision 1.1.1.1 1996/04/01 15:03:24 mclareni
10 SUBROUTINE RECPAR (NDIM,UMINUS,UPLUS,FLOBD,FUPBD,MAXDPH,ENTREE,TRE
11 1E,PARTN,ENTBUC,BUCKTS,IBUC)
12 INTEGER NDIM,ENTREE,ENTBUC,TREE(4,1000),MAXDPH
13 REAL UMINUS(NDIM),UPLUS(NDIM),PARTN(18001),BUCKTS(IBUC)
16 COMMON /ISTRGE/ BUKMAX, DUMMY1(12000)
17 COMMON /BUKSZE/ MAXWRD
18 C*NS INTEGER MAXWRD,TREMAX,BUKMAX,PARENT,COORD
19 INTEGER MAXWRD,TREMAX,BUKMAX,PARENT
27 IF(100.GT.100) GOTO 420
30 IF(100.GT.100) GOTO 440
33 IF(100.GT.100) GOTO 460
38 IRBUC=IBUC-(MAXWRD*(ENTBUC-1))
39 IRBUC=IBUC-(MAXWRD*(ENTBUC-1))
40 CALL SPLIT(NDIM,UMINUS,UPLUS,FLOBD,FUPBD,TERMNL,ITREE,PARTN(ENTRE
41 1E),BUCKTS(MAXWRD*(ENTBUC-1)+1),IRBUC)
45 IF(PNODES.GT.MNODES) GOTO 320
49 IF(ENTREE.GT.TREMAX) GOTO 380
50 TERMNL=PNODES.GE.MAXDPH
51 IF(PNODES.LE.0) GOTO 210
55 IF(PAXES.GT.MAXES) GOTO 360
57 IF(TREE(1,PARENT).NE.0) GOTO 90
58 IF(JTREE.GE.0) GOTO 20
60 IF(PPRTNS.GT.MPRTNS) GOTO 340
61 SPRTNS(PPRTNS)=UPLUS(-JTREE)
62 UPLUS(-JTREE)=PARTN(PARENT)
65 IF(PPRTNS.GT.MPRTNS) GOTO 340
66 SPRTNS(PPRTNS)=UMINUS(JTREE)
67 UMINUS(JTREE)=PARTN(PARENT)
68 30 IRBUC=IBUC-(MAXWRD*(ENTBUC-1))
69 IRBUC=IBUC-(MAXWRD*(ENTBUC-1))
70 CALL SPLIT(NDIM,UMINUS,UPLUS,FLOBD,FUPBD,TERMNL,ITREE,PARTN(ENTRE
71 1E),BUCKTS(MAXWRD*(ENTBUC-1)+1),IRBUC)
73 IF(.NOT.(.NOT.TERMNL)) GOTO 50
74 IF(JTREE.GE.0) GOTO 40
78 IF(PNODES.GT.MNODES) GOTO 320
81 40 TREE(3,PARENT)=ENTREE
84 IF(PNODES.GT.MNODES) GOTO 320
88 IF(ENTREE.LT.1) GOTO 400
89 IF(JTREE.GE.0) GOTO 60
90 TREE(2,PARENT)=-ENTBUC
92 60 TREE(3,PARENT)=-ENTBUC
93 70 TREE(1,PARENT)=ENTBUC
95 IF(ENTBUC.GT.BUKMAX) GOTO 390
96 IF(PAXES.LE.0) GOTO 220
99 IF(PAXES.LT.0) GOTO 280
100 IF(JTREE.GE.0) GOTO 80
101 IF(PPRTNS.LE.0) GOTO 240
102 UPLUS(-JTREE)=SPRTNS(PPRTNS)
104 IF(PPRTNS.LT.0) GOTO 300
106 80 IF(PPRTNS.LE.0) GOTO 240
107 UMINUS(JTREE)=SPRTNS(PPRTNS)
109 IF(PPRTNS.LT.0) GOTO 300
111 90 IF(JTREE.LE.0) GOTO 100
113 IF(PPRTNS.GT.MPRTNS) GOTO 340
114 SPRTNS(PPRTNS)=UPLUS(JTREE)
115 UPLUS(JTREE)=PARTN(PARENT)
118 IF(PPRTNS.GT.MPRTNS) GOTO 340
119 SPRTNS(PPRTNS)=UMINUS(-JTREE)
120 UMINUS(-JTREE)=PARTN(PARENT)
121 110 IRBUC=IBUC-(MAXWRD*(ENTBUC-1))
122 IRBUC=IBUC-(MAXWRD*(ENTBUC-1))
123 CALL SPLIT(NDIM,UMINUS,UPLUS,FLOBD,FUPBD,TERMNL,ITREE,PARTN(ENTRE
124 1E),BUCKTS(MAXWRD*(ENTBUC-1)+1),IRBUC)
125 TREE(4,ENTREE)=-ITREE
126 IF(.NOT.(.NOT.TERMNL)) GOTO 130
127 IF(JTREE.LE.0) GOTO 120
128 TREE(2,PARENT)=ENTREE
131 IF(PNODES.GT.MNODES) GOTO 320
132 SNODES(PNODES)=ENTREE
134 120 TREE(3,PARENT)=ENTREE
137 IF(PNODES.GT.MNODES) GOTO 320
138 SNODES(PNODES)=ENTREE
141 IF(ENTREE.LT.1) GOTO 400
142 IF(JTREE.LE.0) GOTO 140
143 TREE(2,PARENT)=-ENTBUC
145 140 TREE(3,PARENT)=-ENTBUC
146 150 IF(TREE(1,PARENT).EQ.0) GOTO 180
147 IF(PAXES.LE.0) GOTO 220
150 IF(PAXES.LT.0) GOTO 280
151 IF(JTREE.LE.0) GOTO 160
152 IF(PPRTNS.LE.0) GOTO 240
153 UPLUS(JTREE)=SPRTNS(PPRTNS)
155 IF(PPRTNS.LT.0) GOTO 300
157 160 IF(PPRTNS.LE.0) GOTO 240
158 UMINUS(-JTREE)=SPRTNS(PPRTNS)
160 IF(PPRTNS.LT.0) GOTO 300
162 IF(PNODES.LT.0) GOTO 260
163 IF(PNODES.LE.0) GOTO 210
164 PARENT=SNODES(PNODES)
166 180 IF(PAXES.LE.0) GOTO 220
169 IF(PAXES.LT.0) GOTO 280
170 IF(JTREE.GE.0) GOTO 190
171 IF(PPRTNS.LE.0) GOTO 240
172 UPLUS(-JTREE)=SPRTNS(PPRTNS)
174 IF(PPRTNS.LT.0) GOTO 300
176 190 IF(PPRTNS.LE.0) GOTO 240
177 UMINUS(JTREE)=SPRTNS(PPRTNS)
179 IF(PPRTNS.LT.0) GOTO 300
180 200 TREE(1,PARENT)=ENTBUC
182 IF(ENTBUC.GT.BUKMAX) GOTO 390
186 230 FORMAT(' STACK AXES EMPTY')
189 250 FORMAT(' STACK PRTNS EMPTY')
192 270 FORMAT(' STACK NODES UNDERFLOW')
195 290 FORMAT(' STACK AXES UNDERFLOW')
198 310 FORMAT(' STACK PRTNS UNDERFLOW')
201 330 FORMAT(' STACK NODES OVERFLOW')
204 350 FORMAT(' STACK PRTNS OVERFLOW')
207 370 FORMAT(' STACK AXES OVERFLOW')
214 410 FORMAT(' ENTREE DECREMENTED PAST ONE')
216 420 WRITE(6,430) MAXDPH
217 430 FORMAT(' MAXDPH = ',I10,' TOO LARGE')
219 440 WRITE(6,450) MAXDPH
220 450 FORMAT(' MAXDPH = ',I10,' TOO LARGE')
222 460 WRITE(6,470) MAXDPH
223 470 FORMAT(' MAXDPH = ',I10,' TOO LARGE')