249 SUBROUTINE chbgvd( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W,
250 $ Z, LDZ, WORK, LWORK, RWORK, LRWORK, IWORK,
259 INTEGER INFO, KA, KB, LDAB, LDBB, LDZ, LIWORK, LRWORK,
264 REAL RWORK( * ), W( * )
265 COMPLEX AB( LDAB, * ), BB( LDBB, * ), WORK( * ),
273 PARAMETER ( CONE = ( 1.0e+0, 0.0e+0 ),
274 $ czero = ( 0.0e+0, 0.0e+0 ) )
277 LOGICAL LQUERY, UPPER, WANTZ
279 INTEGER IINFO, INDE, INDWK2, INDWRK, LIWMIN, LLRWK,
280 $ llwk2, lrwmin, lwmin
294 wantz = lsame( jobz, 'v
' )
295 UPPER = LSAME( UPLO, 'u
' )
296.EQ..OR..EQ..OR..EQ.
LQUERY = ( LWORK-1 LRWORK-1 LIWORK-1 )
303 ELSE IF( WANTZ ) THEN
305 LRWMIN = 1 + 5*N + 2*N**2
312.NOT..OR.
IF( ( WANTZ LSAME( JOBZ, 'n
' ) ) ) THEN
314.NOT..OR.
ELSE IF( ( UPPER LSAME( UPLO, 'l
' ) ) ) THEN
316.LT.
ELSE IF( N0 ) THEN
318.LT.
ELSE IF( KA0 ) THEN
320.LT..OR..GT.
ELSE IF( KB0 KBKA ) THEN
322.LT.
ELSE IF( LDABKA+1 ) THEN
324.LT.
ELSE IF( LDBBKB+1 ) THEN
326.LT..OR..AND..LT.
ELSE IF( LDZ1 ( WANTZ LDZN ) ) THEN
335.LT..AND..NOT.
IF( LWORKLWMIN LQUERY ) THEN
337.LT..AND..NOT.
ELSE IF( LRWORKLRWMIN LQUERY ) THEN
339.LT..AND..NOT.
ELSE IF( LIWORKLIWMIN LQUERY ) THEN
345 CALL XERBLA( 'chbgvd', -INFO )
347 ELSE IF( LQUERY ) THEN
358 CALL CPBSTF( UPLO, N, KB, BB, LDBB, INFO )
369 LLWK2 = LWORK - INDWK2 + 2
370 LLRWK = LRWORK - INDWRK + 2
371 CALL CHBGST( JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Z, LDZ,
372 $ WORK, RWORK, IINFO )
381 CALL CHBTRD( VECT, UPLO, N, KA, AB, LDAB, W, RWORK( INDE ), Z,
386.NOT.
IF( WANTZ ) THEN
387 CALL SSTERF( N, W, RWORK( INDE ), INFO )
389 CALL CSTEDC( 'i
', N, W, RWORK( INDE ), WORK, N, WORK( INDWK2 ),
390 $ LLWK2, RWORK( INDWRK ), LLRWK, IWORK, LIWORK,
392 CALL CGEMM( 'n
', 'n
', N, N, N, CONE, Z, LDZ, WORK, N, CZERO,
393 $ WORK( INDWK2 ), N )
394 CALL CLACPY( 'a', n, n, work( indwk2 ), n, z, ldz )
subroutine ssterf(n, d, e, info)
SSTERF
subroutine xerbla(srname, info)
XERBLA
subroutine clacpy(uplo, m, n, a, lda, b, ldb)
CLACPY copies all or part of one two-dimensional array to another.
subroutine chbgst(vect, uplo, n, ka, kb, ab, ldab, bb, ldbb, x, ldx, work, rwork, info)
CHBGST
subroutine cpbstf(uplo, n, kd, ab, ldab, info)
CPBSTF
subroutine chbtrd(vect, uplo, n, kd, ab, ldab, d, e, q, ldq, work, info)
CHBTRD
subroutine cstedc(compz, n, d, e, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)
CSTEDC
subroutine chbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, work, lwork, rwork, lrwork, iwork, liwork, info)
CHBGVD
subroutine cgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc)
CGEMM