232 SUBROUTINE cptsvx( 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
245 REAL BERR( * ), D( * ), DF( * ), FERR( * ),
247 COMPLEX B( ldb, * ), E( * ), EF( * ), WORK( * ),
255 parameter( zero = 0.0e+0 )
264 EXTERNAL lsame, clanht, slamch
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(
'CPTSVX', -info )
299 CALL scopy( n, d, 1, df, 1 )
301 $
CALL ccopy( n-1, e, 1, ef, 1 )
302 CALL cpttrf( n, df, ef, info )
314 anorm = clanht(
'1', n, d, e )
318 CALL cptcon( n, df, ef, anorm, rcond, rwork, info )
322 CALL clacpy(
'Full', n, nrhs, b, ldb, x, ldx )
323 CALL cpttrs(
'Lower', n, nrhs, df, ef, x, ldx, info )
328 CALL cptrfs(
'Lower', n, nrhs, d, e, df, ef, b, ldb, x, ldx, ferr,
329 $ berr, work, rwork, info )
333 IF( rcond.LT.slamch(
'Epsilon' ) )
subroutine cptrfs(UPLO, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
CPTRFS
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine cpttrs(UPLO, N, NRHS, D, E, B, LDB, INFO)
CPTTRS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY
subroutine cpttrf(N, D, E, INFO)
CPTTRF
subroutine cptcon(N, D, E, ANORM, RCOND, RWORK, INFO)
CPTCON
subroutine cptsvx(FACT, N, NRHS, D, E, DF, EF, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO)
CPTSVX computes the solution to system of linear equations A * X = B for PT matrices ...