BLAS/SRC/zsymm.f(3)
π BLAS/SRC/zsymm.f(3) β aka the LAPACK manual, bestie edition π
okay so this is BLAS/SRC/zsymm.f, straight out of the LAPACK manual, and it's lowkey one of the most iconic routines in the whole Level 3 BLAS lineup. sit down, grab a strawberry drink π, we're doing complex symmetric matrix-matrix math and we're doing it cutely.
β¨ NAME β¨
BLAS/SRC/zsymm.f β no cap, that's literally it, that's the whole name, she's simple like that π
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine zsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)β ZSYMM β¨
πΈ Function/Subroutine Documentation πΈ
π subroutine zsymm
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. that's her. that's the whole vibe check. π
π Purpose:
okay so ZSYMM performs one of the 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. it's giving "scale, multiply, add, slay" and honestly? obsessed. π₯
π Parameters
SIDEβSIDEisCHARACTER*1. on entry,SIDEspecifies whether the symmetric matrixAappears on the left or right in the operation, and the way she does it is:
SIDE = 'L' or 'l' C := alpha*A*B + beta*C,
SIDE = 'R' or 'r' C := alpha*B*A + beta*C,
UPLOβUPLOisCHARACTER*1. on entry,UPLOspecifies whether the upper or lower triangular part of the symmetric matrixAis to be referenced, like so:
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βMisINTEGER. on entry,Mspecifies the number of rows of the matrixC.Mmust be at least zero. no negative rows bestie, that's not a thing πNβNisINTEGER. on entry,Nspecifies the number of columns of the matrixC.Nmust be at least zero. same energy, same rule β¨ALPHAβALPHAisCOMPLEX*16. on entry,ALPHAspecifies the scalaralpha. just a little guy. a scalar. a snack. πAβAisCOMPLEX*16array, dimension( LDA, ka ), wherekaismwhenSIDE = 'L' or 'l'and isnotherwise. okay here's the tea π«:- Before entry with
SIDE = 'L' or 'l', them by mpart of the arrayAmust contain the symmetric matrix, such that whenUPLO = 'U' or 'u', the leadingm by mupper 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 leadingm by mlower 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', then by npart of the arrayAmust contain the symmetric matrix, such that whenUPLO = 'U' or 'u', the leadingn by nupper 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 leadingn by nlower 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
LDAβLDAisINTEGER. on entry,LDAspecifies 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 the math, don't skip the math, fr fr.BβBisCOMPLEX*16array, dimension( LDB, N ). Before entry, the leadingm by npart of the arrayBmust contain the matrixB. she's just standing there. being a matrix. main character energy.LDBβLDBisINTEGER. on entry,LDBspecifies the first dimension ofBas declared in the calling (sub) program.LDBmust be at leastmax( 1, m ). yes bestie,m. notn. i said what i said πBETAβBETAisCOMPLEX*16. on entry,BETAspecifies the scalarbeta. WhenBETAis supplied as zero thenCneed not be set on input. free pass unlocked πβ¨CβCisCOMPLEX*16array, dimension( LDC, N ). Before entry, the leadingm by npart of the arrayCmust contain the matrixC, except whenbetais zero, in which caseCneed not be set on entry. On exit, the arrayCis overwritten by them by nupdated matrix. she goes in one way and comes out β¨transformedβ¨LDCβLDCisINTEGER. on entry,LDCspecifies the first dimension ofCas declared in the calling (sub) program.LDCmust be at leastmax( 1, m ). last one, and she matters just as much π«Ά
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole friend group showed up for this one, we love a collab π
π₯ Further Details:
- Level 3 Blas routine.
- ``` -- Written on 8-February-1989. Jack Dongarra, Argonne National Laboratory. Iain Duff, AERE Harwell. Jeremy Du Croz, Numerical Algorithms Group Ltd. Sven Hammarling, Numerical Algorithms Group Ltd.
> not me getting emotional over a routine written on 8-February-1989 π legends. literal legends. no notes. π
**Definition at line 188 of file `zsymm.f`.**
---
# π« Author (the meta one)
Generated automatically by Doxygen for LAPACK from the source code. yes, a robot wrote this part. a robot with taste. π€π
---
<purple>**Version 3.12.0**</purple> Β· <pink>Tue Nov 28 2023 12:08:41</pink> Β· <cyan>`BLAS/SRC/zsymm.f(3)`</cyan>
and that's the whole page bestie!! go forth, pass `SIDE`, `UPLO`, `M`, `N`, `ALPHA`, `A`, `LDA`, `B`, `LDB`, `BETA`, `C`, `LDC` in exactly that order, and slay πβ¨π¦ periodt.
π¦ where this page comes from
- centos-stream 10: blas 3.12.0-7.el10 Β· BSD-3-Clause-Open-MPI
- fedora 43: blas 3.12.0-10.fc43 Β· BSD-3-Clause-Open-MPI
- fedora 43: blas 3.12.0-10.fc43 Β· BSD-3-Clause-Open-MPI
- fedora 44: blas 3.12.0-11.fc44 Β· BSD-3-Clause-Open-MPI
- fedora 44: blas 3.12.0-11.fc44 Β· BSD-3-Clause-Open-MPI
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms