/home/abui.../ctrsyl3.f(3)
π ctrsyl3.f β LAPACK's block Sylvester solver, bestie edition
okay so this page lives in the Library Functions Manual, and the file it's documenting is literally:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/ctrsyl3.f
that's the whole NAME situation, no notes, just the path, and honestly? iconic minimalism. π
β¨ SYNOPSIS β¨
Functions/Subroutines π«Ά
subroutine CTRSYL3 (trana, tranb, isgn, m, n, a, lda, b, ldb, c, ldc,
scale, swork, ldswork, info)
CTRSYL3 β that's the girl. that's the whole subroutine. πΈ
π¦ Function/Subroutine Documentation π¦
subroutine CTRSYL3 (character trana, character tranb, integer isgn, integer
m, integer n, complex, dimension( lda, * ) a, integer lda, complex,
dimension( ldb, * ) b, integer ldb, complex, dimension( ldc, * ) c,
integer ldc, real scale, real, dimension( ldswork, * ) swork, integer
ldswork, integer info)
CTRSYL3 β¨
π Purpose π
!> !> CTRSYL3 solves the complex Sylvester matrix equation: !> !> op(A)*X + X*op(B) = scale*C or !> op(A)*X - X*op(B) = scale*C, !> !> where op(A) = A or A**H, and A and B are both upper triangular. A is !> M-by-M and B is N-by-N; the right hand side C and the solution X are !> M-by-N; and scale is an output scale factor, set <= 1 to avoid !> overflow in X. !> !> This is the block version of the algorithm. !>
okay so real talk β this thing solves the complex Sylvester matrix equation, both the plus version and the minus version, with op(A) being either A or A**H. A and B are both upper triangular (yes, both, that's the assignment π
). A is M-by-M, B is N-by-N, the right hand side C and the solution X are M-by-N, and scale is an output scale factor β set <= 1 so X doesn't overflow, periodt. And the vibe? this is the block version of the algorithm π₯
π Parameters π
TRANAβTRANAisCHARACTER*1and it picks the optionop(A):= 'N':op(A) = A(No transpose)= 'C':op(A) = A**H(Conjugate transpose)
TRANBβTRANBisCHARACTER*1and it picks the optionop(B):= 'N':op(B) = B(No transpose)= 'C':op(B) = B**H(Conjugate transpose)
ISGNβISGNisINTEGERand it sets the sign in the equation, like the whole mood of the solve:= +1: solveop(A)*X + X*op(B) = scale*C= -1: solveop(A)*X - X*op(B) = scale*C
MβMisINTEGER. the order of matrix A, and the number of rows in matrices X and C.M >= 0.NβNisINTEGER. the order of matrix B, and the number of columns in matrices X and C.N >= 0.AβAisCOMPLEXarray, dimension(LDA,M). the upper triangular matrix A, she's triangular and she's proud πLDAβLDAisINTEGER. the leading dimension of the array A.LDA >= max(1,M).BβBisCOMPLEXarray, dimension(LDB,N). the upper triangular matrix B, same energy.LDBβLDBisINTEGER. the leading dimension of the array B.LDB >= max(1,N).CβCisCOMPLEXarray, dimension(LDC,N). On entry, theM-by-Nright hand side matrix C. On exit, C is overwritten by the solution matrix X. glow-up moment, she literally becomes X β¨LDCβLDCisINTEGER. the leading dimension of the array C.LDC >= max(1,M).SCALEβSCALEisREAL. the scale factor,scale, set<= 1to avoid overflow in X. keep her humble or she overflows πSWORKβSWORKisREALarray, dimension(MAX(2, ROWS), MAX(1,COLS)). On exit, ifINFO = 0,SWORK(1)returns the optimal value ROWS andSWORK(2)returns the optimal COLS.LDSWORKβLDSWORKisINTEGER.LDSWORK >= MAX(2,ROWS), whereROWS = ((M + NB - 1) / NB + 1)and NB is the optimal block size.- If
LDSWORK = -1, then a workspace query is assumed; the routine only calculates the optimal dimensions of the SWORK matrix, returns these values as the first and second entry of the SWORK matrix, and no error message related LWORK is issued by XERBLA. so it's a lil peek, not a full commit, iykyk π
- If
INFOβINFOisINTEGER:= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value β rude of it honestly= 1: A and B have common or very close eigenvalues; perturbed values were used to solve the equation (but the matrices A and B are unchanged). > bestie heads up: this is the "it worked but the numbers got a lil spicy" case β the solve used perturbed values, but A and B themselves are untouched, no cap. π«Ά
Definition at line 154 of file ctrsyl3.f. π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. not a human, just doxygen doing her little thing π€π
and that's the page!! thank u for coming to my ted talk π§
LAPACK Β· Version 3.12.0 Β· ctrsyl3.f(3) β mwah, bye bestie ππ
π¦ 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