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      JOB

           INTEGER        IHI, ILO, INFO, LDA, LDB, N

           REAL           LSCALE( * ), RSCALE( * ), WORK( * )

           COMPLEX        A( LDA, * ), B( LDB, * )


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

       JOB     (input) CHARACTER*1
               Specifies  the operations to be performed on A and
               B:
               = 'N':  none:  simply  set  ILO  =  1,  IHI  =  N,
               LSCALE(I) = 1.0 and RSCALE(I) = 1.0 for i=1,...,N;
               = 'P':  permute only;
               = 'S':  scale only;
               = 'B':  both permute and scale.

       N       (input) INTEGER
               The order of the matrices A and B.  N >= 0.

       A       (input/output) COMPLEX array, dimension (LDA,N)
               On entry, the input matrix A.  On exit, A is over­
               written  by  the balanced matrix.  If JOB = 'N', A
               is not referenced.

       LDA     (input) INTEGER
               The leading dimension  of  the  array  A.  LDA  >=
               max(1,N).

       B       (input/output) COMPLEX array, dimension (LDB,N)
               On  entry,  the  input  matrix  B.   On exit, B is

               B is not referenced.

       LDB     (input) INTEGER
               The  leading  dimension  of  the  array  B. LDB >=
               max(1,N).

       ILO     (output) INTEGER
               IHI     (output) INTEGER ILO and IHI  are  set  to
               integers such that on exit A(i,j) = 0 and B(i,j) =
               0 if i > j and j = 1,...,ILO-1 or i = IHI+1,...,N.
               If JOB = 'N' or 'S', ILO = 1 and IHI = N.

       LSCALE  (output) REAL array, dimension (N)
               Details  of  the  permutations and scaling factors
               applied to the left side of A and B.  If  P(j)  is
               the  index of the row interchanged with row j, and
               D(j) is the scaling factor applied to row j,  then
               LSCALE(j)  =  P(j)     for  J = 1,...,ILO-1 = D(j)
               for J = ILO,...,IHI = P(j)    for J = IHI+1,...,N.
               The  order in which the interchanges are made is N
               to IHI+1, then 1 to ILO-1.

       RSCALE  (output) REAL array, dimension (N)
               Details of the permutations  and  scaling  factors
               applied  to the right side of A and B.  If P(j) is
               the index of the column interchanged  with  column
               j,  and D(j) is the scaling factor applied to col­
               umn  j,  then  RSCALE(j)  =  P(j)      for   J   =
               1,...,ILO-1  =  D(j)    for J = ILO,...,IHI = P(j)
               for J =  IHI+1,...,N.   The  order  in  which  the
               interchanges  are  made  is  N to IHI+1, then 1 to
               ILO-1.

       WORK    (workspace) REAL array, dimension (6*N)

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value.


FURTHER DETAILS

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


Man(1) output converted with man2html