124 SUBROUTINE csyt03( UPLO, N, A, LDA, AINV, LDAINV, WORK, LDWORK,
125 $ RWORK, RCOND, RESID )
133 INTEGER LDA, LDAINV, LDWORK, N
138 COMPLEX A( LDA, * ), AINV( LDAINV, * ),
147 parameter( zero = 0.0e+0, one = 1.0e+0 )
149 parameter( czero = ( 0.0e+0, 0.0e+0 ),
150 $ cone = ( 1.0e+0, 0.0e+0 ) )
154 REAL AINVNM, ANORM, EPS
158 REAL , CLANSY, SLAMCH
159 EXTERNAL lsame,
clange, clansy, slamch
179 eps = slamch(
'Epsilon' )
180 anorm = clansy(
'1', uplo, n, a, lda, rwork )
181 ainvnm = clansy(
'1', uplo, n, ainv, ldainv, rwork )
182 IF( anorm.LE.zero .OR. ainvnm.LE.zero )
THEN
187 rcond = ( one/anorm ) / ainvnm
192 IF( lsame( uplo,
'U' ) )
THEN
195 ainv( j, i ) = ainv( i, j )
201 ainv( j, i ) = ainv( i, j )
205 CALL csymm(
'Left', uplo, n, n, -cone, a, lda, ainv, ldainv,
206 $ czero, work, ldwork )
211 work( i, i ) = work( i, i ) + cone
216 resid =
clange(
'1', n, n, work, ldwork, rwork )
218 resid = ( ( resid*rcond )/eps ) / real( n )
real function clange(norm, m, n, a, lda, work)
CLANGE returns the value of the 1-norm, Frobenius norm, infinity-norm, or the largest absolute value ...
subroutine csymm(side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
CSYMM
subroutine csyt03(uplo, n, a, lda, ainv, ldainv, work, ldwork, rwork, rcond, resid)
CSYT03