122      SUBROUTINE strt01( UPLO, DIAG, N, A, LDA, AINV, LDAINV, RCOND,
 
  131      INTEGER            LDA, LDAINV, N
 
  135      REAL               A( LDA, * ), AINV( LDAINV, * ), WORK( * )
 
  142      parameter( zero = 0.0e+0, one = 1.0e+0 )
 
  146      REAL               AINVNM, ANORM, EPS
 
  151      EXTERNAL           lsame, slamch, slantr
 
  171      eps = slamch( 
'Epsilon' )
 
  172      anorm = slantr( 
'1', uplo, diag, n, n, a, lda, work )
 
  173      ainvnm = slantr( 
'1', uplo, diag, n, n, ainv, ldainv, work )
 
  174      IF( anorm.LE.zero .OR. ainvnm.LE.zero ) 
THEN 
  179      rcond = ( one / anorm ) / ainvnm
 
  183      IF( lsame( diag, 
'U' ) ) 
THEN 
  191      IF( lsame( uplo, 
'U' ) ) 
THEN 
  193            CALL strmv( 
'Upper', 
'No transpose', diag, j, a, lda,
 
  198            CALL strmv( 
'Lower', 
'No transpose', diag, n-j+1, a( j, j ),
 
  199     $                  lda, ainv( j, j ), 1 )
 
  206         ainv( j, j ) = ainv( j, j ) - one
 
  211      resid = slantr( 
'1', uplo, 
'Non-unit', n, n, ainv, ldainv, work )
 
  213      resid = ( ( resid*rcond ) / real( n ) ) / eps
 
 
subroutine strmv(uplo, trans, diag, n, a, lda, x, incx)
STRMV
subroutine strt01(uplo, diag, n, a, lda, ainv, ldainv, rcond, work, resid)
STRT01