strexc
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
SUBROUTINE STREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK, INFO)
CHARACTER * 1 COMPQ
INTEGER N, LDT, LDQ, IFST, ILST, INFO
REAL T(LDT,*), Q(LDQ,*), WORK(*)
SUBROUTINE STREXC_64( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK,
* INFO)
CHARACTER * 1 COMPQ
INTEGER*8 N, LDT, LDQ, IFST, ILST, INFO
REAL T(LDT,*), Q(LDQ,*), WORK(*)
SUBROUTINE TREXC( COMPQ, N, T, [LDT], Q, [LDQ], IFST, ILST, [WORK],
* [INFO])
CHARACTER(LEN=1) :: COMPQ
INTEGER :: N, LDT, LDQ, IFST, ILST, INFO
REAL, DIMENSION(:) :: WORK
REAL, DIMENSION(:,:) :: T, Q
SUBROUTINE TREXC_64( COMPQ, N, T, [LDT], Q, [LDQ], IFST, ILST, [WORK],
* [INFO])
CHARACTER(LEN=1) :: COMPQ
INTEGER(8) :: N, LDT, LDQ, IFST, ILST, INFO
REAL, DIMENSION(:) :: WORK
REAL, DIMENSION(:,:) :: T, Q
#include <sunperf.h>
void strexc(char compq, int n, float *t, int ldt, float *q, int ldq, int *ifst, int *ilst, int *info);
void strexc_64(char compq, long n, float *t, long ldt, float *q, long ldq, long *ifst, long *ilst, long *info);
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 1-by-1 and 2-by-2 diagonal blocks; each
2-by-2 diagonal block has its diagonal elements equal and its
off-diagonal elements of opposite sign.
-
* COMPQ (input)
-
-
* N (input)
-
The order of the matrix T. N >= 0.
-
* T (input/output)
-
On entry, the upper quasi-triangular matrix T, in Schur
Schur canonical form.
On exit, the reordered upper quasi-triangular matrix, again
in Schur canonical form.
-
* LDT (input)
-
The leading dimension of the array T. LDT >= max(1,N).
-
* Q (input)
-
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)
-
The leading dimension of the array Q. LDQ >= max(1,N).
-
* IFST (input/output)
-
Specify the reordering of the diagonal blocks of T.
The block with row index IFST is moved to row ILST, by a
sequence of transpositions between adjacent blocks.
On exit, if IFST pointed on entry to the second row of a
2-by-2 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.
-
* ILST (input/output)
-
See the description of IFST.
-
* WORK (workspace)
-
dimension(N)
-
* INFO (output)
-