149 SUBROUTINE strt02( UPLO, TRANS, DIAG, N, NRHS, A, LDA, X, LDX, B,
157 CHARACTER DIAG, TRANS, UPLO
158 INTEGER LDA, LDB, LDX, N, NRHS
162 REAL A( LDA, * ), B( LDB, * ), WORK( * ),
170 parameter( zero = 0.0e+0, one = 1.0e+0 )
174 REAL ANORM, BNORM, EPS, XNORM
178 REAL SASUM, SLAMCH, SLANTR
179 EXTERNAL lsame, sasum, slamch, slantr
191 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
198 IF( lsame( trans,
'N' ) )
THEN
199 anorm = slantr(
'1', uplo, diag, n, n, a, lda, work )
201 anorm = slantr(
'I', uplo, diag, n, n, a, lda, work )
206 eps = slamch(
'Epsilon' )
207 IF( anorm.LE.zero )
THEN
217 CALL scopy( n, x( 1, j ), 1, work, 1 )
218 CALL strmv( uplo, trans, diag, n, a, lda, work, 1 )
219 CALL saxpy( n, -one, b( 1, j ), 1, work, 1 )
220 bnorm = sasum( n, work, 1 )
221 xnorm = sasum( n, x( 1, j ), 1 )
222 IF( xnorm.LE.zero )
THEN
225 resid = max( resid, ( ( bnorm / anorm ) / xnorm ) / eps )
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY
subroutine saxpy(N, SA, SX, INCX, SY, INCY)
SAXPY
subroutine strmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
STRMV
subroutine strt02(UPLO, TRANS, DIAG, N, NRHS, A, LDA, X, LDX, B, LDB, WORK, RESID)
STRT02