SSYGV  -  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 SSYGV( ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W,
                         WORK, LWORK, INFO )

           CHARACTER     JOBZ, UPLO

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

           REAL          A(  LDA, * ), B( LDB, * ), W( * ), WORK(
                         * )


PURPOSE

       SSYGV 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) REAL 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 con­
               tains  the  matrix   Z   of   eigenvectors.    The

               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 trian­
               gle  (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) REAL 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) REAL array, dimension (N)
               If INFO = 0, the eigenvalues in ascending order.

       WORK    (workspace/output) REAL 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 SSYTRD
               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:  SPOTRF or SSYEV returned an error code:
               <=  N:   if  INFO = i, SSYEV failed to converge; i
               off-diagonal   elements   of    an    intermediate

               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