126 SUBROUTINE zsyt03( UPLO, N, A, LDA, AINV, LDAINV, WORK, LDWORK,
127 $ rwork, rcond, resid )
136 INTEGER lda, ldainv, ldwork, n
137 DOUBLE PRECISION rcond, resid
140 DOUBLE PRECISION rwork( * )
141 COMPLEX*16 a( lda, * ), ainv( ldainv, * ),
149 DOUBLE PRECISION zero, one
150 parameter( zero = 0.0d+0, one = 1.0d+0 )
151 COMPLEX*16 czero, cone
152 parameter( czero = ( 0.0d+0, 0.0d+0 ),
153 $ cone = ( 1.0d+0, 0.0d+0 ) )
157 DOUBLE PRECISION ainvnm, anorm, eps
183 anorm =
zlansy(
'1', uplo, n, a, lda, rwork )
184 ainvnm =
zlansy(
'1', uplo, n, ainv, ldainv, rwork )
185 IF( anorm.LE.zero .OR. ainvnm.LE.zero )
THEN
190 rcond = ( one / anorm ) / ainvnm
195 IF(
lsame( uplo,
'U' ) )
THEN
198 ainv(
j, i ) = ainv( i,
j )
204 ainv(
j, i ) = ainv( i,
j )
208 CALL
zsymm(
'Left', uplo, n, n, -cone, a, lda, ainv, ldainv,
209 $ czero, work, ldwork )
214 work( i, i ) = work( i, i ) + cone
219 resid =
zlange(
'1', n, n, work, ldwork, rwork )
221 resid = ( ( resid*rcond ) / eps ) / dble( n )
double precision function zlansy(NORM, UPLO, N, A, LDA, WORK)
ZLANSY returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a complex symmetric matrix.
logical function lsame(CA, CB)
LSAME
subroutine zsymm(SIDE, UPLO, M, N, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
ZSYMM
double precision function zlange(NORM, M, N, A, LDA, WORK)
ZLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
double precision function dlamch(CMACH)
DLAMCH
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine zsyt03(UPLO, N, A, LDA, AINV, LDAINV, WORK, LDWORK, RWORK, RCOND, RESID)
ZSYT03