DTGSYL(3)
π¦ DTGSYL β the generalized Sylvester equation solver, bestie edition π¦
okay so real talk: this page is from dtgsyl.f, and the whole file lives at
/home/abuild/rpmbuild/BUILD/lapack-
static-3.12.0-build/lapack-3.12.0/SRC/dtgsyl.f
that's the NAME section, that's literally it, the name is the path, we love a self-titled queen π
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine DTGSYL (trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, e,
lde, f, ldf, scale, dif, work, lwork, iwork, info)
DTGSYL
like, that's the whole vibe right there. twenty-two arguments. no cap. π
π Function/Subroutine Documentation π
subroutine DTGSYL (character trans, integer ijob, integer m, integer n,
double precision, dimension( lda, * ) a, integer lda, double precision,
dimension( ldb, * ) b, integer ldb, double precision, dimension( ldc, *
) c, integer ldc, double precision, dimension( ldd, * ) d, integer ldd,
double precision, dimension( lde, * ) e, integer lde, double precision,
dimension( ldf, * ) f, integer ldf, double precision scale, double
precision dif, double precision, dimension( * ) work, integer lwork,
integer, dimension( * ) iwork, integer info)
DTGSYL
π Purpose π
okay bestie, deep breath, because DTGSYL is that girl. she solves the generalized Sylvester equation:
A * R - L * B = scale * C (1)
D * R - L * E = scale * F
where R and L are the unknown m-by-n matrices, and (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. honestly? iconic.
(A, D) and (B, E) must be in generalized (real) Schur canonical form β that means A, B are upper quasi triangular and D, E are upper triangular. no exceptions, that's the dress code π«Ά
the solution (R, L) overwrites (C, F). and 0 <= SCALE <= 1 is an output scaling factor chosen to avoid overflow. she's protective like that.
in matrix notation (1) is equivalent to solving 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. lowkey the Kronecker product is the main character of this whole equation ngl.
if TRANS = 'T', DTGSYL solves the transposed system Z**T*y = scale*b, which is equivalent to solving 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 DLACON. teamwork makes the dream work β¨
if IJOB >= 1, DTGSYL 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 info, the receipts are in the references π
and finally β this is a level 3 BLAS algorithm. yes ma'am. π₯
πΈ 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 of 0 and 3.= 2: The functionality of 0 and 4.= 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. (DGECONon sub-systems is used ).- Not referenced if
TRANS = 'T'. like, at all. she's not even looking at it π
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 DOUBLE PRECISION 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 DOUBLE PRECISION 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 DOUBLE PRECISION array, dimension (LDC, N).- On entry,
Ccontains the right-hand-side of the first matrix equation in (1) or (3). - On exit, if
IJOB = 0, 1or2,Chas been overwritten by the solutionR. ifIJOB = 3or4andTRANS = 'N',CholdsR, the solution achieved during the computation of the Dif-estimate.
- On entry,
LDCβLDC is INTEGER. the leading dimension of the arrayC.LDC >= max(1, M).DβD is DOUBLE PRECISION 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 DOUBLE PRECISION 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 DOUBLE PRECISION array, dimension (LDF, N).- On entry,
Fcontains the right-hand-side of the second matrix equation in (1) or (3). - On exit, if
IJOB = 0, 1or2,Fhas been overwritten by the solutionL. ifIJOB = 3or4andTRANS = 'N',FholdsL, the solution achieved during the computation of the Dif-estimate.
- On entry,
LDFβLDF is INTEGER. the leading dimension of the arrayF.LDF >= max(1, M).DIFβDIF is DOUBLE PRECISION.- On exit
DIFis 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). - IF
IJOB = 0orTRANS = 'T',DIFis not touched. hands off. don't perceive her π«£
- On exit
SCALEβSCALE is DOUBLE PRECISION.- On exit
SCALEis the scaling factor in (1) or (3). - If
0 < SCALE < 1,CandFhold the solutionsRandL, resp., to a slightly perturbed system but the input matricesA,B,DandEhave not been changed. (good, we'd never let her touch your inputs π) - If
SCALE = 0,CandFhold the solutionsRandL, respectively, to the homogeneous system withC = F = 0. - Normally,
SCALE = 1.
- On exit
WORKβWORK is DOUBLE PRECISION 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.- If
IJOB = 1or2andTRANS = '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. sneak peek mode, we stan a queen who shows you the size before committing π β¨
- If
IWORKβIWORK is INTEGER array, dimension (M+N+6).INFOβINFO is INTEGER. the gossip:=0: successful exit (slay)<0: IfINFO = -i, the i-th argument had an illegal value.>0:(A, D)and(B, E)have common or close eigenvalues. π¬ that's not a good sign bestie, that's literally the "there's overlap" text message
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
four institutions and they all showed up. group project but everyone actually did the work π
π§ Contributors: π§
Bo Kagstrom and Peter Poromaa, Department of Computing Science, Umea University, S-901 87 Umea, Sweden.
give them their flowers, fr fr π΅οΈ
π 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.
three whole papers, they really did the reading so we don't have to ππ
Definition at line 296 of file dtgsyl.f.
okay one lil warning to keep the whole vibe honest:TRANS = 'T'meansIJOBis not referenced andDIFis not touched β so don't go reading either of those and expecting tea that was never poured π
π SEE ALSO-ish / meta π
Author of this page: Generated automatically by Doxygen for LAPACK from the source code. yes, a robot wrote the original. she's got range.
and that's the whole page, bestie β written for LAPACK, Version 3.12.0, for the file at /home/abui...RC/dtgsyl.f(3). go forth and solve that generalized Sylvester equation, you absolute icon πβ¨π
π¦
π¦ 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