117 SUBROUTINE spbt01( UPLO, N, KD, A, LDA, AFAC, LDAFAC, RWORK,
126 INTEGER KD, LDA, LDAFAC, N
130 REAL A( LDA, * ), AFAC( LDAFAC, * ), RWORK( * )
138 parameter( zero = 0.0e+0, one = 1.0e+0 )
141 INTEGER I, J, K, KC, KLEN, ML, MU
146 REAL SDOT, SLAMCH, SLANSB
147 EXTERNAL lsame, sdot, slamch, slansb
153 INTRINSIC max, min, real
166 eps = slamch(
'Epsilon' )
167 anorm = slansb(
'1', uplo, n, kd, a, lda, rwork )
168 IF( anorm.LE.zero )
THEN
175 IF( lsame( uplo,
'U' ) )
THEN
177 kc = max( 1, kd+2-k )
182 t = sdot( klen+1, afac( kc, k ), 1, afac( kc, k ), 1 )
188 $
CALL strmv(
'Upper',
'Transpose',
'Non-unit', klen,
189 $ afac( kd+1, k-klen ), ldafac-1,
198 klen = min( kd, n-k )
204 $
CALL ssyr(
'Lower', klen, one, afac( 2, k ), 1,
205 $ afac( 1, k+1 ), ldafac-1 )
210 CALL sscal( klen+1, t, afac( 1, k ), 1 )
217 IF( lsame( uplo,
'U' ) )
THEN
219 mu = max( 1, kd+2-j )
221 afac( i, j ) = afac( i, j ) - a( i, j )
226 ml = min( kd+1, n-j+1 )
228 afac( i, j ) = afac( i, j ) - a( i, j )
235 resid = slansb(
'I', uplo, n, kd, afac, ldafac, rwork )
237 resid = ( ( resid / real( n ) ) / anorm ) / eps
subroutine ssyr(uplo, n, alpha, x, incx, a, lda)
SSYR
subroutine sscal(n, sa, sx, incx)
SSCAL
subroutine strmv(uplo, trans, diag, n, a, lda, x, incx)
STRMV
subroutine spbt01(uplo, n, kd, a, lda, afac, ldafac, rwork, resid)
SPBT01