1CHEGVX(1)             LAPACK driver routine (version 3.2)            CHEGVX(1)
2
3
4

NAME

6       CHEGVX - computes selected eigenvalues, and optionally, eigenvectors of
7       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

SYNOPSIS

11       SUBROUTINE CHEGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU,
12                          IL, IU, ABSTOL, M, W, Z, LDZ,  WORK,  LWORK,  RWORK,
13                          IWORK, IFAIL, INFO )
14
15           CHARACTER      JOBZ, RANGE, UPLO
16
17           INTEGER        IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
18
19           REAL           ABSTOL, VL, VU
20
21           INTEGER        IFAIL( * ), IWORK( * )
22
23           REAL           RWORK( * ), W( * )
24
25           COMPLEX        A( LDA, * ), B( LDB, * ), WORK( * ), Z( LDZ, * )
26

PURPOSE

28       CHEGVX computes selected eigenvalues, and optionally, eigenvectors of a
29       complex  generalized  Hermitian-definite  eigenproblem,  of  the   form
30       A*x=(lambda)*B*x,  A*Bx=(lambda)*x,  or B*A*x=(lambda)*x.  Here A and B
31       are assumed to be Hermitian and B is also positive definite.  Eigenval‐
32       ues  and  eigenvectors  can be selected by specifying either a range of
33       values or a range of indices for the desired eigenvalues.
34

ARGUMENTS

