SRC/stgsyl.f(3)
β¨ SRC/stgsyl.f β from the LAPACK Library Functions Manual β¨
okay so bestie, buckle up, because this one is a whole level-3 BLAS moment π
πΈ NAME πΈ
SRC/stgsyl.f β like, the file itself, that's the name, that's the vibe π
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine stgsyl (trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, e,
lde, f, ldf, scale, dif, work, lwork, iwork, info)
STGSYL β say it with me, icon behavior π
π Function/Subroutine Documentation π
subroutine stgsyl (character trans, integer ijob, integer m, integer n,
real, dimension( lda, * ) a, integer lda, real, dimension( ldb, * ) b,
integer ldb, real, dimension( ldc, * ) c, integer ldc, real, dimension(
ldd, * ) d, integer ldd, real, dimension( lde, * ) e, integer lde, real,
dimension( ldf, * ) f, integer ldf, real scale, real dif, real,
dimension( * ) work, integer lwork, integer, dimension( * ) iwork,
integer info)
STGSYL π«Ά
π Purpose π
okay so here's the tea, straight from the !> block, no cap:
STGSYL solves the generalized Sylvester equation:
A * R - L * B = scale * C (1)
D * R - L * E = scale * F
where R and L are unknown m-by-n matrices, (A, D), (B, E) and (C, F) are given matrix pairs of size m-by-m, n-by-n and m-by-n, respectively, with real entries. (A, D) and (B, E) must be in generalized (real) Schur canonical form, i.e. A, B are upper quasi triangular and D, E are upper triangular. literally the glow-up requirements β¨
The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output scaling factor chosen to avoid overflow. π¨ (yes, overflow is the enemy, respect the SCALE)
In matrix notation (1) is equivalent to solve Zx = scale b, where Z is defined as
Z = [ kron(In, A) -kron(B**T, Im) ] (2)
[ kron(In, D) -kron(E**T, Im) ].
Here Ik is the identity matrix of size k and X**T is the transpose of X. kron(X, Y) is the Kronecker product between the matrices X and Y. (kron is giving main character energy fr fr π)
If TRANS = 'T', STGSYL solves the transposed system Z**T*y = scale*b, which is equivalent to solve for R and L in
A**T * R + D**T * L = scale * C (3)
R * B**T + L * E**T = scale * -F
This case (TRANS = 'T') is used to compute an one-norm-based estimate of Dif[(A,D), (B,E)], the separation between the matrix pairs (A,D) and (B,E), using SLACON. π«
If IJOB >= 1, STGSYL computes a Frobenius norm-based estimate of Dif[(A,D),(B,E)]. That is, the reciprocal of a lower bound on the reciprocal of the smallest singular value of Z. See [1-2] for more information. iykyk π
This is a level 3 BLAS algorithm. π₯ absolute queen
π Parameters π
TRANSβTRANS is CHARACTER*1= 'N': solve the generalized Sylvester equation (1).= 'T': solve the'transposed'system (3).
IJOBβIJOB is INTEGER. Specifies what kind of functionality to be performed.= 0: solve (1) only.= 1: The functionality of0and3.= 2: The functionality of0and4.= 3: Only an estimate ofDif[(A,D), (B,E)]is computed. (look ahead strategyIJOB = 1is used).= 4: Only an estimate ofDif[(A,D), (B,E)]is computed. (SGECONon sub-systems is used).- Not referenced if
TRANS = 'T'. π©
MβM is INTEGER. The order of the matricesAandD, and the row dimension of the matricesC,F,RandL.NβN is INTEGER. The order of the matricesBandE, and the column dimension of the matricesC,F,RandL.AβA is REAL array, dimension (LDA, M). The upper quasi triangular matrixA.LDAβLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1, M).BβB is REAL array, dimension (LDB, N). The upper quasi triangular matrixB.LDBβLDB is INTEGER. The leading dimension of the arrayB.LDB >= max(1, N).CβC is REAL array, dimension (LDC, N). On entry,Ccontains the right-hand-side of the first matrix equation in (1) or (3). On exit, ifIJOB = 0, 1 or 2,Chas been overwritten by the solutionR. IfIJOB = 3 or 4andTRANS = 'N',CholdsR, the solution achieved during the computation of the Dif-estimate. πLDCβLDC is INTEGER. The leading dimension of the arrayC.LDC >= max(1, M).DβD is REAL array, dimension (LDD, M). The upper triangular matrixD.LDDβLDD is INTEGER. The leading dimension of the arrayD.LDD >= max(1, M).EβE is REAL array, dimension (LDE, N). The upper triangular matrixE.LDEβLDE is INTEGER. The leading dimension of the arrayE.LDE >= max(1, N).FβF is REAL array, dimension (LDF, N). On entry,Fcontains the right-hand-side of the second matrix equation in (1) or (3). On exit, ifIJOB = 0, 1 or 2,Fhas been overwritten by the solutionL. IfIJOB = 3 or 4andTRANS = 'N',FholdsL, the solution achieved during the computation of the Dif-estimate. πLDFβLDF is INTEGER. The leading dimension of the arrayF.LDF >= max(1, M).DIFβDIF is REAL. On exitDIFis the reciprocal of a lower bound of the reciprocal of the Dif-function, i.e.DIFis an upper bound ofDif[(A,D), (B,E)] = sigma_min(Z), whereZas in (2). IFIJOB = 0orTRANS = 'T',DIFis not touched. π (hands off, bestie)SCALEβSCALE is REAL. On exitSCALEis the scaling factor in (1) or (3). If0 < SCALE < 1,CandFhold the solutionsRandL, resp., to a slightly perturbed system but the input matricesA,B,DandEhave not been changed. IfSCALE = 0,CandFhold the solutionsRandL, respectively, to the homogeneous system withC = F = 0. Normally,SCALE = 1.WORKβWORK is REAL array, dimension (MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. βLWORKβLWORK is INTEGER. The dimension of the arrayWORK.LWORK > = 1. IfIJOB = 1 or 2andTRANS = 'N',LWORK >= max(1,2*M*N).- If
LWORK = -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. (the-1trick, classic π)
- If
IWORKβIWORK is INTEGER array, dimension (M+N+6).INFOβINFO is INTEGER=0: successful exit<0: IfINFO = -i, the i-th argument had an illegal value.>0:(A, D)and(B, E)have common or close eigenvalues. π
π§ 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. π«Ά legends, honestly
π References: π
- [1] B. Kagstrom and P. Poromaa, LAPACK-Style Algorithms and Software for Solving the Generalized Sylvester Equation and Estimating the Separation between Regular Matrix Pairs, Report UMINF - 93.23, Department of Computing Science, Umea University, S-901 87 Umea, Sweden, December 1993, Revised April 1994, Also as LAPACK Working Note 75. To appear in ACM Trans. on Math. Software, Vol 22, No 1, 1996.
- [2] B. Kagstrom, A Perturbation Analysis of the Generalized Sylvester Equation (AR - LB, DR - LE ) = (C, F), SIAM J. Matrix Anal. Appl., 15(4):1045-1060, 1994
- [3] B. Kagstrom and L. Westin, Generalized Schur Methods with Condition Estimators for Solving the Generalized Sylvester Equation, IEEE Transactions on Automatic Control, Vol. 34, No. 7, July 1989, pp 745-751.
citation game is unmatched, she read all three, she's not kidding πβ¨
β Definition β
Definition at line 296 of file stgsyl.f.
π Author (the meta one) π
Generated automatically by Doxygen for LAPACK from the source code. (not a human, just vibes π€)
and that's the whole page bestie, no notes π
slay β this cutie came to you courtesy of LAPACK, Version 3.12.0, and the file formally known as SRC/stgsyl.f(3) ππ¦β¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms