BLAS/SRC/zhemm.f(3)

๐Ÿ’– BLAS/SRC/zhemm.f ๐Ÿ’–

okay bestie, buckle up โ€” this one is from LAPACK, living in the BLAS/SRC/ folder, and it's genuinely iconic. it's giving "level 3 BLAS, hermitian matrix energy, main character complex arithmetic." let's go ๐Ÿฆ‹


โœจ SYNOPSIS โœจ

functions & subroutines (the whole vibe)

subroutine zhemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc)

that's ZHEMM babes. say it with your chest. ๐Ÿ’…


๐ŸŒธ Function/Subroutine Documentation ๐ŸŒธ

subroutine zhemm

subroutine zhemm (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)

ZHEMM. that's the name, that's the brand. ๐Ÿ‘‘

๐ŸŽ€ Purpose:

so ZHEMM performs one of these matrix-matrix operations, and you get to pick which:

C := alpha*A*B + beta*C,

or

C := alpha*B*A + beta*C,

where alpha and beta are scalars, A is an hermitian matrix, and B and C are m by n matrices. periodt. ๐Ÿ’–

๐Ÿ’… Parameters

  • SIDE โ€” SIDE is CHARACTER*1. on entry, SIDE says whether the hermitian matrix A shows up on the left or the right in the operation, like this:
SIDE = 'L' or 'l'   C := alpha*A*B + beta*C,

SIDE = 'R' or 'r'   C := alpha*B*A + beta*C,
  • UPLO โ€” UPLO is CHARACTER*1. on entry, UPLO says whether the upper or the lower triangular part of the hermitian matrix A is the one getting referenced, like this:
UPLO = 'U' or 'u'   Only the upper triangular part of the
                    hermitian matrix is to be referenced.

UPLO = 'L' or 'l'   Only the lower triangular part of the
                    hermitian matrix is to be referenced.
  • M โ€” M is INTEGER. on entry, M specifies the number of rows of the matrix C. M must be at least zero. no negatives bestie, we don't do that here ๐Ÿ™ˆ
  • N โ€” N is INTEGER. on entry, N specifies the number of columns of the matrix C. N must be at least zero. same rule, zero is the floor ๐ŸŒธ
  • ALPHA โ€” ALPHA is COMPLEX*16. on entry, ALPHA specifies the scalar alpha. that's it, that's the girl ๐Ÿ’ซ
  • A โ€” A is COMPLEX*16 array, dimension ( LDA, ka ), where ka is m when SIDE = 'L' or 'l' and is n otherwise. Before entry with SIDE = 'L' or 'l', the m by m part of the array A must contain the hermitian matrix, such that when UPLO = 'U' or 'u', the leading m by m upper triangular part of the array A must contain the upper triangular part of the hermitian matrix and the strictly lower triangular part of A is not referenced, and when UPLO = 'L' or 'l', the leading m by m lower triangular part of the array A must contain the lower triangular part of the hermitian matrix and the strictly upper triangular part of A is not referenced. Before entry with SIDE = 'R' or 'r', the n by n part of the array A must contain the hermitian matrix, such that when UPLO = 'U' or 'u', the leading n by n upper triangular part of the array A must contain the upper triangular part of the hermitian matrix and the strictly lower triangular part of A is not referenced, and when UPLO = 'L' or 'l', the leading n by n lower triangular part of the array A must contain the lower triangular part of the hermitian matrix and the strictly upper triangular part of A is not referenced. Note that the imaginary parts of the diagonal elements need not be set, they are assumed to be zero. yes queen, the diagonal is doing the bare minimum and honestly? valid โœจ
  • LDA โ€” LDA is INTEGER. on entry, LDA specifies the first dimension of A as declared in the calling (sub) program. When SIDE = 'L' or 'l' then LDA must be at least max( 1, m ), otherwise LDA must be at least max( 1, n ). do the math, don't skip it ๐Ÿงฎ
  • B โ€” B is COMPLEX*16 array, dimension ( LDB, N ). before entry, the leading m by n part of the array B must contain the matrix B. that's her. ๐Ÿ’™
  • LDB โ€” LDB is INTEGER. on entry, LDB specifies the first dimension of B as declared in the calling (sub) program. LDB must be at least max( 1, m ). no cap.
  • BETA โ€” BETA is COMPLEX*16. on entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input. zero beta = free pass, we love a shortcut ๐Ÿซถ
  • C โ€” C is COMPLEX*16 array, dimension ( LDC, N ). before entry, the leading m by n part of the array C must contain the matrix C, except when beta is zero, in which case C need not be set on entry. On exit, the array C is overwritten by the m by n updated matrix. she's changed, she's grown, she's updated ๐Ÿ’–
  • 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, m ). keep it at least that, i'm begging ๐Ÿ˜ญ

๐Ÿ‘‘ Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

the whole squad showed up, we're obsessed ๐ŸŒˆ

๐Ÿงš Further Details:

Level 3 Blas routine. (level 3, the big leagues fr fr)

-- 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?? and still serving looks. legends only โญ

๐Ÿ“ Definition at line 190 of file zhemm.f.


๐Ÿ’œ Author (of this very page)

Generated automatically by Doxygen for LAPACK from the source code. the robot wrote this one, not me, but the vibes are immaculate ๐Ÿค–โœจ


that's the whole page bestie! every flag, every bound, every max( 1, ... ), every author, every 1989 date โ€” all still here. nothing dropped, nothing invented. ate and left no crumbs ๐Ÿ’…

Version 3.12.0 ยท Tue Nov 28 2023 12:08:41 ยท BLAS/SRC/zhemm.f(3) โ€” mwah, love u, bye ๐ŸŽ€๐Ÿฆ‹๐Ÿ’–

๐Ÿ“ฆ where this page comes from