## TB01XZ

### Special similarity transformation of the dual state-space system (complex case)

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

Purpose

      To apply a special transformation to a system given as a triple
      (A,B,C),

         A <-- P * A' * P,  B <-- P * C',  C <-- B' * P,

      where P is a matrix with 1 on the secondary diagonal, and with 0
      in the other entries. Matrix A can be specified as a band matrix.
      Optionally, matrix D of the system can be transposed. This
      transformation is actually a special similarity transformation of
      the dual system.

Specification

          SUBROUTINE TB01XZ( JOBD, N, M, P, KL, KU, A, LDA, B, LDB, C, LDC,
         $                   D, LDD, INFO )
    C     .. Scalar Arguments ..
          CHARACTER          JOBD
          INTEGER            INFO, KL, KU, LDA, LDB, LDC, LDD, M, N, P
    C     .. Array Arguments ..
          COMPLEX*16         A( LDA, * ), B( LDB, * ), C( LDC, * ),
         $                   D( LDD, * )

Arguments

Mode Parameters

      JOBD    CHARACTER*1
              Specifies whether or not a non-zero matrix D appears in
              the given state space model:
              = 'D':  D is present;
              = 'Z':  D is assumed a zero matrix.

Input/Output Parameters

      N       (input) INTEGER
              The order of the matrix A, the number of rows of matrix B
              and the number of columns of matrix C.
              N represents the dimension of the state vector.  N >= 0.

      M       (input) INTEGER.
              The number of columns of matrix B.
              M represents the dimension of input vector.  M >= 0.

      P       (input) INTEGER.
              The number of rows of matrix C.
              P represents the dimension of output vector.  P >= 0.

      KL      (input) INTEGER
              The number of subdiagonals of A to be transformed.
              MAX( 0, N-1 ) >= KL >= 0.

      KU      (input) INTEGER
              The number of superdiagonals of A to be transformed.
              MAX( 0, N-1 ) >= KU >= 0.

      A       (input/output) COMPLEX*16 array, dimension (LDA,N)
              On entry, the leading N-by-N part of this array must
              contain the system state matrix A.
              On exit, the leading N-by-N part of this array contains
              the transformed (pertransposed) matrix P*A'*P.

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

      B       (input/output) COMPLEX*16 array, dimension (LDB,MAX(M,P))
              On entry, the leading N-by-M part of this array must
              contain the original input/state matrix B.
              On exit, the leading N-by-P part of this array contains
              the dual input/state matrix P*C'.

      LDB     INTEGER
              The leading dimension of the array B.
              LDB >= MAX(1,N) if M > 0 or  P > 0.
              LDB >= 1        if M = 0 and P = 0.

      C       (input/output) COMPLEX*16 array, dimension (LDC,N)
              On entry, the leading P-by-N part of this array must
              contain the original state/output matrix C.
              On exit, the leading M-by-N part of this array contains
              the dual state/output matrix B'*P.

      LDC     INTEGER
              The leading dimension of array C.
              LDC >= MAX(1,M,P) if N > 0.
              LDC >= 1          if N = 0.

      D       (input/output) COMPLEX*16 array, dimension (LDD,MAX(M,P))
              On entry, if JOBD = 'D', the leading P-by-M part of this
              array must contain the original direct transmission
              matrix D.
              On exit, if JOBD = 'D', the leading M-by-P part of this
              array contains the transposed direct transmission matrix
              D'. The array D is not referenced if JOBD = 'Z'.

      LDD     INTEGER
              The leading dimension of array D.
              LDD >= MAX(1,M,P) if JOBD = 'D'.
              LDD >= 1          if JOBD = 'Z'.

Error Indicator

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

Method

      The rows and/or columns of the matrices of the triplet (A,B,C)
      and, optionally, of the matrix D are swapped in a special way.

Numerical Aspects

      None.

Further Comments

      None

Example

Program Text

      None

Program Data

      None

Program Results

      None

Return to Supporting Routines index