139 SUBROUTINE stpt02( UPLO, TRANS, DIAG, N, NRHS, AP, X, LDX, B, LDB,
147 CHARACTER DIAG, TRANS, UPLO
148 INTEGER LDB, LDX, N, NRHS
152 REAL AP( * ), B( LDB, * ), WORK( * ), X( LDX, * )
159 parameter( zero = 0.0e+0, one = 1.0e+0 )
163 REAL ANORM, BNORM, EPS, XNORM
167 REAL SASUM, SLAMCH, SLANTP
168 EXTERNAL lsame, sasum, slamch, slantp
180 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
187 IF( lsame( trans,
'N' ) )
THEN
188 anorm = slantp(
'1', uplo, diag, n, ap, work )
190 anorm = slantp(
'I', uplo, diag, n, ap, work )
195 eps = slamch(
'Epsilon' )
196 IF( anorm.LE.zero )
THEN
206 CALL scopy( n, x( 1, j ), 1, work, 1 )
207 CALL stpmv( uplo, trans, diag, n, ap, work, 1 )
208 CALL saxpy( n, -one, b( 1, j ), 1, work, 1 )
209 bnorm = sasum( n, work, 1 )
210 xnorm = sasum( n, x( 1, j ), 1 )
211 IF( xnorm.LE.zero )
THEN
214 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 stpmv(UPLO, TRANS, DIAG, N, AP, X, INCX)
STPMV
subroutine stpt02(UPLO, TRANS, DIAG, N, NRHS, AP, X, LDX, B, LDB, WORK, RESID)
STPT02