## TB01XD

### Special similarity transformation of the dual state-space system

[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 TB01XD( 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 ..
DOUBLE PRECISION   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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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.

```
```  None
```
Example

Program Text

```  None
```
Program Data
```  None
```
Program Results
```  None
```