297 SUBROUTINE zhegvx( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB,
298 $ vl, vu, il, iu, abstol, m, w, z, ldz, work,
299 $ lwork, rwork, iwork, ifail, info )
307 CHARACTER JOBZ, RANGE, UPLO
308 INTEGER IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
309 DOUBLE PRECISION ABSTOL, VL, VU
312 INTEGER IFAIL( * ), IWORK( * )
313 DOUBLE PRECISION RWORK( * ), W( * )
314 COMPLEX*16 A( lda, * ), B( ldb, * ), WORK( * ),
322 parameter( cone = ( 1.0d+0, 0.0d+0 ) )
325 LOGICAL ALLEIG, INDEIG, LQUERY, UPPER, VALEIG, WANTZ
332 EXTERNAL lsame, ilaenv
344 wantz = lsame( jobz,
'V' )
345 upper = lsame( uplo,
'U' )
346 alleig = lsame( range,
'A' )
347 valeig = lsame( range,
'V' )
348 indeig = lsame( range,
'I' )
349 lquery = ( lwork.EQ.-1 )
352 IF( itype.LT.1 .OR. itype.GT.3 )
THEN
354 ELSE IF( .NOT.( wantz .OR. lsame( jobz,
'N' ) ) )
THEN
356 ELSE IF( .NOT.( alleig .OR. valeig .OR. indeig ) )
THEN
358 ELSE IF( .NOT.( upper .OR. lsame( uplo,
'L' ) ) )
THEN
360 ELSE IF( n.LT.0 )
THEN
362 ELSE IF( lda.LT.max( 1, n ) )
THEN
364 ELSE IF( ldb.LT.max( 1, n ) )
THEN
368 IF( n.GT.0 .AND. vu.LE.vl )
370 ELSE IF( indeig )
THEN
371 IF( il.LT.1 .OR. il.GT.max( 1, n ) )
THEN
373 ELSE IF( iu.LT.min( n, il ) .OR. iu.GT.n )
THEN
379 IF (ldz.LT.1 .OR. (wantz .AND. ldz.LT.n))
THEN
385 nb = ilaenv( 1,
'ZHETRD', uplo, n, -1, -1, -1 )
386 lwkopt = max( 1, ( nb + 1 )*n )
389 IF( lwork.LT.max( 1, 2*n ) .AND. .NOT.lquery )
THEN
395 CALL xerbla(
'ZHEGVX', -info )
397 ELSE IF( lquery )
THEN
410 CALL zpotrf( uplo, n, b, ldb, info )
418 CALL zhegst( itype, uplo, n, a, lda, b, ldb, info )
419 CALL zheevx( jobz, range, uplo, n, a, lda, vl, vu, il, iu, abstol,
420 $ m, w, z, ldz, work, lwork, rwork, iwork, ifail,
429 IF( itype.EQ.1 .OR. itype.EQ.2 )
THEN
440 CALL ztrsm(
'Left', uplo, trans,
'Non-unit', n, m, cone, b,
443 ELSE IF( itype.EQ.3 )
THEN
454 CALL ztrmm(
'Left', uplo, trans,
'Non-unit', n, m, cone, b,
subroutine zpotrf(UPLO, N, A, LDA, INFO)
ZPOTRF VARIANT: right looking block version of the algorithm, calling Level 3 BLAS.
subroutine ztrsm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRSM
subroutine xerbla(SRNAME, INFO)
XERBLA
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)
ZHEGST
subroutine zhegst(ITYPE, UPLO, N, A, LDA, B, LDB, INFO)
ZHEGST
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 ztrmm(SIDE, UPLO, TRANSA, DIAG, M, N, ALPHA, A, LDA, B, LDB)
ZTRMM