177 SUBROUTINE dsbgv( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z,
187 INTEGER info, ka, kb, ldab, ldbb, ldz, n
190 DOUBLE PRECISION ab( ldab, * ), bb( ldbb, * ), w( * ),
191 $ work( * ), z( ldz, * )
199 INTEGER iinfo, inde, indwrk
212 wantz =
lsame( jobz,
'V' )
213 upper =
lsame( uplo,
'U' )
216 IF( .NOT.( wantz .OR.
lsame( jobz,
'N' ) ) )
THEN
218 ELSE IF( .NOT.( upper .OR.
lsame( uplo,
'L' ) ) )
THEN
220 ELSE IF( n.LT.0 )
THEN
222 ELSE IF( ka.LT.0 )
THEN
224 ELSE IF( kb.LT.0 .OR. kb.GT.ka )
THEN
226 ELSE IF( ldab.LT.ka+1 )
THEN
228 ELSE IF( ldbb.LT.kb+1 )
THEN
230 ELSE IF( ldz.LT.1 .OR. ( wantz .AND. ldz.LT.n ) )
THEN
234 CALL
xerbla(
'DSBGV ', -info )
245 CALL
dpbstf( uplo, n, kb, bb, ldbb, info )
255 CALL
dsbgst( jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, z, ldz,
256 $ work( indwrk ), iinfo )
265 CALL
dsbtrd( vect, uplo, n, ka, ab, ldab, w, work( inde ), z, ldz,
266 $ work( indwrk ), iinfo )
270 IF( .NOT.wantz )
THEN
271 CALL
dsterf( n, w, work( inde ), info )
273 CALL
dsteqr( jobz, n, w, work( inde ), z, ldz, work( indwrk ),
subroutine dsteqr(COMPZ, N, D, E, Z, LDZ, WORK, INFO)
DSTEQR
subroutine dpbstf(UPLO, N, KD, AB, LDAB, INFO)
DPBSTF
subroutine dsterf(N, D, E, INFO)
DSTERF
subroutine dsbtrd(VECT, UPLO, N, KD, AB, LDAB, D, E, Q, LDQ, WORK, INFO)
DSBTRD
subroutine xerbla(SRNAME, INFO)
XERBLA
logical function lsame(CA, CB)
LSAME
subroutine dsbgst(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX, WORK, INFO)
DSBGST
subroutine dsbgv(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, INFO)
DSBGST