136 SUBROUTINE dgbtrs( TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
145 INTEGER INFO, KL, KU, LDAB, LDB, N, NRHS
149 DOUBLE PRECISION AB( ldab, * ), B( ldb, * )
156 parameter( one = 1.0d+0 )
159 LOGICAL LNOTI, NOTRAN
160 INTEGER I, J, KD, L, LM
177 notran = lsame( trans,
'N' )
178 IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) .AND. .NOT.
179 $ lsame( trans,
'C' ) )
THEN 181 ELSE IF( n.LT.0 )
THEN 183 ELSE IF( kl.LT.0 )
THEN 185 ELSE IF( ku.LT.0 )
THEN 187 ELSE IF( nrhs.LT.0 )
THEN 189 ELSE IF( ldab.LT.( 2*kl+ku+1 ) )
THEN 191 ELSE IF( ldb.LT.max( 1, n ) )
THEN 195 CALL xerbla(
'DGBTRS', -info )
201 IF( n.EQ.0 .OR. nrhs.EQ.0 )
223 $
CALL dswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
224 CALL dger( lm, nrhs, -one, ab( kd+1, j ), 1, b( j, 1 ),
225 $ ldb, b( j+1, 1 ), ldb )
233 CALL dtbsv(
'Upper',
'No transpose',
'Non-unit', n, kl+ku,
234 $ ab, ldab, b( 1, i ), 1 )
245 CALL dtbsv(
'Upper',
'Transpose',
'Non-unit', n, kl+ku, ab,
246 $ ldab, b( 1, i ), 1 )
252 DO 40 j = n - 1, 1, -1
254 CALL dgemv(
'Transpose', lm, nrhs, -one, b( j+1, 1 ),
255 $ ldb, ab( kd+1, j ), 1, one, b( j, 1 ), ldb )
258 $
CALL dswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
DGEMV
subroutine dger(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
DGER
subroutine dgbtrs(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO)
DGBTRS
subroutine dtbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
DTBSV
subroutine dswap(N, DX, INCX, DY, INCY)
DSWAP