282 SUBROUTINE zsysvx( FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B,
283 $ LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK,
292 INTEGER INFO, LDA, LDAF, LDB, LDX, LWORK, N, NRHS
293 DOUBLE PRECISION RCOND
297 DOUBLE PRECISION BERR( * ), FERR( * ), RWORK( * )
298 COMPLEX*16 A( lda, * ), AF( ldaf, * ), B( ldb, * ),
299 $ work( * ), x( ldx, * )
305 DOUBLE PRECISION ZERO
306 parameter( zero = 0.0d+0 )
309 LOGICAL LQUERY, NOFACT
311 DOUBLE PRECISION ANORM
316 DOUBLE PRECISION DLAMCH, ZLANSY
317 EXTERNAL lsame, ilaenv, dlamch, zlansy
330 nofact = lsame( fact,
'N' )
331 lquery = ( lwork.EQ.-1 )
332 IF( .NOT.nofact .AND. .NOT.lsame( fact,
'F' ) )
THEN 334 ELSE IF( .NOT.lsame( uplo,
'U' ) .AND. .NOT.lsame( uplo,
'L' ) )
337 ELSE IF( n.LT.0 )
THEN 339 ELSE IF( nrhs.LT.0 )
THEN 341 ELSE IF( lda.LT.max( 1, n ) )
THEN 343 ELSE IF( ldaf.LT.max( 1, n ) )
THEN 345 ELSE IF( ldb.LT.max( 1, n ) )
THEN 347 ELSE IF( ldx.LT.max( 1, n ) )
THEN 349 ELSE IF( lwork.LT.max( 1, 2*n ) .AND. .NOT.lquery )
THEN 354 lwkopt = max( 1, 2*n )
356 nb = ilaenv( 1,
'ZSYTRF', uplo, n, -1, -1, -1 )
357 lwkopt = max( lwkopt, n*nb )
363 CALL xerbla(
'ZSYSVX', -info )
365 ELSE IF( lquery )
THEN 373 CALL zlacpy( uplo, n, n, a, lda, af, ldaf )
374 CALL zsytrf( uplo, n, af, ldaf, ipiv, work, lwork, info )
386 anorm = zlansy(
'I', uplo, n, a, lda, rwork )
390 CALL zsycon( uplo, n, af, ldaf, ipiv, anorm, rcond, work, info )
394 CALL zlacpy(
'Full', n, nrhs, b, ldb, x, ldx )
395 CALL zsytrs( uplo, n, nrhs, af, ldaf, ipiv, x, ldx, info )
400 CALL zsyrfs( uplo, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x,
401 $ ldx, ferr, berr, work, rwork, info )
405 IF( rcond.LT.dlamch(
'Epsilon' ) )
subroutine zsytrf(UPLO, N, A, LDA, IPIV, WORK, LWORK, INFO)
ZSYTRF
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zsyrfs(UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, FERR, BERR, WORK, RWORK, INFO)
ZSYRFS
subroutine zsytrs(UPLO, N, NRHS, A, LDA, IPIV, B, LDB, INFO)
ZSYTRS
subroutine zlacpy(UPLO, M, N, A, LDA, B, LDB)
ZLACPY copies all or part of one two-dimensional array to another.
subroutine zsysvx(FACT, UPLO, N, NRHS, A, LDA, AF, LDAF, IPIV, B, LDB, X, LDX, RCOND, FERR, BERR, WORK, LWORK, RWORK, INFO)
ZSYSVX computes the solution to system of linear equations A * X = B for SY matrices ...
subroutine zsycon(UPLO, N, A, LDA, IPIV, ANORM, RCOND, WORK, INFO)
ZSYCON