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

NAME

6       SSPGVX  -  selected eigenvalues, and optionally, eigenvectors of a real
7       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
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       AP      (input/output) REAL array, dimension (N*(N+1)/2)
59               On entry, the upper or lower triangle of the  symmetric  matrix
60               A,  packed  columnwise in a linear array.  The j-th column of A
61               is stored in the array AP as follows: if UPLO  =  'U',  AP(i  +
62               (j-1)*j/2)  =  A(i,j)  for  1<=i<=j;  if  UPLO  =  'L',  AP(i +
63               (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
64
65               On exit, the contents of AP are destroyed.
66
67       BP      (input/output) REAL array, dimension (N*(N+1)/2)
68               On entry, the upper or lower triangle of the  symmetric  matrix
69               B,  packed  columnwise in a linear array.  The j-th column of B
70               is stored in the array BP as follows: if UPLO  =  'U',  BP(i  +
71               (j-1)*j/2)  =  B(i,j)  for  1<=i<=j;  if  UPLO  =  'L',  BP(i +
72               (j-1)*(2*n-j)/2) = B(i,j) for j<=i<=n.
73
74               On exit, the triangular factor U or L from the Cholesky factor‐
75               ization B = U**T*U or B = L*L**T, in the same storage format as
76               B.
77
78       VL      (input) REAL
79               VU      (input) REAL If RANGE='V', the lower and  upper  bounds
80               of  the  interval to be searched for eigenvalues. VL < VU.  Not
81               referenced if RANGE = 'A' or 'I'.
82
83       IL      (input) INTEGER
84               IU      (input) INTEGER If RANGE='I', the indices (in ascending
85               order)  of the smallest and largest eigenvalues to be returned.
86               1 <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.   Not
87               referenced if RANGE = 'A' or 'V'.
88
89       ABSTOL  (input) REAL
90               The  absolute error tolerance for the eigenvalues.  An approxi‐
91               mate eigenvalue is accepted as converged when it is  determined
92               to lie in an interval [a,b] of width less than or equal to
93
94               ABSTOL + EPS *   max( |a|,|b| ) ,
95
96               where  EPS is the machine precision.  If ABSTOL is less than or
97               equal to zero, then  EPS*|T|  will be used in its place,  where
98               |T|  is the 1-norm of the tridiagonal matrix obtained by reduc‐
99               ing A to tridiagonal form.
100
101               Eigenvalues will be computed most accurately when ABSTOL is set
102               to  twice  the underflow threshold 2*SLAMCH('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*SLAMCH('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) REAL array, dimension (N)
111               On normal exit, the first M elements contain the  selected  ei‐
112               genvalues in ascending order.
113
114       Z       (output) REAL 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.
122
123               If an eigenvector fails to converge, then that column of Z con‐
124               tains the latest approximation  to  the  eigenvector,  and  the
125               index  of the eigenvector is returned in IFAIL.  Note: the user
126               must ensure that at least max(1,M) columns are supplied in  the
127               array  Z;  if RANGE = 'V', the exact value of M is not known in
128               advance and an upper bound must be 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) REAL array, dimension (8*N)
135
136       IWORK   (workspace) INTEGER array, dimension (5*N)
137
138       IFAIL   (output) INTEGER array, dimension (N)
139               If  JOBZ = 'V', then if INFO = 0, the first M elements of IFAIL
140               are zero.  If INFO > 0, then IFAIL contains the indices of  the
141               eigenvectors  that  failed  to  converge.   If JOBZ = 'N', then
142               IFAIL is not referenced.
143
144       INFO    (output) INTEGER
145               = 0:  successful exit
146               < 0:  if INFO = -i, the i-th argument had an illegal value
147               > 0:  SPPTRF or SSPEVX returned an error code:
148               <= N:  if INFO = i, SSPEVX failed to converge;  i  eigenvectors
149               failed  to  converge.  Their indices are stored in array IFAIL.
150               > N:   if INFO = N + i, for 1 <= i <= N, then the leading minor
151               of order i of B is not positive definite.  The factorization of
152               B could not be completed and  no  eigenvalues  or  eigenvectors
153               were computed.
154

FURTHER DETAILS

156       Based on contributions by
157          Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
158
159
160
161
162 LAPACK driver routine (version 3.N1o)vember 2006                       SSPGVX(1)
Impressum