1STREXC(1) LAPACK routine (version 3.2) STREXC(1)
2
3
4
6 STREXC - reorders the real Schur factorization of a real matrix A =
7 Q*T*Q**T, so that the diagonal block of T with row index IFST is moved
8 to row ILST
9
11 SUBROUTINE STREXC( COMPQ, N, T, LDT, Q, LDQ, IFST, ILST, WORK, INFO )
12
13 CHARACTER COMPQ
14
15 INTEGER IFST, ILST, INFO, LDQ, LDT, N
16
17 REAL Q( LDQ, * ), T( LDT, * ), WORK( * )
18
20 STREXC reorders the real Schur factorization of a real matrix A =
21 Q*T*Q**T, so that the diagonal block of T with row index IFST is moved
22 to row ILST. The real Schur form T is reordered by an orthogonal simi‐
23 larity transformation Z**T*T*Z, and optionally the matrix Q of Schur
24 vectors is updated by postmultiplying it with Z.
25 T must be in Schur canonical form (as returned by SHSEQR), that is,
26 block upper triangular with 1-by-1 and 2-by-2 diagonal blocks; each
27 2-by-2 diagonal block has its diagonal elements equal and its off-diag‐
28 onal elements of opposite sign.
29
31 COMPQ (input) CHARACTER*1
32 = 'V': update the matrix Q of Schur vectors;
33 = 'N': do not update Q.
34
35 N (input) INTEGER
36 The order of the matrix T. N >= 0.
37
38 T (input/output) REAL array, dimension (LDT,N)
39 On entry, the upper quasi-triangular matrix T, in Schur Schur
40 canonical form. On exit, the reordered upper quasi-triangular
41 matrix, again in Schur canonical form.
42
43 LDT (input) INTEGER
44 The leading dimension of the array T. LDT >= max(1,N).
45
46 Q (input/output) REAL array, dimension (LDQ,N)
47 On entry, if COMPQ = 'V', the matrix Q of Schur vectors. On
48 exit, if COMPQ = 'V', Q has been postmultiplied by the orthogo‐
49 nal transformation matrix Z which reorders T. If COMPQ = 'N',
50 Q is not referenced.
51
52 LDQ (input) INTEGER
53 The leading dimension of the array Q. LDQ >= max(1,N).
54
55 IFST (input/output) INTEGER
56 ILST (input/output) INTEGER Specify the reordering of the
57 diagonal blocks of T. The block with row index IFST is moved
58 to row ILST, by a sequence of transpositions between adjacent
59 blocks. On exit, if IFST pointed on entry to the second row of
60 a 2-by-2 block, it is changed to point to the first row; ILST
61 always points to the first row of the block in its final posi‐
62 tion (which may differ from its input value by +1 or -1). 1 <=
63 IFST <= N; 1 <= ILST <= N.
64
65 WORK (workspace) REAL array, dimension (N)
66
67 INFO (output) INTEGER
68 = 0: successful exit
69 < 0: if INFO = -i, the i-th argument had an illegal value
70 = 1: two adjacent blocks were too close to swap (the problem
71 is very ill-conditioned); T may have been partially reordered,
72 and ILST points to the first row of the current position of the
73 block being moved.
74
75
76
77 LAPACK routine (version 3.2) November 2008 STREXC(1)