170 SUBROUTINE dlaqz2( ILQ, ILZ, K, ISTARTM, ISTOPM, IHI, A, LDA,
172 $ LDB, NQ, QSTART, Q, LDQ, NZ, ZSTART, Z, LDZ )
176 LOGICAL,
INTENT( IN ) :: ILQ, ILZ
177 INTEGER,
INTENT( IN ) :: K, LDA, LDB, LDQ, LDZ, ISTARTM, ISTOPM,
178 $ nq, nz, qstart, zstart, ihi
179 DOUBLE PRECISION :: A( LDA, * ), B( LDB, * ), Q( LDQ, * ), Z( LDZ,
183 DOUBLE PRECISION :: ZERO, ONE, HALF
184 PARAMETER( ZERO = 0.0d0, one = 1.0d0, half = 0.5d0 )
187 DOUBLE PRECISION :: H( 2, 3 ), C1, S1, C2, S2, TEMP
192 IF( k+2 .EQ. ihi )
THEN
194 h = b( ihi-1:ihi, ihi-2:ihi )
196 CALL dlartg( h( 1, 1 ), h( 2, 1 ), c1, s1, temp )
199 CALL drot( 2, h( 1, 2 ), 2, h( 2, 2 ), 2, c1, s1 )
201 CALL dlartg( h( 2, 3 ), h( 2, 2 ), c1, s1, temp )
202 CALL drot( 1, h( 1, 3 ), 1, h( 1, 2 ), 1, c1, s1 )
203 CALL dlartg( h( 1, 2 ), h( 1, 1 ), c2, s2, temp )
205 CALL drot( ihi-istartm+1, b( istartm, ihi ), 1, b( istartm,
206 $ ihi-1 ), 1, c1, s1 )
207 CALL drot( ihi-istartm+1, b( istartm, ihi-1 ), 1,
209 $ ihi-2 ), 1, c2, s2 )
210 b( ihi-1, ihi-2 ) = zero
211 b( ihi, ihi-2 ) = zero
212 CALL drot( ihi-istartm+1, a( istartm, ihi ), 1, a( istartm,
213 $ ihi-1 ), 1, c1, s1 )
214 CALL drot( ihi-istartm+1, a( istartm, ihi-1 ), 1,
216 $ ihi-2 ), 1, c2, s2 )
218 CALL drot( nz, z( 1, ihi-zstart+1 ), 1, z( 1,
221 CALL drot( nz, z( 1, ihi-1-zstart+1 ), 1, z( 1,
222 $ ihi-2-zstart+1 ), 1, c2, s2 )
225 CALL dlartg( a( ihi-1, ihi-2 ), a( ihi, ihi-2 ), c1, s1,
227 a( ihi-1, ihi-2 ) = temp
228 a( ihi, ihi-2 ) = zero
229 CALL drot( istopm-ihi+2, a( ihi-1, ihi-1 ), lda, a( ihi,
230 $ ihi-1 ), lda, c1, s1 )
231 CALL drot( istopm-ihi+2, b( ihi-1, ihi-1 ), ldb, b( ihi,
232 $ ihi-1 ), ldb, c1, s1 )
234 CALL drot( nq, q( 1, ihi-1-qstart+1 ), 1, q( 1,
239 CALL dlartg( b( ihi, ihi ), b( ihi, ihi-1 ), c1, s1, temp )
241 b( ihi, ihi-1 ) = zero
242 CALL drot( ihi-istartm, b( istartm, ihi ), 1, b( istartm,
243 $ ihi-1 ), 1, c1, s1 )
244 CALL drot( ihi-istartm+1, a( istartm, ihi ), 1, a( istartm,
245 $ ihi-1 ), 1, c1, s1 )
247 CALL drot( nz, z( 1, ihi-zstart+1 ), 1, z( 1,
256 h = b( k+1:k+2, k:k+2 )
260 CALL dlartg( h( 1, 1 ), h( 2, 1 ), c1, s1, temp )
263 CALL drot( 2, h( 1, 2 ), 2, h( 2, 2 ), 2, c1, s1 )
267 CALL dlartg( h( 2, 3 ), h( 2, 2 ), c1, s1, temp )
268 CALL drot( 1, h( 1, 3 ), 1, h( 1, 2 ), 1, c1, s1 )
269 CALL dlartg( h( 1, 2 ), h( 1, 1 ), c2, s2, temp )
273 CALL drot( k+3-istartm+1, a( istartm, k+2 ), 1, a( istartm,
275 CALL drot( k+3-istartm+1, a( istartm, k+1 ), 1, a( istartm,
277 CALL drot( k+2-istartm+1, b( istartm, k+2 ), 1, b( istartm,
279 CALL drot( k+2-istartm+1, b( istartm, k+1 ), 1, b( istartm,
282 CALL drot( nz, z( 1, k+2-zstart+1 ), 1, z( 1, k+1-zstart+
284 CALL drot( nz, z( 1, k+1-zstart+1 ), 1, z( 1,
293 CALL dlartg( a( k+2, k ), a( k+3, k ), c1, s1, temp )
296 CALL dlartg( a( k+1, k ), a( k+2, k ), c2, s2, temp )
302 CALL drot( istopm-k, a( k+2, k+1 ), lda, a( k+3, k+1 ), lda,
304 CALL drot( istopm-k, a( k+1, k+1 ), lda, a( k+2, k+1 ), lda,
307 CALL drot( istopm-k, b( k+2, k+1 ), ldb, b( k+3, k+1 ), ldb,
309 CALL drot( istopm-k, b( k+1, k+1 ), ldb, b( k+2, k+1 ), ldb,
312 CALL drot( nq, q( 1, k+2-qstart+1 ), 1, q( 1, k+3-qstart+
314 CALL drot( nq, q( 1, k+1-qstart+1 ), 1, q( 1, k+2-qstart+