DTGEXC(3)
β¨ DTGEXC(3) β Library Functions Manual β¨
okay bestie, welcome to the DTGEXC page π this is LAPACKβs little reordering queen: she moves diagonal blocks in a generalized real Schur decomposition and updates the transformation matrices if you ask nicely. The manual name is Library Functions Manual, and weβre about to go through every flag, constraint, and vibe check. No cap, nothing skipped. π«Ά
π NAME π
The NAME on this page is literally this file path β yes, bestie, itβs giving βwho put the source path in the NAME section?β energy:
/home/abuild/rpmbuild/BUILD/lapack-
static-3.12.0-build/lapack-3.12.0/SRC/dtgexc.f
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine DTGEXC (wantq, wantz, n, a, lda, b, ldb, q, ldq, z, ldz,
ifst, ilst, work, lwork, info)
DTGEXC
π¦ Function/Subroutine Documentation π¦
Full signature, character for character:
subroutine DTGEXC (logical wantq, logical wantz, integer n, double
precision, dimension( lda, * ) a, integer lda, double precision,
dimension( ldb, * ) b, integer ldb, double precision, dimension( ldq, *
) q, integer ldq, double precision, dimension( ldz, * ) z, integer ldz,
integer ifst, integer ilst, double precision, dimension( * ) work,
integer lwork, integer info)
DTGEXC
β¨ Purpose β¨
okay so DTGEXC reorders the generalized real Schur decomposition of a real matrix pair (A,B) using an orthogonal equivalence transformation:
(A, B) = Q * (A, B) * Z**T,
so that the diagonal block of (A, B) with row index IFST is moved to row ILST. π«
(A, B) must be in generalized real Schur canonical form (as returned by DGGES), i.e. A is block upper triangular with 1-by-1 and 2-by-2 diagonal blocks. B is upper triangular. π«Ά
Optionally, the matrices Q and Z of generalized Schur vectors are updated:
Q(in) * A(in) * Z(in)**T = Q(out) * A(out) * Z(out)**T
Q(in) * B(in) * Z(in)**T = Q(out) * B(out) * Z(out)**T
π«Ά Parameters π«Ά
WANTQβWANTQisLOGICAL..TRUE.: update the left transformation matrixQ;.FALSE.: do not updateQ. Itβs literally the βdo I touch Q?β switch. πWANTZβWANTZisLOGICAL..TRUE.: update the right transformation matrixZ;.FALSE.: do not updateZ. Same energy for Z, bestie. β¨NβNisINTEGER. The order of the matricesAandB.N >= 0. No negative girlies allowed. πAβAisDOUBLE PRECISION array, dimension (LDA,N). On entry, the matrixAin generalized real Schur canonical form. On exit, the updated matrixA, again in generalized real Schur canonical form. π¦LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N). Respect the leading dimension, periodt. πΈBβBisDOUBLE PRECISION array, dimension (LDB,N). On entry, the matrixBin generalized real Schur canonical form(A,B). On exit, the updated matrixB, again in generalized real Schur canonical form(A,B). π§LDBβLDBisINTEGER. The leading dimension of the arrayB.LDB >= max(1,N). πQβQisDOUBLE PRECISION array, dimension (LDQ,N). On entry, ifWANTQ = .TRUE., the orthogonal matrixQ. On exit, the updated matrixQ. IfWANTQ = .FALSE.,Qis not referenced. πLDQβLDQisINTEGER. The leading dimension of the arrayQ.LDQ >= 1. IfWANTQ = .TRUE.,LDQ >= N. πZβZisDOUBLE PRECISION array, dimension (LDZ,N). On entry, ifWANTZ = .TRUE., the orthogonal matrixZ. On exit, the updated matrixZ. IfWANTZ = .FALSE.,Zis not referenced. π¦LDZβLDZisINTEGER. The leading dimension of the arrayZ.LDZ >= 1. IfWANTZ = .TRUE.,LDZ >= N. πIFSTβIFSTisINTEGER. Thatβs it β the rest of the reordering lore is underILSTbelow. πILSTβILSTisINTEGER. Specify the reordering of the diagonal blocks of(A, B). The block with row indexIFSTis moved to rowILST, by a sequence of swapping 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+1or-1).1 <= IFST, ILST <= N. π₯WORKβWORKisDOUBLE PRECISION array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. β¨LWORKβLWORKisINTEGER. The dimension of the arrayWORK.LWORK >= 1whenN <= 1, otherwiseLWORK >= 4*N + 16. IfLWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. π«ΆINFOβINFOisINTEGER.=0: successful exit.<0: ifINFO = -i, the i-th argument had an illegal value.=1: The transformed matrix pair(A, B)would be too far from generalized Schur form; the problem is ill-conditioned.(A, B)may have been partially reordered, andILSTpoints 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.
πΈ Contributors: πΈ
Bo Kagstrom and Peter Poromaa, Department of Computing Science, Umea University, S-901 87 Umea, Sweden.
π References: π
[1] B. Kagstrom; A Direct Method for Reordering Eigenvalues in the Generalized Real Schur Form of a Regular Matrix Pair (A, B), in M.S. Moonen et al (eds), Linear Algebra for Large Scale and Real-Time Applications, Kluwer Academic Publ. 1993, pp 195-218.
Definition at line 218 of file dtgexc.f.
π€ Author π€
Generated automatically by Doxygen for LAPACK from the source code.
π Thatβs the whole page, bestie β LAPACK, Version 3.12.0, and the footer path /home/abui...RC/dtgexc.f(3). Stay slay, stay orthogonal, and may all your diagonal blocks land exactly where you want them. π
β¨
π¦ 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