SRC/ztgsy2.f(3)
π SRC/ztgsy2.f(3) β Library Functions Manual π
β¨ NAME β¨
SRC/ztgsy2.f β okay bestie, thatβs literally the whole name, and itβs giving βthe file is the momentβ π
π SYNOPSIS π
Functions/Subroutines
subroutine ztgsy2 (trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, e,
lde, f, ldf, scale, rdsum, rdscal, info)
ZTGSY2 solves the generalized Sylvester equation (unblocked algorithm). Slay, math icon behavior π₯
π¦ Function/Subroutine Documentation π¦
subroutine ztgsy2 (character trans, integer ijob, integer m, integer n,
complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension(
ldb, * ) b, integer ldb, complex*16, dimension( ldc, * ) c, integer ldc,
complex*16, dimension( ldd, * ) d, integer ldd, complex*16, dimension(
lde, * ) e, integer lde, complex*16, dimension( ldf, * ) f, integer ldf,
double precision scale, double precision rdsum, double precision rdscal,
integer info)
ZTGSY2 solves the generalized Sylvester equation (unblocked algorithm). Again, because repetition is mother, and this subroutine is the main character π
π Purpose π
Okay so hereβs the tea: ZTGSY2 solves the generalized Sylvester equation
A * R - L * B = scale * C (1)
D * R - L * E = scale * F
using Level 1 and 2 BLAS, 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. A, B, D and E are upper triangular (i.e., (A,D) and (B,E) in generalized Schur form). Ngl, this is giving βI know my BLASβ energy πβ¨
The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output scaling factor chosen to avoid overflow. She said βno spillageβ π
In matrix notation solving equation (1) corresponds to solve Zx = scale * b, where Z is defined as
Z = [ kron(In, A) -kron(B**H, Im) ] (2)
[ kron(In, D) -kron(E**H, Im) ],
Ik is the identity matrix of size k and X**H is the conjugate transpose of X. kron(X, Y) is the Kronecker product between the matrices X and Y. Honestly? Iconic notation behavior π«Ά
If TRANS = 'C', y in the conjugate transposed system Z**H*y = scale*b is solved for, which is equivalent to solve for R and L in
A**H * R + D**H * L = scale * C (3)
R * B**H + L * E**H = scale * -F
This case is used to compute an estimate of Dif[(A, D), (B, E)] = = sigma_min(Z) using reverse communication with ZLACON. Yes bestie, thatβs a double equals in the source lore, we donβt fix, we observe π
ZTGSY2 also (IJOB >= 1) contributes to the computation in ZTGSYL of an upper bound on the separation between to matrix pairs. Then the input (A, D), (B, E) are sub-pencils of two matrix pairs in ZTGSYL. The word βtoβ is right there in the original, Iβm not gonna explain her choices π
π 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: A contribution from this subsystem to a Frobenius norm-based estimate of the separation between two matrix pairs is computed. (look ahead strategy is used).=2: A contribution from this subsystem to a Frobenius norm-based estimate of the separation between two matrix pairs is computed. (DGECON on sub-systems is used.)- Not referenced if
TRANS = 'T'.
MβM is INTEGER- On entry,
Mspecifies the order ofAandD, and the row dimension ofC,F,RandL.
- On entry,
NβN is INTEGER- On entry,
Nspecifies the order ofBandE, and the column dimension ofC,F,RandL.
- On entry,
AβA is COMPLEX*16 array, dimension (LDA, M)- On entry,
Acontains an upper triangular matrix.
- On entry,
LDAβLDA is INTEGER- The leading dimension of the matrix
A.LDA >= max(1, M).
- The leading dimension of the matrix
BβB is COMPLEX*16 array, dimension (LDB, N)- On entry,
Bcontains an upper triangular matrix.
- On entry,
LDBβLDB is INTEGER- The leading dimension of the matrix
B.LDB >= max(1, N).
- The leading dimension of the matrix
CβC is COMPLEX*16 array, dimension (LDC, N)- On entry,
Ccontains the right-hand-side of the first matrix equation in (1). - On exit, if
IJOB = 0,Chas been overwritten by the solutionR.
- On entry,
LDCβLDC is INTEGER- The leading dimension of the matrix
C.LDC >= max(1, M).
- The leading dimension of the matrix
DβD is COMPLEX*16 array, dimension (LDD, M)- On entry,
Dcontains an upper triangular matrix.
- On entry,
LDDβLDD is INTEGER- The leading dimension of the matrix
D.LDD >= max(1, M).
- The leading dimension of the matrix
EβE is COMPLEX*16 array, dimension (LDE, N)- On entry,
Econtains an upper triangular matrix.
- On entry,
LDEβLDE is INTEGER- The leading dimension of the matrix
E.LDE >= max(1, N).
- The leading dimension of the matrix
FβF is COMPLEX*16 array, dimension (LDF, N)- On entry,
Fcontains the right-hand-side of the second matrix equation in (1). - On exit, if
IJOB = 0,Fhas been overwritten by the solutionL.
- On entry,
LDFβLDF is INTEGER- The leading dimension of the matrix
F.LDF >= max(1, M). Yep,M, exactly as written β not me editing, bestie π
- The leading dimension of the matrix
SCALEβSCALE is DOUBLE PRECISION- On exit,
0 <= SCALE <= 1. If0 < SCALE < 1, the solutionsRandL(CandFon entry) will hold the solutions to a slightly perturbed system but the input matricesA,B,DandEhave not been changed. IfSCALE = 0,RandLwill hold the solutions to the homogeneous system withC = F = 0. Normally,SCALE = 1.
- On exit,
RDSUMβRDSUM is DOUBLE PRECISION- On entry, the sum of squares of computed contributions to the Dif-estimate under computation by
ZTGSYL, where the scaling factorRDSCAL(see below) has been factored out. - On exit, the corresponding sum of squares updated with the contributions from the current sub-system.
- If
TRANS = 'T'RDSUMis not touched. - NOTE:
RDSUMonly makes sense whenZTGSY2is called byZTGSYL.
- On entry, the sum of squares of computed contributions to the Dif-estimate under computation by
RDSCALβRDSCAL is DOUBLE PRECISION- On entry, scaling factor used to prevent overflow in
RDSUM. - On exit,
RDSCALis updated w.r.t. the current contributions inRDSUM. - If
TRANS = 'T',RDSCALis not touched. - NOTE:
RDSCALonly makes sense whenZTGSY2is called byZTGSYL.
- On entry, scaling factor used to prevent overflow in
INFOβINFO is INTEGER- On exit, if
INFOis set to=0: Successful exit<0: IfINFO = -i, input argument numberiis illegal.>0: The matrix pairs(A, D)and(B, E)have common or very close eigenvalues.
- On exit, if
π 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.
Definition at line 256 of file ztgsy2.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
π Thatβs the whole page, bestie! Source: SRC/ztgsy2.f(3), LAPACK Version 3.12.0. Mwah πβ¨
π¦ 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