125 SUBROUTINE ztrt01( UPLO, DIAG, N, A, LDA, AINV, LDAINV, RCOND,
135 INTEGER lda, ldainv, n
136 DOUBLE PRECISION rcond, resid
139 DOUBLE PRECISION rwork( * )
140 COMPLEX*16 a( lda, * ), ainv( ldainv, * )
146 DOUBLE PRECISION zero, one
147 parameter( zero = 0.0d+0, one = 1.0d+0 )
151 DOUBLE PRECISION ainvnm, anorm, eps
177 anorm =
zlantr(
'1', uplo, diag, n, n, a, lda, rwork )
178 ainvnm =
zlantr(
'1', uplo, diag, n, n, ainv, ldainv, rwork )
179 IF( anorm.LE.zero .OR. ainvnm.LE.zero )
THEN
184 rcond = ( one / anorm ) / ainvnm
188 IF(
lsame( diag,
'U' ) )
THEN
196 IF(
lsame( uplo,
'U' ) )
THEN
198 CALL
ztrmv(
'Upper',
'No transpose', diag,
j, a, lda,
203 CALL
ztrmv(
'Lower',
'No transpose', diag, n-
j+1, a(
j,
j ),
204 $ lda, ainv(
j,
j ), 1 )
211 ainv(
j,
j ) = ainv(
j,
j ) - one
216 resid =
zlantr(
'1', uplo,
'Non-unit', n, n, ainv, ldainv, rwork )
218 resid = ( ( resid*rcond ) / dble( n ) ) / eps
LOGICAL function lsame(CA, CB)
LSAME
subroutine ztrt01(UPLO, DIAG, N, A, LDA, AINV, LDAINV, RCOND, RWORK, RESID)
ZTRT01
subroutine ztrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRMV
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
DOUBLE PRECISION function dlamch(CMACH)
DLAMCH
DOUBLE PRECISION function zlantr(NORM, UPLO, DIAG, M, N, A, LDA, WORK)
ZLANTR returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a trapezoidal or triangular matrix.