
STREXC(l) ) STREXC(l)
NAME
STREXC  reorder the real Schur factorization of a real matrix A = Q*T*Q**T, so that the
diagonal block of T with row index IFST is moved to row ILST
SYNOPSIS
SUBROUTINE STREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK, INFO )
CHARACTER COMPQ
INTEGER IFST, ILST, INFO, LDQ, LDT, N
REAL Q( LDQ, * ), T( LDT, * ), WORK( * )
PURPOSE
STREXC reorders the real Schur factorization of a real matrix A = Q*T*Q**T, so that the
diagonal block of T with row index IFST is moved to row ILST. The real Schur form T is
reordered by an orthogonal similarity transformation Z**T*T*Z, and optionally the matrix Q
of Schur vectors is updated by postmultiplying it with Z.
T must be in Schur canonical form (as returned by SHSEQR), that is, block upper triangular
with 1by1 and 2by2 diagonal blocks; each 2by2 diagonal block has its diagonal ele
ments equal and its offdiagonal elements of opposite sign.
ARGUMENTS
COMPQ (input) CHARACTER*1
= 'V': update the matrix Q of Schur vectors;
= 'N': do not update Q.
N (input) INTEGER
The order of the matrix T. N >= 0.
T (input/output) REAL array, dimension (LDT,N)
On entry, the upper quasitriangular matrix T, in Schur Schur canonical form. On
exit, the reordered upper quasitriangular matrix, again in Schur canonical form.
LDT (input) INTEGER
The leading dimension of the array T. LDT >= max(1,N).
Q (input/output) REAL array, dimension (LDQ,N)
On entry, if COMPQ = 'V', the matrix Q of Schur vectors. On exit, if COMPQ = 'V',
Q has been postmultiplied by the orthogonal transformation matrix Z which reorders
T. If COMPQ = 'N', Q is not referenced.
LDQ (input) INTEGER
The leading dimension of the array Q. LDQ >= max(1,N).
IFST (input/output) INTEGER
ILST (input/output) INTEGER Specify the reordering of the diagonal blocks of T.
The block with row index IFST is moved to row ILST, by a sequence of transposi
tions between adjacent blocks. On exit, if IFST pointed on entry to the second
row of a 2by2 block, it is changed to point to the first row; ILST always points
to the first row of the block in its final position (which may differ from its
input value by +1 or 1). 1 <= IFST <= N; 1 <= ILST <= N.
WORK (workspace) REAL array, dimension (N)
INFO (output) INTEGER
= 0: successful exit
< 0: if INFO = i, the ith argument had an illegal value
= 1: two adjacent blocks were too close to swap (the problem is very illcondi
tioned); T may have been partially reordered, and ILST points to the first row of
the current position of the block being moved.
LAPACK version 3.0 15 June 2000 STREXC(l) 
