281 SUBROUTINE ssysvx( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
282 $ LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK,
291 INTEGER INFO, LDA, LDAF, LDB, LDX, LWORK, N, NRHS
295 INTEGER IPIV( * ), IWORK( * )
296 REAL A( lda, * ), AF( ldaf, * ), B( ldb, * ),
297 $ berr( * ), ferr( * ), work( * ), x( ldx, * )
304 parameter( zero = 0.0e+0 )
307 LOGICAL LQUERY, NOFACT
315 EXTERNAL ilaenv, lsame, slamch, slansy
328 nofact = lsame( fact,
'N' )
329 lquery = ( lwork.EQ.-1 )
330 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN 332 ELSE IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
335 ELSE IF( n.LT.0 )
THEN 337 ELSE IF( nrhs.LT.0 )
THEN 339 ELSE IF( lda.LT.max( 1, n ) )
THEN 341 ELSE IF( ldaf.LT.max( 1, n ) )
THEN 343 ELSE IF( ldb.LT.max( 1, n ) )
THEN 345 ELSE IF( ldx.LT.max( 1, n ) )
THEN 347 ELSE IF( lwork.LT.max( 1, 3*n ) .AND. .NOT.lquery )
THEN 352 lwkopt = max( 1, 3*n )
354 nb = ilaenv( 1,
'SSYTRF', uplo, n, -1, -1, -1 )
355 lwkopt = max( lwkopt, n*nb )
361 CALL xerbla(
'SSYSVX', -info )
363 ELSE IF( lquery )
THEN 371 CALL slacpy( uplo, n, n, a, lda, af, ldaf )
372 CALL ssytrf( uplo, n, af, ldaf, ipiv, work, lwork, info )
384 anorm = slansy(
'I', uplo, n, a, lda, work )
388 CALL ssycon( uplo, n, af, ldaf, ipiv, anorm, rcond, work, iwork,
393 CALL slacpy(
'Full', n, nrhs, b, ldb, x, ldx )
394 CALL ssytrs( uplo, n, nrhs, af, ldaf, ipiv, x, ldx, info )
399 CALL ssyrfs( uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x,
400 $ ldx, ferr, berr, work, iwork, info )
404 IF( rcond.LT.slamch(
'Epsilon' ) )
subroutine ssysvx(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, IWORK, INFO)
SSYSVX computes the solution to system of linear equations A * X = B for SY matrices ...
subroutine ssyrfs(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, IWORK, INFO)
SSYRFS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine ssytrs(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
SSYTRS
subroutine ssytrf(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
SSYTRF
subroutine ssycon(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, IWORK, INFO)
SSYCON
subroutine slacpy(UPLO, M, N, A, LDA, B, LDB)
SLACPY copies all or part of one two-dimensional array to another.