291 SUBROUTINE zgtsvx( FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF,
292 $ DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR,
293 $ WORK, RWORK, INFO )
300 CHARACTER FACT, TRANS
301 INTEGER INFO, LDB, LDX, N, NRHS
302 DOUBLE PRECISION RCOND
306 DOUBLE PRECISION BERR( * ), FERR( * ), RWORK( * )
307 COMPLEX*16 B( LDB, * ), D( * ), DF( * ), DL( * ),
308 $ dlf( * ), du( * ), du2( * ), duf( * ),
309 $ work( * ), x( ldx, * )
315 DOUBLE PRECISION ZERO
316 PARAMETER ( ZERO = 0.0d+0 )
319 LOGICAL NOFACT, NOTRAN
321 DOUBLE PRECISION ANORM
325 DOUBLE PRECISION DLAMCH, ZLANGT
326 EXTERNAL lsame, dlamch, zlangt
338 nofact = lsame( fact,
'N' )
339 notran = lsame( trans,
'N' )
340 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN
342 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) .AND. .NOT.
343 $ lsame( trans,
'C' ) )
THEN
345 ELSE IF( n.LT.0 )
THEN
347 ELSE IF( nrhs.LT.0 )
THEN
349 ELSE IF( ldb.LT.max( 1, n ) )
THEN
351 ELSE IF( ldx.LT.max( 1, n ) )
THEN
355 CALL xerbla(
'ZGTSVX', -info )
363 CALL zcopy( n, d, 1, df, 1 )
365 CALL zcopy( n-1, dl, 1, dlf, 1 )
366 CALL zcopy( n-1, du, 1, duf, 1 )
368 CALL zgttrf( n, dlf, df, duf, du2, ipiv, info )
385 anorm = zlangt( norm, n, dl, d, du )
389 CALL zgtcon( norm, n, dlf, df, duf, du2, ipiv, anorm, rcond, work,
394 CALL zlacpy(
'Full', n, nrhs, b, ldb, x, ldx )
395 CALL zgttrs( trans, n, nrhs, dlf, df, duf, du2, ipiv, x, ldx,
401 CALL zgtrfs( trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv,
402 $ b, ldb, x, ldx, ferr, berr, work, rwork, info )
406 IF( rcond.LT.dlamch(
'Epsilon' ) )
subroutine xerbla(srname, info)
subroutine zcopy(n, zx, incx, zy, incy)
ZCOPY
subroutine zgtcon(norm, n, dl, d, du, du2, ipiv, anorm, rcond, work, info)
ZGTCON
subroutine zgtrfs(trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, ldb, x, ldx, ferr, berr, work, rwork, info)
ZGTRFS
subroutine zgtsvx(fact, trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
ZGTSVX computes the solution to system of linear equations A * X = B for GT matrices
subroutine zgttrf(n, dl, d, du, du2, ipiv, info)
ZGTTRF
subroutine zgttrs(trans, n, nrhs, dl, d, du, du2, ipiv, b, ldb, info)
ZGTTRS
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.