293 SUBROUTINE zgtsvx( FACT, TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF,
294 $ du2, ipiv, b, ldb, x, ldx, rcond, ferr, berr,
295 $ work, rwork, info )
303 CHARACTER FACT, TRANS
304 INTEGER INFO, LDB, LDX, N, NRHS
305 DOUBLE PRECISION RCOND
309 DOUBLE PRECISION BERR( * ), FERR( * ), RWORK( * )
310 COMPLEX*16 B( ldb, * ), D( * ), DF( * ), DL( * ),
311 $ dlf( * ), du( * ), du2( * ), duf( * ),
312 $ work( * ), x( ldx, * )
318 DOUBLE PRECISION ZERO
319 parameter ( zero = 0.0d+0 )
322 LOGICAL NOFACT, NOTRAN
324 DOUBLE PRECISION ANORM
328 DOUBLE PRECISION DLAMCH, ZLANGT
329 EXTERNAL lsame, dlamch, zlangt
341 nofact = lsame( fact,
'N' )
342 notran = lsame( trans,
'N' )
343 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN
345 ELSE IF( .NOT.notran .AND. .NOT.lsame( trans,
'T' ) .AND. .NOT.
346 $ lsame( trans,
'C' ) )
THEN
348 ELSE IF( n.LT.0 )
THEN
350 ELSE IF( nrhs.LT.0 )
THEN
352 ELSE IF( ldb.LT.max( 1, n ) )
THEN
354 ELSE IF( ldx.LT.max( 1, n ) )
THEN
358 CALL xerbla(
'ZGTSVX', -info )
366 CALL zcopy( n, d, 1, df, 1 )
368 CALL zcopy( n-1, dl, 1, dlf, 1 )
369 CALL zcopy( n-1, du, 1, duf, 1 )
371 CALL zgttrf( n, dlf, df, duf, du2, ipiv, info )
388 anorm = zlangt( norm, n, dl, d, du )
392 CALL zgtcon( norm, n, dlf, df, duf, du2, ipiv, anorm, rcond, work,
397 CALL zlacpy(
'Full', n, nrhs, b, ldb, x, ldx )
398 CALL zgttrs( trans, n, nrhs, dlf, df, duf, du2, ipiv, x, ldx,
404 CALL zgtrfs( trans, n, nrhs, dl, d, du, dlf, df, duf, du2, ipiv,
405 $ b, ldb, x, ldx, ferr, berr, work, rwork, info )
409 IF( rcond.LT.dlamch(
'Epsilon' ) )
subroutine zgttrs(TRANS, N, NRHS, DL, D, DU, DU2, IPIV, B, LDB, INFO)
ZGTTRS
subroutine zcopy(N, ZX, INCX, ZY, INCY)
ZCOPY
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 zgtcon(NORM, N, DL, D, DU, DU2, IPIV, ANORM, RCOND, WORK, INFO)
ZGTCON
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zgttrf(N, DL, D, DU, DU2, IPIV, INFO)
ZGTTRF
subroutine zgtrfs(TRANS, N, NRHS, DL, D, DU, DLF, DF, DUF, DU2, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZGTRFS