Previous: sggbak Up: ../lapack-s.html Next: sggglm


sggbal


 NAME
      SGGBAL - balance a pair of general real matrices (A,B) for
      the generalized eigenvalue problem A*X = lambda*B*X

 SYNOPSIS
      SUBROUTINE SGGBAL( JOB, N, A, LDA, B, LDB, ILO, IHI, LSCALE,
                         RSCALE, WORK, INFO )

          CHARACTER      JOB

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

          REAL           A( LDA, * ), B( LDB, * ), LSCALE( * ),
                         RSCALE( * ), WORK( * )

 PURPOSE
      SGGBAL balances a pair of general real matrices (A,B) for
      the generalized eigenvalue problem A*X = lambda*B*X.  This
      involves, first, permuting A and B by similarity transforma-
      tions to isolate eigenvalues in the first 1 to ILO-1 and
      last IHI+1 to N elements on the diagonal; and second, apply-
      ing 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 eigenvec-
      tors.

 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) REAL array, dimension (LDA,N)
              On entry, the input matrix A.  On exit,  A is
              overwritten 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) REAL array, dimension (LDB,N)
              On entry, the input matrix B.  On exit,  B is
              overwritten by the balanced matrix.  If JOB = 'N', 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 about the permutations and scaling factors
              applied to the left side of A and B.  If P(j) is the
              index of the row and column interchanged with row
              and column j, and D(j) is the scaling factor applied
              to row and column 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 inter-
              changes are made is N to IHI+1, then 1 to ILO-1.

      RSCALE  (output) REAL array, dimension (N)
              Details about the permutations and scaling factors
              applied to the right side of A and B.  If P(j) is
              the index of the row and column interchanged with
              row and column j, and D(j) is the scaling factor
              applied to row and column 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.

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

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

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