138 SUBROUTINE sgbtrs( TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
148 INTEGER INFO, KL, KU, LDAB, LDB, N, NRHS
152 REAL AB( ldab, * ), B( ldb, * )
159 parameter ( one = 1.0e+0 )
162 LOGICAL LNOTI, NOTRAN
163 INTEGER I, J, KD, L, LM
180 notran = lsame( trans,
'N' )
181 IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) .AND. .NOT.
182 $ lsame( trans,
'C' ) )
THEN
184 ELSE IF( n.LT.0 )
THEN
186 ELSE IF( kl.LT.0 )
THEN
188 ELSE IF( ku.LT.0 )
THEN
190 ELSE IF( nrhs.LT.0 )
THEN
192 ELSE IF( ldab.LT.( 2*kl+ku+1 ) )
THEN
194 ELSE IF( ldb.LT.max( 1, n ) )
THEN
198 CALL xerbla(
'SGBTRS', -info )
204 IF( n.EQ.0 .OR. nrhs.EQ.0 )
226 $
CALL sswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
227 CALL sger( lm, nrhs, -one, ab( kd+1, j ), 1, b( j, 1 ),
228 $ ldb, b( j+1, 1 ), ldb )
236 CALL stbsv(
'Upper',
'No transpose',
'Non-unit', n, kl+ku,
237 $ ab, ldab, b( 1, i ), 1 )
248 CALL stbsv(
'Upper',
'Transpose',
'Non-unit', n, kl+ku, ab,
249 $ ldab, b( 1, i ), 1 )
255 DO 40 j = n - 1, 1, -1
257 CALL sgemv(
'Transpose', lm, nrhs, -one, b( j+1, 1 ),
258 $ ldb, ab( kd+1, j ), 1, one, b( j, 1 ), ldb )
261 $
CALL sswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
subroutine sger(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
SGER
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sgemv(TRANS, M, N, ALPHA, A, LDA, X, INCX, BETA, Y, INCY)
SGEMV
subroutine stbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
STBSV
subroutine sgbtrs(TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB, INFO)
SGBTRS
subroutine sswap(N, SX, INCX, SY, INCY)
SSWAP