|
|
| |
| # lines: |
360 | | # code: |
360 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 47 |
| # Callers: | 1 |
| # Callings: | 0 |
| # Words: | 218 |
| # Keywords: | 152 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
PDLAED3 finds the roots of the secular equation, as defined by the
values in D, W, and RHO, between 1 and K. It makes the
appropriate calls to SLAED4
This code makes very mild assumptions about floating point
arithmetic. It will work on machines with a guard digit in
add/subtract, or on those binary machines without guard digits
which subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2.
It could conceivably fail on hexadecimal or decimal machines
without guard digits, but we know of none.
Arguments
=========
ICTXT (global input) INTEGER
The BLACS context handle, indicating the global context of
the operation on the matrix. The context itself is global.
K (output) INTEGER
The number of non-deflated eigenvalues, and the order of the
related secular equation. 0 <= K <=N.
N (input) INTEGER
The dimension of the symmetric tridiagonal matrix. N >= 0.
NB (global input) INTEGER
The blocking factor used to distribute the columns of the
matrix. NB >= 1.
D (input/output) DOUBLE PRECISION array, dimension (N)
On entry, D contains the eigenvalues of the two submatrices to
be combined.
On exit, D contains the trailing (N-K) updated eigenvalues
(those which were deflated) sorted into increasing order.
DROW (global input) INTEGER
The process row over which the first row of the matrix D is
distributed. 0 <= DROW < NPROW.
DCOL (global input) INTEGER
The process column over which the first column of the
matrix D is distributed. 0 <= DCOL < NPCOL.
Q (input/output) DOUBLE PRECISION array, dimension (LDQ, N)
On entry, Q contains the eigenvectors of two submatrices in
the two square blocks with corners at (1,1), (N1,N1)
and (N1+1, N1+1), (N,N).
On exit, Q contains the trailing (N-K) updated eigenvectors
(those which were deflated) in its last N-K columns.
LDQ (input) INTEGER
The leading dimension of the array Q. LDQ >= max(1,NQ).
RHO (global input/output) DOUBLE PRECISION
On entry, the off-diagonal element associated with the rank-1
cut which originally split the two submatrices which are now
being recombined.
On exit, RHO has been modified to the value required by
PDLAED3.
DLAMDA (global output) DOUBLE PRECISION array, dimension (N)
A copy of the first K eigenvalues which will be used by
SLAED3 to form the secular equation.
W (global output) DOUBLE PRECISION array, dimension (N)
The first k values of the final deflation-altered z-vector
which will be passed to SLAED3.
Z (global input) DOUBLE PRECISION array, dimension (N)
On entry, Z contains the updating vector (the last
row of the first sub-eigenvector matrix and the first row of
the second sub-eigenvector matrix).
On exit, the contents of Z have been destroyed by the updating
process.
U (global output) DOUBLE PRECISION array
global dimension (N, N), local dimension (LDU, NQ).
Q contains the orthonormal eigenvectors of the symmetric
tridiagonal matrix.
LDU (input) INTEGER
The leading dimension of the array U.
QBUF (workspace) DOUBLE PRECISION array, dimension 3*N
INDX (workspace) INTEGER array, dimension (N)
The permutation used to sort the contents of DLAMDA into
ascending order.
INDCOL (workspace) INTEGER array, dimension (N)
INDROW (workspace) INTEGER array, dimension (N)
INDXR (workspace) INTEGER array, dimension (N)
INDXC (workspace) INTEGER array, dimension (N)
CTOT (workspace) INTEGER array, dimension( NPCOL, 4)
NPCOL (global input) INTEGER
The total number of columns over which the distributed
submatrix is distributed.
INFO (output) INTEGER
= 0: successful exit.
< 0: if INFO = -i, the i-th argument had an illegal value.
> 0: The algorithm failed to compute the ith eigenvalue.
=====================================================================
.. Parameters ..
|
|
|
|
001 SUBROUTINE PDLAED3( ICTXT , K , N , NB , D , DROW , DCOL , RHO , DLAMDA ,
002 $W , Z , U , LDU , BUF , INDX , INDCOL , INDROW ,
003 $INDXR , INDXC , CTOT , NPCOL , INFO )
004
005 * -- ScaLAPACK auxiliary routine(version 1.7) --
006 * University of Tennessee , Knoxville , Oak Ridge National Laboratory ,
007 * and University of California , Berkeley.
008 * December 31 , 1998
009
010 * .. Scalar Arguments ..
011 INTEGER DCOL , DROW , ICTXT , INFO , K , LDU , N , NB , NPCOL
012 DOUBLE PRECISION RHO
013 DOUBLE PRECISION ONE
014 PARAMETER( ONE = 1.0D + 0 )
015 * ..
016 * .. Local Scalars ..
017 INTEGER COL , GI , I , IINFO , IIU , IPD , IU , J , JJU , JU ,
018 $KK , KL , KLC , KLR , MYCOL , MYKL , MYKLR , MYROW ,
019 $NPROW , PDC , PDR , ROW
020 DOUBLE PRECISION AUX , TEMP
021 * ..
022 * .. External Functions ..
023 INTEGER INDXG2L
024 DOUBLE PRECISION DLAMC3 , DNRM2
025 EXTERNAL INDXG2L , DLAMC3 , DNRM2
026 * ..
027 * .. External Subroutines ..
028 EXTERNAL BLACS_GRIDINFO , DCOPY , DGEBR2D , DGEBS2D ,
029 $DGERV2D , DGESD2D , DLAED4
030 * ..
031 * .. Intrinsic Functions ..
032 INTRINSIC MOD , SIGN , SQRT
033 * ..
034 * .. Executable Statements ..
035
036 * Test the input parameters.
037
038 INFO = 0
039
040 * Quick return if possible
041
042 IF( K.EQ.0 )
042
043 $ RETURN
044
045 CALL BLACS_GRIDINFO( ICTXT , NPROW , NPCOL , MYROW , MYCOL )
046
047 ROW = DROW
048 COL = DCOL
049 DO 20 I = 1 , N , NB
049
050 DO 10 J = 0 , NB - 1
050
051 IF( I + J.LE.N ) THEN
051
052 INDROW( I + J ) = ROW
053 INDCOL( I + J ) = COL
054 END IF
055 10 CONTINUE
055
056 ROW = MOD( ROW + 1 , NPROW )
057 COL = MOD( COL + 1 , NPCOL )
058 20 CONTINUE
059
059
060 MYKL = CTOT( MYCOL , 1 ) + CTOT( MYCOL , 2 ) + CTOT( MYCOL , 3 )
061 KLR = MYKL / NPROW
062 IF( MYROW.EQ.DROW ) THEN
062
063 MYKLR = KLR + MOD( MYKL , NPROW )
064 ELSE
064
065 MYKLR = KLR
066 END IF
067 PDC = 1
068 COL = DCOL
069 30 CONTINUE
070 IF( MYCOL.NE.COL ) THEN
070
071 PDC = PDC + CTOT( COL , 1 ) + CTOT( COL , 2 ) + CTOT( COL , 3 )
072 COL = MOD( COL + 1 , NPCOL )
073 GO TO 30
074 END IF
075 PDR = PDC
076 KL = KLR + MOD( MYKL , NPROW )
077 ROW = DROW
078 40 CONTINUE
079 IF( MYROW.NE.ROW ) THEN
079
080 PDR = PDR + KL
081 KL = KLR
082 ROW = MOD( ROW + 1 , NPROW )
083 GO TO 40
084 END IF
085
086 DO 50 I = 1 , K
086
087 DLAMDA( I ) = DLAMC3( DLAMDA( I ) , DLAMDA( I ) ) - DLAMDA( I )
088 Z( I ) = ONE
089 50 CONTINUE
090 IF( MYKLR.GT.0 ) THEN
090
091 KK = PDR
092 DO 80 I = 1 , MYKLR
092
093 CALL DLAED4( K , KK , DLAMDA , W , BUF , RHO , BUF( K + I ) , IINFO )
094 IF( IINFO.NE.0 ) THEN
094
095 INFO = KK
096 END IF
097
098 * ..Compute part of z
099
100 DO 60 J = 1 , KK - 1
100
101 Z( J ) = Z( J )*( BUF( J ) /
102 $( DLAMDA( J ) - DLAMDA( KK ) ) )
103 60 CONTINUE
103
104 Z( KK ) = Z( KK )*BUF( KK )
105 DO 70 J = KK + 1 , K
105
106 Z( J ) = Z( J )*( BUF( J ) /
107 $( DLAMDA( J ) - DLAMDA( KK ) ) )
108 70 CONTINUE
108
109 KK = KK + 1
110 80 CONTINUE
111
111
112 IF( MYROW.NE.DROW ) THEN
112
113 CALL DCOPY( K , Z , 1 , BUF , 1 )
114 CALL DGESD2D( ICTXT , K + MYKLR , 1 , BUF , K + MYKLR , DROW , MYCOL )
115 ELSE
115
116 IPD = 2*K + 1
117 CALL DCOPY( MYKLR , BUF( K + 1 ) , 1 , BUF( IPD ) , 1 )
118 IF( KLR.GT.0 ) THEN
118
119 IPD = MYKLR + IPD
120 ROW = MOD( DROW + 1 , NPROW )
121 DO 100 I = 1 , NPROW - 1
121
122 CALL DGERV2D( ICTXT , K + KLR , 1 , BUF , K + KLR , ROW ,
123 $ MYCOL )
124 CALL DCOPY( KLR , BUF( K + 1 ) , 1 , BUF( IPD ) , 1 )
125 DO 90 J = 1 , K
125
126 Z( J ) = Z( J )*BUF( J )
127 90 CONTINUE
127
128 IPD = IPD + KLR
129 ROW = MOD( ROW + 1 , NPROW )
130 100 CONTINUE
130
131 END IF
132 END IF
133 END IF
134
135 IF( MYROW.EQ.DROW ) THEN
135
136 IF( MYCOL.NE.DCOL .AND. MYKL.NE.0 ) THEN
136
137 CALL DCOPY( K , Z , 1 , BUF , 1 )
138 CALL DCOPY( MYKL , BUF( 2*K + 1 ) , 1 , BUF( K + 1 ) , 1 )
139 CALL DGESD2D( ICTXT , K + MYKL , 1 , BUF , K + MYKL , MYROW , DCOL )
140 ELSE IF( MYCOL.EQ.DCOL ) THEN
140
141 IPD = 2*K + 1
142 COL = DCOL
143 KL = MYKL
144 DO 120 I = 1 , NPCOL - 1
144
145 IPD = IPD + KL
146 COL = MOD( COL + 1 , NPCOL )
147 KL = CTOT( COL , 1 ) + CTOT( COL , 2 ) + CTOT( COL , 3 )
148 IF( KL.NE.0 ) THEN
148
149 CALL DGERV2D( ICTXT , K + KL , 1 , BUF , K + KL , MYROW , COL )
150 CALL DCOPY( KL , BUF( K + 1 ) , 1 , BUF( IPD ) , 1 )
151 DO 110 J = 1 , K
151
152 Z( J ) = Z( J )*BUF( J )
153 110 CONTINUE
153
154 END IF
155 120 CONTINUE
155
156 DO 130 I = 1 , K
156
157 Z( I ) = SIGN( SQRT( - Z( I ) ) , W( I ) )
158 130 CONTINUE
159
159
160 END IF
161 END IF
162
163 * Diffusion
164
165 IF( MYROW.EQ.DROW .AND. MYCOL.EQ.DCOL ) THEN
165
166 CALL DCOPY( K , Z , 1 , BUF , 1 )
167 CALL DCOPY( K , BUF( 2*K + 1 ) , 1 , BUF( K + 1 ) , 1 )
168 CALL DGEBS2D( ICTXT , 'All' , ' ' , 2*K , 1 , BUF , 2*K )
169 ELSE
169
170 CALL DGEBR2D( ICTXT , 'All' , ' ' , 2*K , 1 , BUF , 2*K , DROW , DCOL )
171 CALL DCOPY( K , BUF , 1 , Z , 1 )
172 END IF
173
174 * Copy of D at the good place
175
176 KLC = 0
177 KLR = 0
178 DO 140 I = 1 , K
178
179 GI = INDX( I )
180 D( GI ) = BUF( K + I )
181 COL = INDCOL( GI )
182 ROW = INDROW( GI )
183 IF( COL.EQ.MYCOL ) THEN
183
184 KLC = KLC + 1
185 INDXC( KLC ) = I
186 END IF
187 IF( ROW.EQ.MYROW ) THEN
187
188 KLR = KLR + 1
189 INDXR( KLR ) = I
190 END IF
191 140 CONTINUE
192
193 * Compute eigenvectors of the modified rank - 1 modification.
194
195 IF( MYKL.NE.0 ) THEN
195
196 DO 180 J = 1 , MYKL
196
197 KK = INDXC( J )
198 JU = INDX( KK )
199 JJU = INDXG2L( JU , NB , J , J , NPCOL )
200 CALL DLAED4( K , KK , DLAMDA , W , BUF , RHO , AUX , IINFO )
201 IF( IINFO.NE.0 ) THEN
201
202 INFO = KK
203 END IF
204 IF( K.EQ.1 .OR. K.EQ.2 ) THEN
204
205 DO 150 I = 1 , KLR
205
206 KK = INDXR( I )
207 IU = INDX( KK )
208 IIU = INDXG2L( IU , NB , J , J , NPROW )
209 U( IIU , JJU ) = BUF( KK )
210 150 CONTINUE
210
211 GO TO 180
212 END IF
213
214 DO 160 I = 1 , K
214
215 BUF( I ) = Z( I ) / BUF( I )
216 160 CONTINUE
216
217 TEMP = DNRM2( K , BUF , 1 )
218 DO 170 I = 1 , KLR
218
219 KK = INDXR( I )
220 IU = INDX( KK )
221 IIU = INDXG2L( IU , NB , J , J , NPROW )
222 U( IIU , JJU ) = BUF( KK ) / TEMP
223 170 CONTINUE
224
225 180 CONTINUE
226 END IF
227
228 190 CONTINUE
229
230 RETURN
231
232 * End of PDLAED3
233
234 END27
50
|
|
Variables in Routine PDLAED3()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| DOUBLE PRECISION | 6 | 24 |
| INTEGER | 36 | 144 |
| REAL | 5 | 20 |
| TOTAL | 47 | 188 |
List of Variables
DOUBLE PRECISION
| AUX | DLAMC3 | DNRM2 | ONE | RHO |
| TEMP | | | | |
INTEGER
| COL | DCOL | DROW | GI | I |
| ICTXT | IINFO | IIU | INDCOL | INDROW |
| INDXC | INDXG2L | INDXR | INFO | IPD |
| IU | J | JJU | JU | K |
| KK | KL | KLC | KLR | LDU |
| MYCOL | MYKL | MYKLR | MYROW | N |
| NB | NPCOL | NPROW | PDC | PDR |
| ROW | | | | |
REAL
Variables Dependence Graph Put the mouse over a right hand side variable to display the corresponding line of the dependence | | - | | - | - | | BUF | <--- | IBUF( I ) = Z( I ) / BUF( I ), BUFBUF( I ) = Z( I ) / BUF( I ), ZBUF( I ) = Z( I ) / BUF( I ) |
| COL | <--- | GICOL = INDCOL( GI ), INDCOLCOL = INDCOL( GI ), COLCOL = MOD( COL+1, NPCOL ){2COL = MOD( COL+1, NPCOL ), 3COL = MOD( COL+1, NPCOL )}, NPCOLCOL = MOD( COL+1, NPCOL ){2COL = MOD( COL+1, NPCOL ), 3COL = MOD( COL+1, NPCOL )}, DCOLCOL = DCOL{2COL = DCOL, 3COL = DCOL} |
| D | <--- | ID( GI ) = BUF( K+I ), BUFD( GI ) = BUF( K+I ), KD( GI ) = BUF( K+I ) |
| DLAMDA | <--- | IDLAMDA( I ) = DLAMC3( DLAMDA( I ), DLAMDA( I ) ) - DLAMDA( I ), DLAMC3DLAMDA( I ) = DLAMC3( DLAMDA( I ), DLAMDA( I ) ) - DLAMDA( I ), DLAMDADLAMDA( I ) = DLAMC3( DLAMDA( I ), DLAMDA( I ) ) - DLAMDA( I ) |
| GI | <--- | IGI = INDX( I ) |
| I | <--- | KDO 130 I = 1, K{2DO 140 I = 1, K, 3DO 160 I = 1, K, 4DO 50 I = 1, K}, KLRDO 150 I = 1, KLR{2DO 170 I = 1, KLR}, MYKLRDO 80 I = 1, MYKLR, NDO 20 I = 1, N, NB, NBDO 20 I = 1, N, NB, NPCOLDO 120 I = 1, NPCOL - 1, NPROWDO 100 I = 1, NPROW - 1 |
| IIU | <--- | INDXG2LIIU = INDXG2L( IU, NB, J, J, NPROW ){2IIU = INDXG2L( IU, NB, J, J, NPROW )}, IUIIU = INDXG2L( IU, NB, J, J, NPROW ){2IIU = INDXG2L( IU, NB, J, J, NPROW )}, JIIU = INDXG2L( IU, NB, J, J, NPROW ){2IIU = INDXG2L( IU, NB, J, J, NPROW )}, NBIIU = INDXG2L( IU, NB, J, J, NPROW ){2IIU = INDXG2L( IU, NB, J, J, NPROW )}, NPROWIIU = INDXG2L( IU, NB, J, J, NPROW ){2IIU = INDXG2L( IU, NB, J, J, NPROW )} |
| INDCOL | <--- | COLINDCOL( I+J ) = COL |
| INDROW | <--- | ROWINDROW( I+J ) = ROW |
| INDXC | <--- | IINDXC( KLC ) = I |
| INDXR | <--- | IINDXR( KLR ) = I |
| INFO | <--- | KKINFO = KK{2INFO = KK} |
| IPD | <--- | IPDIPD = MYKLR + IPD{2IPD = IPD + KLR, 3IPD = IPD + KL}, KIPD = 2*K + 1{2IPD = 2*K + 1}, KLIPD = IPD + KL, KLRIPD = IPD + KLR, MYKLRIPD = MYKLR + IPD |
| IU | <--- | KKIU = INDX( KK ){2IU = INDX( KK )} |
| J | <--- | KDO 70 J = KK + 1, K{2DO 90 J = 1, K, 3DO 110 J = 1, K}, KKDO 60 J = 1, KK - 1{2DO 70 J = KK + 1, K}, MYKLDO 180 J = 1, MYKL, NBDO 10 J = 0, NB - 1 |
| JJU | <--- | INDXG2LJJU = INDXG2L( JU, NB, J, J, NPCOL ), JJJU = INDXG2L( JU, NB, J, J, NPCOL ), JUJJU = INDXG2L( JU, NB, J, J, NPCOL ), NBJJU = INDXG2L( JU, NB, J, J, NPCOL ), NPCOLJJU = INDXG2L( JU, NB, J, J, NPCOL ) |
| JU | <--- | KKJU = INDX( KK ) |
| KK | <--- | IKK = INDXR( I ){2KK = INDXR( I )}, INDXCKK = INDXC( J ), INDXRKK = INDXR( I ){2KK = INDXR( I )}, JKK = INDXC( J ), KKKK = KK + 1, PDRKK = PDR |
| KL | <--- | COLKL = CTOT( COL, 1 ) + CTOT( COL, 2 ) + CTOT( COL, 3 ), KLRKL = KLR + MOD( MYKL, NPROW ){2KL = KLR}, MYKLKL = MYKL{2KL = KLR + MOD( MYKL, NPROW )}, NPROWKL = KLR + MOD( MYKL, NPROW ) |
| KLC | <--- | KLCKLC = KLC + 1 |
| KLR | <--- | KLRKLR = KLR + 1, MYKLKLR = MYKL / NPROW, NPROWKLR = MYKL / NPROW |
| MYKL | <--- | MYCOLMYKL = CTOT( MYCOL, 1 ) + CTOT( MYCOL, 2 ) + CTOT( MYCOL, 3 ) |
| MYKLR | <--- | KLRMYKLR = KLR + MOD( MYKL, NPROW ){2MYKLR = KLR}, MYKLMYKLR = KLR + MOD( MYKL, NPROW ), NPROWMYKLR = KLR + MOD( MYKL, NPROW ) |
| PDC | <--- | COLPDC = PDC + CTOT( COL, 1 ) + CTOT( COL, 2 ) + CTOT( COL, 3 ), PDCPDC = PDC + CTOT( COL, 1 ) + CTOT( COL, 2 ) + CTOT( COL, 3 ) |
| PDR | <--- | KLPDR = PDR + KL, PDCPDR = PDC, PDRPDR = PDR + KL |
| ROW | <--- | GIROW = INDROW( GI ), INDROWROW = INDROW( GI ), NPROWROW = MOD( DROW+1, NPROW ){2ROW = MOD( ROW+1, NPROW ), 3ROW = MOD( ROW+1, NPROW ), 4ROW = MOD( ROW+1, NPROW )}, ROWROW = MOD( ROW+1, NPROW ){2ROW = MOD( ROW+1, NPROW ), 3ROW = MOD( ROW+1, NPROW )}, DROWROW = MOD( DROW+1, NPROW ){2ROW = DROW, 3ROW = DROW} |
| TEMP | <--- | BUFTEMP = DNRM2( K, BUF, 1 ), KTEMP = DNRM2( K, BUF, 1 ), DNRM2TEMP = DNRM2( K, BUF, 1 ) |
| U | <--- | BUFU( IIU, JJU ) = BUF( KK ){2U( IIU, JJU ) = BUF( KK ) / TEMP}, KKU( IIU, JJU ) = BUF( KK ){2U( IIU, JJU ) = BUF( KK ) / TEMP}, TEMPU( IIU, JJU ) = BUF( KK ) / TEMP |
| Z | <--- | IZ( I ) = SIGN( SQRT( -Z( I ) ), W( I ) ), BUFZ( J ) = Z( J )*( BUF( J ) /{2Z( KK ) = Z( KK )*BUF( KK ), 3Z( J ) = Z( J )*( BUF( J ) /, 4Z( J ) = Z( J )*BUF( J ), 5Z( J ) = Z( J )*BUF( J )}, JZ( J ) = Z( J )*( BUF( J ) /{2Z( J ) = Z( J )*( BUF( J ) /, 3Z( J ) = Z( J )*BUF( J ), 4Z( J ) = Z( J )*BUF( J )}, KKZ( J ) = Z( J )*( BUF( J ) /{2Z( KK ) = Z( KK )*BUF( KK ), 3Z( J ) = Z( J )*( BUF( J ) /}, ONEZ( I ) = ONE, ZZ( J ) = Z( J )*( BUF( J ) /{2Z( KK ) = Z( KK )*BUF( KK ), 3Z( J ) = Z( J )*( BUF( J ) /, 4Z( J ) = Z( J )*BUF( J ), 5Z( J ) = Z( J )*BUF( J ), 6Z( I ) = SIGN( SQRT( -Z( I ) ), W( I ) )}, DLAMDAZ( J ) = Z( J )*( BUF( J ) /{2Z( J ) = Z( J )*( BUF( J ) /} |
|
|
Analysis elements of the routine PDLAED3() Put the mouse over each element to display detailed matching information
Assigned variables |
| | | COL , GI , I , IIU , INFO , IPD , IU , J , JJU , JU , KK , KL , KLC , KLR , MYKL , MYKLR , ONE , PDC , PDR , ROW , TEMP |
|
Active variables |
| | | AUX , BUF , COL , CTOT , D , DCOL , DLAMC3 , DLAMDA , DNRM2 , DROW , GI , I , ICTXT , IINFO , IIU , INDCOL , INDROW , INDX , INDXC , INDXG2L , INDXR , INFO , IPD , IU , J , JJU , JU , K , KK , KL , KLC , KLR , LDU , MYCOL , MYKL , MYKLR , MYROW , N , NB , NPCOL , NPROW , ONE , PDC , PDR , RHO , ROW , TEMP , U , W , Z |
|
Accessed arrays [ array name : associated index ] |
| | BUF | : 2*K+1 , 2*K+1 , I , IPD , IPD , IPD , J , J , J , J , K+1 , K+1 , K+1 , K+1 , K+1 , K+I , K+I , KK , KK , KK |
| | CTOT | : COL, 1 , COL, 1 , COL, 2 , COL, 2 , COL, 3 , COL, 3 , MYCOL, 1 , MYCOL, 2 , MYCOL, 3 |
| | D | : GI |
| | DLAMC3 | : DLAMDA( I ), DLAMDA( I ) |
| | DLAMDA | : I , J , J , KK , KK |
| | DNRM2 | : K, BUF, 1 |
| | INDCOL | : GI , I+J |
| | INDROW | : GI , I+J |
| | INDX | : I , KK , KK , KK |
| | INDXC | : J , KLC |
| | INDXG2L | : IU, NB, J, J, NPROW , IU, NB, J, J, NPROW , JU, NB, J, J, NPCOL |
| | INDXR | : I , I , KLR |
| | U | : IIU, JJU , IIU, JJU |
| | W | : I |
| | Z | : I , I , I , J , J , J , J , KK |
|
Conditional statements [ statement : associated predicate ] |
| | do | : ( 20 I = 1 , N , NB ) , ( 10 J = 0 , NB - 1 ) , ( 50 I = 1 , K ) , ( 80 I = 1 , MYKLR ) , ( 60 J = 1 , KK - 1 ) , ( 70 J = KK + 1 , K ) , ( 100 I = 1 , NPROW - 1 ) , ( 90 J = 1 , K ) , ( 120 I = 1 , NPCOL - 1 ) , ( 110 J = 1 , K ) , ( 130 I = 1 , K ) , ( 140 I = 1 , K ) , ( 180 J = 1 , MYKL ) , ( 150 I = 1 , KLR ) , ( 160 I = 1 , K ) , ( 170 I = 1 , KLR ) |
| | if | : ( possible ) , ( K.EQ.0 ) , ( I+J.LE.N ) , ( MYROW.EQ.DROW ) , ( MYCOL.NE.COL ) , ( MYROW.NE.ROW ) , ( MYKLR.GT.0 ) , ( IINFO.NE.0 ) , ( MYROW.NE.DROW ) , ( KLR.GT.0 ) , ( MYROW.EQ.DROW ) , ( MYCOL.NE.DCOL .AND. MYKL.NE.0 ) , ( MYCOL.EQ.DCOL ) , ( KL.NE.0 ) , ( MYROW.EQ.DROW .AND. MYCOL.EQ.DCOL ) , ( COL.EQ.MYCOL ) , ( ROW.EQ.MYROW ) , ( MYKL.NE.0 ) , ( IINFO.NE.0 ) , ( K.EQ.1 .OR. K.EQ.2 ) |
|
| List of variables | AUX BUF COL D DCOL DLAMC3 DLAMDA
| DNRM2 DROW GI I ICTXT IINFO IIU INDCOL
| INDROW INDXC INDXG2L INDXR INFO IPD IU J
| JJU JU K KK KL KLC KLR LDU
| MYCOL MYKL MYKLR MYROW N NB NPCOL NPROW
| ONE PDC PDR RHO ROW TEMP U Z | | close
| |
AUX
BUF
COL
D
DCOL
DLAMC3
DLAMDA
DNRM2
DROW
GI
I
ICTXT
IINFO
IIU
INDCOL
INDROW
INDXC
INDXG2L
INDXR
INFO
IPD
IU
J
JJU
JU
K
KK
KL
KLC
KLR
LDU
MYCOL
MYKL
MYKLR
MYROW
N
NB
NPCOL
NPROW
ONE
PDC
PDR
RHO
ROW
TEMP
U
Z
| |