NAME

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


SYNOPSIS

  SUBROUTINE DGGBAK( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, 
 *      LDV, INFO)
  CHARACTER * 1 JOB, SIDE
  INTEGER N, ILO, IHI, M, LDV, INFO
  DOUBLE PRECISION LSCALE(*), RSCALE(*), V(LDV,*)
  SUBROUTINE DGGBAK_64( JOB, SIDE, N, ILO, IHI, LSCALE, RSCALE, M, V, 
 *      LDV, INFO)
  CHARACTER * 1 JOB, SIDE
  INTEGER*8 N, ILO, IHI, M, LDV, INFO
  DOUBLE PRECISION LSCALE(*), RSCALE(*), V(LDV,*)

F95 INTERFACE

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

C INTERFACE

#include <sunperf.h>

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

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


PURPOSE

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


ARGUMENTS


FURTHER DETAILS

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