hemm(3)

πŸ“¦
version 3.12.0 Β· 4 versions
, in centos-stream 10, fedora 43, fedora 44

πŸ’– hemm(3) πŸ’– β€” LAPACK

okay so bestie, pull up a chair and sip something πŸ«– this is hemm(3) from LAPACK, and she is the {he,sy}mm icon: Hermitian/symmetric matrix-matrix multiply. Six routines, one job, zero skips. Let's go πŸ’…


✨ NAME ✨

hemm β€” {he,sy}mm: Hermitian/symmetric matrix-matrix multiply


πŸŽ€ SYNOPSIS πŸŽ€

πŸ¦‹ Functions

  • subroutine chemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc) β€” CHEMM
  • subroutine csymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc) β€” CSYMM
  • subroutine dsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc) β€” DSYMM
  • subroutine ssymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc) β€” SSYMM
  • subroutine zhemm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc) β€” ZHEMM
  • subroutine zsymm (side, uplo, m, n, alpha, a, lda, b, ldb, beta, c, ldc) β€” ZSYMM

🌈 Detailed Description 🌈

(not much tea here, the good stuff lives under Function Documentation πŸ‘‡)


πŸ‘‘ Function Documentation πŸ‘‘

πŸ’œ subroutine chemm (character side, character uplo, integer m, integer n, complex alpha, complex, dimension(lda,*) a, integer lda, complex, dimension(ldb,*) b, integer ldb, complex beta, complex, dimension(ldc,*) c, integer ldc)

CHEMM

Purpose:

CHEMM does one of these two matrix-matrix operations, pick your fighter:

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 β€” CHARACTER*1. On entry, SIDE says whether the hermitian matrix A shows up on the left or the right of 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 β€” CHARACTER*1. On entry, UPLO says whether we're referencing the upper or the lower triangular part of the hermitian matrix A, 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 β€” INTEGER. On entry, M is the number of rows of the matrix C. M must be at least zero.
  • N β€” INTEGER. On entry, N is the number of columns of the matrix C. N must be at least zero.
  • ALPHA β€” COMPLEX. On entry, ALPHA is the scalar alpha.
  • A β€” COMPLEX 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.

heads up bestie πŸ’€ the imaginary parts of the diagonal elements need not be set β€” they're assumed to be zero.
  • LDA β€” INTEGER. On entry, LDA is 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 ).
  • B β€” COMPLEX array, dimension ( LDB, N ). Before entry, the leading m by n part of the array B must contain the matrix B.
  • LDB β€” INTEGER. On entry, LDB is the first dimension of B as declared in the calling (sub)program. LDB must be at least max( 1, m ).
  • BETA β€” COMPLEX. On entry, BETA is the scalar beta. When BETA is supplied as zero then C need not be set on input. (free real estate 😌)
  • C β€” COMPLEX 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.
  • LDC β€” 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.

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.

Definition at line 190 of file chemm.f.


πŸ’™ subroutine csymm (character side, character uplo, integer m, integer n, complex alpha, complex, dimension(lda,*) a, integer lda, complex, dimension(ldb,*) b, integer ldb, complex beta, complex, dimension(ldc,*) c, integer ldc)

CSYMM

Purpose:

CSYMM performs one of the matrix-matrix operations

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

or

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

where alpha and beta are scalars, A is a symmetric matrix, and B and C are m by n matrices. πŸ¦‹

