Contents


NAME

     dsbgst - reduce a real symmetric-definite banded generalized
     eigenproblem  A*x  =  lambda*B*x  to  standard  form  C*y  =
     lambda*y,

SYNOPSIS

     SUBROUTINE DSBGST(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X, LDX,
           WORK, INFO)

     CHARACTER * 1 VECT, UPLO
     INTEGER N, KA, KB, LDAB, LDBB, LDX, INFO
     DOUBLE PRECISION AB(LDAB,*), BB(LDBB,*), X(LDX,*), WORK(*)

     SUBROUTINE DSBGST_64(VECT, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, X,
           LDX, WORK, INFO)

     CHARACTER * 1 VECT, UPLO
     INTEGER*8 N, KA, KB, LDAB, LDBB, LDX, INFO
     DOUBLE PRECISION AB(LDAB,*), BB(LDBB,*), X(LDX,*), WORK(*)

  F95 INTERFACE
     SUBROUTINE SBGST(VECT, UPLO, [N], KA, KB, AB, [LDAB], BB, [LDBB], X,
            [LDX], [WORK], [INFO])

     CHARACTER(LEN=1) :: VECT, UPLO
     INTEGER :: N, KA, KB, LDAB, LDBB, LDX, INFO
     REAL(8), DIMENSION(:) :: WORK
     REAL(8), DIMENSION(:,:) :: AB, BB, X

     SUBROUTINE SBGST_64(VECT, UPLO, [N], KA, KB, AB, [LDAB], BB, [LDBB],
            X, [LDX], [WORK], [INFO])

     CHARACTER(LEN=1) :: VECT, UPLO
     INTEGER(8) :: N, KA, KB, LDAB, LDBB, LDX, INFO
     REAL(8), DIMENSION(:) :: WORK
     REAL(8), DIMENSION(:,:) :: AB, BB, X

  C INTERFACE
     #include <sunperf.h>

     void dsbgst(char vect, char uplo, int n,  int  ka,  int  kb,
               double *ab, int ldab, double *bb, int ldbb, double
               *x, int ldx, int *info);

     void dsbgst_64(char vect, char uplo, long n, long  ka,  long
               kb,  double *ab, long ldab, double *bb, long ldbb,
               double *x, long ldx, long *info);

PURPOSE

     dsbgst reduces a real symmetric-definite banded  generalized
     eigenproblem   A*x  =  lambda*B*x   to  standard form  C*y =
     lambda*y, such that C has the same bandwidth as A.

     B must have been previously factorized as S**T*S by  SPBSTF,
     using  a split Cholesky factorization. A is overwritten by C
     = X**T*A*X, where X =  S**(-1)*Q  and  Q  is  an  orthogonal
     matrix chosen to preserve the bandwidth of A.

ARGUMENTS

     VECT (input)
               = 'N':  do not form the transformation matrix X;
               = 'V':  form X.

     UPLO (input)
               = 'U':  Upper triangle of A is stored;
               = 'L':  Lower triangle of A is 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'.  KA >= 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 transformed matrix  X**T*A*X,  stored
               in the same format as A.

     LDAB (input)
               The leading dimension of the array  AB.   LDAB  >=
               KA+1.

     BB (input)
               The banded factor S from the split  Cholesky  fac-
               torization  of B, as returned by SPBSTF, stored in
               the first KB+1 rows of the array.

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

     X (output)
               If VECT = 'V', the n-by-n matrix  X.   If  VECT  =
               'N', the array X is not referenced.

     LDX (input)
               The leading dimension of  the  array  X.   LDX  >=
               max(1,N) if VECT = 'V'; LDX >= 1 otherwise.

     WORK (workspace)
               dimension(2*N)

     INFO (output)
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille-
               gal value.