Purpose
To compute for a single-input single-output descriptor system, given by the system matrix [ D C ] [ B A - s*E ], with E upper triangular, a transformed system, (Q'*A*Z, Q'*E*Z, Q'*B, C*Z), via an orthogonal equivalence transformation, so that Q'*B has only the first element nonzero and Q'*E*Z remains upper triangular. The matrices have complex elements.Specification
SUBROUTINE TG01OB( JOBE, N, DCBA, LDDCBA, E, LDE, INFO ) C .. Scalar Arguments .. CHARACTER JOBE INTEGER INFO, LDDCBA, LDE, N C .. Array Arguments .. COMPLEX*16 DCBA(LDDCBA,*), E(LDE,*)Arguments
Mode Parameters
JOBE CHARACTER*1 Specifies whether E is an upper triangular or an identity matrix, as follows: = 'U': The matrix E is an upper triangular matrix; = 'I': The matrix E is assumed identity and is not given.Input/Output Parameters
N (input) INTEGER The dimension of the descriptor state vector; also the order of square matrices A and E, the number of rows of matrix B, and the number of columns of matrix C. N >= 0. DCBA (input/output) COMPLEX*16 array, dimension (LDDCBA,N+1) On entry, the leading (N+1)-by-(N+1) part of this array must contain the original system matrices A, B, C, and D, stored as follows [ D C ] [ B A ]. On exit, the leading (N+1)-by-(N+1) part of this array contains the transformed matrices C*Z, Q'*B, and Q'*A*Z, replacing C, B, and A. The scalar D is unchanged. LDDCBA INTEGER The leading dimension of the array DCBA. LDDCBA >= N+1. E (input/output) COMPLEX*16 array, dimension (LDE,*) On entry, if JOBE = 'U', the leading N-by-N upper triangular part of this array must contain the upper triangular part of the descriptor matrix E. The lower triangular part under the first subdiagonal is not referenced. On exit, if JOBE = 'U', the leading N-by-N upper triangular part of this array contains the upper triangular part of the transformed descriptor matrix, Q'*E*Z. If JOBE = 'I', this array is not referenced. LDE INTEGER The leading dimension of the array E. LDE >= MAX(1,N), if JOBE = 'U'; LDE >= 1, if JOBE = 'I'.Error Indicator
INFO INTEGER = 0: successful exit; < 0: if INFO = -i, the i-th argument had an illegal value.Method
Givens rotations are used to annihilate the last N-1 elements of B in reverse order, but preserve the form of E.Numerical Aspects
The algorithm is numerically backward stable.Further Comments
NoneExample
Program Text
NoneProgram Data
NoneProgram Results
None