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, tau( taupos ) )
290 a( dpos-nb, j1 ) = ctmp
292 CALL slarfx(
'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 slarfg( lm, a( ofdpos, st-1 ), v( vpos+1 ), 1,
323 CALL slarfy( uplo, lm, v( vpos ), 1,
325 $ a( dpos, st ), lda-1, work)
329 IF( ttype.EQ.3 )
THEN
332 CALL slarfy( uplo, lm, v( vpos ), 1,
334 $ a( dpos, st ), lda-1, work)
338 IF( ttype.EQ.2 )
THEN
345 CALL slarfx(
'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 slarfg( lm, a( dpos+nb, st ), v( vpos+1 ), 1,
365 CALL slarfx(
'Left', lm, ln-1, v( vpos ),
367 $ a( dpos+nb-1, st+1 ), lda-1, work)
subroutine slarfx(SIDE, M, N, V, TAU, C, LDC, WORK)
SLARFX applies an elementary reflector to a general rectangular matrix, with loop unrolling when the ...
subroutine slarfg(N, ALPHA, X, INCX, TAU)
SLARFG generates an elementary reflector (Householder matrix).
subroutine slarfy(UPLO, N, V, INCV, TAU, C, LDC, WORK)
SLARFY
subroutine ssb2st_kernels(UPLO, WANTZ, TTYPE, ST, ED, SWEEP, N, NB, IB, A, LDA, V, TAU, LDVT, WORK)
SSB2ST_KERNELS