289 SUBROUTINE zgtsvx( FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF,
291 $ DU2, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR,
292 $ WORK, RWORK, INFO )
299 CHARACTER FACT, TRANS
300 INTEGER INFO, LDB, LDX, N, NRHS
301 DOUBLE PRECISION RCOND
305 DOUBLE PRECISION BERR( * ), FERR( * ), RWORK( * )
306 COMPLEX*16 B( LDB, * ), D( * ), DF( * ), DL( * ),
307 $ dlf( * ), du( * ), du2( * ), duf( * ),
308 $ work( * ), x( ldx, * )
314 DOUBLE PRECISION ZERO
315 PARAMETER ( ZERO = 0.0d+0 )
318 LOGICAL NOFACT, NOTRAN
320 DOUBLE PRECISION ANORM
324 DOUBLE PRECISION DLAMCH, ZLANGT
325 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,
395 CALL zlacpy(
'Full', n, nrhs, b, ldb, x, ldx )
396 CALL zgttrs( trans, n, nrhs, dlf, df, duf, du2, ipiv, x, ldx,
402 CALL zgtrfs( trans, n, nrhs, dl, d, du, dlf, df, duf, du2,
404 $ b, ldb, x, ldx, ferr, berr, work, rwork, info )
408 IF( rcond.LT.dlamch(
'Epsilon' ) )
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 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.