284 SUBROUTINE csysvx( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
285 $ LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK,
295 INTEGER INFO, LDA, LDAF, LDB, LDX, LWORK, N, NRHS
300 REAL BERR( * ), FERR( * ), RWORK( * )
301 COMPLEX A( lda, * ), AF( ldaf, * ), B( ldb, * ),
302 $ work( * ), x( ldx, * )
309 parameter( zero = 0.0e+0 )
312 LOGICAL LQUERY, NOFACT
320 EXTERNAL ilaenv, lsame, clansy, slamch
333 nofact = lsame( fact,
'N' )
334 lquery = ( lwork.EQ.-1 )
335 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN 337 ELSE IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
340 ELSE IF( n.LT.0 )
THEN 342 ELSE IF( nrhs.LT.0 )
THEN 344 ELSE IF( lda.LT.max( 1, n ) )
THEN 346 ELSE IF( ldaf.LT.max( 1, n ) )
THEN 348 ELSE IF( ldb.LT.max( 1, n ) )
THEN 350 ELSE IF( ldx.LT.max( 1, n ) )
THEN 352 ELSE IF( lwork.LT.max( 1, 2*n ) .AND. .NOT.lquery )
THEN 357 lwkopt = max( 1, 2*n )
359 nb = ilaenv( 1,
'CSYTRF', uplo, n, -1, -1, -1 )
360 lwkopt = max( lwkopt, n*nb )
366 CALL xerbla(
'CSYSVX', -info )
368 ELSE IF( lquery )
THEN 376 CALL clacpy( uplo, n, n, a, lda, af, ldaf )
377 CALL csytrf( uplo, n, af, ldaf, ipiv, work, lwork, info )
389 anorm = clansy(
'I', uplo, n, a, lda, rwork )
393 CALL csycon( uplo, n, af, ldaf, ipiv, anorm, rcond, work, info )
397 CALL clacpy(
'Full', n, nrhs, b, ldb, x, ldx )
398 CALL csytrs( uplo, n, nrhs, af, ldaf, ipiv, x, ldx, info )
403 CALL csyrfs( uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x,
404 $ ldx, ferr, berr, work, rwork, info )
408 IF( rcond.LT.slamch(
'Epsilon' ) )
subroutine csytrs(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
CSYTRS
subroutine csyrfs(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
CSYRFS
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine csytrf(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
CSYTRF
subroutine clacpy(UPLO, M, N, A, LDA, B, LDB)
CLACPY copies all or part of one two-dimensional array to another.
subroutine csycon(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO)
CSYCON
subroutine csysvx(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, RWORK, INFO)
CSYSVX computes the solution to system of linear equations A * X = B for SY matrices ...