ZLAVSP(3)
π 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 mentionsTRANS = '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 ) <> KbutIPIV( K ) > 0, then rowKwas interchanged with rowIPIV( K )and a1 x 1pivot block was used. - If
IPIV( K ) < 0andUPLO = 'U', then rowK-1was exchanged with row| IPIV( K ) |and a2 x 2pivot block was used. - If
IPIV( K ) < 0andUPLO = 'L', then rowK+1was exchanged with row| IPIV( K ) |and a2 x 2pivot 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
0means a successful exit. slay. π - A negative value, say
-K, means theK-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
- 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