138 SUBROUTINE cgbtrs( TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
148 INTEGER info, kl, ku, ldab, ldb, n, nrhs
152 COMPLEX ab( ldab, * ), b( ldb, * )
159 parameter( one = ( 1.0e+0, 0.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(
'CGBTRS', -info )
204 IF( n.EQ.0 .OR. nrhs.EQ.0 )
226 $ CALL
cswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
227 CALL
cgeru( lm, nrhs, -one, ab( kd+1, j ), 1, b( j, 1 ),
228 $ ldb, b( j+1, 1 ), ldb )
236 CALL
ctbsv(
'Upper',
'No transpose',
'Non-unit', n, kl+ku,
237 $ ab, ldab, b( 1, i ), 1 )
240 ELSE IF(
lsame( trans,
'T' ) )
THEN
248 CALL
ctbsv(
'Upper',
'Transpose',
'Non-unit', n, kl+ku, ab,
249 $ ldab, b( 1, i ), 1 )
255 DO 40 j = n - 1, 1, -1
257 CALL
cgemv(
'Transpose', lm, nrhs, -one, b( j+1, 1 ),
258 $ ldb, ab( kd+1, j ), 1, one, b( j, 1 ), ldb )
261 $ CALL
cswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
273 CALL
ctbsv(
'Upper',
'Conjugate transpose',
'Non-unit', n,
274 $ kl+ku, ab, ldab, b( 1, i ), 1 )
280 DO 60 j = n - 1, 1, -1
282 CALL
clacgv( nrhs, b( j, 1 ), ldb )
283 CALL
cgemv(
'Conjugate transpose', lm, nrhs, -one,
284 $ b( j+1, 1 ), ldb, ab( kd+1, j ), 1, one,
286 CALL
clacgv( nrhs, b( j, 1 ), ldb )
289 $ CALL
cswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )