120 SUBROUTINE zpbt01( UPLO, N, KD, A, LDA, AFAC, LDAFAC, RWORK,
130 INTEGER KD, LDA, LDAFAC, N
131 DOUBLE PRECISION RESID
134 DOUBLE PRECISION RWORK( * )
135 COMPLEX*16 A( lda, * ), AFAC( ldafac, * )
142 DOUBLE PRECISION ZERO, ONE
143 parameter ( zero = 0.0d+0, one = 1.0d+0 )
146 INTEGER I, J, K, KC, KLEN, ML, MU
147 DOUBLE PRECISION AKK, ANORM, EPS
151 DOUBLE PRECISION DLAMCH, ZLANHB
153 EXTERNAL lsame, dlamch, zlanhb, zdotc
159 INTRINSIC dble, dimag, max, min
172 eps = dlamch(
'Epsilon' )
173 anorm = zlanhb(
'1', uplo, n, kd, a, lda, rwork )
174 IF( anorm.LE.zero )
THEN
182 IF( lsame( uplo,
'U' ) )
THEN
184 IF( dimag( afac( kd+1, j ) ).NE.zero )
THEN
191 IF( dimag( afac( 1, j ) ).NE.zero )
THEN
200 IF( lsame( uplo,
'U' ) )
THEN
202 kc = max( 1, kd+2-k )
207 akk = zdotc( klen+1, afac( kc, k ), 1, afac( kc, k ), 1 )
208 afac( kd+1, k ) = akk
213 $
CALL ztrmv(
'Upper',
'Conjugate',
'Non-unit', klen,
214 $ afac( kd+1, k-klen ), ldafac-1,
223 klen = min( kd, n-k )
229 $
CALL zher(
'Lower', klen, one, afac( 2, k ), 1,
230 $ afac( 1, k+1 ), ldafac-1 )
235 CALL zdscal( klen+1, akk, afac( 1, k ), 1 )
242 IF( lsame( uplo,
'U' ) )
THEN
244 mu = max( 1, kd+2-j )
246 afac( i, j ) = afac( i, j ) - a( i, j )
251 ml = min( kd+1, n-j+1 )
253 afac( i, j ) = afac( i, j ) - a( i, j )
260 resid = zlanhb(
'1', uplo, n, kd, afac, ldafac, rwork )
262 resid = ( ( resid / dble( n ) ) / anorm ) / eps
subroutine zpbt01(UPLO, N, KD, A, LDA, AFAC, LDAFAC, RWORK, RESID)
ZPBT01
subroutine zher(UPLO, N, ALPHA, X, INCX, A, LDA)
ZHER
subroutine ztrmv(UPLO, TRANS, DIAG, N, A, LDA, X, INCX)
ZTRMV
subroutine zdscal(N, DA, ZX, INCX)
ZDSCAL