SRC/ctgsy2.f(3)
β¨ NAME β¨
SRC/ctgsy2.f β bestie, welcome to the LAPACK Library Functions Manual page for this file π
πΈ SYNOPSIS πΈ
π§ Functions/Subroutines π§
subroutine ctgsy2 (trans, ijob, m, n, a, lda, b, ldb, c, ldc, d, ldd, e, lde, f, ldf, scale, rdsum, rdscal, info)β CTGSY2 solves the generalized Sylvester equation (unblocked algorithm).
π¦ Function/Subroutine Documentation π¦
subroutine ctgsy2 (character trans, integer ijob, integer m, integer n, complex, dimension( lda, * ) a, integer lda, complex, dimension( ldb, * ) b, integer ldb, complex, dimension( ldc, * ) c, integer ldc, complex, dimension( ldd, * ) d, integer ldd, complex, dimension( lde, * ) e, integer lde, complex, dimension( ldf, * ) f, integer ldf, real scale, real rdsum, real rdscal, integer info)
CTGSY2 solves the generalized Sylvester equation (unblocked algorithm).
π Purpose π
Okay so CTGSY2 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).
The solution (R, L) overwrites (C, F). 0 <= SCALE <= 1 is an output scaling factor chosen to avoid overflow.
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 transpose of X. kron(X, Y) is the Kronecker product between the matrices X and Y.
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 CLACON.
CTGSY2 also (IJOB >= 1) contributes to the computation in CTGSYL of an upper bound on the separation between two matrix pairs. Then the input (A, D), (B, E) are sub-pencils of two matrix pairs in CTGSYL.
π 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. (SGECON 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.NβN is INTEGER. On entry,Nspecifies the order ofBandE, and the column dimension ofC,F,RandL.AβA is COMPLEX array, dimension (LDA, M). On entry,Acontains an upper triangular matrix.LDAβLDA is INTEGER. The leading dimension of the matrixA.LDA >= max(1, M).BβB is COMPLEX array, dimension (LDB, N). On entry,Bcontains an upper triangular matrix.LDBβLDB is INTEGER. The leading dimension of the matrixB.LDB >= max(1, N).CβC is COMPLEX array, dimension (LDC, N). On entry,Ccontains the right-hand-side of the first matrix equation in (1). On exit, ifIJOB = 0,Chas been overwritten by the solutionR.LDCβLDC is INTEGER. The leading dimension of the matrixC.LDC >= max(1, M).DβD is COMPLEX array, dimension (LDD, M). On entry,Dcontains an upper triangular matrix.LDDβLDD is INTEGER. The leading dimension of the matrixD.LDD >= max(1, M).EβE is COMPLEX array, dimension (LDE, N). On entry,Econtains an upper triangular matrix.LDEβLDE is INTEGER. The leading dimension of the matrixE.LDE >= max(1, N).FβF is COMPLEX array, dimension (LDF, N). On entry,Fcontains the right-hand-side of the second matrix equation in (1). On exit, ifIJOB = 0,Fhas been overwritten by the solutionL.LDFβLDF is INTEGER. The leading dimension of the matrixF.LDF >= max(1, M).SCALEβSCALE is REAL. 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.RDSUMβRDSUM is REAL. On entry, the sum of squares of computed contributions to the Dif-estimate under computation byCTGSYL, 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. IfTRANS = 'T'RDSUMis not touched. NOTE:RDSUMonly makes sense whenCTGSY2is called byCTGSYL.RDSCALβRDSCAL is REAL. On entry, scaling factor used to prevent overflow inRDSUM. On exit,RDSCALis updated w.r.t. the current contributions inRDSUM. IfTRANS = 'T',RDSCALis not touched. NOTE:RDSCALonly makes sense whenCTGSY2is called byCTGSYL.INFOβINFO is INTEGER. On exit, ifINFOis 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.
π 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 ctgsy2.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
xoxo, LAPACK Version 3.12.0 π β source/version footer points at SRC/ctgsy2.f(3). No separate date is shown on the footer, so Iβm not making one up ππ«Ά
π¦ 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