## MB04DB

### Inverse of a balancing transformation for a real skew-Hamiltonian/Hamiltonian pencil

[Specification] [Arguments] [Method] [References] [Comments] [Example]

Purpose

      To apply from the left the inverse of a balancing transformation,
      computed by the SLICOT Library routine MB04DP, to the matrix

                [   V1   ]
                [        ],
                [ sgn*V2 ]

      where sgn is either +1 or -1.

Specification

          SUBROUTINE MB04DB( JOB, SGN, N, ILO, LSCALE, RSCALE, M, V1, LDV1,
         $                   V2, LDV2, INFO )
    C     .. Scalar Arguments ..
          CHARACTER         JOB, SGN
          INTEGER           ILO, INFO, LDV1, LDV2, M, N
    C     .. Array Arguments ..
          DOUBLE PRECISION  LSCALE(*), RSCALE(*), V1(LDV1,*), V2(LDV2,*)

Arguments

Mode Parameters

      JOB     CHARACTER*1
              Specifies the type of inverse transformation required:
              = 'N':  do nothing, return immediately;
              = 'P':  do inverse transformation for permutation only;
              = 'S':  do inverse transformation for scaling only;
              = 'B':  do inverse transformations for both permutation
                      and scaling.
              JOB must be the same as the argument JOB supplied to
              MB04DP.

      SGN     CHARACTER*1
              Specifies the sign to use for V2:
              = 'P':  sgn = +1;
              = 'N':  sgn = -1.

Input/Output Parameters

      N       (input) INTEGER
              The number of rows of the matrices V1 and V2. N >= 0.

      ILO     (input) INTEGER
              The integer ILO determined by MB04DP.
              1 <= ILO <= N+1.

      LSCALE  (input) DOUBLE PRECISION array, dimension (N)
              Details of the permutation and scaling factors applied
              from the left, as returned by MB04DP.

      RSCALE  (input) DOUBLE PRECISION array, dimension (N)
              Details of the permutation and scaling factors applied
              from the right, as returned by MB04DP.

      M       (input) INTEGER
              The number of columns of the matrices V1 and V2.  M >= 0.

      V1      (input/output) DOUBLE PRECISION array, dimension (LDV1,M)
              On entry, the leading N-by-M part of this array must
              contain the matrix V1.
              On exit, the leading N-by-M part of this array is
              overwritten by the updated matrix V1 of the transformed
              matrix.

      LDV1    INTEGER
              The leading dimension of the array V1. LDV1 >= max(1,N).

      V2      (input/output) DOUBLE PRECISION array, dimension (LDV2,M)
              On entry, the leading N-by-M part of this array must
              contain the matrix V2.
              On exit, the leading N-by-M part of this array is
              overwritten by the updated matrix V2 of the transformed
              matrix.

      LDV2    INTEGER
              The leading dimension of the array V2. LDV2 >= max(1,N).

Error Indicator

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

References

      [1] Anderson, E., Bai, Z., Bischof, C., Demmel, J., Dongarra, J.,
          Du Croz, J., Greenbaum, A., Hammarling, S., McKenney, A.,
          Ostrouchov, S., and Sorensen, D.
          LAPACK Users' Guide: Second Edition.
          SIAM, Philadelphia, 1995.

      [2] Benner, P.
          Symplectic balancing of Hamiltonian matrices.
          SIAM J. Sci. Comput., 22 (5), pp. 1885-1904, 2001.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index