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

NAME

6       DSYGVX - computes selected eigenvalues, and optionally, eigenvectors of
7       a  real  generalized  symmetric-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 DSYGVX( ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU,
12                          IL, IU, ABSTOL, M, W, Z, LDZ,  WORK,  LWORK,  IWORK,
13                          IFAIL, INFO )
14
15           CHARACTER      JOBZ, RANGE, UPLO
16
17           INTEGER        IL, INFO, ITYPE, IU, LDA, LDB, LDZ, LWORK, M, N
18
19           DOUBLE         PRECISION ABSTOL, VL, VU
20
21           INTEGER        IFAIL( * ), IWORK( * )
22
23           DOUBLE         PRECISION  A( LDA, * ), B( LDB, * ), W( * ), WORK( *
24                          ), Z( LDZ, * )
25

PURPOSE

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

ARGUMENTS

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

FURTHER DETAILS

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