183 SUBROUTINE zhbgv( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z,
184 $ ldz, work, rwork, info )
193 INTEGER info, ka, kb, ldab, ldbb, ldz, n
196 DOUBLE PRECISION rwork( * ), w( * )
197 COMPLEX*16 ab( ldab, * ), bb( ldbb, * ), work( * ),
206 INTEGER iinfo, inde, indwrk
219 wantz =
lsame( jobz,
'V' )
220 upper =
lsame( uplo,
'U' )
223 IF( .NOT.( wantz .OR.
lsame( jobz,
'N' ) ) )
THEN
225 ELSE IF( .NOT.( upper .OR.
lsame( uplo,
'L' ) ) )
THEN
227 ELSE IF( n.LT.0 )
THEN
229 ELSE IF( ka.LT.0 )
THEN
231 ELSE IF( kb.LT.0 .OR. kb.GT.ka )
THEN
233 ELSE IF( ldab.LT.ka+1 )
THEN
235 ELSE IF( ldbb.LT.kb+1 )
THEN
237 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
241 CALL
xerbla(
'ZHBGV ', -info )
252 CALL
zpbstf( uplo, n, kb, bb, ldbb, info )
262 CALL
zhbgst( jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, z, ldz,
263 $ work, rwork( indwrk ), iinfo )
272 CALL
zhbtrd( vect, uplo, n, ka, ab, ldab, w, rwork( inde ), z,
277 IF( .NOT.wantz )
THEN
278 CALL
dsterf( n, w, rwork( inde ), info )
280 CALL
zsteqr( jobz, n, w, rwork( inde ), z, ldz,
281 $ rwork( indwrk ), info )
subroutine zhbgst(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, RWORK, INFO)
ZHBGST
subroutine dsterf(N, D, E, INFO)
DSTERF
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zhbtrd(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO)
ZHBTRD
logical function lsame(CA, CB)
LSAME
subroutine zsteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
ZSTEQR
subroutine zpbstf(UPLO, N, KD, AB, LDAB, INFO)
ZPBSTF
subroutine zhbgv(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, RWORK, INFO)
ZHBGST