1CHPGVX(1)             LAPACK driver routine (version 3.1)            CHPGVX(1)
2
3
4

NAME

6       CHPGVX  -  selected eigenvalues and, optionally, eigenvectors of a com‐
7       plex  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 CHPGVX( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU,
12                          ABSTOL, M, W, Z, LDZ,  WORK,  RWORK,  IWORK,  IFAIL,
13                          INFO )
14
15           CHARACTER      JOBZ, RANGE, UPLO
16
17           INTEGER        IL, INFO, ITYPE, IU, LDZ, M, N
18
19           REAL           ABSTOL, VL, VU
20
21           INTEGER        IFAIL( * ), IWORK( * )
22
23           REAL           RWORK( * ), W( * )
24
25           COMPLEX        AP( * ), BP( * ), WORK( * ), Z( LDZ, * )
26

PURPOSE

28       CHPGVX 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, stored in packed format,  and  B  is  also
32       positive  definite.   Eigenvalues  and  eigenvectors can be selected by
33       specifying either a range of values or  a  range  of  indices  for  the
34       desired eigenvalues.
35
36

ARGUMENTS

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

FURTHER DETAILS

161       Based on contributions by
162          Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
163
164
165
166
167 LAPACK driver routine (version 3.N1o)vember 2006                       CHPGVX(1)
Impressum