109 SUBROUTINE dtpt01( UPLO, DIAG, N, AP, AINVP, RCOND, WORK, RESID )
119 DOUBLE PRECISION rcond, resid
122 DOUBLE PRECISION ainvp( * ), ap( * ), work( * )
128 DOUBLE PRECISION zero, one
129 parameter( zero = 0.0d+0, one = 1.0d+0 )
134 DOUBLE PRECISION ainvnm, anorm, eps
160 anorm =
dlantp(
'1', uplo, diag, n, ap, work )
161 ainvnm =
dlantp(
'1', uplo, diag, n, ainvp, work )
162 IF( anorm.LE.zero .OR. ainvnm.LE.zero )
THEN
167 rcond = ( one / anorm ) / ainvnm
171 unitd =
lsame( diag,
'U' )
172 IF(
lsame( uplo,
'U' ) )
THEN
176 $ ainvp( jc+
j-1 ) = one
180 CALL
dtpmv(
'Upper',
'No transpose', diag,
j, ap,
185 ainvp( jc+
j-1 ) = ainvp( jc+
j-1 ) - one
196 CALL
dtpmv(
'Lower',
'No transpose', diag, n-
j+1, ap( jc ),
201 ainvp( jc ) = ainvp( jc ) - one
208 resid =
dlantp(
'1', uplo,
'Non-unit', n, ainvp, work )
210 resid = ( ( resid*rcond ) / dble( n ) ) / eps
subroutine dtpt01(UPLO, DIAG, N, AP, AINVP, RCOND, WORK, RESID)
DTPT01
logical function lsame(CA, CB)
LSAME
subroutine dtpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
DTPMV
double precision function dlantp(NORM, UPLO, DIAG, N, AP, WORK)
DLANTP returns the value of the 1-norm, or the Frobenius norm, or the infinity norm, or the element of largest absolute value of a triangular matrix supplied in packed form.
double precision function dlamch(CMACH)
DLAMCH
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j