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 DOUBLE PRECISION A( LDA, * ), V( * ),
184 $ TAU( * ), WORK( * )
190 DOUBLE PRECISION ZERO, ONE
191 PARAMETER ( ZERO = 0.0d+0,
196 INTEGER I, J1, J2, , LN, VPOS, TAUPOS,
197 $ dpos, ofdpos, ajeter
198 DOUBLE PRECISION CTMP
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 ) = ( a( ofdpos-i, st+i ) )
242 a( ofdpos-i, st+i ) = zero
244 ctmp = ( a( ofdpos, st ) )
245 CALL dlarfg( lm, ctmp, v( vpos+1 ), 1,
247 a( ofdpos, st ) = ctmp
250 CALL dlarfy( uplo, lm, v( vpos ), 1,
252 $ a( dpos, st ), lda-1, work)
255 IF( ttype.EQ.3 )
THEN
258 CALL dlarfy( uplo, lm, v( vpos ), 1,
260 $ a( dpos, st ), lda-1, work)
263 IF( ttype.EQ.2 )
THEN
269 CALL dlarfx(
'Left', ln, lm, v( vpos ),
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 $ ( a( dpos-nb-i, j1+i ) )
285 a( dpos-nb-i, j1+i ) = zero
287 ctmp = ( a( dpos-nb, j1 ) )
288 CALL dlarfg( lm, ctmp, v( vpos+1 ), 1, tau( taupos ) )
289 a( dpos-nb, j1 ) = ctmp
291 CALL dlarfx(
'Right', ln-1, lm, v( vpos ),
293 $ a( dpos-nb+1, j1 ), lda-1, work)
302 vpos = mod( sweep-1, 2 ) * n + st
303 taupos = mod( sweep-1, 2 ) * n + st
305 vpos = mod( sweep-1, 2 ) * n + st
306 taupos = mod( sweep-1, 2 ) * n + st
309 IF( ttype.EQ.1 )
THEN
314 v( vpos+i ) = a( ofdpos+i, st-1 )
315 a( ofdpos+i, st-1 ) = zero
317 CALL dlarfg( lm, a( ofdpos, st-1 ), v( vpos+1 ), 1,
322 CALL dlarfy( uplo, lm, v( vpos ), 1,
324 $ a( dpos, st ), lda-1, work)
328 IF( ttype.EQ.3 )
THEN
331 CALL dlarfy( uplo, lm, v( vpos ), 1,
333 $ a( dpos, st ), lda-1, work)
337 IF( ttype.EQ.2 )
THEN
344 CALL dlarfx(
'Right', lm, ln, v( vpos ),
345 $ tau( taupos ), a( dpos+nb, st ),
349 vpos = mod( sweep-1, 2 ) * n + j1
350 taupos = mod( sweep-1, 2 ) * n + j1
352 vpos = mod( sweep-1, 2 ) * n + j1
353 taupos = mod( sweep-1, 2 ) * n + j1
358 v( vpos+i ) = a( dpos+nb+i, st )
359 a( dpos+nb+i, st ) = zero
361 CALL dlarfg( lm, a( dpos+nb, st ), v( vpos+1 ), 1,
364 CALL dlarfx(
'Left', lm, ln-1, v( vpos ),
366 $ a( dpos+nb-1, st+1 ), lda-1, work)