275 SUBROUTINE cspsvx( FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X,
276 $ LDX, RCOND, FERR, BERR, WORK, RWORK, INFO )
284 INTEGER INFO, LDB, LDX, N, NRHS
289 REAL BERR( * ), FERR( * ), RWORK( * )
290 COMPLEX AFP( * ), AP( * ), B( ldb, * ), WORK( * ),
298 parameter( zero = 0.0e+0 )
307 EXTERNAL lsame, clansp, slamch
321 nofact = lsame( fact,
'N' )
322 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN 324 ELSE IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
327 ELSE IF( n.LT.0 )
THEN 329 ELSE IF( nrhs.LT.0 )
THEN 331 ELSE IF( ldb.LT.max( 1, n ) )
THEN 333 ELSE IF( ldx.LT.max( 1, n ) )
THEN 337 CALL xerbla(
'CSPSVX', -info )
345 CALL ccopy( n*( n+1 ) / 2, ap, 1, afp, 1 )
346 CALL csptrf( uplo, n, afp, ipiv, info )
358 anorm = clansp(
'I', uplo, n, ap, rwork )
362 CALL cspcon( uplo, n, afp, ipiv, anorm, rcond, work, info )
366 CALL clacpy(
'Full', n, nrhs, b, ldb, x, ldx )
367 CALL csptrs( uplo, n, nrhs, afp, ipiv, x, ldx, info )
372 CALL csprfs( uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr,
373 $ berr, work, rwork, info )
377 IF( rcond.LT.slamch(
'Epsilon' ) )
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine cspsvx(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, RWORK, INFO)
CSPSVX computes the solution to system of linear equations A * X = B for OTHER matrices ...
subroutine csptrf(UPLO, N, AP, IPIV, INFO)
CSPTRF
subroutine csprfs(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
CSPRFS
subroutine csptrs(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO)
CSPTRS
subroutine cspcon(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, INFO)
CSPCON