232 SUBROUTINE zptsvx( FACT, N, NRHS, D, E, DF, EF, B, LDB, X, LDX,
233 $ RCOND, FERR, BERR, WORK, RWORK, INFO )
241 INTEGER INFO, LDB, LDX, N, NRHS
242 DOUBLE PRECISION RCOND
245 DOUBLE PRECISION BERR( * ), D( * ), DF( * ), FERR( * ),
247 COMPLEX*16 B( LDB, * ), E( * ), EF( * ), WORK( * ),
254 DOUBLE PRECISION ZERO
255 parameter( zero = 0.0d+0 )
259 DOUBLE PRECISION ANORM
263 DOUBLE PRECISION DLAMCH, ZLANHT
264 EXTERNAL lsame, dlamch, zlanht
278 nofact = lsame( fact,
'N' )
279 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN
281 ELSE IF( n.LT.0 )
THEN
283 ELSE IF( nrhs.LT.0 )
THEN
285 ELSE IF( ldb.LT.max( 1, n ) )
THEN
287 ELSE IF( ldx.LT.max( 1, n ) )
THEN
291 CALL xerbla(
'ZPTSVX', -info )
299 CALL dcopy( n, d, 1, df, 1 )
301 $
CALL zcopy( n-1, e, 1, ef, 1 )
302 CALL zpttrf( n, df, ef, info )
314 anorm = zlanht(
'1', n, d, e )
318 CALL zptcon( n, df, ef, anorm, rcond, rwork, info )
322 CALL zlacpy(
'Full', n, nrhs, b, ldb, x, ldx )
323 CALL zpttrs(
'Lower', n, nrhs, df, ef, x, ldx, info )
328 CALL zptrfs(
'Lower', n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr,
329 $ berr, work, rwork, info )
333 IF( rcond.LT.dlamch(
'Epsilon' ) )
subroutine xerbla(srname, info)
subroutine zcopy(n, zx, incx, zy, incy)
ZCOPY
subroutine dcopy(n, dx, incx, dy, incy)
DCOPY
subroutine zlacpy(uplo, m, n, a, lda, b, ldb)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zptcon(n, d, e, anorm, rcond, rwork, info)
ZPTCON
subroutine zptrfs(uplo, n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr, berr, work, rwork, info)
ZPTRFS
subroutine zptsvx(fact, n, nrhs, d, e, df, ef, b, ldb, x, ldx, rcond, ferr, berr, work, rwork, info)
ZPTSVX computes the solution to system of linear equations A * X = B for PT matrices
subroutine zpttrf(n, d, e, info)
ZPTTRF
subroutine zpttrs(uplo, n, nrhs, d, e, b, ldb, info)
ZPTTRS