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 is CHERK

πŸ‘‘ 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 leading n by n upper triangular part of C must 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: leading n by n lower 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