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)
subroutine ssb2st_kernels(UPLO, WANTZ, TTYPE, ST, ED, SWEEP, N, NB, IB, A, LDA, V, TAU, LDVT, WORK)
SSB2ST_KERNELS
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 slarfy(UPLO, N, V, INCV, TAU, C, LDC, WORK)
SLARFY
subroutine slarfg(N, ALPHA, X, INCX, TAU)
SLARFG generates an elementary reflector (Householder matrix).