138 $ IPIV, IPIV2, B, LDB, INFO )
148 INTEGER N, NRHS, LDA, LTB, LDB, INFO
151 INTEGER IPIV( * ), IPIV2( * )
152 REAL A( LDA, * ), TB( * ), B( LDB, * )
158 parameter( one = 1.0e+0 )
177 upper = lsame( uplo,
'U' )
178 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
180 ELSE IF( n.LT.0 )
THEN
182 ELSE IF( nrhs.LT.0 )
THEN
184 ELSE IF( lda.LT.max( 1, n ) )
THEN
186 ELSE IF( ltb.LT.( 4*n ) )
THEN
188 ELSE IF( ldb.LT.max( 1, n ) )
THEN
192 CALL xerbla(
'SSYTRS_AA_2STAGE', -info )
198 IF( n.EQ.0 .OR. nrhs.EQ.0 )
214 CALL slaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
218 CALL strsm(
'L',
'U',
'T',
'U', n-nb, nrhs, one, a(1, nb+1),
219 $ lda, b(nb+1, 1), ldb)
225 CALL sgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
231 CALL strsm(
'L',
'U',
'N',
'U', n-nb, nrhs, one, a(1, nb+1),
232 $ lda, b(nb+1, 1), ldb)
236 CALL slaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
248 CALL slaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
252 CALL strsm(
'L',
'L',
'N',
'U', n-nb, nrhs, one, a(nb+1, 1),
253 $ lda, b(nb+1, 1), ldb)
259 CALL sgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
265 CALL strsm(
'L',
'L',
'T',
'U', n-nb, nrhs, one, a(nb+1, 1),
266 $ lda, b(nb+1, 1), ldb)
270 CALL slaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sgbtrs(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO)
SGBTRS
subroutine slaswp(N, A, LDA, K1, K2, IPIV, INCX)
SLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine ssytrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
SSYTRS_AA_2STAGE
subroutine strsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
STRSM