NAME

sggev - compute for a pair of N-by-N real nonsymmetric matrices (A,B)


SYNOPSIS

  SUBROUTINE SGGEV( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, ALPHAI, 
 *      BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO)
  CHARACTER * 1 JOBVL, JOBVR
  INTEGER N, LDA, LDB, LDVL, LDVR, LWORK, INFO
  REAL A(LDA,*), B(LDB,*), ALPHAR(*), ALPHAI(*), BETA(*), VL(LDVL,*), VR(LDVR,*), WORK(*)
  SUBROUTINE SGGEV_64( JOBVL, JOBVR, N, A, LDA, B, LDB, ALPHAR, 
 *      ALPHAI, BETA, VL, LDVL, VR, LDVR, WORK, LWORK, INFO)
  CHARACTER * 1 JOBVL, JOBVR
  INTEGER*8 N, LDA, LDB, LDVL, LDVR, LWORK, INFO
  REAL A(LDA,*), B(LDB,*), ALPHAR(*), ALPHAI(*), BETA(*), VL(LDVL,*), VR(LDVR,*), WORK(*)

F95 INTERFACE

  SUBROUTINE GGEV( JOBVL, JOBVR, [N], A, [LDA], B, [LDB], ALPHAR, 
 *       ALPHAI, BETA, VL, [LDVL], VR, [LDVR], [WORK], [LWORK], [INFO])
  CHARACTER(LEN=1) :: JOBVL, JOBVR
  INTEGER :: N, LDA, LDB, LDVL, LDVR, LWORK, INFO
  REAL, DIMENSION(:) :: ALPHAR, ALPHAI, BETA, WORK
  REAL, DIMENSION(:,:) :: A, B, VL, VR
  SUBROUTINE GGEV_64( JOBVL, JOBVR, [N], A, [LDA], B, [LDB], ALPHAR, 
 *       ALPHAI, BETA, VL, [LDVL], VR, [LDVR], [WORK], [LWORK], [INFO])
  CHARACTER(LEN=1) :: JOBVL, JOBVR
  INTEGER(8) :: N, LDA, LDB, LDVL, LDVR, LWORK, INFO
  REAL, DIMENSION(:) :: ALPHAR, ALPHAI, BETA, WORK
  REAL, DIMENSION(:,:) :: A, B, VL, VR

C INTERFACE

#include <sunperf.h>

void sggev(char jobvl, char jobvr, int n, float *a, int lda, float *b, int ldb, float *alphar, float *alphai, float *beta, float *vl, int ldvl, float *vr, int ldvr, int *info);

void sggev_64(char jobvl, char jobvr, long n, float *a, long lda, float *b, long ldb, float *alphar, float *alphai, float *beta, float *vl, long ldvl, float *vr, long ldvr, long *info);


PURPOSE

sggev computes for a pair of N-by-N real nonsymmetric matrices (A,B) the generalized eigenvalues, and optionally, the left and/or right generalized eigenvectors.

A generalized eigenvalue for a pair of matrices (A,B) is a scalar lambda or a ratio alpha/beta = lambda, such that A - lambda*B is singular. It is usually represented as the pair (alpha,beta), as there is a reasonable interpretation for beta=0, and even for both being zero.

The right eigenvector v(j) corresponding to the eigenvalue lambda(j) of (A,B) satisfies

                 A * v(j) = lambda(j) * B * v(j).

The left eigenvector u(j) corresponding to the eigenvalue lambda(j) of (A,B) satisfies

                 u(j)**H * A  = lambda(j) * u(j)**H * B .

where u(j)**H is the conjugate-transpose of u(j).


ARGUMENTS