**Purpose**

To construct the state-space representation for the system G = (A,B,C,D) from the factors Q = (AQR,BQ,CQR,DQ) and R = (AQR,BR,CQR,DR) of its left coprime factorization -1 G = R * Q, where G, Q and R are the corresponding transfer-function matrices.

SUBROUTINE SB08GD( N, M, P, A, LDA, B, LDB, C, LDC, D, LDD, BR, $ LDBR, DR, LDDR, IWORK, DWORK, INFO ) C .. Scalar Arguments .. INTEGER INFO, LDA, LDB, LDBR, LDC, LDD, LDDR, M, N, P C .. Array Arguments .. DOUBLE PRECISION A(LDA,*), B(LDB,*), BR(LDBR,*), C(LDC,*), $ D(LDD,*), DR(LDDR,*), DWORK(*) INTEGER IWORK(*)

**Input/Output Parameters**

N (input) INTEGER The order of the matrix A. Also the number of rows of the matrices B and BR and the number of columns of the matrix C. N represents the order of the systems Q and R. N >= 0. M (input) INTEGER The dimension of input vector, i.e. the number of columns of the matrices B and D. M >= 0. P (input) INTEGER The dimension of output vector, i.e. the number of rows of the matrices C, D and DR and the number of columns of the matrices BR and DR. P >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA,N) On entry, the leading N-by-N part of this array must contain the state dynamics matrix AQR of the systems Q and R. On exit, the leading N-by-N part of this array contains the state dynamics matrix of the system G. LDA INTEGER The leading dimension of array A. LDA >= MAX(1,N). B (input/output) DOUBLE PRECISION array, dimension (LDB,M) On entry, the leading N-by-M part of this array must contain the input/state matrix BQ of the system Q. On exit, the leading N-by-M part of this array contains the input/state matrix of the system G. LDB INTEGER The leading dimension of array B. LDB >= MAX(1,N). C (input/output) DOUBLE PRECISION array, dimension (LDC,N) On entry, the leading P-by-N part of this array must contain the state/output matrix CQR of the systems Q and R. On exit, the leading P-by-N part of this array contains the state/output matrix of the system G. LDC INTEGER The leading dimension of array C. LDC >= MAX(1,P). D (input/output) DOUBLE PRECISION array, dimension (LDD,M) On entry, the leading P-by-M part of this array must contain the input/output matrix DQ of the system Q. On exit, the leading P-by-M part of this array contains the input/output matrix of the system G. LDD INTEGER The leading dimension of array D. LDD >= MAX(1,P). BR (input) DOUBLE PRECISION array, dimension (LDBR,P) The leading N-by-P part of this array must contain the input/state matrix BR of the system R. LDBR INTEGER The leading dimension of array BR. LDBR >= MAX(1,N). DR (input/output) DOUBLE PRECISION array, dimension (LDDR,P) On entry, the leading P-by-P part of this array must contain the input/output matrix DR of the system R. On exit, the leading P-by-P part of this array contains the LU factorization of the matrix DR, as computed by LAPACK Library routine DGETRF. LDDR INTEGER The leading dimension of array DR. LDDR >= MAX(1,P).

IWORK INTEGER array, dimension (P) DWORK DOUBLE PRECISION array, dimension (MAX(1,4*P)) On exit, DWORK(1) contains an estimate of the reciprocal condition number of the matrix DR.

INFO INTEGER = 0: successful exit; < 0: if INFO = -i, the i-th argument had an illegal value; = 1: the matrix DR is singular; = 2: the matrix DR is numerically singular (warning); the calculations continued.

The subroutine computes the matrices of the state-space representation G = (A,B,C,D) by using the formulas: -1 -1 A = AQR - BR * DR * CQR, C = DR * CQR, -1 -1 B = BQ - BR * DR * DQ, D = DR * DQ.

[1] Varga A. Coprime factors model reduction method based on square-root balancing-free techniques. System Analysis, Modelling and Simulation, vol. 11, pp. 303-311, 1993.

None

**Program Text**

None

None

None