Contents


NAME

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

SYNOPSIS

     SUBROUTINE SSBGV(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z,
           LDZ, WORK, INFO)

     CHARACTER * 1 JOBZ, UPLO
     INTEGER N, KA, KB, LDAB, LDBB, LDZ, INFO
     REAL AB(LDAB,*), BB(LDBB,*), W(*), Z(LDZ,*), WORK(*)

     SUBROUTINE SSBGV_64(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z,
           LDZ, WORK, INFO)

     CHARACTER * 1 JOBZ, UPLO
     INTEGER*8 N, KA, KB, LDAB, LDBB, LDZ, INFO
     REAL AB(LDAB,*), BB(LDBB,*), W(*), Z(LDZ,*), WORK(*)

  F95 INTERFACE
     SUBROUTINE SBGV(JOBZ, UPLO, [N], KA, KB, AB, [LDAB], BB, [LDBB], W,
            Z, [LDZ], [WORK], [INFO])

     CHARACTER(LEN=1) :: JOBZ, UPLO
     INTEGER :: N, KA, KB, LDAB, LDBB, LDZ, INFO
     REAL, DIMENSION(:) :: W, WORK
     REAL, DIMENSION(:,:) :: AB, BB, Z

     SUBROUTINE SBGV_64(JOBZ, UPLO, [N], KA, KB, AB, [LDAB], BB, [LDBB],
            W, Z, [LDZ], [WORK], [INFO])

     CHARACTER(LEN=1) :: JOBZ, UPLO
     INTEGER(8) :: N, KA, KB, LDAB, LDBB, LDZ, INFO
     REAL, DIMENSION(:) :: W, WORK
     REAL, DIMENSION(:,:) :: AB, BB, Z

  C INTERFACE
     #include <sunperf.h>

     void ssbgv(char jobz, char uplo, int  n,  int  ka,  int  kb,
               float  *ab,  int  ldab, float *bb, int ldbb, float
               *w, float *z, int ldz, int *info);

     void ssbgv_64(char jobz, char uplo, long n,  long  ka,  long
               kb,  float  *ab,  long ldab, float *bb, long ldbb,
               float *w, float *z, long ldz, long *info);

PURPOSE

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

ARGUMENTS

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

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

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

     KA (input)
               The number of superdiagonals of the  matrix  A  if
               UPLO  = 'U', or the number of subdiagonals if UPLO
               = 'L'. KA >= 0.

     KB (input)
               The number of superdiagonals of the  matrix  B  if
               UPLO  = 'U', or the number of subdiagonals if UPLO
               = 'L'. KB >= 0.

     AB (input/output)
               On entry, the upper or lower triangle of the  sym-
               metric  band  matrix  A,  stored in the first ka+1
               rows of the array.  The j-th column of A is stored
               in the j-th column of the array AB as follows:  if
               UPLO = 'U', AB(ka+1+i-j,j) = A(i,j)  for  max(1,j-
               ka)<=i<=j;  if UPLO = 'L', AB(1+i-j,j)    = A(i,j)
               for j<=i<=min(n,j+ka).

               On exit, the contents of AB are destroyed.

     LDAB (input)
               The leading dimension of the array  AB.   LDAB  >=
               KA+1.
     BB (input/output)
               On entry, the upper or lower triangle of the  sym-
               metric  band  matrix  B,  stored in the first kb+1
               rows of the array.  The j-th column of B is stored
               in the j-th column of the array BB as follows:  if
               UPLO = 'U', BB(kb+1+i-j,j) = B(i,j)  for  max(1,j-
               kb)<=i<=j;  if UPLO = 'L', BB(1+i-j,j)    = B(i,j)
               for j<=i<=min(n,j+kb).

               On exit, the factor S from the split Cholesky fac-
               torization B = S**T*S, as returned by SPBSTF.

     LDBB (input)
               The leading dimension of the array  BB.   LDBB  >=
               KB+1.

     W (output)
               If INFO = 0, the eigenvalues in ascending order.

     Z (input) If JOBZ = 'V', then if INFO = 0,  Z  contains  the
               matrix  Z of eigenvectors, with the i-th column of
               Z holding the eigenvector  associated  with  W(i).
               The eigenvectors are normalized so that Z**T*B*Z =
               I.  If JOBZ = 'N', then Z is not referenced.

     LDZ (input)
               The leading dimension of the array Z.  LDZ  >=  1,
               and if JOBZ = 'V', LDZ >= N.

     WORK (workspace)
               dimension(3*N)

     INFO (output)
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille-
               gal value
               > 0:  if INFO = i, and i is:
               <= N:  the algorithm failed to converge:   i  off-
               diagonal  elements  of an intermediate tridiagonal
               form did not converge to zero; > N:   if INFO =  N
               + i, for 1 <= i <= N, then SPBSTF
               returned INFO = i: B  is  not  positive  definite.
               The  factorization of B could not be completed and
               no eigenvalues or eigenvectors were computed.