SGEMM(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… SGEMM(3) β€” from the Library Functions Manual πŸŽ€

okay so bestie, this is the page for sgemm.f, living at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/sgemm.f. yes that's a whole entire path, she's long, she's iconic, we respect her 🫢


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/BLAS/SRC/sgemm.f

like, that's the file. that's the name. that's the whole thing πŸ’€


🌸 SYNOPSIS 🌸

Functions/Subroutines

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

SGEMM πŸ’–


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

subroutine SGEMM (character transa, character transb, integer m, integer n,
    integer k, real alpha, real, dimension(lda,*) a, integer lda, real,
    dimension(ldb,*) b, integer ldb, real beta, real, dimension(ldc,*) c,
    integer ldc)

SGEMM ✨

πŸŽ€ Purpose:

!>
!> SGEMM  performs one of the matrix-matrix operations
!>
!>    C := alpha*op( A )*op( B ) + beta*C,
!>
!> where  op( X ) is one of
!>
!>    op( X ) = X   or   op( X ) = X**T,
!>
!> alpha and beta are scalars, and A, B and C are matrices, with op( A )
!> an m by k matrix,  op( B )  a  k by n matrix and  C an m by n matrix.
!>

so basically: it multiplies matrices, optionally transposes them, optionally scales everything, and adds beta*C on top. it's giving "linear algebra main character energy" πŸ‘‘


🌈 Parameters

  • TRANSA β€” bestie this one is CHARACTER*1. on entry, TRANSA says what form of op( A ) you want in the multiply, like this:
    • TRANSA = 'N' or 'n', so op( A ) = A.
    • TRANSA = 'T' or 't', so op( A ) = A**T.
    • TRANSA = 'C' or 'c', so op( A ) = A**T.
  • TRANSB β€” also CHARACTER*1. on entry, TRANSB says what form of op( B ) you want in the multiply:
    • TRANSB = 'N' or 'n', so op( B ) = B.
    • TRANSB = 'T' or 't', so op( B ) = B**T.
    • TRANSB = 'C' or 'c', so op( B ) = B**T.
  • M β€” M is INTEGER. on entry, M is how many rows op( A ) has, and how many rows C has. M must be at least zero. no negatives, she said what she said πŸ’…
  • N β€” N is INTEGER. on entry, N is how many columns op( B ) has, and how many columns C has. N must be at least zero.
  • K β€” K is INTEGER. on entry, K is how many columns op( A ) has, and how many rows op( B ) has. K must be at least zero.
  • ALPHA β€” ALPHA is REAL. on entry, ALPHA specifies the scalar alpha. she's a scalar, she's real, she's doing her best πŸ’–
  • A β€” A is a REAL 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 array A must contain the matrix A; otherwise the leading k by m part of array A must contain the matrix A.
  • LDA β€” LDA is INTEGER. on entry, LDA is 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 ). do not skip this, she will know 😭
  • B β€” B is a REAL 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 array B must contain the matrix B; otherwise the leading n by k part of array B must contain the matrix B.
  • LDB β€” LDB is INTEGER. on entry, LDB is 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 REAL. on entry, BETA specifies the scalar beta. when BETA is supplied as zero then C need not be set on input. cute little shortcut, lowkey obsessed πŸ“
  • C β€” C is a REAL array, dimension ( LDC, N ). before entry, the leading m by n part of array C must contain the matrix C, except when beta is zero, in which case C need not be set on entry. on exit, array C is overwritten by the m by n matrix ( alpha*op( A )*op( B ) + beta*C ). she gets overwritten bestie, that's just how it is πŸ’€
  • LDC β€” LDC is INTEGER. on entry, LDC is the first dimension of C as declared in the calling (sub) program. LDC must be at least max( 1, m ).

πŸ‘‘ Author

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

the whole squad contributed, we love a collab 🫢


πŸ”₯ 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.
!>

Level 3 BLAS routine, periodt. written on 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.) β€” literal legends, we stan ⭐


🧚 Definition at line 186 of file sgemm.f.

like, line 186, go look, she's right there ✨


⭐ Author

Generated automatically by Doxygen for LAPACK from the source code. not me being auto-generated πŸ™ˆ


ngl this whole page is auto-generated, so if something looks weird, blame Doxygen, not me πŸ’…

okay bye bestie, this was SGEMM(3) from LAPACK, Version 3.12.0, at /home/abui...SRC/sgemm.f(3) β€” go multiply some matrices, you're gonna slay πŸ’–βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from