138 $ IPIV, IPIV2, B, LDB, INFO )
148 INTEGER N, NRHS, LDA, LTB, LDB, INFO
151 INTEGER IPIV( * ), IPIV2( * )
152 DOUBLE PRECISION A( LDA, * ), TB( * ), B( LDB, * )
158 parameter( one = 1.0d+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(
'DSYTRS_AA_2STAGE', -info )
198 IF( n.EQ.0 .OR. nrhs.EQ.0 )
214 CALL dlaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
218 CALL dtrsm(
'L',
'U',
'T',
'U', n-nb, nrhs, one, a(1, nb+1),
219 $ lda, b(nb+1, 1), ldb)
225 CALL dgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
231 CALL dtrsm(
'L',
'U',
'N',
'U', n-nb, nrhs, one, a(1, nb+1),
232 $ lda, b(nb+1, 1), ldb)
236 CALL dlaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
248 CALL dlaswp( nrhs, b, ldb, nb+1, n, ipiv, 1 )
252 CALL dtrsm(
'L',
'L',
'N',
'U', n-nb, nrhs, one, a(nb+1, 1),
253 $ lda, b(nb+1, 1), ldb)
259 CALL dgbtrs(
'N', n, nb, nb, nrhs, tb, ldtb, ipiv2, b, ldb,
265 CALL dtrsm(
'L',
'L',
'T',
'U', n-nb, nrhs, one, a(nb+1, 1),
266 $ lda, b(nb+1, 1), ldb)
270 CALL dlaswp( nrhs, b, ldb, nb+1, n, ipiv, -1 )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dtrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
DTRSM
subroutine dgbtrs(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO)
DGBTRS
subroutine dlaswp(N, A, LDA, K1, K2, IPIV, INCX)
DLASWP performs a series of row interchanges on a general rectangular matrix.
subroutine dsytrs_aa_2stage(UPLO, N, NRHS, A, LDA, TB, LTB, IPIV, IPIV2, B, LDB, INFO)
DSYTRS_AA_2STAGE