1DTREXC(1) LAPACK routine (version 3.2) DTREXC(1)
2
3
4
6 DTREXC - 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 DTREXC( 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 DOUBLE PRECISION Q( LDQ, * ), T( LDT, * ), WORK( * )
18
20 DTREXC 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 DHSEQR), 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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) DOUBLE PRECISION 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 DTREXC(1)