168 $ ST, ED, SWEEP, N, NB, IB,
169 $ A, LDA, V, TAU, LDVT, WORK)
180 INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT
183 COMPLEX*16 A( LDA, * ), V( * ),
184 $ TAU( * ), WORK( * )
191 PARAMETER ( ZERO = ( 0.0d+0, 0.0d+0 ),
192 $ one = ( 1.0d+0, 0.0d+0 ) )
196 INTEGER I, J1, J2, LM, LN, VPOS, TAUPOS,
197 $ dpos, ofdpos, ajeter
204 INTRINSIC dconjg, mod
213 upper = lsame( uplo,
'U' )
229 vpos = mod( sweep-1, 2 ) * n + st
230 taupos = mod( sweep-1, 2 ) * n + st
232 vpos = mod( sweep-1, 2 ) * n + st
233 taupos = mod( sweep-1, 2 ) * n + st
236 IF( ttype.EQ.1 )
THEN
241 v( vpos+i ) = dconjg( a( ofdpos-i, st+i ) )
242 a( ofdpos-i, st+i ) = zero
244 ctmp = dconjg( a( ofdpos, st ) )
245 CALL zlarfg( lm, ctmp, v( vpos+1 ), 1,
247 a( ofdpos, st ) = ctmp
250 CALL zlarfy( uplo, lm, v( vpos ), 1,
251 $ dconjg( tau( taupos ) ),
252 $ a( dpos, st ), lda-1, work)
255 IF( ttype.EQ.3 )
THEN
258 CALL zlarfy( uplo, lm, v( vpos ), 1,
259 $ dconjg( tau( taupos ) ),
260 $ a( dpos, st ), lda-1, work)
263 IF( ttype.EQ.2 )
THEN
269 CALL zlarfx(
'Left', ln, lm, v( vpos ),
270 $ dconjg( tau( taupos ) ),
271 $ a( dpos-nb, j1 ), lda-1, work)
274 vpos = mod( sweep-1, 2 ) * n + j1
275 taupos = mod( sweep-1, 2 ) * n + j1
277 vpos = mod( sweep-1, 2 ) * n + j1
278 taupos = mod( sweep-1, 2 ) * n + j1
284 $ dconjg( a( dpos-nb-i, j1+i ) )
285 a( dpos-nb-i, j1+i ) = zero
287 ctmp = dconjg( a( dpos-nb, j1 ) )
288 CALL zlarfg( lm, ctmp, v( vpos+1 ), 1,
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)