119 SUBROUTINE spbt01( UPLO, N, KD, A, LDA, AFAC, LDAFAC, RWORK,
129 INTEGER KD, LDA, LDAFAC, N
133 REAL A( lda, * ), AFAC( ldafac, * ), RWORK( * )
141 parameter ( zero = 0.0e+0, one = 1.0e+0 )
144 INTEGER I, J, K, KC, KLEN, ML, MU
149 REAL SDOT, SLAMCH, SLANSB
150 EXTERNAL lsame, sdot, slamch, slansb
156 INTRINSIC max, min, real
169 eps = slamch(
'Epsilon' )
170 anorm = slansb(
'1', uplo, n, kd, a, lda, rwork )
171 IF( anorm.LE.zero )
THEN
178 IF( lsame( uplo,
'U' ) )
THEN
180 kc = max( 1, kd+2-k )
185 t = sdot( klen+1, afac( kc, k ), 1, afac( kc, k ), 1 )
191 $
CALL strmv(
'Upper',
'Transpose',
'Non-unit', klen,
192 $ afac( kd+1, k-klen ), ldafac-1,
201 klen = min( kd, n-k )
207 $
CALL ssyr(
'Lower', klen, one, afac( 2, k ), 1,
208 $ afac( 1, k+1 ), ldafac-1 )
213 CALL sscal( klen+1, t, afac( 1, k ), 1 )
220 IF( lsame( uplo,
'U' ) )
THEN
222 mu = max( 1, kd+2-j )
224 afac( i, j ) = afac( i, j ) - a( i, j )
229 ml = min( kd+1, n-j+1 )
231 afac( i, j ) = afac( i, j ) - a( i, j )
238 resid = slansb(
'I', uplo, n, kd, afac, ldafac, rwork )
240 resid = ( ( resid /
REAL( N ) ) / anorm ) / eps
subroutine strmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
STRMV
subroutine spbt01(UPLO, N, KD, A, LDA, AFAC, LDAFAC, RWORK, RESID)
SPBT01
subroutine sscal(N, SA, SX, INCX)
SSCAL
subroutine ssyr(UPLO, N, ALPHA, X, INCX, A, LDA)
SSYR