169 SUBROUTINE strt03( UPLO, TRANS, DIAG, N, NRHS, A, LDA, SCALE,
170 $ cnorm, tscal, x, ldx,
b, ldb, work, resid )
178 CHARACTER diag, trans, uplo
179 INTEGER lda, ldb, ldx, n, nrhs
180 REAL resid, scale, tscal
183 REAL a( lda, * ),
b( ldb, * ), cnorm( * ),
184 $ work( * ), x( ldx, * )
191 parameter( one = 1.0e+0, zero = 0.0e+0 )
195 REAL bignum, eps, err, smlnum, tnorm, xnorm, xscal
207 INTRINSIC abs, max, real
213 IF( n.LE.0 .OR. nrhs.LE.0 )
THEN
218 smlnum =
slamch(
'Safe minimum' )
219 bignum = one / smlnum
220 CALL
slabad( smlnum, bignum )
226 IF(
lsame( diag,
'N' ) )
THEN
228 tnorm = max( tnorm, tscal*abs( a(
j,
j ) )+cnorm(
j ) )
232 tnorm = max( tnorm, tscal+cnorm(
j ) )
241 CALL
scopy( n, x( 1,
j ), 1, work, 1 )
243 xnorm = max( one, abs( x( ix,
j ) ) )
244 xscal = ( one / xnorm ) /
REAL( n )
245 CALL
sscal( n, xscal, work, 1 )
246 CALL
strmv( uplo, trans, diag, n, a, lda, work, 1 )
247 CALL
saxpy( n, -scale*xscal,
b( 1,
j ), 1, work, 1 )
249 err = tscal*abs( work( ix ) )
251 xnorm = abs( x( ix,
j ) )
252 IF( err*smlnum.LE.xnorm )
THEN
259 IF( err*smlnum.LE.tnorm )
THEN
266 resid = max( resid, err )
subroutine strt03(UPLO, TRANS, DIAG, N, NRHS, A, LDA, SCALE, CNORM, TSCAL, X, LDX, B, LDB, WORK, RESID)
STRT03
integer function isamax(N, SX, INCX)
ISAMAX
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real b(3) integer i
subroutine strmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
STRMV
subroutine scopy(N, SX, INCX, SY, INCY)
SCOPY
logical function lsame(CA, CB)
LSAME
subroutine saxpy(N, SA, SX, INCX, SY, INCY)
SAXPY
real function slamch(CMACH)
SLAMCH
set ue cd $ADTTMP cat<< EOF > tmp f Program LinearEquations Implicit none Real j
subroutine slabad(SMALL, LARGE)
SLABAD
subroutine sscal(N, SA, SX, INCX)
SSCAL