36       ITYPE   (input) INTEGER
37               Specifies the problem type to be solved:
38               = 1:  A*x = (lambda)*B*x
39               = 2:  A*B*x = (lambda)*x
40               = 3:  B*A*x = (lambda)*x
41
42       JOBZ    (input) CHARACTER*1
43               = 'N':  Compute eigenvalues only;
44               = 'V':  Compute eigenvalues and eigenvectors.
45
46       RANGE   (input) CHARACTER*1
47               = 'A': all eigenvalues will be found.
48               = 'V': all eigenvalues in the half-open interval  (VL,VU]  will
49               be  found.   = 'I': the IL-th through IU-th eigenvalues will be
50               found.
51
52       UPLO    (input) CHARACTER*1
53               = 'U':  Upper triangles of A and B are stored;
54               = 'L':  Lower triangles of A and B are stored.
55
56       N       (input) INTEGER
57               The order of the matrices A and B.  N >= 0.
58
59       A       (input/output) COMPLEX array, dimension (LDA, N)
60               On entry, the Hermitian matrix A.  If UPLO = 'U',  the  leading
61               N-by-N upper triangular part of A contains the upper triangular
62               part of the matrix A.  If UPLO = 'L', the leading N-by-N  lower
63               triangular  part of A contains the lower triangular part of the
64               matrix A.  On exit,  the lower triangle (if  UPLO='L')  or  the
65               upper  triangle  (if UPLO='U') of A, including the diagonal, is
66               destroyed.
67
68       LDA     (input) INTEGER
69               The leading dimension of the array A.  LDA >= max(1,N).
70
71       B       (input/output) COMPLEX array, dimension (LDB, N)
72               On entry, the Hermitian matrix B.  If UPLO = 'U',  the  leading
73               N-by-N upper triangular part of B contains the upper triangular
74               part of the matrix B.  If UPLO = 'L', the leading N-by-N  lower
75               triangular  part of B contains the lower triangular part of the
76               matrix B.  On exit, if INFO <= N, the part of B containing  the
77               matrix  is overwritten by the triangular factor U or L from the
78               Cholesky factorization B = U**H*U or B = L*L**H.
79
80       LDB     (input) INTEGER
81               The leading dimension of the array B.  LDB >= max(1,N).
82
83       VL      (input) REAL
84               VU      (input) REAL If RANGE='V', the lower and  upper  bounds
85               of  the  interval to be searched for eigenvalues. VL < VU.  Not
86               referenced if RANGE = 'A' or 'I'.
87
88       IL      (input) INTEGER
89               IU      (input) INTEGER If RANGE='I', the indices (in ascending
90               order)  of the smallest and largest eigenvalues to be returned.
91               1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.   Not
92               referenced if RANGE = 'A' or 'V'.
93
94       ABSTOL  (input) REAL
95               The  absolute error tolerance for the eigenvalues.  An approxi‐
96               mate eigenvalue is accepted as converged when it is  determined
97               to  lie  in  an  interval  [a,b] of width less than or equal to
98               ABSTOL + EPS *   max( |a|,|b| ) , where EPS is the machine pre‐
99               cision.  If ABSTOL is less than or equal to zero, then  EPS*|T|
100               will be used in its place, where  |T|  is  the  1-norm  of  the
101               tridiagonal  matrix obtained by reducing A to tridiagonal form.
102               Eigenvalues will be computed most accurately when ABSTOL is set
103               to  twice  the underflow threshold 2*SLAMCH('S'), not zero.  If
104               this routine returns with INFO>0, indicating that  some  eigen‐
105               vectors did not converge, try setting ABSTOL to 2*SLAMCH('S').
106
107       M       (output) INTEGER
108               The  total number of eigenvalues found.  0 <= M <= N.  If RANGE
109               = 'A', M = N, and if RANGE = 'I', M = IU-IL+1.
110
111       W       (output) REAL array, dimension (N)
112               The first  M  elements  contain  the  selected  eigenvalues  in
113               ascending order.
114
115       Z       (output) COMPLEX array, dimension (LDZ, max(1,M))
116               If  JOBZ  = 'N', then Z is not referenced.  If JOBZ = 'V', then
117               if INFO = 0, the first M columns of Z contain  the  orthonormal
118               eigenvectors  of the matrix A corresponding to the selected ei‐
119               genvalues, with the i-th column of Z  holding  the  eigenvector
120               associated  with W(i).  The eigenvectors are normalized as fol‐
121               lows: if ITYPE  =  1  or  2,  Z**T*B*Z  =  I;  if  ITYPE  =  3,
122               Z**T*inv(B)*Z  =  I.  If an eigenvector fails to converge, then
123               that column of Z  contains  the  latest  approximation  to  the
124               eigenvector,  and  the  index of the eigenvector is returned in
125               IFAIL.  Note: the user must ensure that at least max(1,M)  col‐
126               umns  are  supplied  in  the array Z; if RANGE = 'V', the exact
127               value of M is not known in advance and an upper bound  must  be
128               used.
129
130       LDZ     (input) INTEGER
131               The  leading dimension of the array Z.  LDZ >= 1, and if JOBZ =
132               'V', LDZ >= max(1,N).
133
134       WORK    (workspace/output) COMPLEX array, dimension (MAX(1,LWORK))
135               On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
136
137       LWORK   (input) INTEGER
138               The length of the array WORK.  LWORK >= max(1,2*N).  For  opti‐
139               mal  efficiency,  LWORK  >= (NB+1)*N, where NB is the blocksize
140               for CHETRD returned by ILAENV.  If LWORK = -1, then a workspace
141               query  is assumed; the routine only calculates the optimal size
142               of the WORK array, returns this value as the first entry of the
143               WORK  array, and no error message related to LWORK is issued by
144               XERBLA.
145
146       RWORK   (workspace) REAL array, dimension (7*N)
147
148       IWORK   (workspace) INTEGER array, dimension (5*N)
149
150       IFAIL   (output) INTEGER array, dimension (N)
151               If JOBZ = 'V', then if INFO = 0, the first M elements of  IFAIL
152               are  zero.  If INFO > 0, then IFAIL contains the indices of the
153               eigenvectors that failed to converge.   If  JOBZ  =  'N',  then
154               IFAIL is not referenced.
155
156       INFO    (output) INTEGER
157               = 0:  successful exit
158               < 0:  if INFO = -i, the i-th argument had an illegal value
159               > 0:  CPOTRF or CHEEVX returned an error code:
160               <=  N:   if INFO = i, CHEEVX failed to converge; i eigenvectors
161               failed to converge.  Their indices are stored in  array  IFAIL.
162               > N:   if INFO = N + i, for 1 <= i <= N, then the leading minor
163               of order i of B is not positive definite.  The factorization of
164               B  could  not  be  completed and no eigenvalues or eigenvectors
165               were computed.
166

FURTHER DETAILS

168       Based on contributions by
169          Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
170
171
172
173 LAPACK driver routine (version 3.N2o)vember 2008                       CHEGVX(1)
Impressum