302 SUBROUTINE zhegvx( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB,
303 $ VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK,
304 $ LWORK, RWORK, IWORK, IFAIL, INFO )
311 CHARACTER JOBZ, RANGE, UPLO
312 INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
313 DOUBLE PRECISION ABSTOL, VL, VU
316 INTEGER IFAIL( * ), IWORK( * )
317 DOUBLE PRECISION RWORK( * ), W( * )
318 COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * ),
326 PARAMETER ( CONE = ( 1.0d+0, 0.0d+0 ) )
329 LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ
336 EXTERNAL lsame, ilaenv
349 wantz = lsame( jobz,
'V' )
350 upper = lsame( uplo,
'U' )
351 alleig = lsame( range,
'A' )
352 valeig = lsame( range,
'V' )
353 indeig = lsame( range,
'I' )
354 lquery = ( lwork.EQ.-1 )
357 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
359 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
361 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
363 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
365 ELSE IF( n.LT.0 )
THEN
367 ELSE IF( lda.LT.max( 1, n ) )
THEN
369 ELSE IF( ldb.LT.max( 1, n ) )
THEN
373 IF( n.GT.0 .AND. vu.LE.vl )
375 ELSE IF( indeig )
THEN
376 IF( il.LT.1 .OR. il.GT.max( 1, n ) )
THEN
378 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
384 IF (ldz.LT.1 .OR. (wantz .AND. ldz.LT.n))
THEN
390 nb = ilaenv( 1,
'ZHETRD', uplo, n, -1, -1, -1 )
391 lwkopt = max( 1, ( nb + 1 )*n )
394 IF( lwork.LT.max( 1, 2*n ) .AND. .NOT.lquery )
THEN
400 CALL xerbla(
'ZHEGVX', -info )
402 ELSE IF( lquery )
THEN
415 CALL zpotrf( uplo, n, b, ldb, info )
423 CALL zhegst( itype, uplo, n, a, lda, b, ldb, info )
424 CALL zheevx( jobz, range, uplo, n, a, lda, vl, vu, il, iu,
426 $ m, w, z, ldz, work, lwork, rwork, iwork, ifail,
435 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
446 CALL ztrsm(
'Left', uplo, trans,
'Non-unit', n, m, cone,
450 ELSE IF( itype.EQ.3 )
THEN
461 CALL ztrmm(
'Left', uplo, trans,
'Non-unit', n, m, cone,
subroutine zheevx(jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, info)
ZHEEVX computes the eigenvalues and, optionally, the left and/or right eigenvectors for HE matrices
subroutine zhegvx(itype, jobz, range, uplo, n, a, lda, b, ldb, vl, vu, il, iu, abstol, m, w, z, ldz, work, lwork, rwork, iwork, ifail, info)
ZHEGVX
subroutine ztrmm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRMM
subroutine ztrsm(side, uplo, transa, diag, m, n, alpha, a, lda, b, ldb)
ZTRSM