134 SUBROUTINE cgbtrs( TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B,
144 INTEGER INFO, KL, KU, LDAB, LDB, N, NRHS
148 COMPLEX AB( LDAB, * ), B( LDB, * )
155 PARAMETER ( ONE = ( 1.0e+0, 0.0e+0 ) )
158 LOGICAL LNOTI, NOTRAN
159 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(
'CGBTRS', -info )
201 IF( n.EQ.0 .OR. nrhs.EQ.0 )
223 $
CALL cswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
224 CALL cgeru( lm, nrhs, -one, ab( kd+1, j ), 1, b( j,
226 $ ldb, b( j+1, 1 ), ldb )
234 CALL ctbsv(
'Upper',
'No transpose',
'Non-unit', n,
236 $ ab, ldab, b( 1, i ), 1 )
239 ELSE IF( lsame( trans,
'T' ) )
THEN
247 CALL ctbsv(
'Upper',
'Transpose',
'Non-unit', n, kl+ku,
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',
275 $ kl+ku, ab, ldab, b( 1, i ), 1 )
281 DO 60 j = n - 1, 1, -1
283 CALL clacgv( nrhs, b( j, 1 ), ldb )
284 CALL cgemv(
'Conjugate transpose', lm, nrhs, -one,
285 $ b( j+1, 1 ), ldb, ab( kd+1, j ), 1, one,
287 CALL clacgv( nrhs, b( j, 1 ), ldb )
290 $
CALL cswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
subroutine cgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
CGBTRS
subroutine cgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
CGEMV
subroutine cgeru(m, n, alpha, x, incx, y, incy, a, lda)
CGERU
subroutine ctbsv(uplo, trans, diag, n, k, a, lda, x, incx)
CTBSV