149 SUBROUTINE dpbstf( UPLO, N, KD, AB, LDAB, INFO )
157 INTEGER INFO, KD, LDAB, N
160 DOUBLE PRECISION AB( LDAB, * )
166 DOUBLE PRECISION ONE, ZERO
167 parameter( one = 1.0d+0, zero = 0.0d+0 )
171 INTEGER J, KLD, KM, M
182 INTRINSIC max, min, sqrt
189 upper = lsame( uplo,
'U' )
190 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN
192 ELSE IF( n.LT.0 )
THEN
194 ELSE IF( kd.LT.0 )
THEN
196 ELSE IF( ldab.LT.kd+1 )
THEN
200 CALL xerbla(
'DPBSTF', -info )
209 kld = max( 1, ldab-1 )
219 DO 10 j = n, m + 1, -1
233 CALL dscal( km, one / ajj, ab( kd+1-km, j ), 1 )
234 CALL dsyr(
'Upper', km, -one, ab( kd+1-km, j ), 1,
235 $ ab( kd+1, j-km ), kld )
255 CALL dscal( km, one / ajj, ab( kd, j+1 ), kld )
256 CALL dsyr(
'Upper', km, -one, ab( kd, j+1 ), kld,
257 $ ab( kd+1, j+1 ), kld )
264 DO 30 j = n, m + 1, -1
278 CALL dscal( km, one / ajj, ab( km+1, j-km ), kld )
279 CALL dsyr(
'Lower', km, -one, ab( km+1, j-km ), kld,
280 $ ab( 1, j-km ), kld )
300 CALL dscal( km, one / ajj, ab( 2, j ), 1 )
301 CALL dsyr(
'Lower', km, -one, ab( 2, j ), 1,
302 $ ab( 1, j+1 ), kld )
subroutine dsyr(uplo, n, alpha, x, incx, a, lda)
DSYR