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