Parameters

  • SIDE β€” CHARACTER*1. On entry, SIDE says whether the symmetric matrix A appears 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 β€” CHARACTER*1. On entry, UPLO says whether the upper or lower triangular part of the symmetric matrix A is to be referenced, like this:
    • UPLO = 'U' or 'u' β†’ only the upper triangular part of the symmetric matrix is to be referenced.
    • UPLO = 'L' or 'l' β†’ only the lower triangular part of the symmetric matrix is to be referenced.
  • M β€” INTEGER. On entry, M is the number of rows of the matrix C. M must be at least zero.
  • N β€” INTEGER. On entry, N is the number of columns of the matrix C. N must be at least zero.
  • ALPHA β€” COMPLEX. On entry, ALPHA is the scalar alpha.
  • A β€” COMPLEX 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 symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric matrix and the strictly upper triangular part of A is not referenced.

  • LDA β€” INTEGER. On entry, LDA is 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 ).
  • B β€” COMPLEX array, dimension ( LDB, N ). Before entry, the leading m by n part of the array B must contain the matrix B.
  • LDB β€” INTEGER. On entry, LDB is the first dimension of B as declared in the calling (sub)program. LDB must be at least max( 1, m ).
  • BETA β€” COMPLEX. On entry, BETA is the scalar beta. When BETA is supplied as zero then C need not be set on input.
  • C
  • C β€” C is COMPLEX array, dimension ( LDC, N ). Before you come in, the leading m by n part of the array C has to already hold the matrix C… except when beta is zero, bestie, in which case C literally does not need to be set on entry, we don't care πŸ’…. On the way out, the array C gets fully overwritten by the m by n updated matrix. It's giving glow-up ✨.
  • 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 ). That's the whole vibe check, no notes 🫢.

Author 🌸

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

Further Details: πŸŽ€

Level 3 Blas routine. Say it with me: 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.

Definition at line 188 of file csymm.f.


✨ subroutine dsymm ✨

subroutine dsymm (character side, character uplo, integer m, integer n,
    double precision alpha, double precision, dimension(lda,*) a, integer
    lda, double precision, dimension(ldb,*) b, integer ldb, double precision
    beta, double precision, dimension(ldc,*) c, integer ldc)

DSYMM β€” the double precision one, and honestly? Iconic πŸ’œ

Purpose:

DSYMM performs one of the matrix-matrix operations

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

or

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

where alpha and beta are scalars, A is a symmetric matrix and B and C are m by n matrices. Two operations, one routine, main character energy fr fr 😭πŸ”₯

Parameters

  • SIDE β€” SIDE is CHARACTER*1. On entry, SIDE tells us whether the symmetric 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 lower triangular part of the symmetric matrix A is the one getting referenced:
UPLO = 'U' or 'u'   Only the upper triangular part of the
                    symmetric matrix is to be referenced.

UPLO = 'L' or 'l'   Only the lower triangular part of the
                    symmetric 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. Zero is allowed, we're not judging 🫢
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix C. N must be at least zero. Same deal bestie.
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha ✨
  • A β€” A is DOUBLE PRECISION array, dimension ( LDA, ka ), where ka is m when SIDE = 'L' or 'l' and is n otherwise. Okay okay, deep breath, here's the tea:
    • Before entry with SIDE = 'L' or 'l', the m by m part of the array A must contain the symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric matrix and the strictly upper triangular part of A is not referenced.
  • 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 ). Choose wisely bestie πŸ’€
  • B β€” B is DOUBLE PRECISION array, dimension ( LDB, N ). Before entry, the leading m by n part of the array B must contain the matrix B. That's it, that's the job ✨
  • 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 ).
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. When BETA is supplied as zero then C need not be set on input πŸ‘€ (free pass, take it).
  • C β€” C is DOUBLE PRECISION 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. Served fresh πŸ’…
  • 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 🌸

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

Further Details: πŸŽ€

Level 3 Blas routine. Periodt πŸ‘‘

-- 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 188 of file dsymm.f.


✨ subroutine ssymm ✨

subroutine ssymm (character side, character uplo, integer m, integer n, real
    alpha, real, dimension(lda,*) a, integer lda, real, dimension(ldb,*) b,
    integer ldb, real beta, real, dimension(ldc,*) c, integer ldc)

SSYMM β€” single precision edition, same energy, different bytes πŸ¦‹

Purpose:

SSYMM performs one of the matrix-matrix operations

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

or

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

where alpha and beta are scalars, A is a symmetric matrix and B and C are m by n matrices. Yeah it's the same routine but in REAL, we love consistency 🫢

Parameters

  • SIDE β€” SIDE is CHARACTER*1. On entry, SIDE specifies whether the symmetric matrix A appears on the left or right in the operation, as follows:
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 specifies whether the upper or lower triangular part of the symmetric matrix A is to be referenced, as follows:
UPLO = 'U' or 'u'   Only the upper triangular part of the
                    symmetric matrix is to be referenced.

