Purpose
=======
DTREXC 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 DHSEQR), 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.
Namespace: DotNumerics.LinearAlgebra.CSLapackAssembly: DWSIM.MathOps.DotNumerics (in DWSIM.MathOps.DotNumerics.dll) Version: 1.0.0.0 (1.0.0.0)
Syntax public void Run(
string COMPQ,
int N,
ref double[] T,
int offset_t,
int LDT,
ref double[] Q,
int offset_q,
int LDQ,
ref int IFST,
ref int ILST,
ref double[] WORK,
int offset_work,
ref int INFO
)
Public Sub Run (
COMPQ As String,
N As Integer,
ByRef T As Double(),
offset_t As Integer,
LDT As Integer,
ByRef Q As Double(),
offset_q As Integer,
LDQ As Integer,
ByRef IFST As Integer,
ByRef ILST As Integer,
ByRef WORK As Double(),
offset_work As Integer,
ByRef INFO As Integer
)
Request Example
View SourceParameters
- COMPQ String
-
(input) CHARACTER*1
= 'V': update the matrix Q of Schur vectors;
= 'N': do not update Q.
- N Int32
-
(input) INTEGER
The order of the matrix T. N .GE. 0.
- T Double
-
must be in Schur canonical form (as returned by DHSEQR), that is,
- offset_t Int32
-
- LDT Int32
-
(input) INTEGER
The leading dimension of the array T. LDT .GE. max(1,N).
- Q Double
-
(input/output) DOUBLE PRECISION 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.
- offset_q Int32
-
- LDQ Int32
-
(input) INTEGER
The leading dimension of the array Q. LDQ .GE. max(1,N).
- IFST Int32
-
(input/output) INTEGER
- ILST Int32
-
(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 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 .LE. IFST .LE. N; 1 .LE. ILST .LE. N.
- WORK Double
-
(workspace) DOUBLE PRECISION array, dimension (N)
- offset_work Int32
-
- INFO Int32
-
(output) INTEGER
= 0: successful exit
.LT. 0: if INFO = -i, the i-th argument had an illegal value
= 1: two adjacent blocks were too close to swap (the problem
is very ill-conditioned); T may have been partially
reordered, and ILST points to the first row of the
current position of the block being moved.
See Also