177 SUBROUTINE ssbgv( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z,
187 INTEGER info, ka, kb, ldab, ldbb, ldz, n
190 REAL 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(
'SSBGV ', -info )
245 CALL
spbstf( uplo, n, kb, bb, ldbb, info )
255 CALL
ssbgst( jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, z, ldz,
256 $ work( indwrk ), iinfo )
265 CALL
ssbtrd( vect, uplo, n, ka, ab, ldab, w, work( inde ), z, ldz,
266 $ work( indwrk ), iinfo )
270 IF( .NOT.wantz )
THEN
271 CALL
ssterf( n, w, work( inde ), info )
273 CALL
ssteqr( jobz, n, w, work( inde ), z, ldz, work( indwrk ),