/home/abui.../ctrsyl3.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’œ 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 β€” TRANA is CHARACTER*1 and it picks the option op(A):
    • = 'N': op(A) = A (No transpose)
    • = 'C': op(A) = A**H (Conjugate transpose)
  • TRANB β€” TRANB is CHARACTER*1 and it picks the option op(B):
    • = 'N': op(B) = B (No transpose)
    • = 'C': op(B) = B**H (Conjugate transpose)
  • ISGN β€” ISGN is INTEGER and it sets the sign in the equation, like the whole mood of the solve:
    • = +1: solve op(A)*X + X*op(B) = scale*C
    • = -1: solve op(A)*X - X*op(B) = scale*C
  • M β€” M is INTEGER. the order of matrix A, and the number of rows in matrices X and C. M >= 0.
  • N β€” N is INTEGER. the order of matrix B, and the number of columns in matrices X and C. N >= 0.
  • A β€” A is COMPLEX array, dimension (LDA,M). the upper triangular matrix A, she's triangular and she's proud πŸ’…
  • LDA β€” LDA is INTEGER. the leading dimension of the array A. LDA >= max(1,M).
  • B β€” B is COMPLEX array, dimension (LDB,N). the upper triangular matrix B, same energy.
  • LDB β€” LDB is INTEGER. the leading dimension of the array B. LDB >= max(1,N).
  • C β€” C is COMPLEX array, dimension (LDC,N). On entry, the M-by-N right hand side matrix C. On exit, C is overwritten by the solution matrix X. glow-up moment, she literally becomes X ✨
  • LDC β€” LDC is INTEGER. the leading dimension of the array C. LDC >= max(1,M).
  • SCALE β€” SCALE is REAL. the scale factor, scale, set <= 1 to avoid overflow in X. keep her humble or she overflows πŸ’€
  • SWORK β€” SWORK is REAL array, dimension (MAX(2, ROWS), MAX(1,COLS)). On exit, if INFO = 0, SWORK(1) returns the optimal value ROWS and SWORK(2) returns the optimal COLS.
  • LDSWORK β€” LDSWORK is INTEGER. LDSWORK >= MAX(2,ROWS), where ROWS = ((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 πŸ‘€
  • INFO β€” INFO is INTEGER:
    • = 0: successful exit 🌟
    • < 0: if INFO = -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