LAPACK 3.12.0 LAPACK: Linear Algebra PACKage
Searching...
No Matches

## ◆ claqz1()

 subroutine claqz1 ( logical, intent(in) ilq, logical, intent(in) ilz, integer, intent(in) k, integer, intent(in) istartm, integer, intent(in) istopm, integer, intent(in) ihi, complex, dimension( lda, * ) a, integer, intent(in) lda, complex, dimension( ldb, * ) b, integer, intent(in) ldb, integer, intent(in) nq, integer, intent(in) qstart, complex, dimension( ldq, * ) q, integer, intent(in) ldq, integer, intent(in) nz, integer, intent(in) zstart, complex, dimension( ldz, * ) z, integer, intent(in) ldz )

CLAQZ1

Purpose:
`      CLAQZ1 chases a 1x1 shift bulge in a matrix pencil down a single position`
Parameters
 [in] ILQ ``` ILQ is LOGICAL Determines whether or not to update the matrix Q``` [in] ILZ ``` ILZ is LOGICAL Determines whether or not to update the matrix Z``` [in] K ``` K is INTEGER Index indicating the position of the bulge. On entry, the bulge is located in (A(k+1,k),B(k+1,k)). On exit, the bulge is located in (A(k+2,k+1),B(k+2,k+1)).``` [in] ISTARTM ` ISTARTM is INTEGER` [in] ISTOPM ``` ISTOPM is INTEGER Updates to (A,B) are restricted to (istartm:k+2,k:istopm). It is assumed without checking that istartm <= k+1 and k+2 <= istopm``` [in] IHI ` IHI is INTEGER` [in,out] A ` A is COMPLEX array, dimension (LDA,N)` [in] LDA ``` LDA is INTEGER The leading dimension of A as declared in the calling procedure.``` [in,out] B ` B is COMPLEX array, dimension (LDB,N)` [in] LDB ``` LDB is INTEGER The leading dimension of B as declared in the calling procedure.``` [in] NQ ``` NQ is INTEGER The order of the matrix Q``` [in] QSTART ``` QSTART is INTEGER Start index of the matrix Q. Rotations are applied To columns k+2-qStart:k+3-qStart of Q.``` [in,out] Q ` Q is COMPLEX array, dimension (LDQ,NQ)` [in] LDQ ``` LDQ is INTEGER The leading dimension of Q as declared in the calling procedure.``` [in] NZ ``` NZ is INTEGER The order of the matrix Z``` [in] ZSTART ``` ZSTART is INTEGER Start index of the matrix Z. Rotations are applied To columns k+1-qStart:k+2-qStart of Z.``` [in,out] Z ` Z is COMPLEX array, dimension (LDZ,NZ)` [in] LDZ ``` LDZ is INTEGER The leading dimension of Q as declared in the calling procedure.```
Date
May 2020

Definition at line 171 of file claqz1.f.

173 IMPLICIT NONE
174*
175* Arguments
176 LOGICAL, INTENT( IN ) :: ILQ, ILZ
177 INTEGER, INTENT( IN ) :: K, LDA, LDB, LDQ, LDZ, ISTARTM, ISTOPM,
178 \$ NQ, NZ, QSTART, ZSTART, IHI
179 COMPLEX :: A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z( LDZ, * )
180*
181* Parameters
182 COMPLEX CZERO, CONE
183 parameter( czero = ( 0.0, 0.0 ), cone = ( 1.0, 0.0 ) )
184 REAL :: ZERO, ONE, HALF
185 parameter( zero = 0.0, one = 1.0, half = 0.5 )
186*
187* Local variables
188 REAL :: C
189 COMPLEX :: S, TEMP
190*
191* External Functions
192 EXTERNAL :: clartg, crot
193*
194 IF( k+1 .EQ. ihi ) THEN
195*
196* Shift is located on the edge of the matrix, remove it
197*
198 CALL clartg( b( ihi, ihi ), b( ihi, ihi-1 ), c, s, temp )
199 b( ihi, ihi ) = temp
200 b( ihi, ihi-1 ) = czero
201 CALL crot( ihi-istartm, b( istartm, ihi ), 1, b( istartm,
202 \$ ihi-1 ), 1, c, s )
203 CALL crot( ihi-istartm+1, a( istartm, ihi ), 1, a( istartm,
204 \$ ihi-1 ), 1, c, s )
205 IF ( ilz ) THEN
206 CALL crot( nz, z( 1, ihi-zstart+1 ), 1, z( 1, ihi-1-zstart+
207 \$ 1 ), 1, c, s )
208 END IF
209*
210 ELSE
211*
212* Normal operation, move bulge down
213*
214*
215* Apply transformation from the right
216*
217 CALL clartg( b( k+1, k+1 ), b( k+1, k ), c, s, temp )
218 b( k+1, k+1 ) = temp
219 b( k+1, k ) = czero
220 CALL crot( k+2-istartm+1, a( istartm, k+1 ), 1, a( istartm,
221 \$ k ), 1, c, s )
222 CALL crot( k-istartm+1, b( istartm, k+1 ), 1, b( istartm, k ),
223 \$ 1, c, s )
224 IF ( ilz ) THEN
225 CALL crot( nz, z( 1, k+1-zstart+1 ), 1, z( 1, k-zstart+1 ),
226 \$ 1, c, s )
227 END IF
228*
229* Apply transformation from the left
230*
231 CALL clartg( a( k+1, k ), a( k+2, k ), c, s, temp )
232 a( k+1, k ) = temp
233 a( k+2, k ) = czero
234 CALL crot( istopm-k, a( k+1, k+1 ), lda, a( k+2, k+1 ), lda, c,
235 \$ s )
236 CALL crot( istopm-k, b( k+1, k+1 ), ldb, b( k+2, k+1 ), ldb, c,
237 \$ s )
238 IF ( ilq ) THEN
239 CALL crot( nq, q( 1, k+1-qstart+1 ), 1, q( 1, k+2-qstart+
240 \$ 1 ), 1, c, conjg( s ) )
241 END IF
242*
243 END IF
244*
245* End of CLAQZ1
246*
subroutine clartg(f, g, c, s, r)
CLARTG generates a plane rotation with real cosine and complex sine.
Definition clartg.f90:116
subroutine crot(n, cx, incx, cy, incy, c, s)
CROT applies a plane rotation with real cosine and complex sine to a pair of complex vectors.
Definition crot.f:103
Here is the call graph for this function:
Here is the caller graph for this function: