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

NAME

6       SSPGVX - 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 SSPGVX( ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU,
12                          ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO )
13
14           CHARACTER      JOBZ, RANGE, UPLO
15
16           INTEGER        IL, INFO, ITYPE, IU, LDZ, M, N
17
18           REAL           ABSTOL, VL, VU
19
20           INTEGER        IFAIL( * ), IWORK( * )
21
22           REAL           AP( * ), BP( * ), W( * ), WORK( * ), Z( LDZ, * )
23

PURPOSE

25       SSPGVX computes selected eigenvalues, and optionally, eigenvectors of a
26       real   generalized   symmetric-definite   eigenproblem,   of  the  form
27       A*x=(lambda)*B*x,  A*Bx=(lambda)*x,  or B*A*x=(lambda)*x.  Here A and B
28       are  assumed  to  be symmetric, stored in packed storage, and B is also
29       positive definite.  Eigenvalues and eigenvectors  can  be  selected  by
30       specifying  either  a  range  of  values  or a range of indices for the
31       desired eigenvalues.
32

ARGUMENTS

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

FURTHER DETAILS

147       Based on contributions by
148          Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
149
150
151
152 LAPACK driver routine (version 3.N2o)vember 2008                       SSPGVX(1)
Impressum