**Purpose**

To apply the transformations created by the SLICOT Library routine MB02CX on other columns / rows of the generator, contained in the arrays A and B of positive and negative generators, respectively.

SUBROUTINE MB02CY( TYPET, STRUCT, P, Q, N, K, A, LDA, B, LDB, H, $ LDH, CS, LCS, DWORK, LDWORK, INFO ) C .. Scalar Arguments .. INTEGER INFO, K, LDA, LDB, LCS, LDH, LDWORK, N, P, Q CHARACTER STRUCT, TYPET C .. Array Arguments .. DOUBLE PRECISION A(LDA, *), B(LDB, *), CS(*), DWORK(*), H(LDH,*)

**Mode Parameters**

TYPET CHARACTER*1 Specifies the type of the generator, as follows: = 'R': A and B are additional columns of the generator; = 'C': A and B are additional rows of the generator. Note: in the sequel, the notation x / y means that x corresponds to TYPET = 'R' and y corresponds to TYPET = 'C'. STRUCT CHARACTER*1 Information about the structure of the two generators, as follows: = 'T': the trailing block of the positive generator is lower / upper triangular, and the trailing block of the negative generator is zero; = 'N': no special structure to mention.

P (input) INTEGER The number of rows / columns in A containing the positive generators. P >= 0. Q (input) INTEGER The number of rows / columns in B containing the negative generators. Q >= 0. N (input) INTEGER The number of columns / rows in A and B to be processed. N >= 0. K (input) INTEGER The number of columns / rows in H. P >= K >= 0. A (input/output) DOUBLE PRECISION array, dimension (LDA, N) / (LDA, P) On entry, the leading P-by-N / N-by-P part of this array must contain the positive part of the generator. On exit, the leading P-by-N / N-by-P part of this array contains the transformed positive part of the generator. LDA INTEGER The leading dimension of the array A. LDA >= MAX(1,P), if TYPET = 'R'; LDA >= MAX(1,N), if TYPET = 'C'. B (input/output) DOUBLE PRECISION array, dimension (LDB, N) / (LDB, Q) On entry, the leading Q-by-N / N-by-Q part of this array must contain the negative part of the generator. On exit, the leading Q-by-N / N-by-Q part of this array contains the transformed negative part of the generator. LDB INTEGER The leading dimension of the array B. LDB >= MAX(1,Q), if TYPET = 'R'; LDB >= MAX(1,N), if TYPET = 'C'. H (input) DOUBLE PRECISION array, dimension (LDH, K) / (LDH, Q) The leading Q-by-K / K-by-Q part of this array must contain part of the necessary information for the Householder transformations computed by SLICOT Library routine MB02CX. LDH INTEGER The leading dimension of the array H. LDH >= MAX(1,Q), if TYPET = 'R'; LDH >= MAX(1,K), if TYPET = 'C'. CS (input) DOUBLE PRECISION array, dimension (LCS) The leading 2*K + MIN(K,Q) part of this array must contain the necessary information for modified hyperbolic rotations and the scalar factors of the Householder transformations computed by SLICOT Library routine MB02CX. LCS INTEGER The length of the array CS. LCS >= 2*K + MIN(K,Q).

DWORK DOUBLE PRECISION array, dimension (LDWORK) On exit, if INFO = 0, DWORK(1) returns the optimal value of LDWORK. On exit, if INFO = -16, DWORK(1) returns the minimum value of LDWORK. LDWORK INTEGER The length of the array DWORK. LDWORK >= MAX(1,N). For optimum performance LDWORK should be larger.

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

The Householder transformations and modified hyperbolic rotations computed by SLICOT Library routine MB02CX are applied to the corresponding parts of the matrices A and B.

None

**Program Text**

None

None

None