###
Inner denominator of a right-coprime factorization of an unstable system of order 1 or 2

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

To compute the inner denominator of a right-coprime factorization
of a system of order N, where N is either 1 or 2. Specifically,
given the N-by-N unstable system state matrix A and the N-by-M
system input matrix B, an M-by-N state-feedback matrix F and
an M-by-M matrix V are constructed, such that the system
(A + B*F, B*V, F, V) is inner.

**Specification**
SUBROUTINE SB01FY( DISCR, N, M, A, LDA, B, LDB, F, LDF, V, LDV,
$ INFO )
C .. Scalar Arguments ..
LOGICAL DISCR
INTEGER INFO, LDA, LDB, LDF, LDV, M, N
C .. Array Arguments ..
DOUBLE PRECISION A(LDA,*), B(LDB,*), F(LDF,*), V(LDV,*)

**Arguments**
**Mode Parameters**

DISCR LOGICAL
Specifies the type of system as follows:
= .FALSE.: continuous-time system;
= .TRUE. : discrete-time system.

**Input/Output Parameters**
N (input) INTEGER
The order of the matrix A and also the number of rows of
the matrix B and the number of columns of the matrix F.
N is either 1 or 2.
M (input) INTEGER
The number of columns of the matrices B and V, and also
the number of rows of the matrix F. M >= 0.
A (input) DOUBLE PRECISION array, dimension (LDA,N)
The leading N-by-N part of this array must contain the
system state matrix A whose eigenvalues must have positive
real parts if DISCR = .FALSE. or moduli greater than unity
if DISCR = .TRUE..
LDA INTEGER
The leading dimension of array A. LDA >= N.
B (input) DOUBLE PRECISION array, dimension (LDB,M)
The leading N-by-M part of this array must contain the
system input matrix B.
LDB INTEGER
The leading dimension of array B. LDB >= N.
F (output) DOUBLE PRECISION array, dimension (LDF,N)
The leading M-by-N part of this array contains the state-
feedback matrix F which assigns one eigenvalue (if N = 1)
or two eigenvalues (if N = 2) of the matrix A + B*F in
symmetric positions with respect to the imaginary axis
(if DISCR = .FALSE.) or the unit circle (if
DISCR = .TRUE.).
LDF INTEGER
The leading dimension of array F. LDF >= MAX(1,M).
V (output) DOUBLE PRECISION array, dimension (LDV,M)
The leading M-by-M upper triangular part of this array
contains the input/output matrix V of the resulting inner
system in upper triangular form.
If DISCR = .FALSE., the resulting V is an identity matrix.
LDV INTEGER
The leading dimension of array V. LDF >= MAX(1,M).

**Error Indicator**
INFO INTEGER
= 0: successful exit;
= 1: if uncontrollability of the pair (A,B) is detected;
= 2: if A is stable or at the stability limit;
= 3: if N = 2 and A has a pair of real eigenvalues.

**Further Comments**
None

**Example**
**Program Text**

None

**Program Data**
None

**Program Results**
None

**Return to Supporting Routines index**