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

NAME

6       SSPGVD  -  all  the  eigenvalues, and optionally, the eigenvectors of a
7       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 SSPGVD( ITYPE,  JOBZ,  UPLO,  N,  AP,  BP,  W, Z, LDZ, WORK,
12                          LWORK, IWORK, LIWORK, INFO )
13
14           CHARACTER      JOBZ, UPLO
15
16           INTEGER        INFO, ITYPE, LDZ, LIWORK, LWORK, N
17
18           INTEGER        IWORK( * )
19
20           REAL           AP( * ), BP( * ), W( * ), WORK( * ), Z( LDZ, * )
21

PURPOSE

23       SSPGVD computes all the eigenvalues, and optionally,  the  eigenvectors
24       of  a  real  generalized  symmetric-definite  eigenproblem, of the form
25       A*x=(lambda)*B*x,  A*Bx=(lambda)*x,  or B*A*x=(lambda)*x.  Here A and B
26       are  assumed  to  be  symmetric, stored in packed format, and B is also
27       positive definite.
28       If eigenvectors are desired, it uses a divide and conquer algorithm.
29
30       The divide and conquer algorithm  makes  very  mild  assumptions  about
31       floating  point arithmetic. It will work on machines with a guard digit
32       in add/subtract, or on those binary machines without guard digits which
33       subtract  like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could
34       conceivably fail on hexadecimal or decimal machines without guard  dig‐
35       its, but we know of none.
36
37

ARGUMENTS

39       ITYPE   (input) INTEGER
40               Specifies the problem type to be solved:
41               = 1:  A*x = (lambda)*B*x
42               = 2:  A*B*x = (lambda)*x
43               = 3:  B*A*x = (lambda)*x
44
45       JOBZ    (input) CHARACTER*1
46               = 'N':  Compute eigenvalues only;
47               = 'V':  Compute eigenvalues and eigenvectors.
48
49       UPLO    (input) CHARACTER*1
50               = 'U':  Upper triangles of A and B are stored;
51               = 'L':  Lower triangles of A and B are stored.
52
53       N       (input) INTEGER
54               The order of the matrices A and B.  N >= 0.
55
56       AP      (input/output) REAL array, dimension (N*(N+1)/2)
57               On  entry,  the upper or lower triangle of the symmetric matrix
58               A, packed columnwise in a linear array.  The j-th column  of  A
59               is  stored  in  the  array AP as follows: if UPLO = 'U', AP(i +
60               (j-1)*j/2) =  A(i,j)  for  1<=i<=j;  if  UPLO  =  'L',  AP(i  +
61               (j-1)*(2*n-j)/2) = A(i,j) for j<=i<=n.
62
63               On exit, the contents 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.
71
72               On exit, the triangular factor U or L from the Cholesky factor‐
73               ization B = U**T*U or B = L*L**T, in the same storage format as
74               B.
75
76       W       (output) REAL array, dimension (N)
77               If INFO = 0, the eigenvalues in ascending order.
78
79       Z       (output) REAL array, dimension (LDZ, N)
80               If  JOBZ  =  'V',  then if INFO = 0, Z contains the matrix Z of
81               eigenvectors.  The eigenvectors are normalized as  follows:  if
82               ITYPE  = 1 or 2, Z**T*B*Z = I; if ITYPE = 3, Z**T*inv(B)*Z = I.
83               If JOBZ = 'N', then Z is not referenced.
84
85       LDZ     (input) INTEGER
86               The leading dimension of the array Z.  LDZ >= 1, and if JOBZ  =
87               'V', LDZ >= max(1,N).
88
89       WORK    (workspace/output) REAL array, dimension (MAX(1,LWORK))
90               On exit, if INFO = 0, WORK(1) returns the required LWORK.
91
92       LWORK   (input) INTEGER
93               The    dimension   of   the   array   WORK.    If   N   <=   1,
94               LWORK >= 1.  If JOBZ = 'N' and N > 1, LWORK >= 2*N.  If JOBZ  =
95               'V' and N > 1, LWORK >= 1 + 6*N + 2*N**2.
96
97               If  LWORK  = -1, then a workspace query is assumed; the routine
98               only calculates the  required  sizes  of  the  WORK  and  IWORK
99               arrays,  returns  these values as the first entries of the WORK
100               and IWORK arrays, and no error  message  related  to  LWORK  or
101               LIWORK is issued by XERBLA.
102
103       IWORK   (workspace/output) INTEGER array, dimension (MAX(1,LIWORK))
104               On exit, if INFO = 0, IWORK(1) returns the required LIWORK.
105
106       LIWORK  (input) INTEGER
107               The  dimension  of  the array IWORK.  If JOBZ  = 'N' or N <= 1,
108               LIWORK >= 1.  If JOBZ  = 'V' and N > 1, LIWORK >= 3 + 5*N.
109
110               If LIWORK = -1, then a workspace query is assumed; the  routine
111               only  calculates  the  required  sizes  of  the  WORK and IWORK
112               arrays, returns these values as the first entries of  the  WORK
113               and  IWORK  arrays,  and  no  error message related to LWORK or
114               LIWORK is issued by XERBLA.
115
116       INFO    (output) INTEGER
117               = 0:  successful exit
118               < 0:  if INFO = -i, the i-th argument had an illegal value
119               > 0:  SPPTRF or SSPEVD returned an error code:
120               <= N:  if INFO = i, SSPEVD failed to converge;  i  off-diagonal
121               elements  of  an intermediate tridiagonal form did not converge
122               to zero; > N:   if INFO = N + i, for 1 <=  i  <=  N,  then  the
123               leading  minor  of  order i of B is not positive definite.  The
124               factorization of B could not be completed and no eigenvalues or
125               eigenvectors were computed.
126

FURTHER DETAILS

128       Based on contributions by
129          Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
130
131
132
133
134 LAPACK driver routine (version 3.N1o)vember 2006                       SSPGVD(1)
Impressum