ZLAVSP(3)

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

πŸ’… ZLAVSP(3) β€” the glow-up guide

okay bestie, so this is a page from the Library Functions Manual, and it's about a little Fortran subroutine called ZLAVSP that lives in the LAPACK testing directory. She's lowkey iconic, she does matrix-vector math, and you're gonna understand her by the end of this. periodt. πŸŽ€


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/zlavsp.f

that's the whole path, yes, it's giving very long, copy it exactly if you need it πŸ’€


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine ZLAVSP (uplo, trans, diag, n, nrhs, a, ipiv, b, ldb, info)
    ZLAVSP

🌸 Function/Subroutine Documentation 🌸

subroutine ZLAVSP (character uplo, character trans, character diag, integer
    n, integer nrhs, complex*16, dimension( * ) a, integer, dimension( * )
    ipiv, complex*16, dimension( ldb, * ) b, integer ldb, integer info)

ZLAVSP β€” that's her name, that's her whole thing πŸ’…

πŸ”₯ Purpose πŸ”₯

!> ZLAVSP performs one of the matrix-vector operations !> x := A*x or x := A^T*x, !> where x is an N element vector and A is one of the factors !> from the symmetric factorization computed by ZSPTRF. !> ZSPTRF produces a factorization of the form !> U * D * U^T or L * D * L^T, !> where U (or L) is a product of permutation and unit upper (lower) !> triangular matrices, U^T (or L^T) is the transpose of !> U (or L), and D is symmetric and block diagonal with 1 x 1 and !> 2 x 2 diagonal blocks. The multipliers for the transformations !> and the upper or lower triangular parts of the diagonal blocks !> are stored columnwise in packed format in the linear array A. !> !> If TRANS = 'N' or 'n', ZLAVSP multiplies either by U or U * D !> (or L or L * D). !> If TRANS = 'C' or 'c', ZLAVSP multiplies either by U^T or D * U^T !> (or L^T or D * L^T ). !>

so yeah, she's multiplying vectors by factors that ZSPTRF already cooked up. no cap. 🧚


πŸ’œ the arguments, one by one πŸ’œ

⭐ UPLO β€” CHARACTER*1

On entry, UPLO says whether the triangular matrix chillin' in A is upper or lower triangular, bestie:

  • UPLO = 'U' or 'u' β†’ the matrix is upper triangular.
  • UPLO = 'L' or 'l' β†’ the matrix is lower triangular.

Unchanged on exit. πŸ’«

⭐ TRANS β€” CHARACTER*1

On entry, TRANS tells you which operation is happening, and it's literally one of these:

  • TRANS = 'N' or 'n' β†’ x := A*x.
  • TRANS = 'T' or 't' β†’ x := A^T*x.

Unchanged on exit. 🫢

head's up: the Purpose section up top also mentions TRANS = 'C' or 'c' β€” but in this here argument description, only 'N'/'n' and 'T'/'t' are listed. keep both in your head, iykyk 🌈

⭐ DIAG β€” CHARACTER*1

On entry, DIAG says whether the diagonal blocks are assumed to be unit matrices:

  • DIAG = 'U' or 'u' β†’ diagonal blocks are unit matrices.
  • DIAG = 'N' or 'n' β†’ diagonal blocks are non-unit.

Unchanged on exit. πŸ’–

⭐ N β€” INTEGER

On entry, N is the order of the matrix A. and it must be at least zero, no exceptions queen. Unchanged on exit. ✨

⭐ NRHS β€” INTEGER

On entry, NRHS is the number of right hand sides β€” like, the number of vectors x that are gonna get multiplied by A. NRHS must be at least zero. Unchanged on exit. πŸŽ€

⭐ A β€” COMPLEX*16 array, dimension( N*(N+1)/2 )

On entry, A holds a block diagonal matrix plus the multipliers of the transformations used to obtain it, stored as a packed triangular matrix. Unchanged on exit. πŸ¦‹

⭐ IPIV β€” INTEGER array, dimension( N )

On entry, IPIV is the vector of pivot indices as determined by ZSPTRF. here's the whole tea:

  • If IPIV( K ) = K, no interchange was done.
  • If IPIV( K ) <> K but IPIV( K ) > 0, then row K was interchanged with row IPIV( K ) and a 1 x 1 pivot block was used.
  • If IPIV( K ) < 0 and UPLO = 'U', then row K-1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used.
  • If IPIV( K ) < 0 and UPLO = 'L', then row K+1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used.

okay that's a lot but it's all facts, don't skip ✨

⭐ B β€” COMPLEX*16 array, dimension( LDB, NRHS )

On entry, B contains NRHS vectors of length N. On exit, B is overwritten with the product A * B. so if you needed the original B... bestie, she's gone 😭

⭐ LDB β€” INTEGER

On entry, LDB is the leading dimension of B as declared in the calling program. LDB must be at least max( 1, N ). Unchanged on exit. πŸ’…

⭐ INFO β€” INTEGER

INFO is the error flag, main character energy:

  • On exit, a value of 0 means a successful exit. slay. πŸ‘‘
  • A negative value, say -K, means the K-th argument had an illegal value. πŸ™ˆ

🌈 Author 🌈

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

πŸ“ Definition πŸ“

at line 129 of file zlavsp.f. πŸ”₯


⭐ Author (the sequel) ⭐

Generated automatically by Doxygen for LAPACK from the source code. no human hands, just vibes and a doc generator 🧚


aaaand that's the whole page bestie!! this one's from LAPACK, Version 3.12.0, and the footer was serving /home/abui...IN/zlavsp.f(3) realness. go forth and multiply your vectors πŸ’œβœ¨πŸŽ€

πŸ“¦ where this page comes from