MB04DI

Applying the inverse of a balancing transformation for a real Hamiltonian matrix

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

Purpose

  To apply the inverse of a balancing transformation, computed by
  the SLICOT Library routines MB04DD or MB04DS, to a 2*N-by-M matrix

            [   V1   ]
            [        ],
            [ sgn*V2 ]

  where sgn is either +1 or -1.

Specification
      SUBROUTINE MB04DI( JOB, SGN, N, ILO, SCALE, M, V1, LDV1, V2, LDV2,
     $                   INFO )
C     .. Scalar Arguments ..
      CHARACTER         JOB, SGN
      INTEGER           ILO, INFO, LDV1, LDV2, M, N
C     .. Array Arguments ..
      DOUBLE PRECISION  SCALE(*), 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
          MB04DD or MB04DS.

  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 MB04DD or MB04DS.
          1 <= ILO <= N+1.

  SCALE   (input) DOUBLE PRECISION array, dimension (N)
          Details of the permutation and scaling factors, as
          returned by MB04DD or MB04DS.

  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] 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