134 SUBROUTINE dgbtrs( TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B,
144 INTEGER INFO, KL, KU, LDAB, LDB, N, NRHS
148 DOUBLE PRECISION AB( LDAB, * ), B( LDB, * )
155 PARAMETER ( ONE = 1.0d+0 )
158 LOGICAL LNOTI, NOTRAN
159 INTEGER I, J, KD, L, LM
176 notran = lsame( trans,
'N' )
177 IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) .AND. .NOT.
178 $ lsame( trans,
'C' ) )
THEN
180 ELSE IF( n.LT.0 )
THEN
182 ELSE IF( kl.LT.0 )
THEN
184 ELSE IF( ku.LT.0 )
THEN
186 ELSE IF( nrhs.LT.0 )
THEN
188 ELSE IF( ldab.LT.( 2*kl+ku+1 ) )
THEN
190 ELSE IF( ldb.LT.max( 1, n ) )
THEN
194 CALL xerbla(
'DGBTRS', -info )
200 IF( n.EQ.0 .OR. nrhs.EQ.0 )
222 $
CALL dswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
223 CALL dger( lm, nrhs, -one, ab( kd+1, j ), 1, b( j,
225 $ ldb, b( j+1, 1 ), ldb )
233 CALL dtbsv(
'Upper',
'No transpose',
'Non-unit', n,
235 $ ab, ldab, b( 1, i ), 1 )
246 CALL dtbsv(
'Upper',
'Transpose',
'Non-unit', n, kl+ku,
248 $ ldab, b( 1, i ), 1 )
254 DO 40 j = n - 1, 1, -1
256 CALL dgemv(
'Transpose', lm, nrhs, -one, b( j+1, 1 ),
257 $ ldb, ab( kd+1, j ), 1, one, b( j, 1 ), ldb )
260 $
CALL dswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
subroutine dgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
DGBTRS
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 dtbsv(uplo, trans, diag, n, k, a, lda, x, incx)
DTBSV