/home/abui...lasyf_aa.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/zlasyf_aa.f β€” okay bestie, this is a LAPACK library function page, straight out of the Library Functions Manual πŸ’– and honestly? It's giving "I do serious linear algebra and I look good doing it" energy.


✨ SYNOPSIS

🌸 Functions/Subroutines

subroutine ZLASYF_AA (uplo, j1, m, nb, a, lda, ipiv, h, ldh, work)
    ZLASYF_AA

That's it, that's the whole vibe check for the synopsis. Now let's get into the actual tea 🍡


πŸ¦‹ Function/Subroutine Documentation

subroutine ZLASYF_AA (character uplo, integer j1, integer m, integer nb,
    complex*16, dimension( lda, * ) a, integer lda, integer, dimension( * )
    ipiv, complex*16, dimension( ldh, * ) h, integer ldh, complex*16,
    dimension( * ) work)

πŸ‘‘ ZLASYF_AA

⭐ Purpose:

Okay so this is the moment. !> incoming, bestie, brace yourself:

!>
!> DLATRF_AA factorizes a panel of a complex symmetric matrix A using
!> the Aasen's algorithm. The panel consists of a set of NB rows of A
!> when UPLO is U, or a set of NB columns when UPLO is L.
!>
!> In order to factorize the panel, the Aasen's algorithm requires the
!> last row, or column, of the previous panel. The first row, or column,
!> of A is set to be the first row, or column, of an identity matrix,
!> which is used to factorize the first panel.
!>
!> The resulting J-th row of U, or J-th column of L, is stored in the
!> (J-1)-th row, or column, of A (without the unit diagonals), while
!> the diagonal and subdiagonal of A are overwritten by those of T.
!>
!>

So yeah β€” it's Aasen's algorithm, it's factorizing a panel, and it's literally rewriting your matrix on the way out. The A diagonal and subdiagonal get replaced by T's, and the unit diagonals are not invited to the U/L storage party. Slay 🫢


πŸŽ€ Parameters

🌈 UPLO

!>          UPLO is CHARACTER*1
!>          = 'U':  Upper triangle of A is stored;
!>          = 'L':  Lower triangle of A is stored.
!>

Bestie, pick a side β€” 'U' for upper triangle stored, 'L' for lower triangle stored. Two choices, zero drama πŸ’…

πŸ’œ J1

!>          J1 is INTEGER
!>          The location of the first row, or column, of the panel
!>          within the submatrix of A, passed to this routine, e.g.,
!>          when called by ZSYTRF_AA, for the first panel, J1 is 1,
!>          while for the remaining panels, J1 is 2.
!>

So J1 is where the first row/column of the panel lives inside the submatrix of A. Iconic example: when ZSYTRF_AA calls it, first panel gets J1 = 1, and all the remaining panels get J1 = 2. Not me memorizing that 😭

πŸ¦‹ M

!>          M is INTEGER
!>          The dimension of the submatrix. M >= 0.
!>

Dimension of the submatrix. And it must satisfy M >= 0 β€” no negativity allowed in this house 🚫✨

πŸ“ NB

!>          NB is INTEGER
!>          The dimension of the panel to be facotorized.
!>

The dimension of the panel to be facotorized πŸ’€ (yes, the original spells it like that, we do not fix the source text, we respect it). Lowkey the size of the panel we're cooking.

🌸 A

!>          A is COMPLEX*16 array, dimension (LDA,M) for
!>          the first panel, while dimension (LDA,M+1) for the
!>          remaining panels.
!>
!>          On entry, A contains the last row, or column, of
!>          the previous panel, and the trailing submatrix of A
!>          to be factorized, except for the first panel, only
!>          the panel is passed.
!>
!>          On exit, the leading panel is factorized.
!>

The main character, honestly. COMPLEX*16 array, dimension (LDA,M) for the first panel and (LDA,M+1) for the remaining panels. On entry it's carrying the last row/column of the previous panel plus the trailing submatrix to factorize β€” except for the first panel, where only the panel is passed. On exit? The leading panel is factorized. She ate and left no crumbs πŸ‘‘

πŸ’– LDA

!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,M).
!>

Leading dimension of A, and it's gotta be LDA >= max(1,M). Periodt.

🧚 IPIV

!>          IPIV is INTEGER array, dimension (M)
!>          Details of the row and column interchanges,
!>          the row and column k were interchanged with the row and
!>          column IPIV(k).
!>

INTEGER array, dimension (M), and it's the receipts πŸ“ for the row/column interchanges β€” row and column k got swapped with row and column IPIV(k). Iykyk.

πŸŽ€ H

!>          H is COMPLEX*16 workspace, dimension (LDH,NB).
!>
!>

COMPLEX*16 workspace, dimension (LDH,NB). That's it, that's the whole description πŸ’…

⭐ LDH

!>          LDH is INTEGER
!>          The leading dimension of the workspace H. LDH >= max(1,M).
!>

Leading dimension of the workspace H, and yes ma'am: LDH >= max(1,M).

🌈 WORK

!>          WORK is COMPLEX*16 workspace, dimension (M).
!>

COMPLEX*16 workspace, dimension (M). Short, sweet, works hard πŸ’ͺ


πŸ’œ Author

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

Shoutout to the whole squad 🫢

Definition at line 142 of file zlasyf_aa.f. β€” literally line 142, bestie, go look πŸ‘€


🌸 Author

Generated automatically by Doxygen for LAPACK from the source code. So no, a human didn't hand-write this footer β€” Doxygen did, and it understood the assignment πŸ€–βœ¨


ngl this whole page is LAPACK Version 3.12.0 from the Library Functions Manual, and it came from /home/abui...lasyf_aa.f(3). Bye bestie, go factorize something symmetric πŸ’–πŸ¦‹πŸŽ€
πŸ“¦ where this page comes from