155 SUBROUTINE ctrt02( UPLO, TRANS, DIAG, N, NRHS, A, LDA, X, LDX, B,
156 $ LDB, WORK, RWORK, RESID )
163 CHARACTER DIAG, TRANS, UPLO
164 INTEGER LDA, LDB, LDX, N, NRHS
169 COMPLEX A( LDA, * ), B( LDB, * ), WORK( * ),
177 parameter( zero = 0.0e+0, one = 1.0e+0 )
181 REAL ANORM, BNORM, EPS, XNORM
185 REAL CLANTR, SCASUM, SLAMCH
186 EXTERNAL lsame, clantr, scasum, slamch
198 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
205 IF( lsame( trans,
'N' ) )
THEN
206 anorm = clantr(
'1', uplo, diag, n, n, a, lda, rwork )
208 anorm = clantr(
'I', uplo, diag, n, n, a, lda, rwork )
213 eps = slamch(
'Epsilon' )
214 IF( anorm.LE.zero )
THEN
224 CALL ccopy( n, x( 1, j ), 1, work, 1 )
225 CALL ctrmv( uplo, trans, diag, n, a, lda, work, 1 )
226 CALL caxpy( n, cmplx( -one ), b( 1, j ), 1, work, 1 )
227 bnorm = scasum( n, work, 1 )
228 xnorm = scasum( n, x( 1, j ), 1 )
229 IF( xnorm.LE.zero )
THEN
232 resid = max( resid, ( ( bnorm / anorm ) / xnorm ) / eps )
subroutine ccopy(N, CX, INCX, CY, INCY)
CCOPY
subroutine caxpy(N, CA, CX, INCX, CY, INCY)
CAXPY
subroutine ctrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
CTRMV
subroutine ctrt02(UPLO, TRANS, DIAG, N, NRHS, A, LDA, X, LDX, B, LDB, WORK, RWORK, RESID)
CTRT02