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 xerbla(srname, info)
subroutine scopy(n, sx, incx, sy, incy)
SCOPY
subroutine sspcon(uplo, n, ap, ipiv, anorm, rcond, work, iwork, info)
SSPCON
subroutine ssprfs(uplo, n, nrhs, ap, afp, ipiv, b, ldb, x, ldx, ferr, berr, work, iwork, info)
SSPRFS
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 ssptrf(uplo, n, ap, ipiv, info)
SSPTRF
subroutine ssptrs(uplo, n, nrhs, ap, ipiv, b, ldb, info)
SSPTRS
subroutine slacpy(uplo, m, n, a, lda, b, ldb)
SLACPY copies all or part of one two-dimensional array to another.