NAME

cggbal - balance a pair of general complex matrices (A,B)


SYNOPSIS

  SUBROUTINE CGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE, RSCALE, 
 *      WORK, INFO)
  CHARACTER * 1 JOB
  COMPLEX A(LDA,*), B(LDB,*)
  INTEGER N, LDA, LDB, ILO, IHI, INFO
  REAL LSCALE(*), RSCALE(*), WORK(*)
  SUBROUTINE CGGBAL_64( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE, 
 *      RSCALE, WORK, INFO)
  CHARACTER * 1 JOB
  COMPLEX A(LDA,*), B(LDB,*)
  INTEGER*8 N, LDA, LDB, ILO, IHI, INFO
  REAL LSCALE(*), RSCALE(*), WORK(*)

F95 INTERFACE

  SUBROUTINE GGBAL( JOB, [N], A, [LDA], B, [LDB], ILO, IHI, LSCALE, 
 *       RSCALE, [WORK], [INFO])
  CHARACTER(LEN=1) :: JOB
  COMPLEX, DIMENSION(:,:) :: A, B
  INTEGER :: N, LDA, LDB, ILO, IHI, INFO
  REAL, DIMENSION(:) :: LSCALE, RSCALE, WORK
  SUBROUTINE GGBAL_64( JOB, [N], A, [LDA], B, [LDB], ILO, IHI, LSCALE, 
 *       RSCALE, [WORK], [INFO])
  CHARACTER(LEN=1) :: JOB
  COMPLEX, DIMENSION(:,:) :: A, B
  INTEGER(8) :: N, LDA, LDB, ILO, IHI, INFO
  REAL, DIMENSION(:) :: LSCALE, RSCALE, WORK

C INTERFACE

#include <sunperf.h>

void cggbal(char job, int n, complex *a, int lda, complex *b, int ldb, int *ilo, int *ihi, float *lscale, float *rscale, int *info);

void cggbal_64(char job, long n, complex *a, long lda, complex *b, long ldb, long *ilo, long *ihi, float *lscale, float *rscale, long *info);


PURPOSE

cggbal balances a pair of general complex matrices (A,B). This involves, first, permuting A and B by similarity transformations to isolate eigenvalues in the first 1 to ILO$-$1 and last IHI+1 to N elements on the diagonal; and second, applying a diagonal similarity transformation to rows and columns ILO to IHI to make the rows and columns as close in norm as possible. Both steps are optional.

Balancing may reduce the 1-norm of the matrices, and improve the accuracy of the computed eigenvalues and/or eigenvectors in the generalized eigenvalue problem A*x = lambda*B*x.


ARGUMENTS


FURTHER DETAILS

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