176 SUBROUTINE ctbt03( UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB,
177 $ scale, cnorm, tscal,
x, ldx,
b, ldb, work,
186 CHARACTER diag, trans, uplo
187 INTEGER kd, ldab, ldb, ldx, n, nrhs
188 REAL resid, scale, tscal
192 COMPLEX ab( ldab, * ),
b( ldb, * ), work( * ),
201 parameter( one = 1.0e+0, zero = 0.0e+0 )
205 REAL eps, err, smlnum, tnorm, xnorm, xscal
217 INTRINSIC abs, cmplx, max, real
223 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
228 smlnum =
slamch(
'Safe minimum' )
234 IF(
lsame( diag,
'N' ) )
THEN
235 IF(
lsame( uplo,
'U' ) )
THEN
237 tnorm = max( tnorm, tscal*abs( ab( kd+1,
j ) )+
242 tnorm = max( tnorm, tscal*abs( ab( 1,
j ) )+cnorm(
j ) )
247 tnorm = max( tnorm, tscal+cnorm(
j ) )
256 CALL
ccopy( n,
x( 1,
j ), 1, work, 1 )
258 xnorm = max( one, abs(
x( ix,
j ) ) )
259 xscal = ( one / xnorm ) /
REAL( kd+1 )
260 CALL
csscal( n, xscal, work, 1 )
261 CALL
ctbmv( uplo, trans, diag, n, kd, ab, ldab, work, 1 )
262 CALL
caxpy( n, cmplx( -scale*xscal ),
b( 1,
j ), 1, work, 1 )
264 err = tscal*abs( work( ix ) )
266 xnorm = abs(
x( ix,
j ) )
267 IF( err*smlnum.LE.xnorm )
THEN
274 IF( err*smlnum.LE.tnorm )
THEN
281 resid = max( resid, err )
LOGICAL function lsame(CA, CB)
LSAME
REAL function slamch(CMACH)
SLAMCH
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine ctbt03(UPLO, TRANS, DIAG, N, KD, NRHS, AB, LDAB, SCALE, CNORM, TSCAL, X, LDX, B, LDB, WORK, RESID)
CTBT03
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine ctbmv(UPLO, TRANS, DIAG, N, K, A, LDA, X, INCX)
CTBMV
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine csscal(N, SA, CX, INCX)
CSSCAL
INTEGER function icamax(N, CX, INCX)
ICAMAX