169 $ ST, ED, SWEEP, N, NB, IB,
170 $ A, LDA, V, TAU, LDVT, WORK)
181 INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT
184 REAL A( LDA, * ), V( * ),
185 $ TAU( * ), WORK( * )
192 PARAMETER ( ZERO = 0.0e+0,
197 INTEGER I, J1, J2, LM, LN, VPOS, TAUPOS,
198 $ dpos, ofdpos, ajeter
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 ) = ( a( ofdpos-i, st+i ) )
243 a( ofdpos-i, st+i ) = zero
245 ctmp = ( a( ofdpos, st ) )
246 CALL slarfg( lm, ctmp, v( vpos+1 ), 1,
248 a( ofdpos, st ) = ctmp
251 CALL slarfy( uplo, lm, v( vpos ), 1,
253 $ a( dpos, st ), lda-1, work)
256 IF( ttype.EQ.3 )
THEN
259 CALL slarfy( uplo, lm, v( vpos ), 1,
261 $ a( dpos, st ), lda-1, work)
264 IF( ttype.EQ.2 )
THEN
270 CALL slarfx(
'Left', ln, lm, v( vpos ),
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 $ ( a( dpos-nb-i, j1+i ) )
286 a( dpos-nb-i, j1+i ) = zero
288 ctmp = ( a( dpos-nb, j1 ) )
289 CALL slarfg( lm, ctmp, v( vpos+1 ), 1,
291 a( dpos-nb, j1 ) = ctmp
293 CALL slarfx(
'Right', ln-1, lm, v( vpos ),
295 $ a( dpos-nb+1, j1 ), lda-1, work)
304 vpos = mod( sweep-1, 2 ) * n + st
305 taupos = mod( sweep-1, 2 ) * n + st
307 vpos = mod( sweep-1, 2 ) * n + st
308 taupos = mod( sweep-1, 2 ) * n + st
311 IF( ttype.EQ.1 )
THEN
316 v( vpos+i ) = a( ofdpos+i, st-1 )
317 a( ofdpos+i, st-1 ) = zero
319 CALL slarfg( lm, a( ofdpos, st-1 ), v( vpos+1 ), 1,
324 CALL slarfy( uplo, lm, v( vpos ), 1,
326 $ a( dpos, st ), lda-1, work)
330 IF( ttype.EQ.3 )
THEN
333 CALL slarfy( uplo, lm, v( vpos ), 1,
335 $ a( dpos, st ), lda-1, work)
339 IF( ttype.EQ.2 )
THEN
346 CALL slarfx(
'Right', lm, ln, v( vpos ),
347 $ tau( taupos ), a( dpos+nb, st ),
351 vpos = mod( sweep-1, 2 ) * n + j1
352 taupos = mod( sweep-1, 2 ) * n + j1
354 vpos = mod( sweep-1, 2 ) * n + j1
355 taupos = mod( sweep-1, 2 ) * n + j1
360 v( vpos+i ) = a( dpos+nb+i, st )
361 a( dpos+nb+i, st ) = zero
363 CALL slarfg( lm, a( dpos+nb, st ), v( vpos+1 ), 1,
366 CALL slarfx(
'Left', lm, ln-1, v( vpos ),
368 $ a( dpos+nb-1, st+1 ), lda-1, work)