171 $ ST, ED, SWEEP, N, NB, IB,
172 $ A, LDA, V, TAU, LDVT, WORK)
183 INTEGER TTYPE, ST, ED, SWEEP, N, NB, IB, LDA, LDVT
186 REAL A( LDA, * ), V( * ),
187 $ TAU( * ), WORK( * )
194 PARAMETER ( ZERO = 0.0e+0,
199 INTEGER I, J1, J2, LM, LN, VPOS, TAUPOS,
200 $ dpos, ofdpos, ajeter
216 upper = lsame( uplo,
'U' )
232 vpos = mod( sweep-1, 2 ) * n + st
233 taupos = mod( sweep-1, 2 ) * n + st
235 vpos = mod( sweep-1, 2 ) * n + st
236 taupos = mod( sweep-1, 2 ) * n + st
239 IF( ttype.EQ.1 )
THEN
244 v( vpos+i ) = ( a( ofdpos-i, st+i ) )
245 a( ofdpos-i, st+i ) = zero
247 ctmp = ( a( ofdpos, st ) )
248 CALL slarfg( lm, ctmp, v( vpos+1 ), 1,
250 a( ofdpos, st ) = ctmp
253 CALL slarfy( uplo, lm, v( vpos ), 1,
255 $ a( dpos, st ), lda-1, work)
258 IF( ttype.EQ.3 )
THEN
261 CALL slarfy( uplo, lm, v( vpos ), 1,
263 $ a( dpos, st ), lda-1, work)
266 IF( ttype.EQ.2 )
THEN
272 CALL slarfx(
'Left', ln, lm, v( vpos ),
274 $ a( dpos-nb, j1 ), lda-1, work)
277 vpos = mod( sweep-1, 2 ) * n + j1
278 taupos = mod( sweep-1, 2 ) * n + j1
280 vpos = mod( sweep-1, 2 ) * n + j1
281 taupos = mod( sweep-1, 2 ) * n + j1
287 $ ( a( dpos-nb-i, j1+i ) )
288 a( dpos-nb-i, j1+i ) = zero
290 ctmp = ( a( dpos-nb, j1 ) )
291 CALL slarfg( lm, ctmp, v( vpos+1 ), 1, tau( taupos ) )
292 a( dpos-nb, j1 ) = ctmp
294 CALL slarfx(
'Right', ln-1, lm, v( vpos ),
296 $ a( dpos-nb+1, j1 ), lda-1, work)
305 vpos = mod( sweep-1, 2 ) * n + st
306 taupos = mod( sweep-1, 2 ) * n + st
308 vpos = mod( sweep-1, 2 ) * n + st
309 taupos = mod( sweep-1, 2 ) * n + st
312 IF( ttype.EQ.1 )
THEN
317 v( vpos+i ) = a( ofdpos+i, st-1 )
318 a( ofdpos+i, st-1 ) = zero
320 CALL slarfg( lm, a( ofdpos, st-1 ), v( vpos+1 ), 1,
325 CALL slarfy( uplo, lm, v( vpos ), 1,
327 $ a( dpos, st ), lda-1, work)
331 IF( ttype.EQ.3 )
THEN
334 CALL slarfy( uplo, lm, v( vpos ), 1,
336 $ a( dpos, st ), lda-1, work)
340 IF( ttype.EQ.2 )
THEN
347 CALL slarfx(
'Right', lm, ln, v( vpos ),
348 $ tau( taupos ), a( dpos+nb, st ),
352 vpos = mod( sweep-1, 2 ) * n + j1
353 taupos = mod( sweep-1, 2 ) * n + j1
355 vpos = mod( sweep-1, 2 ) * n + j1
356 taupos = mod( sweep-1, 2 ) * n + j1
361 v( vpos+i ) = a( dpos+nb+i, st )
362 a( dpos+nb+i, st ) = zero
364 CALL slarfg( lm, a( dpos+nb, st ), v( vpos+1 ), 1,
367 CALL slarfx(
'Left', lm, ln-1, v( vpos ),
369 $ 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 slarfg(n, alpha, x, incx, tau)
SLARFG generates an elementary reflector (Householder matrix).
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