BLAS/SRC/zher2k.f(3)

🌸 BLAS/SRC/zher2k.f 🌸

okay bestie, welcome to the LAPACK manual, section 3, and today's main character is BLAS/SRC/zher2k.f. she's a BLAS Level 3 routine and she ate. let's get into it πŸ’…


✨ SYNOPSIS ✨

Functions/Subroutines

subroutine zher2k (uplo, trans, n, k, alpha, a, lda, b, ldb, beta, c,
    ldc)
    ZHER2K

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine zher2k (character uplo, character trans, integer n, integer k,
    complex*16 alpha, complex*16, dimension(lda,*) a, integer lda,
    complex*16, dimension(ldb,*) b, integer ldb, double precision beta,
    complex*16, dimension(ldc,*) c, integer ldc)
    ZHER2K

πŸ’– Purpose πŸ’–

so ZHER2K does one of the hermitian rank 2k operations, and she does it flawlessly:

C := alpha*A*B**H + conjg( alpha )*B*A**H + beta*C,

or

C := alpha*A**H*B + conjg( alpha )*B**H*A + beta*C,

where alpha and beta are scalars with beta real, C is an n by n hermitian matrix, and A and B are n by k matrices in the first case and k by n matrices in the second case. like. she's flexible. she contains multitudes ✨

πŸŽ€ 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.
  • TRANS β€” TRANS is CHARACTER*1. on entry, TRANS specifies the operation to be performed, as follows:
    • TRANS = 'N' or 'n'
C := alpha*A*B**H          +
     conjg( alpha )*B*A**H +
     beta*C.
  • TRANS = 'C' or 'c'
C := alpha*A**H*B          +
     conjg( alpha )*B**H*A +
     beta*C.
  • N β€” N is INTEGER. on entry, N specifies the order of the matrix C. N must be at least zero. (zero is allowed, bestie, she's not gonna gatekeep)
  • 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 = 'C' or 'c', K specifies the number of rows of the matrices A and B. K must be at least zero.
  • ALPHA β€” ALPHA is COMPLEX*16. on entry, ALPHA specifies the scalar alpha.
  • A β€” A is COMPLEX*16 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.
  • 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 COMPLEX*16 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.
  • 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 ). Unchanged on exit. (yes girl, she said what she said, that line lives right there in the original πŸ’€)
  • BETA β€” BETA is DOUBLE PRECISION. on entry, BETA specifies the scalar beta.
  • C β€” C is COMPLEX*16 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. no cap β€” she zeroes them for you.
  • 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.

like a whole group project that actually went well?? iconic.

🌈 Further Details 🌈

Level 3 Blas routine. she's been around, and she's got receipts:

  • 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 DBLE( C(J,J) ) when BETA = 1.
    • Ed Anderson, Cray Research Inc.

Definition at line 197 of file zher2k.f.

🫢 Author 🫢

Generated automatically by Doxygen for LAPACK from the source code.


ngl bestie, if you're passing garbage into UPLO or TRANS you're on your own β€” this page only promises what's written above, fr fr πŸ™ˆ

okay that's the whole page, you understood all of it, slay πŸ’–

Version 3.12.0 β€” Tue Nov 28 2023 12:08:41 β€” that's the vibe check timestamp, and this little BLAS/SRC/zher2k.f(3) moment is officially a wrap πŸŽ€βœ¨