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

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

✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zsysv_aa_2stage.f β€” bestie, this is a page from the LAPACK Library Functions Manual and it's literally the whole path of one Fortran source file πŸ’… yes the entire path is the name, that's just how these pages roll, no notes.


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine ZSYSV_AA_2STAGE (uplo, n, nrhs, a, lda, tb, ltb, ipiv, ipiv2, b, ldb, work, lwork, info) β€” ZSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices 🌸

πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine ZSYSV_AA_2STAGE (character uplo, integer n, integer nrhs,
    complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( * )
    tb, integer ltb, integer, dimension( * ) ipiv, integer, dimension( * )
    ipiv2, complex*16, dimension( ldb, * ) b, integer ldb, complex*16,
    dimension( * ) work, integer lwork, integer info)

ZSYSV_AA_2STAGE computes the solution to system of linear equations A * X = B for SY matrices πŸ‘‘

πŸ’œ Purpose πŸ’œ

okay so, the actual tea:

!>
!> ZSYSV_AA_2STAGE computes the solution to a complex system of
!> linear equations
!>    A * X = B,
!> where A is an N-by-N symmetric matrix and X and B are N-by-NRHS
!> matrices.
!>
!> Aasen's 2-stage algorithm is used to factor A as
!>    A = U**T * T * U,  if UPLO = 'U', or
!>    A = L * T * L**T,  if UPLO = 'L',
!> where U (or L) is a product of permutation and unit upper (lower)
!> triangular matrices, and T is symmetric and band. The matrix T is
!> then LU-factored with partial pivoting. The factored form of A
!> is then used to solve the system of equations A * X = B.
!>
!> This is the blocked version of the algorithm, calling Level 3 BLAS.
!>

So basically: it solves the system, it does the Aasen's 2-stage factorization, T is symmetric and band, then T gets LU-factored with partial pivoting, and the factored form of A solves the system. And this is the blocked version, calling Level 3 BLAS β€” highkey the upgrade path, iykyk πŸ”₯


🌈 Parameters 🌈

  • UPLO β€” it's a CHARACTER*1, and it picks which triangle you're giving it:
    • = 'U': Upper triangle of A is stored;
    • = 'L': Lower triangle of A is stored.
  • N β€” INTEGER, the order of the matrix A. N >= 0. 🫢
  • NRHS β€” INTEGER, the number of right hand sides, i.e. the number of columns of the matrix B. NRHS >= 0.
  • A β€” COMPLEX*16 array, dimension (LDA,N). On entry, the symmetric matrix A:
    • If UPLO = 'U', the leading N-by-N upper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced.
    • If UPLO = 'L', the leading N-by-N lower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced.
    • On exit, L is stored below (or above) the subdiagonal blocks, when UPLO is 'L' (or 'U'). ✨
  • LDA β€” INTEGER, the leading dimension of the array A. LDA >= max(1,N).
  • TB β€” COMPLEX*16 array, dimension (LTB). On exit, details of the LU factorization of the band matrix. πŸ¦‹
  • LTB β€” INTEGER, the size of the array TB. LTB >= 4*N, internally used to select NB such that LTB >= (3*NB+1)*N.
    • If LTB = -1, then a workspace query is assumed; the routine only calculates the optimal size of LTB, returns this value as the first entry of TB, and no error message related to LTB is issued by XERBLA. πŸ‘€ noted.
  • IPIV β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of A were interchanged with the row and column IPIV(k).
  • IPIV2 β€” INTEGER array, dimension (N). On exit, it contains the details of the interchanges, i.e., the row and column k of T were interchanged with the row and column IPIV(k).
🚨 bestie read this one carefully β€” the doc says IPIV(k) here, not IPIV2(k). That's what it literally says, so I'm not touching it. Not me fixing LAPACK docs, no ma'am πŸ’€
  • B β€” COMPLEX*16 array, dimension (LDB,NRHS). On entry, the right hand side matrix B. On exit, the solution matrix X. πŸŽ€
  • LDB β€” INTEGER, the leading dimension of the array B. LDB >= max(1,N).
  • WORK β€” COMPLEX*16 workspace of size LWORK. 🌸
  • LWORK β€” INTEGER, the size of WORK. LWORK >= N, internally used to select NB such that LWORK >= N*NB.
    • If LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA. πŸ’…
  • INFO β€” INTEGER, the vibe check on your exit:
    • = 0: successful exit πŸŽ‰
    • < 0: if INFO = -i, the i-th argument had an illegal value. πŸ™ˆ
    • > 0: if INFO = i, band LU factorization failed on i-th column. 😭

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 183 of file zsysv_aa_2stage.f. ⭐


🧚 Author (yes, again) 🧚

Generated automatically by Doxygen for LAPACK from the source code. 🫢


and that's the whole page, bestie β€” no cap, we got every single parameter, every single >=, every single XERBLA mention πŸ’–

later, icon β€” this was LAPACK Version 3.12.0, footer and all, and yes the footer line is literally /home/abui...a_2stage.f(3) again because these generated pages love a callback πŸ’€βœ¨

πŸ“¦ where this page comes from