152 SUBROUTINE zpbstf( UPLO, N, KD, AB, LDAB, INFO )
160 INTEGER INFO, KD, LDAB, N
163 COMPLEX*16 AB( ldab, * )
169 DOUBLE PRECISION ONE, ZERO
170 parameter( one = 1.0d+0, zero = 0.0d+0 )
174 INTEGER J, KLD, KM, M
185 INTRINSIC dble, max, min, sqrt
192 upper = lsame( uplo,
'U' )
193 IF( .NOT.upper .AND. .NOT.lsame( uplo,
'L' ) )
THEN 195 ELSE IF( n.LT.0 )
THEN 197 ELSE IF( kd.LT.0 )
THEN 199 ELSE IF( ldab.LT.kd+1 )
THEN 203 CALL xerbla(
'ZPBSTF', -info )
212 kld = max( 1, ldab-1 )
222 DO 10 j = n, m + 1, -1
226 ajj = dble( ab( kd+1, j ) )
227 IF( ajj.LE.zero )
THEN 238 CALL zdscal( km, one / ajj, ab( kd+1-km, j ), 1 )
239 CALL zher(
'Upper', km, -one, ab( kd+1-km, j ), 1,
240 $ ab( kd+1, j-km ), kld )
249 ajj = dble( ab( kd+1, j ) )
250 IF( ajj.LE.zero )
THEN 262 CALL zdscal( km, one / ajj, ab( kd, j+1 ), kld )
263 CALL zlacgv( km, ab( kd, j+1 ), kld )
264 CALL zher(
'Upper', km, -one, ab( kd, j+1 ), kld,
265 $ ab( kd+1, j+1 ), kld )
266 CALL zlacgv( km, ab( kd, j+1 ), kld )
273 DO 30 j = n, m + 1, -1
277 ajj = dble( ab( 1, j ) )
278 IF( ajj.LE.zero )
THEN 289 CALL zdscal( km, one / ajj, ab( km+1, j-km ), kld )
290 CALL zlacgv( km, ab( km+1, j-km ), kld )
291 CALL zher(
'Lower', km, -one, ab( km+1, j-km ), kld,
292 $ ab( 1, j-km ), kld )
293 CALL zlacgv( km, ab( km+1, j-km ), kld )
302 ajj = dble( ab( 1, j ) )
303 IF( ajj.LE.zero )
THEN 315 CALL zdscal( km, one / ajj, ab( 2, j ), 1 )
316 CALL zher(
'Lower', km, -one, ab( 2, j ), 1,
317 $ ab( 1, j+1 ), kld )
subroutine zher(UPLO, N, ALPHA, X, INCX, A, LDA)
ZHER
subroutine zdscal(N, DA, ZX, INCX)
ZDSCAL
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zpbstf(UPLO, N, KD, AB, LDAB, INFO)
ZPBSTF
subroutine zlacgv(N, X, INCX)
ZLACGV conjugates a complex vector.