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 zgeru(M, N, ALPHA, X, INCX, Y, INCY, A, LDA)
ZGERU
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ztbsv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBSV
subroutine zlacgv(N, X, INCX)
ZLACGV conjugates a complex vector.
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 zswap(N, ZX, INCX, ZY, INCY)
ZSWAP