1ZHEGV(1) LAPACK driver routine (version 3.2) ZHEGV(1)
2
3
4
6 ZHEGV - computes all the eigenvalues, and optionally, the eigenvectors
7 of a complex generalized Hermitian-definite eigenproblem, of the form
8 A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x
9
11 SUBROUTINE ZHEGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK,
12 RWORK, INFO )
13
14 CHARACTER JOBZ, UPLO
15
16 INTEGER INFO, ITYPE, LDA, LDB, LWORK, N
17
18 DOUBLE PRECISION RWORK( * ), W( * )
19
20 COMPLEX*16 A( LDA, * ), B( LDB, * ), WORK( * )
21
23 ZHEGV computes all the eigenvalues, and optionally, the eigenvectors of
24 a complex generalized Hermitian-definite eigenproblem, of the form
25 A*x=(lambda)*B*x, A*Bx=(lambda)*x, or B*A*x=(lambda)*x. Here A and B
26 are assumed to be Hermitian and B is also
27 positive definite.
28
30 ITYPE (input) INTEGER
31 Specifies the problem type to be solved:
32 = 1: A*x = (lambda)*B*x
33 = 2: A*B*x = (lambda)*x
34 = 3: B*A*x = (lambda)*x
35
36 JOBZ (input) CHARACTER*1
37 = 'N': Compute eigenvalues only;
38 = 'V': Compute eigenvalues and eigenvectors.
39
40 UPLO (input) CHARACTER*1
41 = 'U': Upper triangles of A and B are stored;
42 = 'L': Lower triangles of A and B are stored.
43
44 N (input) INTEGER
45 The order of the matrices A and B. N >= 0.
46
47 A (input/output) COMPLEX*16 array, dimension (LDA, N)
48 On entry, the Hermitian matrix A. If UPLO = 'U', the leading
49 N-by-N upper triangular part of A contains the upper triangular
50 part of the matrix A. If UPLO = 'L', the leading N-by-N lower
51 triangular part of A contains the lower triangular part of the
52 matrix A. On exit, if JOBZ = 'V', then if INFO = 0, A contains
53 the matrix Z of eigenvectors. The eigenvectors are normalized
54 as follows: if ITYPE = 1 or 2, Z**H*B*Z = I; if ITYPE = 3,
55 Z**H*inv(B)*Z = I. If JOBZ = 'N', then on exit the upper tri‐
56 angle (if UPLO='U') or the lower triangle (if UPLO='L') of A,
57 including the diagonal, is destroyed.
58
59 LDA (input) INTEGER
60 The leading dimension of the array A. LDA >= max(1,N).
61
62 B (input/output) COMPLEX*16 array, dimension (LDB, N)
63 On entry, the Hermitian positive definite matrix B. If UPLO =
64 'U', the leading N-by-N upper triangular part of B contains the
65 upper triangular part of the matrix B. If UPLO = 'L', the
66 leading N-by-N lower triangular part of B contains the lower
67 triangular part of the matrix B. On exit, if INFO <= N, the
68 part of B containing the matrix is overwritten by the triangu‐
69 lar factor U or L from the Cholesky factorization B = U**H*U or
70 B = L*L**H.
71
72 LDB (input) INTEGER
73 The leading dimension of the array B. LDB >= max(1,N).
74
75 W (output) DOUBLE PRECISION array, dimension (N)
76 If INFO = 0, the eigenvalues in ascending order.
77
78 WORK (workspace/output) COMPLEX*16 array, dimension (MAX(1,LWORK))
79 On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
80
81 LWORK (input) INTEGER
82 The length of the array WORK. LWORK >= max(1,2*N-1). For
83 optimal efficiency, LWORK >= (NB+1)*N, where NB is the block‐
84 size for ZHETRD returned by ILAENV. If LWORK = -1, then a
85 workspace query is assumed; the routine only calculates the
86 optimal size of the WORK array, returns this value as the first
87 entry of the WORK array, and no error message related to LWORK
88 is issued by XERBLA.
89
90 RWORK (workspace) DOUBLE PRECISION array, dimension (max(1, 3*N-2))
91
92 INFO (output) INTEGER
93 = 0: successful exit
94 < 0: if INFO = -i, the i-th argument had an illegal value
95 > 0: ZPOTRF or ZHEEV returned an error code:
96 <= N: if INFO = i, ZHEEV failed to converge; i off-diagonal
97 elements of an intermediate tridiagonal form did not converge
98 to zero; > N: if INFO = N + i, for 1 <= i <= N, then the
99 leading minor of order i of B is not positive definite. The
100 factorization of B could not be completed and no eigenvalues or
101 eigenvectors were computed.
102
103
104
105 LAPACK driver routine (version 3.N2o)vember 2008 ZHEGV(1)