BLAS/SRC/zgemm.f(3)

πŸ’– BLAS/SRC/zgemm.f β€” the LAPACK manual, but make it make sense πŸ’–

okay bestie, welcome to the page for BLAS/SRC/zgemm.f(3), straight out of the LAPACK docs. this is the glow-up edition. same facts, way better vibes. let's get into it 🫢


✨ NAME ✨

BLAS/SRC/zgemm.f β€” that's the file, that's the whole name, she's simple like that πŸ’…


🌸 SYNOPSIS 🌸

Functions/Subroutines

here's the actual call signature, copy it exactly bestie, no typos, no cap:

subroutine zgemm (transa, transb, m, n, k, alpha, a, lda, b, ldb, beta,
    c, ldc)
    ZGEMM

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

the actual subroutine, full glow-up:

subroutine zgemm (character transa, character transb, integer m, integer n,
    integer k, 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)

ZGEMM πŸ‘‘


πŸŽ€ Purpose πŸŽ€

okay so ZGEMM does one of the matrix-matrix operations:

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

and op( X ) is one of these three icons:

op( X ) = X   or   op( X ) = X**T   or   op( X ) = X**H,

alpha and beta are scalars, and A, B and C are matrices β€” where op( A ) is an m by k matrix, op( B ) is a k by n matrix, and C is an m by n matrix. the shape math is doing its thing, trust ✨


πŸ’œ Parameters πŸ’œ

TRANSA

  • TRANSA is CHARACTER*1.
  • on entry, TRANSA says which form of op( A ) we're using in the multiplication, and the options are:
    • TRANSA = 'N' or 'n', then op( A ) = A.
    • TRANSA = 'T' or 't', then op( A ) = A**T.
    • TRANSA = 'C' or 'c', then op( A ) = A**H.

TRANSB

  • TRANSB is CHARACTER*1.
  • on entry, TRANSB says which form of op( B ) we're using in the multiplication, options are:
    • TRANSB = 'N' or 'n', then op( B ) = B.
    • TRANSB = 'T' or 't', then op( B ) = B**T.
    • TRANSB = 'C' or 'c', then op( B ) = B**H.

M

  • M is INTEGER.
  • on entry, M specifies the number of rows of the matrix op( A ) and of the matrix C. M must be at least zero. no negative row counts, we don't do that here πŸ™ˆ

N

  • N is INTEGER.
  • on entry, N specifies the number of columns of the matrix op( B ) and the number of columns of the matrix C. N must be at least zero.

K

  • K is INTEGER.
  • on entry, K specifies the number of columns of the matrix op( A ) and the number of rows of the matrix op( B ). K must be at least zero.

ALPHA

  • ALPHA is COMPLEX*16.
  • on entry, ALPHA specifies the scalar alpha. the main character scalar πŸ’«

A

  • A is COMPLEX*16 array, dimension ( LDA, ka ), where ka is k when TRANSA = 'N' or 'n', and is m otherwise.
  • before entry with TRANSA = 'N' or 'n', the leading m by k part of the array A must contain the matrix A, otherwise the leading k by m 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 TRANSA = 'N' or 'n' then LDA must be at least max( 1, m ), otherwise LDA must be at least max( 1, k ).

B

  • B is COMPLEX*16 array, dimension ( LDB, kb ), where kb is n when TRANSB = 'N' or 'n', and is k otherwise.
  • before entry with TRANSB = 'N' or 'n', the leading k by n part of the array B must contain the matrix B, otherwise the leading n by k 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 TRANSB = 'N' or 'n' then LDB must be at least max( 1, k ), otherwise LDB must be at least max( 1, n ).

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. free pass on the input, we love a low-effort entry ✨

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 matrix ( alpha*op( A )*op( B ) + beta*C ). she gets rewritten, that's the whole point πŸ’…

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 ).

πŸ‘‘ Author πŸ‘‘

the legends behind this:

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

πŸ”₯ Further Details πŸ”₯

level 3 Blas routine. yep, she's a level 3 icon, top tier, no notes πŸ†

-- 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.

definition at line 186 of file zgemm.f. (iykyk πŸ“)

Author (the meta one)

generated automatically by Doxygen for LAPACK from the source code. the docs wrote themselves, basically πŸ€–βœ¨


aaaand that's the whole page bestie, you ate it, you understood it, periodt πŸ’–


this was LAPACK Version 3.12.0, dated Tue Nov 28 2023 12:08:41, from BLAS/SRC/zgemm.f(3) β€” thanks for reading, love u, bye πŸŽ€πŸ¦‹