171 $ ST, ED, SWEEP, N, NB, IB,
172 $ A, LDA, V, TAU, LDVT, WORK)
184 INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT
187 REAL A( LDA, * ), V( * ),
188 $ TAU( * ), WORK( * )
195 PARAMETER ( ZERO = 0.0e+0,
200 INTEGER I, J1, J2, LM, LN, VPOS, TAUPOS,
201 $ dpos, ofdpos, ajeter
217 upper = lsame( uplo,
'U' )
233 vpos = mod( sweep-1, 2 ) * n + st
234 taupos = mod( sweep-1, 2 ) * n + st
236 vpos = mod( sweep-1, 2 ) * n + st
237 taupos = mod( sweep-1, 2 ) * n + st
240 IF( ttype.EQ.1 )
THEN
245 v( vpos+i ) = ( a( ofdpos-i, st+i ) )
246 a( ofdpos-i, st+i ) = zero
248 ctmp = ( a( ofdpos, st ) )
249 CALL slarfg( lm, ctmp, v( vpos+1 ), 1,
251 a( ofdpos, st ) = ctmp
254 CALL slarfy( uplo, lm, v( vpos ), 1,
256 $ a( dpos, st ), lda-1, work)
259 IF( ttype.EQ.3 )
THEN
262 CALL slarfy( uplo, lm, v( vpos ), 1,
264 $ a( dpos, st ), lda-1, work)
267 IF( ttype.EQ.2 )
THEN
273 CALL slarfx(
'Left', ln, lm, v( vpos ),
275 $ a( dpos-nb, j1 ), lda-1, work)
278 vpos = mod( sweep-1, 2 ) * n + j1
279 taupos = mod( sweep-1, 2 ) * n + j1
281 vpos = mod( sweep-1, 2 ) * n + j1
282 taupos = mod( sweep-1, 2 ) * n + j1
288 $ ( a( dpos-nb-i, j1+i ) )
289 a( dpos-nb-i, j1+i ) = zero
291 ctmp = ( a( dpos-nb, j1 ) )
292 CALL slarfg( lm, ctmp, v( vpos+1 ), 1, tau( taupos ) )
293 a( dpos-nb, j1 ) = ctmp
295 CALL slarfx(
'Right', ln-1, lm, v( vpos ),
297 $ a( dpos-nb+1, j1 ), lda-1, work)
306 vpos = mod( sweep-1, 2 ) * n + st
307 taupos = mod( sweep-1, 2 ) * n + st
309 vpos = mod( sweep-1, 2 ) * n + st
310 taupos = mod( sweep-1, 2 ) * n + st
313 IF( ttype.EQ.1 )
THEN
318 v( vpos+i ) = a( ofdpos+i, st-1 )
319 a( ofdpos+i, st-1 ) = zero
321 CALL slarfg( lm, a( ofdpos, st-1 ), v( vpos+1 ), 1,
326 CALL slarfy( uplo, lm, v( vpos ), 1,
328 $ a( dpos, st ), lda-1, work)
332 IF( ttype.EQ.3 )
THEN
335 CALL slarfy( uplo, lm, v( vpos ), 1,
337 $ a( dpos, st ), lda-1, work)
341 IF( ttype.EQ.2 )
THEN
348 CALL slarfx(
'Right', lm, ln, v( vpos ),
349 $ tau( taupos ), a( dpos+nb, st ),
353 vpos = mod( sweep-1, 2 ) * n + j1
354 taupos = mod( sweep-1, 2 ) * n + j1
356 vpos = mod( sweep-1, 2 ) * n + j1
357 taupos = mod( sweep-1, 2 ) * n + j1
362 v( vpos+i ) = a( dpos+nb+i, st )
363 a( dpos+nb+i, st ) = zero
365 CALL slarfg( lm, a( dpos+nb, st ), v( vpos+1 ), 1,
368 CALL slarfx(
'Left', lm, ln-1, v( vpos ),
370 $ a( dpos+nb-1, st+1 ), lda-1, work)