UPLO = 'L' or 'l'   Only the lower triangular part of the
                    symmetric 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.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix C. N must be at least zero.
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha ✨
  • A β€” A is REAL array, dimension ( LDA, ka ), where ka is m when SIDE = 'L' or 'l' and is n otherwise. Okay, the full rundown:
    • Before entry with SIDE = 'L' or 'l', the m by m part of the array A must contain the symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric matrix and the strictly upper triangular part of A is not referenced.
  • 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 ).
  • B β€” B is REAL array, dimension ( LDB, N ). Before entry, the leading m 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. LDB must be at least max( 1, m ).
  • 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 πŸ‘€
  • C
  • C β€” COMPLEX*16 array, dimension ( LDC, N ). So like, before you even walk in the door, the leading m by n chunk of the array C has to already hold the matrix C β€” except when beta is zero, in which case bestie, C doesn't need to be set on entry at all, it's giving ✨no thoughts head empty✨. On exit tho? The array C gets overwritten by the m by n updated matrix. It ate and left no crumbs. πŸ’…
  • 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 ). fr fr, don't skip this one 🫢

Author πŸ‘‘

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

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.

Definition at line 188 of file ssymm.f. β€” iconic, historic, a whole moment in time πŸ’–


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 🌈

Purpose:

ZHEMM performs one of the matrix-matrix operations

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. hermitian?? in THIS economy?? yes bestie, and she's serving πŸ’…

Parameters

  • SIDE β€” SIDE is CHARACTER*1. On entry, SIDE specifies whether the hermitian matrix A appears on the left or 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 specifies whether the upper or lower triangular part of the hermitian matrix A is to be referenced, as follows:
    • 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.

pick a side, any side, just not both πŸ™ˆ

  • M β€” M is INTEGER. On entry, M specifies the number of rows of the matrix C. M must be at least zero.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix C. N must be at least zero.
  • ALPHA β€” ALPHA is COMPLEX*16. On entry, ALPHA specifies the scalar alpha. the moment ✨
  • 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. so like, don't stress about those, they're literally not even reading them 😭
  • 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 ).
  • 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.
  • 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 ).
  • 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 real estate, bestie πŸ’–
  • 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. overwritten!! she's a whole new girl now πŸ’…
  • 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 πŸ‘‘

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

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.

Definition at line 190 of file zhemm.f. ⭐


subroutine zsymm 🌸

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

ZSYMM 🌈

Purpose:

ZSYMM performs one of the matrix-matrix operations

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

or

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

where alpha and beta are scalars, A is a symmetric matrix and B and C are m by n matrices. symmetric queen, we love her, no notes πŸ‘‘

Parameters

  • SIDE β€” SIDE is CHARACTER*1. On entry, SIDE specifies whether the symmetric matrix A appears on the left or right in the operation, as follows:
    • 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 specifies whether the upper or lower triangular part of the symmetric matrix A is to be referenced as follows:
    • UPLO = 'U' or 'u' β†’ Only the upper triangular part of the symmetric matrix is to be referenced.
    • UPLO = 'L' or 'l' β†’ Only the lower triangular part of the symmetric 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.
  • N β€” N is INTEGER. On entry, N specifies the number of columns of the matrix C. N 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 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 symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric 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 symmetric matrix and the strictly upper triangular part of A is not referenced.

notice how there's no imaginary-diagonal note here? that's the hermitian vs symmetric of it all, iykyk 🧚

  • 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 ).
  • 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.
  • 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 ).
  • 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. again!! don't set it, she said what she said πŸ’…
  • 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. πŸ’…
  • 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. it literally updates in place, bestie ✨
  • 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

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

Further Details

Level 3 Blas routine. periodt 🌈

-- 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 188 of file zsymm.f.

Author

Generated automatically by Doxygen for LAPACK from the source code.


okay bestie that's the whole page, no cap πŸ’– This was LAPACK 3.12.0, generated Tue Nov 28 2023 12:08:43, for hemm(3). bye pookie, go update your matrices responsibly πŸŽ€βœ¨