NAME

zggbak - 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 ZGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, 
 *      LDV, INFO)
  CHARACTER * 1 JOB, SIDE
  DOUBLE COMPLEX V(LDV,*)
  INTEGER N, ILO, IHI, M, LDV, INFO
  DOUBLE PRECISION LSCALE(*), RSCALE(*)
  SUBROUTINE ZGGBAK_64( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, 
 *      LDV, INFO)
  CHARACTER * 1 JOB, SIDE
  DOUBLE COMPLEX V(LDV,*)
  INTEGER*8 N, ILO, IHI, M, LDV, INFO
  DOUBLE PRECISION LSCALE(*), RSCALE(*)

F95 INTERFACE

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

C INTERFACE

#include <sunperf.h>

void zggbak(char job, char side, int n, int ilo, int ihi, double *lscale, double *rscale, int m, doublecomplex *v, int ldv, int *info);

void zggbak_64(char job, char side, long n, long ilo, long ihi, double *lscale, double *rscale, long m, doublecomplex *v, long ldv, long *info);


PURPOSE

zggbak 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.