DSYGV  -  compute all the eigenvalues, and optionally, the
       eigenvectors  of  a  real  generalized  symmetric-definite
       eigenproblem,     of     the     form    A*x=(lambda)*B*x,
       A*Bx=(lambda)*x, or B*A*x=(lambda)*x


SYNOPSIS

       SUBROUTINE DSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W,
                         WORK, LWORK, INFO )

           CHARACTER     JOBZ, UPLO

           INTEGER       INFO, ITYPE, LDA, LDB, LWORK, N

           DOUBLE        PRECISION A( LDA, * ), B( LDB, * ), W( *
                         ), WORK( * )


PURPOSE

       DSYGV computes all the eigenvalues,  and  optionally,  the
       eigenvectors  of  a  real  generalized  symmetric-definite
       eigenproblem,    of     the     form     A*x=(lambda)*B*x,
       A*Bx=(lambda)*x,  or  B*A*x=(lambda)*x.  Here  A and B are
       assumed to be symmetric and B is also
       positive definite.


ARGUMENTS

       ITYPE   (input) INTEGER
               Specifies the problem type to be solved:
               = 1:  A*x = (lambda)*B*x
               = 2:  A*B*x = (lambda)*x
               = 3:  B*A*x = (lambda)*x

       JOBZ    (input) CHARACTER*1
               = 'N':  Compute eigenvalues only;
               = 'V':  Compute eigenvalues and eigenvectors.

       UPLO    (input) CHARACTER*1
               = 'U':  Upper triangles of A and B are stored;
               = 'L':  Lower triangles of A and B are stored.

       N       (input) INTEGER
               The order of the matrices A and B.  N >= 0.

       A       (input/output) DOUBLE PRECISION array, dimension
               (LDA, N)
               On entry, the symmetric matrix A.  If UPLO =  'U',
               the leading N-by-N upper triangular part of A con­
               tains the upper triangular part of the  matrix  A.
               If UPLO = 'L', the leading N-by-N lower triangular
               part of A contains the lower  triangular  part  of
               the matrix A.

               On  exit,  if  JOBZ  =  'V',  then  if INFO = 0, A

               vectors are normalized as follows: if ITYPE = 1 or
               2, Z**T*B*Z = I; if ITYPE = 3, Z**T*inv(B)*Z =  I.
               If JOBZ = 'N', then on exit the upper triangle (if
               UPLO='U') or the lower triangle (if  UPLO='L')  of
               A, including the diagonal, is destroyed.

       LDA     (input) INTEGER
               The  leading  dimension  of  the  array A.  LDA >=
               max(1,N).

       B       (input/output) DOUBLE PRECISION array, dimension
               (LDB, N)
               On entry, the symmetric positive  definite  matrix
               B.  If UPLO = 'U', the leading N-by-N upper trian­
               gular part of B contains the upper triangular part
               of the matrix B.  If UPLO = 'L', the leading N-by-
               N lower triangular part of B  contains  the  lower
               triangular part of the matrix B.

               On  exit,  if  INFO <= N, the part of B containing
               the matrix is overwritten by the triangular factor
               U  or L from the Cholesky factorization B = U**T*U
               or B = L*L**T.

       LDB     (input) INTEGER
               The leading dimension of  the  array  B.   LDB  >=
               max(1,N).

       W       (output) DOUBLE PRECISION array, dimension (N)
               If INFO = 0, the eigenvalues in ascending order.

       WORK     (workspace/output)  DOUBLE  PRECISION  array,
               dimension (LWORK)
               On  exit, if INFO = 0, WORK(1) returns the optimal
               LWORK.

       LWORK   (input) INTEGER
               The  length  of  the   array   WORK.    LWORK   >=
               max(1,3*N-1).   For  optimal  efficiency, LWORK >=
               (NB+2)*N, where NB is  the  blocksize  for  DSYTRD
               returned by ILAENV.

               If  LWORK = -1, then a workspace query is assumed;
               the routine only calculates the  optimal  size  of
               the  WORK  array,  returns this value as the first
               entry of the WORK  array,  and  no  error  message
               related to LWORK is issued by XERBLA.

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value
               > 0:  DPOTRF or DSYEV returned an error code:

               off-diagonal elements of an intermediate tridiago­
               nal form did not converge to zero; > N:   if  INFO
               =  N  + i, for 1 <= i <= N, then the leading minor
               of order i of B is  not  positive  definite.   The
               factorization  of  B could not be completed and no
               eigenvalues or eigenvectors were computed.


Man(1) output converted with man2html