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

NAME

6       DSPGVD - computes all the eigenvalues, and optionally, the eigenvectors
7       of 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 DSPGVD( 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           DOUBLE         PRECISION AP( * ), BP( * ), W( * ), WORK(  *  ),  Z(
21                          LDZ, * )
22

PURPOSE

24       DSPGVD  computes  all the eigenvalues, and optionally, the eigenvectors
25       of a real generalized  symmetric-definite  eigenproblem,  of  the  form
26       A*x=(lambda)*B*x,  A*Bx=(lambda)*x,  or B*A*x=(lambda)*x.  Here A and B
27       are assumed to be symmetric, stored in packed format,  and  B  is  also
28       positive definite.
29       If  eigenvectors  are  desired, it uses a divide and conquer algorithm.
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

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

FURTHER DETAILS

122       Based on contributions by
123          Mark Fahey, Department of Mathematics, Univ. of Kentucky, USA
124
125
126
127 LAPACK driver routine (version 3.N2o)vember 2008                       DSPGVD(1)
Impressum