BLAS/SRC/cherk.f(3)
π BLAS/SRC/cherk.f π
okay bestie, grab a strawberry drink π because we're diving into the LAPACK manual page for BLAS/SRC/cherk.f β it's giving linear algebra main character energy and honestly? obsessed.
β¨ NAME β¨
BLAS/SRC/cherk.f β the file itself, that's the name, no cap π
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine cherk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc)β literally the whole vibe, this isCHERK
π Function/Subroutine Documentation π
subroutine cherk (character uplo, character trans, integer n, integer k,
real alpha, complex, dimension(lda,*) a, integer lda, real beta,
complex, dimension(ldc,*) c, integer ldc)
CHERK π
πΈ Purpose πΈ
!>!> CHERK performs one of the hermitian rank k operations!>!> C := alpha*A*A**H + beta*C,!>!> or!>!> C := alpha*A**H*A + beta*C,!>!> where alpha and beta are real scalars, C is an n by n hermitian!> matrix and A is an n by k matrix in the first case and a k by n!> matrix in the second case.!>
so basically: hermitian rank-k update, two flavours, pick your fighter π₯
π Parameters π
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.!>
tl;dr β 'U'/'u' means we only touch the upper triangle of C, 'L'/'l' means only the lower one. pick a side bestie π
TRANS
!> TRANS is CHARACTER*1!> On entry, TRANS specifies the operation to be performed as!> follows:!>!> TRANS = 'N' or 'n' C := alpha*A*A**H + beta*C.!>!> TRANS = 'C' or 'c' C := alpha*A**H*A + beta*C.!>
'N'/'n' β C := alpha*A*A**H + beta*C, 'C'/'c' β C := alpha*A**H*A + beta*C. the two formulas from up top, now with names β¨
N
!> N is INTEGER!> On entry, N specifies the order of the matrix C. N must be!> at least zero.!>
C is NΓN, and N must be >= 0 (yes, at least zero, fr fr).
K
!> K is INTEGER!> On entry with TRANS = 'N' or 'n', K specifies the number!> of columns of the matrix A, and on entry with!> TRANS = 'C' or 'c', K specifies the number of rows of the!> matrix A. K must be at least zero.!>
TRANS = 'N'/'n' β K is how many columns A has. TRANS = 'C'/'c' β K is how many rows A has. also must be >= 0. π«Ά
ALPHA
!> ALPHA is REAL!> On entry, ALPHA specifies the scalar alpha.!>
real scalar, that's the alpha in the formula, iconic.
A
!> A is COMPLEX 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.!>
complex array sized ( LDA, ka ) where ka is k when TRANS = 'N'/'n' and n otherwise. TRANS = 'N'/'n' β the leading n by k part holds A; otherwise the leading k by n part holds A. no guessing, it's literally specified π
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 ).!>
dimension of A as declared in the caller. TRANS = 'N'/'n' β LDA >= max( 1, n ); otherwise LDA >= max( 1, k ). math is math π§
BETA
!> BETA is REAL!> On entry, BETA specifies the scalar beta.!>
real scalar, the beta, we stan π
C
!> C is COMPLEX 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 hermitian 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 hermitian 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.!> Note that the imaginary parts of the diagonal elements need!> not be set, they are assumed to be zero, and on exit they!> are set to zero.!>
okay this one's long but hear me out:
UPLO = 'U'/'u'β on entry the leadingnbynupper triangular part ofCmust hold the upper triangular part of the hermitian matrix, and the strictly lower triangular part is not referenced; on exit the upper triangular part is overwritten by the upper triangular part of the updated matrix.UPLO = 'L'/'l'β same deal but mirrored: leadingnbynlower triangular part holds the lower triangle, strictly upper part not referenced, and on exit the lower triangular part is overwritten by the lower triangular part of the updated matrix.- β οΈ the imaginary parts of the diagonal elements need not be set β they're assumed to be zero, and on exit they are set to zero. that's the whole tea β
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 ).!>
dimension of C from the caller, and LDC >= max( 1, n ). periodt. π
π«Ά Author π«Ά
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
like, the whole academic avengers assembled for this one ππ
β 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.!>!> -- Modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1.!> Ed Anderson, Cray Research Inc.!>
Level 3 BLAS routine π
written 8-February-1989 by Jack Dongarra (Argonne National Laboratory), Iain Duff (AERE Harwell), Jeremy Du Croz (Numerical Algorithms Group Ltd.), and Sven Hammarling (Numerical Algorithms Group Ltd.). then modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1, by Ed Anderson, Cray Research Inc. a glow-up fr fr β¨
Definition at line 172 of file cherk.f.
πΈ Author πΈ
Generated automatically by Doxygen for LAPACK from the source code. (the robots did the paperwork, we just vibe π§)
and that's the whole page bestie β LAPACK Version 3.12.0, dated with the BLAS/SRC/cherk.f(3) footer energy, all wrapped up π slay responsibly β¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms