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 dsterf(N, D, E, INFO)
DSTERF
subroutine zhbgv(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, RWORK, INFO)
ZHBGV
subroutine zhbgst(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, RWORK, INFO)
ZHBGST
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine zsteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
ZSTEQR
subroutine zpbstf(UPLO, N, KD, AB, LDAB, INFO)
ZPBSTF
subroutine zhbtrd(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO)
ZHBTRD