/home/abui...C/ssyr2k.f(3)
π¦ /home/abui...C/ssyr2k.f(3) β the SSYR2K glow-up
okay so bestie, this one's from the Library Functions Manual (yes, the whole ssyr2k.f(3) situation) and it's the β¨ documentation page β¨ for one very specific BLAS subroutine. it's not a command you run, it's a subroutine you call, so put your "typing it into the terminal" dreams away for a sec. π
πΈ NAME πΈ
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/ssyr2k.f
that's the whole name. it's a path. it's giving "i was born in a build directory and i'm proud of it." π
β SYNOPSIS β
π§ Functions/Subroutines
subroutine SSYR2K (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c, ldc)β that's her. that's the whole signature. twelve arguments and every single one of them matters.
π Function/Subroutine Documentation π
subroutine SSYR2K (character uplo, character trans, integer n, integer k,
real alpha, real, dimension(lda,*) a, integer lda, real,
dimension(ldb,*) b, integer ldb, real beta, real, dimension(ldc,*) c,
integer ldc)
SSYR2K β say it with your chest. π
π«Ά Purpose:
SSYR2K performs one of the symmetric rank 2k operations:
C := alpha*A*B**T + alpha*B*A**T + beta*C,
or
C := alpha*A**T*B + alpha*B**T*A + beta*C,
where alpha and beta are scalars, C is an n by n symmetric matrix, and A and B are n by k matrices in the first case and k by n matrices in the second case. no cap, that's the entire personality of this routine. π₯
β¨ Parameters β¨
btw bestie, every parameter is documented in this cute little !> comment style in the source. i'm keeping all the facts, just making them slay.
π UPLO
UPLO is CHARACTER*1. on entry, UPLO specifies whether the upper or lower triangular part of the array C is to be referenced, as follows:
UPLO = 'U' or 'u' Only the upper triangular part of C
is to be referenced.
UPLO = 'L' or 'l' Only the lower triangular part of C
is to be referenced.
pick a side. upper or lower. no in-between. π
π TRANS
TRANS is CHARACTER*1. on entry, TRANS specifies the operation to be performed as follows:
TRANS = 'N' or 'n' C := alpha*A*B**T + alpha*B*A**T +
beta*C.
TRANS = 'T' or 't' C := alpha*A**T*B + alpha*B**T*A +
beta*C.
TRANS = 'C' or 'c' C := alpha*A**T*B + alpha*B**T*A +
beta*C.
note that 'T'/'t' and 'C'/'c' are literally the same operation here β yes, both, iconic behavior, we love a routine that doesn't gatekeep. π¦
π N
N is INTEGER. on entry, N specifies the order of the matrix C. N must be at least zero. π
π K
K is INTEGER. on entry with TRANS = 'N' or 'n', K specifies the number of columns of the matrices A and B, and on entry with TRANS = 'T' or 't' or 'C' or 'c', K specifies the number of rows of the matrices A and B. K must be at least zero. β
π ALPHA
ALPHA is REAL. on entry, ALPHA specifies the scalar alpha. that's it, that's the whole parameter. π
π A
A is REAL array, dimension ( LDA, ka ), where ka is k when TRANS = 'N' or 'n', and is n otherwise.
before entry with TRANS = 'N' or 'n', the leading n by k part of the array A must contain the matrix A; otherwise the leading k by n part of the array A must contain the matrix A. read that twice, it flips with TRANS. π
π LDA
LDA is INTEGER. on entry, LDA specifies the first dimension of A as declared in the calling (sub) program. when TRANS = 'N' or 'n' then LDA must be at least max( 1, n ), otherwise LDA must be at least max( 1, k ). π
π B
B is REAL array, dimension ( LDB, kb ), where kb is k when TRANS = 'N' or 'n', and is n otherwise.
before entry with TRANS = 'N' or 'n', the leading n by k part of the array B must contain the matrix B; otherwise the leading k by n part of the array B must contain the matrix B. yes, B mirrors A exactly. twin behavior. π―
π LDB
LDB is INTEGER. on entry, LDB specifies the first dimension of B as declared in the calling (sub) program. when TRANS = 'N' or 'n' then LDB must be at least max( 1, n ), otherwise LDB must be at least max( 1, k ). same rules as LDA, no cap. π
π BETA
BETA is REAL. on entry, BETA specifies the scalar beta. short and sweet, main character energy honestly. π
π C
C is REAL array, dimension ( LDC, N ).
before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of the array C must contain the upper triangular part of the symmetric matrix and the strictly lower triangular part of C is not referenced. on exit, the upper triangular part of the array C is overwritten by the upper triangular part of the updated matrix.
before entry with UPLO = 'L' or 'l', the leading n by n lower triangular part of the array C must contain the lower triangular part of the symmetric matrix and the strictly upper triangular part of C is not referenced. on exit, the lower triangular part of the array C is overwritten by the lower triangular part of the updated matrix.
so like β half of C is literally not even looked at. she only reads her good side. π
π LDC
LDC is INTEGER. on entry, LDC specifies the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 1, n ). β¨
πΈ Author πΈ
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
a whole group project and they all showed up. we stan. π«Ά
π₯ 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.
1989!! she's vintage!! an elder icon and she's still out here doing rank 2k updates. ππ
π Definition π
definition at line 191 of file ssyr2k.f.
π Author π
generated automatically by Doxygen for LAPACK from the source code. (not a human, just a very diligent robot. respect. π€β¨)
okay that's the whole page bestie, you're officially fluent in SSYR2K. go forth and multiply your symmetric matrices by two rank-k updates at a time. π¦π
β LAPACK, Version 3.12.0 ππ
(that's the source and version, and the page came from /home/abui...C/ssyr2k.f(3) β mwah, bye! π)
π¦ 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