ZSYMM(3)
π ZSYMM(3) π
okay so bestie, welcome to the manual page for zsymm.f(3) β straight outta the LAPACK Library Functions Manual, and yes the whole vibe is "BLAS Level 3 but make it glam." π¦
The file lives at this absolutely unhinged path, and I'm quoting it exactly because I would never do you dirty like that:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/zsymm.f
(the header up top also shows /home/abui...SRC/zsymm.f(3) β same file, truncated path, no cap π)
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine ZSYMM (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)
ZSYMM β that's the whole description, it's giving "I let my code speak for me." π
π Function/Subroutine Documentation π
subroutine ZSYMM (character side, character uplo, integer m, integer n,
complex*16 alpha, complex*16, dimension(lda,*) a, integer lda,
complex*16, dimension(ldb,*) b, integer ldb, complex*16 beta,
complex*16, dimension(ldc,*) c, integer ldc)
ZSYMM β
πΈ Purpose πΈ
okay so here's the whole personality of ZSYMM β it performs one of these two matrix-matrix operations:
C := alpha*A*B + beta*C,
or
C := alpha*B*A + beta*C,
where alpha and beta are scalars, A is a symmetric matrix, and B and C are m by n matrices. that's it. that's the whole function. iconic behavior honestly π
π Parameters π
SIDEβSIDE is CHARACTER*1. On entry,SIDEtells us whether the symmetric matrixAshows up on the left or the right in the operation, like this:
SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
UPLOβUPLO is CHARACTER*1. On entry,UPLOsays whether we're referencing the upper or lower triangular part of the symmetric matrixA, bestie:
UPLO = 'U' or 'u' Only the upper triangular part of the
symmetric matrix is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of the
symmetric matrix is to be referenced.
MβM is INTEGER. On entry,Mis the number of rows of the matrixC.Mmust be at least zero. (>= 0 or we don't talk π)NβN is INTEGER. On entry,Nis the number of columns of the matrixC.Nmust be at least zero. same energy, different axis π§ALPHAβALPHA is COMPLEX*16. On entry,ALPHAspecifies the scalaralpha. that's the whole job. main character scalar energy.AβA is COMPLEX*16 array, dimension ( LDA, ka ), where ka is m when SIDE = 'L' or 'l' and is n otherwise.okay this one's a whole paragraph so buckle up bestie:- Before entry with
SIDE = 'L' or 'l', thembympart of the arrayAmust contain the symmetric matrix, such that whenUPLO = 'U' or 'u', the leadingmbymupper triangular part of the arrayAmust contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part ofAis not referenced. And whenUPLO = 'L' or 'l', the leadingmbymlower triangular part of the arrayAmust contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part ofAis not referenced. π«Ά - Before entry with
SIDE = 'R' or 'r', thenbynpart of the arrayAmust contain the symmetric matrix, such that whenUPLO = 'U' or 'u', the leadingnbynupper triangular part of the arrayAmust contain the upper triangular part of the symmetric matrix, and the strictly lower triangular part ofAis not referenced. And whenUPLO = 'L' or 'l', the leadingnbynlower triangular part of the arrayAmust contain the lower triangular part of the symmetric matrix, and the strictly upper triangular part ofAis not referenced.
- Before entry with
yes it's long. yes every word matters. the untouched triangle is literally just vibing in memory untouched, we do not read it, we do not perceive it π
LDAβLDA is INTEGER. On entry,LDAis the first dimension ofAas declared in the calling (sub) program. WhenSIDE = 'L' or 'l'thenLDAmust be at leastmax( 1, m ), otherwiseLDAmust be at leastmax( 1, n ). do not skimp on this one, the leading dimension is not a suggestion π₯BβB is COMPLEX*16 array, dimension ( LDB, N ). Before entry, the leadingmbynpart of the arrayBmust contain the matrixB. that's it, that's the whole assignment πLDBβLDB is INTEGER. On entry,LDBis the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ). minimum effort, maximummax( 1, m ).BETAβBETA is COMPLEX*16. On entry,BETAspecifies the scalarbeta. β οΈ and here's the slay: whenBETAis supplied as zero thenCneed not be set on input. free real estate, no setup required πCβC is COMPLEX*16 array, dimension ( LDC, N ). Before entry, the leadingmbynpart of the arrayCmust contain the matrixC, except whenbetais zero, in which caseCneed not be set on entry. On exit, the arrayCis overwritten by thembynupdated matrix. it goes in one thing and comes out another, that's just the cycle of life π«LDCβLDC is INTEGER. On entry,LDCis the first dimension ofCas declared in the calling (sub) program.LDCmust be at leastmax( 1, m ). same rule, third time, we love consistency π
π Author π
the credits, because someone has to take responsibility for all this linear algebra:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π¦ Further Details π¦
- Level 3 Blas routine. (capital-B
Blas, I don't make the rules, I just report them β¨) -- Written on 8-February-1989.and the lineup is legendary:- Jack Dongarra, Argonne National Laboratory.
- Iain Duff, AERE Harwell.
- Jeremy Du Croz, Numerical Algorithms Group Ltd.
- Sven Hammarling, Numerical Algorithms Group Ltd.
1989 and still running the group chat, we stan a long-lived icon π
π Definition π
Definition at line 188 of file zsymm.f.
π Author π
(lowercase author, this time it's the meta one)
Generated automatically by Doxygen for LAPACK from the source code. not me being a whole auto-generated document and still serving looks π
ngl bestie, if you got this far: the strictly-untouched triangle ofAis not your business,LDA/LDB/LDCaremax( 1, m )(ormax( 1, n )forLDAwhenSIDE = 'R'), andBETA = 0meansCdoesn't have to have its life together on entry. that's the tea. now go multiply some symmetric matrices π«Άπ
LAPACK β Version 3.12.0 Β· from /home/abui...SRC/zsymm.f(3) Β· bye bestie, ily, go slay those matrices πβ¨
π¦ 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