|
|
| |
| # lines: |
236 | | # code: |
236 | | # comment: | 0 | |
# blank: | 0 |
| # Variables: | 39 |
| # Callers: | 0 |
| # Callings: | 0 |
| # Words: | 111 |
| # Keywords: | 48 |
|
|
|
|
|
..
.. Array Arguments ..
..
Purpose
=======
SLAMSH 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.
SLAMSH 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) REAL 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) REAL 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.
LDS (local input) INTEGER
On entry, the leading dimension of S. 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) REAL
On entry, machine precision
Unchanged on exit.
Implemented by: G. Henry, May 1, 1997
=====================================================================
.. Parameters ..
|
|
|
|
001 SUBROUTINE SLAMSH( S , LDS , NBULGE , JBLK , H , LDH , N , ULP )
002
003 * -- ScaLAPACK auxiliary routine(version 1.7) --
004 * University of Tennessee , Knoxville , Oak Ridge National Laboratory ,
005 * and University of California , Berkeley.
006 * May 1 , 1997
007
008 * .. Scalar Arguments ..
009 INTEGER LDS , NBULGE , JBLK , LDH , N
010 REAL ULP
011 REAL ZERO , TEN
012 PARAMETER( ZERO = 0.0E + 0 , TEN = 10.0E + 0 )
013 * ..
014 * .. Local Scalars ..
015 INTEGER K , IBULGE , M , NR , J , IVAL , I
016 REAL H44 , H33 , H43H34 , H11 , H22 , H21 , H12 , H44S ,
017 $H33S , V1 , V2 , V3 , H00 , H10 , TST1 , T1 , T2 , T3 ,
018 $SUM , S1 , DVAL
019 * ..
020 * .. Local Arrays ..
021 REAL V(3)
022 * ..
023 * .. External Subroutines ..
024 EXTERNAL SLARFG , SCOPY
025 * ..
026 * .. Intrinsic Functions ..
027 INTRINSIC MAX , ABS
028 * ..
029 * .. Executable Statements ..
030
031 M = 2
032 DO 10 IBULGE = 1 , NBULGE
032
033 H44 = S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2)
034 H33 = S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1)
035 H43H34 = S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2)*
036 $ S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1)
037 H11 = H( M , M )
038 H22 = H( M + 1 , M + 1 )
039 H21 = H( M + 1 , M )
040 H12 = H( M , M + 1 )
041 H44S = H44 - H11
042 H33S = H33 - H11
043 V1 =( H33S*H44S - H43H34 ) / H21 + H12
044 V2 = H22 - H11 - H33S - H44S
045 V3 = H( M + 2 , M + 1 )
046 S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 )
047 V1 = V1 / S1
048 V2 = V2 / S1
049 V3 = V3 / S1
050 V( 1 ) = V1
051 V( 2 ) = V2
052 V( 3 ) = V3
053 H00 = H( M - 1 , M - 1 )
054 H10 = H( M , M - 1 )
055 TST1 = ABS( V1 )*( ABS( H00 ) + ABS( H11 ) + ABS( H22 ) )
056 IF( ABS( H10 )*( ABS( V2 ) + ABS( V3 ) ).GT.ULP*TST1 ) THEN
057 * Find minimum
057
058 DVAL =(ABS(H10)*(ABS(V2) + ABS(V3))) / (ULP*TST1)
059 IVAL = IBULGE
060 DO 15 I = IBULGE + 1 , NBULGE
060
061 H44 = S(2*JBLK - 2*I + 2 , 2*JBLK - 2*I + 2)
062 H33 = S(2*JBLK - 2*I + 1 , 2*JBLK - 2*I + 1)
063 H43H34 = S(2*JBLK - 2*I + 1 , 2*JBLK - 2*I + 2)*
064 $ S(2*JBLK - 2*I + 2 , 2*JBLK - 2*I + 1)
065 H11 = H( M , M )
066 H22 = H( M + 1 , M + 1 )
067 H21 = H( M + 1 , M )
068 H12 = H( M , M + 1 )
069 H44S = H44 - H11
070 H33S = H33 - H11
071 V1 =( H33S*H44S - H43H34 ) / H21 + H12
072 V2 = H22 - H11 - H33S - H44S
073 V3 = H( M + 2 , M + 1 )
074 S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 )
075 V1 = V1 / S1
076 V2 = V2 / S1
077 V3 = V3 / S1
078 V( 1 ) = V1
079 V( 2 ) = V2
080 V( 3 ) = V3
081 H00 = H( M - 1 , M - 1 )
082 H10 = H( M , M - 1 )
083 TST1 = ABS( V1 )*( ABS( H00 ) + ABS( H11 ) + ABS( H22 ) )
084 IF((DVAL.GT.(ABS(H10)*(ABS(V2) + ABS(V3))) / (ULP*TST1))
084
085 $ .AND.( DVAL .GT. 1.D0 ) ) THEN
086 DVAL =(ABS(H10)*(ABS(V2) + ABS(V3))) / (ULP*TST1)
087 IVAL = I
088 END IF
089 15 CONTINUE
089
090 IF((DVAL .LT. TEN) .AND.(IVAL .NE. IBULGE) ) THEN
090
091 H44 = S(2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 2)
092 H33 = S(2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 1)
093 H43H34 = S(2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 2)
094 H10 = S(2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 1)
095 S(2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 2) =
096 $ S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2)
097 S(2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 1) =
098 $ S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1)
099 S(2*JBLK - 2*IVAL + 1 , 2*JBLK - 2*IVAL + 2) =
100 $ S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2)
101 S(2*JBLK - 2*IVAL + 2 , 2*JBLK - 2*IVAL + 1) =
102 $ S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1)
103 S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2) = H44
104 S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1) = H33
105 S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2) = H43H34
106 S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1) = H10
107 END IF
108 H44 = S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 2)
109 H33 = S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 1)
110 H43H34 = S(2*JBLK - 2*IBULGE + 1 , 2*JBLK - 2*IBULGE + 2)*
111 $ S(2*JBLK - 2*IBULGE + 2 , 2*JBLK - 2*IBULGE + 1)
112 H11 = H( M , M )
113 H22 = H( M + 1 , M + 1 )
114 H21 = H( M + 1 , M )
115 H12 = H( M , M + 1 )
116 H44S = H44 - H11
117 H33S = H33 - H11
118 V1 =( H33S*H44S - H43H34 ) / H21 + H12
119 V2 = H22 - H11 - H33S - H44S
120 V3 = H( M + 2 , M + 1 )
121 S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 )
122 V1 = V1 / S1
123 V2 = V2 / S1
124 V3 = V3 / S1
125 V( 1 ) = V1
126 V( 2 ) = V2
127 V( 3 ) = V3
128 H00 = H( M - 1 , M - 1 )
129 H10 = H( M , M - 1 )
130 TST1 = ABS( V1 )*( ABS( H00 ) + ABS( H11 ) + ABS( H22 ) )
131 END IF
132 IF( ABS( H10 )*( ABS( V2 ) + ABS( V3 ) ).GT.TEN*ULP*TST1 ) THEN
133 * IBULGE better not be 1 here or we have a bug !
133
134 NBULGE = MAX(IBULGE - 1 , 1)
135 RETURN
136 END IF
137 DO 120 K = M , N - 1
137
138 NR = MIN( 3 , N - K + 1 )
139 IF( K.GT.M )
139
140 $ CALL SCOPY( NR , H( K , K - 1 ) , 1 , V , 1 )
141 CALL SLARFG( NR , V( 1 ) , V( 2 ) , 1 , T1 )
142 IF( K.GT.M ) THEN
142
143 H( K , K - 1 ) = V( 1 )
144 H( K + 1 , K - 1 ) = ZERO
145 IF( K.LT.N - 1 )
145
146 $ H( K + 2 , K - 1 ) = ZERO
147 ELSE
147
148 H( K , K - 1 ) = - H( K , K - 1 )
149 END IF
150 V2 = V( 2 )
151 T2 = T1*V2
152 IF( NR.EQ.3 ) THEN
152
153 V3 = V( 3 )
154 T3 = T1*V3
155 DO 60 J = K , N
155
156 SUM = H( K , J ) + V2*H( K + 1 , J ) + V3*H( K + 2 , J )
157 H( K , J ) = H( K , J ) - SUM*T1
158 H( K + 1 , J ) = H( K + 1 , J ) - SUM*T2
159 H( K + 2 , J ) = H( K + 2 , J ) - SUM*T3
160 60 CONTINUE
160
161 DO 70 J = 1 , MIN( K + 3 , N )
161
162 SUM = H( J , K ) + V2*H( J , K + 1 ) + V3*H( J , K + 2 )
163 H( J , K ) = H( J , K ) - SUM*T1
164 H( J , K + 1 ) = H( J , K + 1 ) - SUM*T2
165 H( J , K + 2 ) = H( J , K + 2 ) - SUM*T3
166 70 CONTINUE
166
167 END IF
168 120 CONTINUE
169 10 CONTINUE
170
171 RETURN
172 END4
17
|
|
Variables in Routine SLAMSH()
| Summary Report |
| Data Type | Quantity | Size(byte) |
| INTEGER | 12 | 48 |
| REAL | 27 | 116 |
| TOTAL | 39 | 164 |
List of Variables
INTEGER
| I | IBULGE | IVAL | J | JBLK |
| K | LDH | LDS | M | N |
| NBULGE | NR | | | |
REAL
| DVAL | H | H00 | H10 | H11 |
| H12 | H21 | H22 | H33 | H33S |
| H43H34 | H44 | H44S | S | S1 |
| SUM | T1 | T2 | T3 | TEN |
| TST1 | ULP | V(3) | V1 | V2 |
| V3 | ZERO | | | |
Variables Dependence Graph Put the mouse over a right hand side variable to display the corresponding line of the dependence | | - | | - | - | | DVAL | <--- | TST1DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1){2DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1)}, ULPDVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1){2DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1)}, V2DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1){2DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1)}, V3DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1){2DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1)}, H10DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1){2DVAL = (ABS(H10)*(ABS(V2)+ABS(V3))) / (ULP*TST1)} |
| H | <--- | JH( K, J ) = H( K, J ) - SUM*T1{2H( K+1, J ) = H( K+1, J ) - SUM*T2, 3H( K+2, J ) = H( K+2, J ) - SUM*T3, 4H( J, K ) = H( J, K ) - SUM*T1, 5H( J, K+1 ) = H( J, K+1 ) - SUM*T2, 6H( J, K+2 ) = H( J, K+2 ) - SUM*T3}, KH( K, K-1 ) = -H( K, K-1 ){2H( K, J ) = H( K, J ) - SUM*T1, 3H( K+1, J ) = H( K+1, J ) - SUM*T2, 4H( K+2, J ) = H( K+2, J ) - SUM*T3, 5H( J, K ) = H( J, K ) - SUM*T1, 6H( J, K+1 ) = H( J, K+1 ) - SUM*T2, 7H( J, K+2 ) = H( J, K+2 ) - SUM*T3}, HH( K, K-1 ) = -H( K, K-1 ){2H( K, J ) = H( K, J ) - SUM*T1, 3H( K+1, J ) = H( K+1, J ) - SUM*T2, 4H( K+2, J ) = H( K+2, J ) - SUM*T3, 5H( J, K ) = H( J, K ) - SUM*T1, 6H( J, K+1 ) = H( J, K+1 ) - SUM*T2, 7H( J, K+2 ) = H( J, K+2 ) - SUM*T3}, SUMH( K, J ) = H( K, J ) - SUM*T1{2H( K+1, J ) = H( K+1, J ) - SUM*T2, 3H( K+2, J ) = H( K+2, J ) - SUM*T3, 4H( J, K ) = H( J, K ) - SUM*T1, 5H( J, K+1 ) = H( J, K+1 ) - SUM*T2, 6H( J, K+2 ) = H( J, K+2 ) - SUM*T3}, T1H( K, J ) = H( K, J ) - SUM*T1{2H( J, K ) = H( J, K ) - SUM*T1}, T2H( K+1, J ) = H( K+1, J ) - SUM*T2{2H( J, K+1 ) = H( J, K+1 ) - SUM*T2}, T3H( K+2, J ) = H( K+2, J ) - SUM*T3{2H( J, K+2 ) = H( J, K+2 ) - SUM*T3}, VH( K, K-1 ) = V( 1 ), ZEROH( K+1, K-1 ) = ZERO |
| H00 | <--- | HH00 = H( M-1, M-1 ){2H00 = H( M-1, M-1 ), 3H00 = H( M-1, M-1 )}, MH00 = 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), HH10 = H( M, M-1 ){2H10 = H( M, M-1 ), 3H10 = H( M, M-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) |
| H11 | <--- | HH11 = H( M, M ){2H11 = H( M, M ), 3H11 = H( M, M )}, MH11 = H( M, M ){2H11 = H( M, M ), 3H11 = H( M, M )} |
| H12 | <--- | HH12 = H( M, M+1 ){2H12 = H( M, M+1 ), 3H12 = H( M, M+1 )}, MH12 = H( M, M+1 ){2H12 = H( M, M+1 ), 3H12 = H( M, M+1 )} |
| H21 | <--- | HH21 = H( M+1, M ){2H21 = H( M+1, M ), 3H21 = H( M+1, M )}, MH21 = H( M+1, M ){2H21 = H( M+1, M ), 3H21 = H( M+1, M )} |
| H22 | <--- | HH22 = H( M+1, M+1 ){2H22 = H( M+1, M+1 ), 3H22 = H( M+1, M+1 )}, MH22 = 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*IBULGE+1,2*JBLK-2*IBULGE+1){2H33 = S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+1), 3H33 = S(2*JBLK-2*I+1,2*JBLK-2*I+1), 4H33 = S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+1)}, SH33 = S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+1){2H33 = S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+1), 3H33 = S(2*JBLK-2*I+1,2*JBLK-2*I+1), 4H33 = S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+1)} |
| H33S | <--- | H11H33S = H33 - H11{2H33S = H33 - H11, 3H33S = H33 - H11}, H33H33S = 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*IBULGE+1,2*JBLK-2*IBULGE+2)*{2H43H34 = S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+2)*, 3H43H34 = S(2*JBLK-2*I+1,2*JBLK-2*I+2)*, 4H43H34 = S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+2)}, SH43H34 = S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+2)*{2H43H34 = S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+2)*, 3H43H34 = S(2*JBLK-2*I+1,2*JBLK-2*I+2)*, 4H43H34 = S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+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*IBULGE+2, 2*JBLK-2*IBULGE+2){2H44 = S(2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2), 3H44 = S(2*JBLK-2*I+2, 2*JBLK-2*I+2), 4H44 = S(2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2)}, SH44 = S(2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2){2H44 = S(2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+2), 3H44 = S(2*JBLK-2*I+2, 2*JBLK-2*I+2), 4H44 = S(2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+2)} |
| H44S | <--- | H44H44S = H44 - H11{2H44S = H44 - H11, 3H44S = H44 - H11}, H11H44S = H44 - H11{2H44S = H44 - H11, 3H44S = H44 - H11} |
| I | <--- | IBULGEDO 15 I = IBULGE+1, NBULGE, NBULGEDO 15 I = IBULGE+1, NBULGE |
| IBULGE | <--- | NBULGEDO 10 IBULGE = 1, NBULGE |
| IVAL | <--- | IIVAL = I, IBULGEIVAL = IBULGE |
| J | <--- | KDO 60 J = K, N{2DO 70 J = 1, MIN( K+3, N )}, NDO 60 J = K, N{2DO 70 J = 1, MIN( K+3, N )} |
| K | <--- | MDO 120 K = M, N - 1, NDO 120 K = M, N - 1 |
| NBULGE | <--- | IBULGENBULGE = MAX(IBULGE -1,1) |
| NR | <--- | KNR = MIN( 3, N-K+1 ), NNR = MIN( 3, N-K+1 ) |
| S | <--- | 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+1) ={2S(2*JBLK-2*IVAL+2,2*JBLK-2*IVAL+2) =, 3S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+1) =, 4S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+2) =}, JBLKS(2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1) ={2S(2*JBLK-2*IVAL+2,2*JBLK-2*IVAL+2) =, 3S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+1) =, 4S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+2) =}, SS(2*JBLK-2*IVAL+2, 2*JBLK-2*IVAL+1) ={2S(2*JBLK-2*IVAL+2,2*JBLK-2*IVAL+2) =, 3S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+1) =, 4S(2*JBLK-2*IVAL+1,2*JBLK-2*IVAL+2) =}, H10S(2*JBLK-2*IBULGE+2, 2*JBLK-2*IBULGE+1) = H10, H33S(2*JBLK-2*IBULGE+1,2*JBLK-2*IBULGE+1) = H33 |
| S1 | <--- | V1S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 ){2S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 ), 3S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 )}, V2S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 ){2S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 ), 3S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 )}, V3S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 ){2S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 ), 3S1 = ABS( V1 ) + ABS( V2 ) + ABS( V3 )} |
| SUM | <--- | JSUM = H( K, J ) + V2*H( K+1, J ) + V3*H( K+2, J ){2SUM = H( J, K ) + V2*H( J, K+1 ) + V3*H( J, K+2 )}, KSUM = H( K, J ) + V2*H( K+1, J ) + V3*H( K+2, J ){2SUM = H( J, K ) + V2*H( J, K+1 ) + V3*H( J, K+2 )}, HSUM = H( K, J ) + V2*H( K+1, J ) + V3*H( K+2, J ){2SUM = H( J, K ) + V2*H( J, K+1 ) + V3*H( J, K+2 )}, V2SUM = H( K, J ) + V2*H( K+1, J ) + V3*H( K+2, J ){2SUM = H( J, K ) + V2*H( J, K+1 ) + V3*H( J, K+2 )}, V3SUM = H( K, J ) + V2*H( K+1, J ) + V3*H( K+2, J ){2SUM = H( J, K ) + V2*H( J, K+1 ) + V3*H( J, K+2 )} |
| T2 | <--- | T1T2 = T1*V2, V2T2 = T1*V2 |
| T3 | <--- | T1T3 = T1*V3, V3T3 = T1*V3 |
| TST1 | <--- | H00TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ){2TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ), 3TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) )}, V1TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ){2TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ), 3TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) )}, H11TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ){2TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ), 3TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) )}, H22TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ){2TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) ), 3TST1 = ABS( V1 )*( ABS( H00 )+ABS( H11 )+ABS( H22 ) )} |
| 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 | <--- | 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}, H22V2 = H22 - H11 - H33S - H44S{2V2 = H22 - H11 - H33S - H44S, 3V2 = H22 - H11 - H33S - H44S} |
| V3 | <--- | HV3 = H( M+2, M+1 ){2V3 = H( M+2, M+1 ), 3V3 = H( M+2, M+1 )}, 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 ), V3V3 = V3 / S1{2V3 = V3 / S1, 3V3 = V3 / S1} |
|
|
Analysis elements of the routine SLAMSH () Put the mouse over each element to display detailed matching information
Assigned variables |
| | | DVAL , H00 , H10 , H11 , H12 , H21 , H22 , H33 , H33S , H43H34 , H44 , H44S , I , IBULGE , IVAL , J , K , M , NBULGE , NR , S1 , SUM , T2 , T3 , TEN , TST1 , V , V1 , V2 , V3 , ZERO |
|
Active variables |
| | | 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 , S , S1 , SUM , T1 , T2 , T3 , TEN , TST1 , ULP , V , V1 , V2 , V3 , ZERO |
|
Accessed arrays [ array name : associated index ] |
| | 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+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+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+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+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*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 | : ( 10 IBULGE = 1 , NBULGE ) , ( 15 I = IBULGE + 1 , NBULGE ) , ( 120 K = M , N - 1 ) , ( 60 J = K , N ) , ( 70 J = 1 , MIN( K + 3 , N ) ) |
| | if | : ( (ABS( H10 )*( ABS( V2 ) + ABS( V3 ) ).GT.ULP*TST1 ) ) , ( ((DVAL.GT.(ABS(H10)*(ABS(V2) + ABS(V3))) / (ULP*TST1)) ) , ( ((DVAL .LT. TEN) .AND. (IVAL .NE. IBULGE) ) ) , ( (ABS( H10 )*( ABS( V2 ) + ABS( V3 ) ).GT.TEN*ULP*TST1 ) ) , ( K.GT.M ) , ( K.GT.M ) , ( K.LT.N - 1 ) , ( NR.EQ.3 ) |
|
| List of variables | 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 S S1 SUM T1 T2 T3
| TEN TST1 ULP V(3) V1 V2 V3 ZERO | | close
| |
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
S
S1
SUM
T1
T2
T3
TEN
TST1
ULP
V(3)
V1
V2
V3
ZERO
| |