|
|
| |
| # lines: |
260 | | # code: |
260 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 42 |
| # Callers: | 0 |
| # Callings: | 0 |
| # Words: | 96 |
| # Keywords: | 51 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
ZLAMSH sends multiple shifts through a small (single node) matrix to
see how consecutive small subdiagonal elements are modified by
subsequent shifts in an effort to maximize the number of bulges
that can be sent through.
ZLAMSH should only be called when there are multiple shifts/bulges
(NBULGE > 1) and the first shift is starting in the middle of an
unreduced Hessenberg matrix because of two or more consecutive
small subdiagonal elements.
Arguments
=========
S (local input/output) COMPLEX*16 array, ( LDS,* )
On entry, the matrix of shifts. Only the 2x2 diagonal of S
is referenced. It is assumed that S has JBLK double shifts
(size 2).
On exit, the data is rearranged in the best order for
applying.
LDS (local input) INTEGER
On entry, the leading dimension of S. Unchanged on exit.
1 < NBULGE <= JBLK <= LDS/2
NBULGE (local input/output) INTEGER
On entry, the number of bulges to send through H ( >1 ).
NBULGE should be less than the maximum determined (JBLK).
1 < NBULGE <= JBLK <= LDS/2
On exit, the maximum number of bulges that can be sent
through.
JBLK (local input) INTEGER
On entry, the number of shifts determined for S.
Unchanged on exit.
H (local input/output) COMPLEX*16 array ( LDH,N )
On entry, the local matrix to apply the shifts on.
H should be aligned so that the starting row is 2.
On exit, the data is destroyed.
LDH (local input) INTEGER
On entry, the leading dimension of H. Unchanged on exit.
N (local input) INTEGER
On entry, the size of H. If all the bulges are expected to
go through, N should be at least 4*NBULGE+2.
Otherwise, NBULGE may be reduced by this routine.
ULP (local input) DOUBLE PRECISION
On entry, machine precision
Unchanged on exit.
Further Details
===============
Implemented by: M. Fahey, May 28, 1999
=====================================================================
.. Parameters ..
|
|
|
|
001 SUBROUTINE ZLAMSH( S , LDS , NBULGE , JBLK , H , LDH , N , ULP )
002
003 * -- ScaLAPACK routine(version 1.7) --
004 * Univ. of Tennessee , Univ. of California Berkeley , NAG Ltd. ,
005 * Courant Institute , Argonne National Lab , and Rice University
006 * May 28 , 1999
007
008 * .. Scalar Arguments ..
009 INTEGER JBLK , LDH , LDS , N , NBULGE
010 DOUBLE PRECISION ULP
011 DOUBLE PRECISION RONE , TEN
012 PARAMETER( RONE = 1.0D + 0 , TEN = 10.0D + 0 )
013 COMPLEX*16 ZERO
014 PARAMETER( ZERO =( 0.0D + 0 , 0.0D + 0 ) )
015 * ..
016 * .. Local Scalars ..
017 INTEGER I , IBULGE , IVAL , J , K , M , NR
018 DOUBLE PRECISION DVAL , S1 , TST1
019 COMPLEX*16 CDUM , H00 , H10 , H11 , H12 , H21 , H22 , H33 , H33S ,
020 $H43H34 , H44 , H44S , SUM , T1 , T2 , T3 , V1 , V2 , V3
021 * ..
022 * .. Local Arrays ..
023 COMPLEX*16 V( 3 )
024 * ..
025 * .. External Subroutines ..
026 EXTERNAL ZCOPY , ZLARFG
027 * ..
028 * .. Intrinsic Functions ..
029 INTRINSIC ABS , DBLE , DCONJG , DIMAG , MAX , MIN
030 * ..
031 * .. Statement Functions ..
032 DOUBLE PRECISION CABS1
033 * ..
034 * .. Statement Function definitions ..
035 CABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) )
036 * ..
037 * .. Executable Statements ..
038
039 M = 2
040 DO 50 IBULGE = 1 , NBULGE
040
041 H44 = S( 2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2 )
042 H33 = S( 2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1 )
043 H43H34 = S( 2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2 )*
044 $ S( 2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1 )
045 H11 = H( M , M )
046 H22 = H( M + 1 , M + 1 )
047 H21 = H( M + 1 , M )
048 H12 = H( M , M + 1 )
049 H44S = H44 - H11
050 H33S = H33 - H11
051 V1 =( H33S*H44S - H43H34 ) / H21 + H12
052 V2 = H22 - H11 - H33S - H44S
053 V3 = H( M + 2 , M + 1 )
054 S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )
055 V1 = V1 / S1
056 V2 = V2 / S1
057 V3 = V3 / S1
058 V( 1 ) = V1
059 V( 2 ) = V2
060 V( 3 ) = V3
061 H00 = H( M - 1 , M - 1 )
062 H10 = H( M , M - 1 )
063 TST1 = CABS1( V1 )*( CABS1( H00 ) + CABS1( H11 ) + CABS1( H22 ) )
064 IF( CABS1( H10 )*( CABS1( V2 ) + CABS1( V3 ) ).GT.ULP*TST1 ) THEN
065 * Find minimum
065
066 DVAL =( CABS1( H10 )*( CABS1( V2 ) + CABS1( V3 ) ) ) /
067 $( ULP*TST1 )
067
068 IVAL = IBULGE
069 DO 10 I = IBULGE + 1 , NBULGE
069
070 H44 = S( 2*JBLK - 2*I + 2 , 2*JBLK - 2*I + 2 )
071 H33 = S( 2*JBLK - 2*I + 1 , 2*JBLK - 2*I + 1 )
072 H43H34 = S( 2*JBLK - 2*I + 1 , 2*JBLK - 2*I + 2 )*
073 $ S( 2*JBLK - 2*I + 2 , 2*JBLK - 2*I + 1 )
074 H11 = H( M , M )
075 H22 = H( M + 1 , M + 1 )
076 H21 = H( M + 1 , M )
077 H12 = H( M , M + 1 )
078 H44S = H44 - H11
079 H33S = H33 - H11
080 V1 =( H33S*H44S - H43H34 ) / H21 + H12
081 V2 = H22 - H11 - H33S - H44S
082 V3 = H( M + 2 , M + 1 )
083 S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )
084 V1 = V1 / S1
085 V2 = V2 / S1
086 V3 = V3 / S1
087 V( 1 ) = V1
088 V( 2 ) = V2
089 V( 3 ) = V3
090 H00 = H( M - 1 , M - 1 )
091 H10 = H( M , M - 1 )
092 TST1 = CABS1( V1 )*( CABS1( H00 ) + CABS1( H11 ) +
093 $ CABS1( H22 ) )
094 IF(( DVAL.GT.( CABS1( H10 )*( CABS1( V2 ) +
095 $ CABS1( V3 ) ) ) / ( ULP*TST1 ) ) .AND.
096 $( DVAL.GT.RONE ) ) THEN
096
097 DVAL =( CABS1( H10 )*( CABS1( V2 ) + CABS1( V3 ) ) ) /
098 $( ULP*TST1 )
098
099 IVAL = I
100 END IF
101 10 CONTINUE
101
102 IF(( DVAL.LT.TEN ) .AND.( IVAL.NE.IBULGE ) ) THEN
102
103 H44 = S( 2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 2 )
104 H33 = S( 2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 1 )
105 H43H34 = S( 2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 2 )
106 H10 = S( 2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 1 )
107 S( 2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 2 ) = S( 2*JBLK - 2*
108 $ IBULGE + 2 , 2*JBLK - 2*IBULGE + 2 )
109 S( 2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 1 ) = S( 2*JBLK - 2*
110 $ IBULGE + 1 , 2*JBLK - 2*IBULGE + 1 )
111 S( 2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 2 ) = S( 2*JBLK - 2*
112 $ IBULGE + 1 , 2*JBLK - 2*IBULGE + 2 )
113 S( 2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 1 ) = S( 2*JBLK - 2*
114 $ IBULGE + 2 , 2*JBLK - 2*IBULGE + 1 )
115 S( 2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2 ) = H44
116 S( 2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1 ) = H33
117 S( 2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2 ) = H43H34
118 S( 2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1 ) = H10
119 END IF
120 H44 = S( 2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2 )
121 H33 = S( 2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1 )
122 H43H34 = S( 2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2 )*
123 $ S( 2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1 )
124 H11 = H( M , M )
125 H22 = H( M + 1 , M + 1 )
126 H21 = H( M + 1 , M )
127 H12 = H( M , M + 1 )
128 H44S = H44 - H11
129 H33S = H33 - H11
130 V1 =( H33S*H44S - H43H34 ) / H21 + H12
131 V2 = H22 - H11 - H33S - H44S
132 V3 = H( M + 2 , M + 1 )
133 S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )
134 V1 = V1 / S1
135 V2 = V2 / S1
136 V3 = V3 / S1
137 V( 1 ) = V1
138 V( 2 ) = V2
139 V( 3 ) = V3
140 H00 = H( M - 1 , M - 1 )
141 H10 = H( M , M - 1 )
142 TST1 = CABS1( V1 )*( CABS1( H00 ) + CABS1( H11 ) +
143 $ CABS1( H22 ) )
144 END IF
145 IF( CABS1( H10 )*( CABS1( V2 ) + CABS1( V3 ) ).GT.TEN*ULP*TST1 )
145
146 $ THEN
147 * IBULGE better not be 1 here or we have a bug !
148 NBULGE = MAX( IBULGE - 1 , 1 )
149 RETURN
150 END IF
151 DO 40 K = M , N - 1
151
152 NR = MIN( 3 , N - K + 1 )
153 IF( K.GT.M )
153
154 $ CALL ZCOPY( NR , H( K , K - 1 ) , 1 , V , 1 )
155 CALL ZLARFG( NR , V( 1 ) , V( 2 ) , 1 , T1 )
156 IF( K.GT.M ) THEN
156
157 H( K , K - 1 ) = V( 1 )
158 H( K + 1 , K - 1 ) = ZERO
159 IF( K.LT.N - 1 )
159
160 $ H( K + 2 , K - 1 ) = ZERO
161 ELSE
162 * H(m , m - 1) must be updated ,
163
163
164 H( K , K - 1 ) = H( K , K - 1 ) - DCONJG( T1 )*H( K , K - 1 )
165 END IF
166 V2 = V( 2 )
167 T2 = T1*V2
168 IF( NR.EQ.3 ) THEN
168
169 V3 = V( 3 )
170 T3 = T1*V3
171 DO 20 J = K , N
171
172 SUM = DCONJG( T1 )*H( K , J ) +
173 $ DCONJG( T2 )*H( K + 1 , J ) +
174 $ DCONJG( T3 )*H( K + 2 , J )
175 H( K , J ) = H( K , J ) - SUM
176 H( K + 1 , J ) = H( K + 1 , J ) - SUM*V2
177 H( K + 2 , J ) = H( K + 2 , J ) - SUM*V3
178 20 CONTINUE
178
179 DO 30 J = 1 , MIN( K + 3 , N )
179
180 SUM = T1*H( J , K ) + T2*H( J , K + 1 ) + T3*H( J , K + 2 )
181 H( J , K ) = H( J , K ) - SUM
182 H( J , K + 1 ) = H( J , K + 1 ) - SUM*DCONJG( V2 )
183 H( J , K + 2 ) = H( J , K + 2 ) - SUM*DCONJG( V3 )
184 30 CONTINUE
184
185 END IF
186 40 CONTINUE
187 50 CONTINUE
188
189 RETURN
190
191 * End of ZLAMSH
192
193 END7
19
|
|
Variables in Routine ZLAMSH()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| COMPLEX*16 | 21 | ? |
| DOUBLE PRECISION | 7 | 28 |
| INTEGER | 12 | 48 |
| REAL | 2 | 8 |
| TOTAL | 42 | 84 |
List of Variables
COMPLEX*16
| CDUM | H00 | H10 | H11 | H12 |
| H21 | H22 | H33 | H33S | H43H34 |
| H44 | H44S | SUM | T1 | T2 |
| T3 | V( 3 ) | V1 | V2 | V3 |
| ZERO | | | | |
DOUBLE PRECISION
| CABS1 | DVAL | RONE | S1 | TEN |
| TST1 | ULP | | | |
INTEGER
| I | IBULGE | IVAL | J | JBLK |
| K | LDH | LDS | M | N |
| NBULGE | NR | | | |
REAL
Variables Dependence Graph Put the mouse over a right hand side variable to display the corresponding line of the dependence | | - | | - | - | | CABS1 | <--- | CDUMCABS1( CDUM ) = ABS( DBLE( CDUM ) ) + ABS( DIMAG( CDUM ) ) |
| DVAL | <--- | CABS1DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /{2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /}, TST1DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /{2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /}, ULPDVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /{2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /}, V2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /{2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /}, V3DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /{2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /}, H10DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /{2DVAL = ( CABS1( H10 )*( CABS1( V2 )+CABS1( V3 ) ) ) /} |
| H | <--- | JH( K, J ) = H( K, J ) - SUM{2H( K+1, J ) = H( K+1, J ) - SUM*V2, 3H( K+2, J ) = H( K+2, J ) - SUM*V3, 4H( J, K ) = H( J, K ) - SUM, 5H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 ), 6H( J, K+2 ) = H( J, K+2 ) - SUM*DCONJG( V3 )}, KH( K, K-1 ) = H( K, K-1 ) - DCONJG( T1 )*H( K, K-1 ){2H( K, J ) = H( K, J ) - SUM, 3H( K+1, J ) = H( K+1, J ) - SUM*V2, 4H( K+2, J ) = H( K+2, J ) - SUM*V3, 5H( J, K ) = H( J, K ) - SUM, 6H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 ), 7H( J, K+2 ) = H( J, K+2 ) - SUM*DCONJG( V3 )}, SUMH( K, J ) = H( K, J ) - SUM{2H( K+1, J ) = H( K+1, J ) - SUM*V2, 3H( K+2, J ) = H( K+2, J ) - SUM*V3, 4H( J, K ) = H( J, K ) - SUM, 5H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 ), 6H( J, K+2 ) = H( J, K+2 ) - SUM*DCONJG( V3 )}, T1H( K, K-1 ) = H( K, K-1 ) - DCONJG( T1 )*H( K, K-1 ), VH( K, K-1 ) = V( 1 ), HH( K, K-1 ) = H( K, K-1 ) - DCONJG( T1 )*H( K, K-1 ){2H( K, J ) = H( K, J ) - SUM, 3H( K+1, J ) = H( K+1, J ) - SUM*V2, 4H( K+2, J ) = H( K+2, J ) - SUM*V3, 5H( J, K ) = H( J, K ) - SUM, 6H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 ), 7H( J, K+2 ) = H( J, K+2 ) - SUM*DCONJG( V3 )}, V2H( K+1, J ) = H( K+1, J ) - SUM*V2{2H( J, K+1 ) = H( J, K+1 ) - SUM*DCONJG( V2 )}, V3H( K+2, J ) = H( K+2, J ) - SUM*V3{2H( J, K+2 ) = H( J, K+2 ) - SUM*DCONJG( V3 )}, ZEROH( K+1, K-1 ) = ZERO |
| H00 | <--- | MH00 = H( M-1, M-1 ){2H00 = H( M-1, M-1 ), 3H00 = H( M-1, M-1 )}, HH00 = H( M-1, M-1 ){2H00 = H( M-1, M-1 ), 3H00 = H( M-1, M-1 )} |
| H10 | <--- | IVALH10 = S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 ), JBLKH10 = S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 ), MH10 = H( M, M-1 ){2H10 = H( M, M-1 ), 3H10 = H( M, M-1 )}, SH10 = S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 ), HH10 = H( M, M-1 ){2H10 = H( M, M-1 ), 3H10 = H( M, M-1 )} |
| H11 | <--- | MH11 = H( M, M ){2H11 = H( M, M ), 3H11 = H( M, M )}, HH11 = H( M, M ){2H11 = H( M, M ), 3H11 = H( M, M )} |
| H12 | <--- | MH12 = H( M, M+1 ){2H12 = H( M, M+1 ), 3H12 = H( M, M+1 )}, HH12 = H( M, M+1 ){2H12 = H( M, M+1 ), 3H12 = H( M, M+1 )} |
| H21 | <--- | MH21 = H( M+1, M ){2H21 = H( M+1, M ), 3H21 = H( M+1, M )}, HH21 = H( M+1, M ){2H21 = H( M+1, M ), 3H21 = H( M+1, M )} |
| H22 | <--- | MH22 = H( M+1, M+1 ){2H22 = H( M+1, M+1 ), 3H22 = H( M+1, M+1 )}, HH22 = H( M+1, M+1 ){2H22 = H( M+1, M+1 ), 3H22 = H( M+1, M+1 )} |
| H33 | <--- | IH33 = S( 2*JBLK-2*I+1, 2*JBLK-2*I+1 ), IBULGEH33 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 ){2H33 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 )}, IVALH33 = S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 ), JBLKH33 = S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 ){2H33 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 ), 3H33 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 ), 4H33 = S( 2*JBLK-2*I+1, 2*JBLK-2*I+1 )}, SH33 = S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 ){2H33 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 ), 3H33 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 ), 4H33 = S( 2*JBLK-2*I+1, 2*JBLK-2*I+1 )} |
| H33S | <--- | H33H33S = H33 - H11{2H33S = H33 - H11, 3H33S = H33 - H11}, H11H33S = H33 - H11{2H33S = H33 - H11, 3H33S = H33 - H11} |
| H43H34 | <--- | IH43H34 = S( 2*JBLK-2*I+1, 2*JBLK-2*I+2 )*, IBULGEH43H34 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 )*{2H43H34 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 )*}, IVALH43H34 = S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 ), JBLKH43H34 = S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 ){2H43H34 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 )*, 3H43H34 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 )*, 4H43H34 = S( 2*JBLK-2*I+1, 2*JBLK-2*I+2 )*}, SH43H34 = S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 ){2H43H34 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 )*, 3H43H34 = S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 )*, 4H43H34 = S( 2*JBLK-2*I+1, 2*JBLK-2*I+2 )*} |
| H44 | <--- | IH44 = S( 2*JBLK-2*I+2, 2*JBLK-2*I+2 ), IBULGEH44 = S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 ){2H44 = S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 )}, IVALH44 = S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 ), JBLKH44 = S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 ){2H44 = S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 ), 3H44 = S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 ), 4H44 = S( 2*JBLK-2*I+2, 2*JBLK-2*I+2 )}, SH44 = S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 ){2H44 = S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 ), 3H44 = S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 ), 4H44 = S( 2*JBLK-2*I+2, 2*JBLK-2*I+2 )} |
| H44S | <--- | H44H44S = H44 - H11{2H44S = H44 - H11, 3H44S = H44 - H11}, H11H44S = H44 - H11{2H44S = H44 - H11, 3H44S = H44 - H11} |
| I | <--- | IBULGEDO 10 I = IBULGE + 1, NBULGE, NBULGEDO 10 I = IBULGE + 1, NBULGE |
| IBULGE | <--- | NBULGEDO 50 IBULGE = 1, NBULGE |
| IVAL | <--- | IIVAL = I, IBULGEIVAL = IBULGE |
| J | <--- | KDO 20 J = K, N{2DO 30 J = 1, MIN( K+3, N )}, NDO 20 J = K, N{2DO 30 J = 1, MIN( K+3, N )} |
| K | <--- | MDO 40 K = M, N - 1, NDO 40 K = M, N - 1 |
| NBULGE | <--- | IBULGENBULGE = MAX( IBULGE-1, 1 ) |
| NR | <--- | KNR = MIN( 3, N-K+1 ), NNR = MIN( 3, N-K+1 ) |
| S | <--- | H33S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 ) = H33, H43H34S( 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 ) = H43H34, H44S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 ) = H44, IBULGES( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 ) = S( 2*JBLK-2*{2S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 ) = S( 2*JBLK-2*, 3S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 ) = S( 2*JBLK-2*, 4S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 ) = S( 2*JBLK-2*}, JBLKS( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 ) = S( 2*JBLK-2*{2S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 ) = S( 2*JBLK-2*, 3S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 ) = S( 2*JBLK-2*, 4S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 ) = S( 2*JBLK-2*}, SS( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 ) = S( 2*JBLK-2*{2S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 ) = S( 2*JBLK-2*, 3S( 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 ) = S( 2*JBLK-2*, 4S( 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 ) = S( 2*JBLK-2*}, H10S( 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+1 ) = H10 |
| S1 | <--- | CABS1S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ){2S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ), 3S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )}, V1S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ){2S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ), 3S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )}, V2S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ){2S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ), 3S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )}, V3S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ){2S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 ), 3S1 = CABS1( V1 ) + CABS1( V2 ) + CABS1( V3 )} |
| SUM | <--- | JSUM = DCONJG( T1 )*H( K, J ) +{2SUM = T1*H( J, K ) + T2*H( J, K+1 ) + T3*H( J, K+2 )}, KSUM = DCONJG( T1 )*H( K, J ) +{2SUM = T1*H( J, K ) + T2*H( J, K+1 ) + T3*H( J, K+2 )}, T1SUM = DCONJG( T1 )*H( K, J ) +{2SUM = T1*H( J, K ) + T2*H( J, K+1 ) + T3*H( J, K+2 )}, T2SUM = DCONJG( T1 )*H( K, J ) +{2SUM = T1*H( J, K ) + T2*H( J, K+1 ) + T3*H( J, K+2 )}, T3SUM = DCONJG( T1 )*H( K, J ) +{2SUM = T1*H( J, K ) + T2*H( J, K+1 ) + T3*H( J, K+2 )}, HSUM = DCONJG( T1 )*H( K, J ) +{2SUM = T1*H( J, K ) + T2*H( J, K+1 ) + T3*H( J, K+2 )} |
| T2 | <--- | T1T2 = T1*V2, V2T2 = T1*V2 |
| T3 | <--- | T1T3 = T1*V3, V3T3 = T1*V3 |
| TST1 | <--- | CABS1TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+{2TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+CABS1( H22 ) ), 3TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+}, H22TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+{2TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+CABS1( H22 ) ), 3TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+}, V1TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+{2TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+CABS1( H22 ) ), 3TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+}, H00TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+{2TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+CABS1( H22 ) ), 3TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+}, H11TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+{2TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+CABS1( H22 ) ), 3TST1 = CABS1( V1 )*( CABS1( H00 )+CABS1( H11 )+} |
| V | <--- | V1V( 1 ) = V1{2V( 1 ) = V1, 3V( 1 ) = V1}, V2V( 2 ) = V2{2V( 2 ) = V2, 3V( 2 ) = V2}, V3V( 3 ) = V3{2V( 3 ) = V3, 3V( 3 ) = V3} |
| V1 | <--- | H33SV1 = ( H33S*H44S-H43H34 ) / H21 + H12{2V1 = ( H33S*H44S-H43H34 ) / H21 + H12, 3V1 = ( H33S*H44S-H43H34 ) / H21 + H12}, H43H34V1 = ( H33S*H44S-H43H34 ) / H21 + H12{2V1 = ( H33S*H44S-H43H34 ) / H21 + H12, 3V1 = ( H33S*H44S-H43H34 ) / H21 + H12}, H44SV1 = ( H33S*H44S-H43H34 ) / H21 + H12{2V1 = ( H33S*H44S-H43H34 ) / H21 + H12, 3V1 = ( H33S*H44S-H43H34 ) / H21 + H12}, S1V1 = V1 / S1{2V1 = V1 / S1, 3V1 = V1 / S1}, V1V1 = V1 / S1{2V1 = V1 / S1, 3V1 = V1 / S1}, H12V1 = ( H33S*H44S-H43H34 ) / H21 + H12{2V1 = ( H33S*H44S-H43H34 ) / H21 + H12, 3V1 = ( H33S*H44S-H43H34 ) / H21 + H12}, H21V1 = ( H33S*H44S-H43H34 ) / H21 + H12{2V1 = ( H33S*H44S-H43H34 ) / H21 + H12, 3V1 = ( H33S*H44S-H43H34 ) / H21 + H12} |
| V2 | <--- | H22V2 = H22 - H11 - H33S - H44S{2V2 = H22 - H11 - H33S - H44S, 3V2 = H22 - H11 - H33S - H44S}, H33SV2 = H22 - H11 - H33S - H44S{2V2 = H22 - H11 - H33S - H44S, 3V2 = H22 - H11 - H33S - H44S}, H44SV2 = H22 - H11 - H33S - H44S{2V2 = H22 - H11 - H33S - H44S, 3V2 = H22 - H11 - H33S - H44S}, S1V2 = V2 / S1{2V2 = V2 / S1, 3V2 = V2 / S1}, VV2 = V( 2 ), V2V2 = V2 / S1{2V2 = V2 / S1, 3V2 = V2 / S1}, H11V2 = H22 - H11 - H33S - H44S{2V2 = H22 - H11 - H33S - H44S, 3V2 = H22 - H11 - H33S - H44S} |
| V3 | <--- | MV3 = H( M+2, M+1 ){2V3 = H( M+2, M+1 ), 3V3 = H( M+2, M+1 )}, S1V3 = V3 / S1{2V3 = V3 / S1, 3V3 = V3 / S1}, VV3 = V( 3 ), HV3 = H( M+2, M+1 ){2V3 = H( M+2, M+1 ), 3V3 = H( M+2, M+1 )}, V3V3 = V3 / S1{2V3 = V3 / S1, 3V3 = V3 / S1} |
|
|
Analysis elements of the routine ZLAMSH() Put the mouse over each element to display detailed matching information
Assigned variables |
| | | CDUM , DVAL , H00 , H10 , H11 , H12 , H21 , H22 , H33 , H33S , H43H34 , H44 , H44S , I , IBULGE , IVAL , J , K , M , NBULGE , NR , RONE , S1 , SUM , T2 , T3 , TEN , TST1 , V , V1 , V2 , V3 , ZERO |
|
Active variables |
| | | CABS1 , CDUM , DVAL , H , H00 , H10 , H11 , H12 , H21 , H22 , H33 , H33S , H43H34 , H44 , H44S , I , IBULGE , IVAL , J , JBLK , K , LDH , LDS , M , N , NBULGE , NR , RONE , S , S1 , SUM , T1 , T2 , T3 , TEN , TST1 , ULP , V , V1 , V2 , V3 , ZERO |
|
Accessed arrays [ array name : associated index ] |
| | CABS1 | : CDUM , H00 , H00 , H00 , H10 , H10 , H10 , H10 , H10 , H11 , H11 , H11 , H22 , H22 , H22 , V1 , V1 , V1 , V1 , V1 , V1 , V2 , V2 , V2 , V2 , V2 , V2 , V2 , V2 , V3 , V3 , V3 , V3 , V3 , V3 , V3 , V3 |
| | H | : J, K , J, K , J, K+1 , J, K+1 , J, K+2 , J, K+2 , K, J , K, J , K, K-1 , K, K-1 , K, K-1 , K+1, J , K+1, J , K+1, K-1 , K+2, J , K+2, J , K+2, K-1 , M, M , M, M , M, M , M, M+1 , M, M+1 , M, M+1 , M, M-1 , M, M-1 , M, M-1 , m,m-1 , M+1, M , M+1, M , M+1, M , M+1, M+1 , M+1, M+1 , M+1, M+1 , M+2, M+1 , M+2, M+1 , M+2, M+1 , M-1, M-1 , M-1, M-1 , M-1, M-1 |
| | S | : 2*JBLK-2*I+1, 2*JBLK-2*I+1 , 2*JBLK-2*I+1, 2*JBLK-2*I+2 , 2*JBLK-2*I+2, 2*JBLK-2*I+1 , 2*JBLK-2*I+2, 2*JBLK-2*I+2 , 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 , 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 , 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+1 , 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 , 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 , 2*JBLK-2*IBULGE+1, 2*JBLK-2*IBULGE+2 , 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+1 , 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+1 , 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+1 , 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 , 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 , 2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2 , 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 , 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+1 , 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 , 2*JBLK-2*IVAL+1, 2*JBLK-2*IVAL+2 , 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 , 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1 , 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 , 2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2 |
| | V | : 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 |
|
Conditional statements [ statement : associated predicate ] |
| | do | : ( 50 IBULGE = 1 , NBULGE ) , ( 10 I = IBULGE + 1 , NBULGE ) , ( 40 K = M , N - 1 ) , ( 20 J = K , N ) , ( 30 J = 1 , MIN( K + 3 , N ) ) |
| | if | : ( (CABS1( H10 )*( CABS1( V2 ) + CABS1( V3 ) ).GT.ULP*TST1 ) ) , ( (( DVAL.GT.( CABS1( H10 )*( CABS1( V2 ) + ) , ( (( DVAL.LT.TEN ) .AND. ( IVAL.NE.IBULGE ) ) ) , ( (CABS1( H10 )*( CABS1( V2 ) + CABS1( V3 ) ).GT.TEN*ULP*TST1 ) ) , ( K.GT.M ) , ( K.GT.M ) , ( K.LT.N - 1 ) , ( NR.EQ.3 ) |
|
| List of variables | CABS1 CDUM DVAL H H00 H10 H11
| H12 H21 H22 H33 H33S H43H34 H44 H44S
| I IBULGE IVAL J JBLK K LDH LDS
| M N NBULGE NR RONE S S1 SUM
| T1 T2 T3 TEN TST1 ULP V( 3 ) V1
| V2 V3 ZERO | | close
| |
CABS1
CDUM
DVAL
H
H00
H10
H11
H12
H21
H22
H33
H33S
H43H34
H44
H44S
I
IBULGE
IVAL
J
JBLK
K
LDH
LDS
M
N
NBULGE
NR
RONE
S
S1
SUM
T1
T2
T3
TEN
TST1
ULP
V( 3 )
V1
V2
V3
ZERO
| |