168 $ ST, ED, SWEEP, N, NB, IB,
169 $ A, LDA, V, TAU, LDVT, WORK)
181 INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT
184 COMPLEX*16 A( LDA, * ), V( * ),
185 $ TAU( * ), WORK( * )
192 PARAMETER ( ZERO = ( 0.0d+0, 0.0d+0 ),
193 $ one = ( 1.0d+0, 0.0d+0 ) )
197 INTEGER I, J1, J2, LM, LN, VPOS, TAUPOS,
198 $ dpos, ofdpos, ajeter
205 INTRINSIC dconjg, mod
214 upper = lsame( uplo,
'U' )
230 vpos = mod( sweep-1, 2 ) * n + st
231 taupos = mod( sweep-1, 2 ) * n + st
233 vpos = mod( sweep-1, 2 ) * n + st
234 taupos = mod( sweep-1, 2 ) * n + st
237 IF( ttype.EQ.1 )
THEN
242 v( vpos+i ) = dconjg( a( ofdpos-i, st+i ) )
243 a( ofdpos-i, st+i ) = zero
245 ctmp = dconjg( a( ofdpos, st ) )
246 CALL zlarfg( lm, ctmp, v( vpos+1 ), 1,
248 a( ofdpos, st ) = ctmp
251 CALL zlarfy( uplo, lm, v( vpos ), 1,
252 $ dconjg( tau( taupos ) ),
253 $ a( dpos, st ), lda-1, work)
256 IF( ttype.EQ.3 )
THEN
259 CALL zlarfy( uplo, lm, v( vpos ), 1,
260 $ dconjg( tau( taupos ) ),
261 $ a( dpos, st ), lda-1, work)
264 IF( ttype.EQ.2 )
THEN
270 CALL zlarfx(
'Left', ln, lm, v( vpos ),
271 $ dconjg( tau( taupos ) ),
272 $ a( dpos-nb, j1 ), lda-1, work)
275 vpos = mod( sweep-1, 2 ) * n + j1
276 taupos = mod( sweep-1, 2 ) * n + j1
278 vpos = mod( sweep-1, 2 ) * n + j1
279 taupos = mod( sweep-1, 2 ) * n + j1
285 $ dconjg( a( dpos-nb-i, j1+i ) )
286 a( dpos-nb-i, j1+i ) = zero
288 ctmp = dconjg( a( dpos-nb, j1 ) )
289 CALL zlarfg( lm, ctmp, v( vpos+1 ), 1, tau( taupos ) )
290 a( dpos-nb, j1 ) = ctmp
292 CALL zlarfx(
'Right', ln-1, lm, v( vpos ),
294 $ a( dpos-nb+1, j1 ), lda-1, work)
303 vpos = mod( sweep-1, 2 ) * n + st
304 taupos = mod( sweep-1, 2 ) * n + st
306 vpos = mod( sweep-1, 2 ) * n + st
307 taupos = mod( sweep-1, 2 ) * n + st
310 IF( ttype.EQ.1 )
THEN
315 v( vpos+i ) = a( ofdpos+i, st-1 )
316 a( ofdpos+i, st-1 ) = zero
318 CALL zlarfg( lm, a( ofdpos, st-1 ), v( vpos+1 ), 1,
323 CALL zlarfy( uplo, lm, v( vpos ), 1,
324 $ dconjg( tau( taupos ) ),
325 $ a( dpos, st ), lda-1, work)
329 IF( ttype.EQ.3 )
THEN
332 CALL zlarfy( uplo, lm, v( vpos ), 1,
333 $ dconjg( tau( taupos ) ),
334 $ a( dpos, st ), lda-1, work)
338 IF( ttype.EQ.2 )
THEN
345 CALL zlarfx(
'Right', lm, ln, v( vpos ),
346 $ tau( taupos ), a( dpos+nb, st ),
350 vpos = mod( sweep-1, 2 ) * n + j1
351 taupos = mod( sweep-1, 2 ) * n + j1
353 vpos = mod( sweep-1, 2 ) * n + j1
354 taupos = mod( sweep-1, 2 ) * n + j1
359 v( vpos+i ) = a( dpos+nb+i, st )
360 a( dpos+nb+i, st ) = zero
362 CALL zlarfg( lm, a( dpos+nb, st ), v( vpos+1 ), 1,
365 CALL zlarfx(
'Left', lm, ln-1, v( vpos ),
366 $ dconjg( tau( taupos ) ),
367 $ a( dpos+nb-1, st+1 ), lda-1, work)