274 SUBROUTINE sspsvx( FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X,
275 $ LDX, RCOND, FERR, BERR, WORK, IWORK, INFO )
283 INTEGER INFO, LDB, LDX, N, NRHS
287 INTEGER IPIV( * ), IWORK( * )
288 REAL AFP( * ), AP( * ), B( ldb, * ), BERR( * ),
289 $ ferr( * ), work( * ), x( ldx, * )
296 parameter( zero = 0.0e+0 )
305 EXTERNAL lsame, slamch, slansp
319 nofact = lsame( fact,
'N' )
320 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN 322 ELSE IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
325 ELSE IF( n.LT.0 )
THEN 327 ELSE IF( nrhs.LT.0 )
THEN 329 ELSE IF( ldb.LT.max( 1, n ) )
THEN 331 ELSE IF( ldx.LT.max( 1, n ) )
THEN 335 CALL xerbla(
'SSPSVX', -info )
343 CALL scopy( n*( n+1 ) / 2, ap, 1, afp, 1 )
344 CALL ssptrf( uplo, n, afp, ipiv, info )
356 anorm = slansp(
'I', uplo, n, ap, work )
360 CALL sspcon( uplo, n, afp, ipiv, anorm, rcond, work, iwork, info )
364 CALL slacpy(
'Full', n, nrhs, b, ldb, x, ldx )
365 CALL ssptrs( uplo, n, nrhs, afp, ipiv, x, ldx, info )
370 CALL ssprfs( uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr,
371 $ berr, work, iwork, info )
375 IF( rcond.LT.slamch(
'Epsilon' ) )
subroutine ssprfs(UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO)
SSPRFS
subroutine ssptrs(UPLO, N, NRHS, AP, IPIV, B, LDB, INFO)
SSPTRS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine sspcon(UPLO, N, AP, IPIV, ANORM, RCOND, WORK, IWORK, INFO)
SSPCON
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY
subroutine ssptrf(UPLO, N, AP, IPIV, INFO)
SSPTRF
subroutine sspsvx(FACT, UPLO, N, NRHS, AP, AFP, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, IWORK, INFO)
SSPSVX computes the solution to system of linear equations A * X = B for OTHER matrices ...
subroutine slacpy(UPLO, M, N, A, LDA, B, LDB)
SLACPY copies all or part of one two-dimensional array to another.