136 SUBROUTINE zgbtrs( TRANS, N, KL, KU, NRHS, AB, LDAB, IPIV, B, LDB,
145 INTEGER INFO, KL, KU, LDAB, LDB, N, NRHS
149 COMPLEX*16 AB( LDAB, * ), B( LDB, * )
156 parameter( one = ( 1.0d+0, 0.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(
'ZGBTRS', -info )
201 IF( n.EQ.0 .OR. nrhs.EQ.0 )
223 $
CALL zswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
224 CALL zgeru( lm, nrhs, -one, ab( kd+1, j ), 1, b( j, 1 ),
225 $ ldb, b( j+1, 1 ), ldb )
233 CALL ztbsv(
'Upper',
'No transpose',
'Non-unit', n, kl+ku,
234 $ ab, ldab, b( 1, i ), 1 )
237 ELSE IF( lsame( trans,
'T' ) )
THEN
245 CALL ztbsv(
'Upper',
'Transpose',
'Non-unit', n, kl+ku, ab,
246 $ ldab, b( 1, i ), 1 )
252 DO 40 j = n - 1, 1, -1
254 CALL zgemv(
'Transpose', lm, nrhs, -one, b( j+1, 1 ),
255 $ ldb, ab( kd+1, j ), 1, one, b( j, 1 ), ldb )
258 $
CALL zswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
270 CALL ztbsv(
'Upper',
'Conjugate transpose',
'Non-unit', n,
271 $ kl+ku, ab, ldab, b( 1, i ), 1 )
277 DO 60 j = n - 1, 1, -1
279 CALL zlacgv( nrhs, b( j, 1 ), ldb )
280 CALL zgemv(
'Conjugate transpose', lm, nrhs, -one,
281 $ b( j+1, 1 ), ldb, ab( kd+1, j ), 1, one,
283 CALL zlacgv( nrhs, b( j, 1 ), ldb )
286 $
CALL zswap( nrhs, b( l, 1 ), ldb, b( j, 1 ), ldb )
subroutine xerbla(srname, info)
subroutine zgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
ZGBTRS
subroutine zgemv(trans, m, n, alpha, a, lda, x, incx, beta, y, incy)
ZGEMV
subroutine zgeru(m, n, alpha, x, incx, y, incy, a, lda)
ZGERU
subroutine zlacgv(n, x, incx)
ZLACGV conjugates a complex vector.
subroutine zswap(n, zx, incx, zy, incy)
ZSWAP
subroutine ztbsv(uplo, trans, diag, n, k, a, lda, x, incx)
ZTBSV