STREXC(3)
okay bestie, welcome to STREXC(3) from the Library Functions Manual β itβs LAPACKβs real Schur reordering glow-up, and weβre gonna get you comfy with it π
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/strexc.f
β¨ SYNOPSIS β¨
π§ Functions/Subroutines π§
subroutine STREXC (compq, n, t, ldt, q, ldq, ifst, ilst, work, info)
STREXC
π Function/Subroutine Documentation π
subroutine STREXC (character compq, integer n, real, dimension( ldt, * ) t,
integer ldt, real, dimension( ldq, * ) q, integer ldq, integer ifst,
integer ilst, real, dimension( * ) work, integer info)
STREXC
π Purpose π
okay so the whole point: 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.
π Parameters π
COMPQβCOMPQ is CHARACTER*1= 'V': update the matrix Q of Schur vectors;= 'N': do not update Q.
NβN is INTEGERThe order of the matrixT.N >= 0. IfN == 0argumentsILSTandIFSTmay be any value.TβT is REAL array, dimension (LDT,N)On entry, the upper quasi-triangular matrixT, inSchur Schur canonical form(yes, the page says it twice π). On exit, the reordered upper quasi-triangular matrix, again in Schur canonical form.LDTβLDT is INTEGERThe leading dimension of the arrayT.LDT >= max(1,N).QβQ is REAL array, dimension (LDQ,N)On entry, ifCOMPQ = 'V', the matrixQof Schur vectors. On exit, ifCOMPQ = 'V',Qhas been postmultiplied by the orthogonal transformation matrixZwhich reordersT. IfCOMPQ = 'N',Qis not referenced.LDQβLDQ is INTEGERThe leading dimension of the arrayQ.LDQ >= 1, and ifCOMPQ = 'V',LDQ >= max(1,N).IFSTβIFST is INTEGERILSTβILST is INTEGERSpecify the reordering of the diagonal blocks ofT. The block with row indexIFSTis moved to rowILST, by a sequence of transpositions between adjacent blocks. On exit, ifIFSTpointed on entry to the second row of a 2-by-2 block, it is changed to point to the first row;ILSTalways 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.WORKβWORK is REAL array, dimension (N)INFOβINFO is INTEGER= 0: successful exit< 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.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 146 of file strexc.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
byeee bestie π this was LAPACK Version 3.12.0, source page /home/abui...RC/strexc.f(3), and the footer didnβt list a date β so consider this the timeless edition β¨π«Ά
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms