161 SUBROUTINE ztbt02( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X,
162 $ ldx,
b, ldb, work, rwork, resid )
170 CHARACTER diag, trans, uplo
171 INTEGER kd, ldab, ldb, ldx, n, nrhs
172 DOUBLE PRECISION resid
175 DOUBLE PRECISION rwork( * )
176 COMPLEX*16 ab( ldab, * ),
b( ldb, * ), work( * ),
183 DOUBLE PRECISION zero, one
184 parameter( zero = 0.0d+0, one = 1.0d+0 )
188 DOUBLE PRECISION anorm, bnorm, eps, xnorm
199 INTRINSIC dcmplx, max
205 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
212 IF(
lsame( trans,
'N' ) )
THEN
213 anorm =
zlantb(
'1', uplo, diag, n, kd, ab, ldab, rwork )
215 anorm =
zlantb(
'I', uplo, diag, n, kd, ab, ldab, rwork )
221 IF( anorm.LE.zero )
THEN
231 CALL
zcopy( n, x( 1,
j ), 1, work, 1 )
232 CALL
ztbmv( uplo, trans, diag, n, kd, ab, ldab, work, 1 )
233 CALL
zaxpy( n, dcmplx( -one ),
b( 1,
j ), 1, work, 1 )
234 bnorm =
dzasum( n, work, 1 )
235 xnorm =
dzasum( n, x( 1,
j ), 1 )
236 IF( xnorm.LE.zero )
THEN
239 resid = max( resid, ( ( bnorm / anorm ) / xnorm ) / eps )
subroutine ztbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
ZTBMV
double precision function zlantb(NORM, UPLO, DIAG, N, K, AB, LDAB, WORK)
ZLANTB 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 band matrix.
subroutine ztbt02(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, X, LDX, B, LDB, WORK, RWORK, RESID)
ZTBT02
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine zcopy(N, ZX, INCX, ZY, INCY)
ZCOPY
logical function lsame(CA, CB)
LSAME
subroutine zaxpy(N, ZA, ZX, INCX, ZY, INCY)
ZAXPY
double precision function dzasum(N, ZX, INCX)
DZASUM
double precision function dlamch(CMACH)
DLAMCH
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j