NAME

cggbak - form the right or left eigenvectors of a complex generalized eigenvalue problem A*x = lambda*B*x, by backward transformation on the computed eigenvectors of the balanced pair of matrices output by CGGBAL


SYNOPSIS

  SUBROUTINE CGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, 
 *      LDV, INFO)
  CHARACTER * 1 JOB, SIDE
  COMPLEX V(LDV,*)
  INTEGER N, ILO, IHI, M, LDV, INFO
  REAL LSCALE(*), RSCALE(*)
  SUBROUTINE CGGBAK_64( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, 
 *      LDV, INFO)
  CHARACTER * 1 JOB, SIDE
  COMPLEX V(LDV,*)
  INTEGER*8 N, ILO, IHI, M, LDV, INFO
  REAL LSCALE(*), RSCALE(*)

F95 INTERFACE

  SUBROUTINE GGBAK( JOB, SIDE, [N], ILO, IHI, LSCALE, RSCALE, [M], V, 
 *       [LDV], [INFO])
  CHARACTER(LEN=1) :: JOB, SIDE
  COMPLEX, DIMENSION(:,:) :: V
  INTEGER :: N, ILO, IHI, M, LDV, INFO
  REAL, DIMENSION(:) :: LSCALE, RSCALE
  SUBROUTINE GGBAK_64( JOB, SIDE, [N], ILO, IHI, LSCALE, RSCALE, [M], 
 *       V, [LDV], [INFO])
  CHARACTER(LEN=1) :: JOB, SIDE
  COMPLEX, DIMENSION(:,:) :: V
  INTEGER(8) :: N, ILO, IHI, M, LDV, INFO
  REAL, DIMENSION(:) :: LSCALE, RSCALE

C INTERFACE

#include <sunperf.h>

void cggbak(char job, char side, int n, int ilo, int ihi, float *lscale, float *rscale, int m, complex *v, int ldv, int *info);

void cggbak_64(char job, char side, long n, long ilo, long ihi, float *lscale, float *rscale, long m, complex *v, long ldv, long *info);


PURPOSE

cggbak forms the right or left eigenvectors of a complex generalized eigenvalue problem A*x = lambda*B*x, by backward transformation on the computed eigenvectors of the balanced pair of matrices output by CGGBAL.


ARGUMENTS


FURTHER DETAILS

See R.C. Ward, Balancing the generalized eigenvalue problem, SIAM J. Sci. Stat. Comp. 2 (1981), 141-152.