her2k(3)

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

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

okay so bestie, welcome to her2k(3), straight out of the LAPACK manual β€” the routine that handles the hermitian/symmetric rank-2k update πŸ’…βœ¨ and honestly? she's serving. let's get into it.


πŸŽ€ NAME πŸŽ€

  • her2k β€” {he,sy}r2k: Hermitian/symmetric rank-2k update πŸ’–

🌸 SYNOPSIS 🌸

πŸ’… Functions πŸ’…

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

CHER2K

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

CSYR2K

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

DSYR2K

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

SSYR2K

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

ZHER2K

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

ZSYR2K


✨ Detailed Description ✨

okay bestie, this section is lowkey empty in the original β€” there's literally nothing here, we just slide right on into the function docs πŸ’… no thoughts, just subroutines.


πŸ”₯ Function Documentation πŸ”₯

πŸ’– cher2k β€” CHER2K πŸ’–

subroutine cher2k (character uplo, character trans, integer n, integer k,
    complex alpha, complex, dimension(lda,*) a, integer lda, complex,
    dimension(ldb,*) b, integer ldb, real beta, complex, dimension(ldc,*) c,
    integer ldc)

πŸ¦‹ Purpose πŸ¦‹

CHER2K performs one of the hermitian rank 2k operations, which are giving:

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 being 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. periodt. πŸ’…

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” CHARACTER*1. on entry, UPLO tells you whether we're referencing the upper or lower triangular part of the array C, like so:
    • UPLO = 'U' or 'u' β†’ only the upper triangular part of C gets referenced. πŸ’–
    • UPLO = 'L' or 'l' β†’ only the lower triangular part of C gets referenced. πŸ’–
  • TRANS β€” CHARACTER*1. on entry, TRANS picks which operation is being performed:
    • 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 β€” INTEGER. on entry, N is the order of the matrix C. N must be at least zero β€” no negative vibes, bestie πŸ™…β€β™€οΈ
  • K β€” INTEGER. on entry with TRANS = 'N' or 'n', K is the number of columns of the matrices A and B; on entry with TRANS = 'C' or 'c', K is the number of rows of the matrices A and B. K must be at least zero.
  • ALPHA β€” COMPLEX. on entry, ALPHA is the scalar alpha. 🌸
  • A β€” COMPLEX 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 β€” INTEGER. on entry, LDA is the first dimension of A as declared in the calling (sub) program. when TRANS = 'N' or 'n', LDA must be at least max( 1, n ); otherwise LDA must be at least max( 1, k ).
  • B β€” COMPLEX 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 β€” INTEGER. on entry, LDB is the first dimension of B as declared in the calling (sub) program. when TRANS = 'N' or 'n', LDB must be at least max( 1, n ); otherwise LDB must be at least max( 1, k ).
  • BETA β€” REAL. on entry, BETA is the scalar beta. (and yes bestie, REAL not COMPLEX β€” that's the whole hermitian moment πŸ’…)
  • C β€” COMPLEX 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.
    • and note that the imaginary parts of the diagonal elements need not be set β€” they're assumed to be zero, and on exit they are set to zero. πŸ’€ (not scary, just pay attention bestie)
  • 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, n ).

🌈 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.
  • modified 8-Nov-93 to set C(J,J) to REAL( C(J,J) ) when BETA = 1:
    • Ed Anderson, Cray Research Inc.

Definition at line 196 of file cher2k.f.


πŸ’– csyr2k β€” CSYR2K πŸ’–

subroutine csyr2k (character uplo, character trans, integer n, integer k,
    complex alpha, complex, dimension(lda,*) a, integer lda, complex,
    dimension(ldb,*) b, integer ldb, complex beta, complex, dimension(ldc,*)
    c, integer ldc)

πŸ¦‹ Purpose πŸ¦‹

CSYR2K performs one of the symmetric rank 2k operations, and they're giving:

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix, and A and B are n by k matrices in the first case and k by n matrices in the second case. πŸ’…βœ¨

πŸŽ€ Parameters πŸŽ€

  • UPLO β€” CHARACTER*1. on entry, UPLO says whether we're referencing the upper or lower triangular part of the array C:
    • UPLO = 'U' or 'u' β†’ only the upper triangular part of C gets referenced. πŸ’–
    • UPLO = 'L' or 'l' β†’ only the lower triangular part of C gets referenced. πŸ’–
  • TRANS β€” CHARACTER*1. on entry, TRANS picks which operation is being performed:
    • TRANS = 'N' or 'n' β†’
C := alpha*A*B**T + alpha*B*A**T + beta*C.
  • TRANS = 'T' or 't' β†’
C := alpha*A**T*B + alpha*B**T*A + beta*C.
  • N β€” INTEGER. on entry, N is the order of the matrix C. N must be at least zero.
  • K β€” INTEGER. on entry with TRANS = 'N' or 'n', K is the number of columns of the matrices A and B; on entry with TRANS = 'T' or 't', K is the number of rows of the matrices A and B. K must be at least zero.
  • ALPHA β€” COMPLEX. on entry, ALPHA is the scalar alpha. 🌸
  • A β€” COMPLEX 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 β€” INTEGER. on entry, LDA is the first dimension of A as declared in the calling (sub) program. when TRANS = 'N' or 'n', LDA must be at least max( 1, n ); otherwise LDA must be at least max( 1, k ).
  • B β€” COMPLEX 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 β€” INTEGER. on entry, LDB is the first dimension of B as declared in the calling (sub) program. when TRANS = 'N' or 'n', LDB must be at least max( 1, n ); otherwise LDB must be at least max( 1, k ).
  • BETA β€” COMPLEX. on entry, BETA is the scalar beta. (and here it's COMPLEX β€” different from CHER2K, don't get it twisted πŸ’…)
  • C β€”
  • C β€” COMPLEX 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 symmetric matrix, and the strictly lower triangular part of C is not referenced at all. 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 symmetric 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. Bestie, only half of it is your problem and it tells you which half. πŸ’…
  • LDC β€” 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 ). Respect the stride, or the whole thing goes sideways.

πŸ‘‘ 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 187 of file csyr2k.f.


πŸ¦‹ subroutine dsyr2k

subroutine dsyr2k (character uplo, character trans, integer n, integer k,
    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)

DSYR2K β€” the double precision twin. Same energy, more decimal places. πŸ’–

Purpose:

DSYR2K performs one of the symmetric rank 2k operations

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A and B are n by k matrices in the first case and k by n matrices in the second case. Two whole updates, one call. Ate. πŸ”₯

Parameters

  • UPLO β€” 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 β€” CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β€” C := alpha*A*B**T + alpha*B*A**T + beta*C.
    • TRANS = 'T' or 't' β€” C := alpha*A**T*B + alpha*B**T*A + beta*C.
    • TRANS = 'C' or 'c' β€” C := alpha*A**T*B + alpha*B**T*A + beta*C.
  • N β€” INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero.
  • K β€” 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 = 'T' or 't' or 'C' or 'c', K specifies the number of rows of the matrices A and B. K must be at least zero. It literally flips meaning depending on TRANS, so read the TRANS you actually passed. iykyk.
  • ALPHA β€” DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha.
  • A β€” DOUBLE PRECISION 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 β€” 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 β€” DOUBLE PRECISION 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 β€” 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 ).
  • BETA β€” DOUBLE PRECISION. On entry, BETA specifies the scalar beta.
  • C β€” DOUBLE PRECISION 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 symmetric 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 symmetric 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.
  • LDC β€” 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.

✨ 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 191 of file dsyr2k.f.


🧚 subroutine ssyr2k

subroutine ssyr2k (character uplo, character trans, 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)

SSYR2K β€” single precision edition, same plot, fewer bits. πŸ“

Purpose:

SSYR2K performs one of the symmetric rank 2k operations

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A and B are n by k matrices in the first case and k by n matrices in the second case.

Parameters

  • UPLO β€” 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 β€” CHARACTER*1. On entry, TRANS specifies the operation to be performed as follows:
    • TRANS = 'N' or 'n' β€” C := alpha*A*B**T + alpha*B*A**T + beta*C.
    • TRANS = 'T' or 't' β€” C := alpha*A**T*B + alpha*B**T*A + beta*C.
    • TRANS = 'C' or 'c' β€” C := alpha*A**T*B + alpha*B**T*A + beta*C.
  • N β€” INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero.
  • K β€” 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 = 'T' or 't' or 'C' or 'c', K specifies the number of rows of the matrices A and B. K must be at least zero.
  • ALPHA β€” REAL. On entry, ALPHA specifies the scalar alpha.
  • A β€” REAL 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 β€” 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 β€” REAL 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 β€” INTEGER, obvi. On entry, LDB is 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 ). Math is mathing. πŸ’…
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. That's it, that's the whole girl. πŸŽ€
  • C β€” C is a REAL 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 symmetric matrix, and the strictly lower triangular part of C is not referenced β€” not even a glance, bestie, it's giving invisible. 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 symmetric 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. πŸ¦‹
  • LDC β€” INTEGER. On entry, LDC is the first dimension of C as declared in the calling (sub) program, and LDC must be at least max( 1, n ). No skipping this one, fr fr. 🌸

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 191 of file ssyr2k.f.

🌈 subroutine zher2k β€” the complex hermitian one, main character energy πŸ‘‘

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

ZHER2K performs one of the hermitian rank 2k operations:

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. Two flavours, pick your fighter. πŸ₯Š

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. Ground floor, no negatives. 🚫
  • 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. Simple as that.
  • 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. It shape-shifts, lowkey iconic. πŸ¦‹
  • 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. Same energy as A, different letter. πŸ’…
  • 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.
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. Note bestie: beta is real here even though everything else is complex β€” that's the hermitian thing, it's giving balance. βš–οΈ
  • 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. Not me fixing your diagonal for you, but yes, that's literally what's happening. 😭
  • 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.

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

🌸 subroutine zsyr2k β€” the complex symmetric sibling, she's here πŸŽ€

subroutine zsyr2k (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, complex*16 beta,
    complex*16, dimension(ldc,*) c, integer ldc)

ZSYR2K πŸ’–

Purpose

ZSYR2K performs one of the symmetric rank 2k operations:

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A and B are n by k matrices in the first case and k by n matrices in the second case. No conjugate here, just a plain transpose β€” different girl, same slay. ✨

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**T + alpha*B*A**T + beta*C.
    • TRANS = 'T' or 't' β€” C := alpha*A**T*B + alpha*B**T*A + beta*C.
Heads up: this one takes 'T' or 't', not 'C' or 'c'. Read the letters, bestie, iykyk. 🫢
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero.
  • 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 = 'T' or 't', 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 β€” okay bestie, so B is a COMPLEX*16 array with 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. No cap. πŸ’–
  • LDB β€” LDB is an 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 ). ✨
  • BETA β€” BETA is a COMPLEX*16. On entry, BETA specifies the scalar beta. That's it, that's the tea. πŸ’…
  • C β€” C is a 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 symmetric 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 symmetric 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. πŸ¦‹
  • LDC β€” LDC is an 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.

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 187 of file zsyr2k.f.


Author

Generated automatically by Doxygen for LAPACK from the source code.


πŸ’– That's the whole page, bestie! This masterpiece is from LAPACK version 3.12.0, and it was generated on Tue Nov 28 2023 12:08:43. Stay slaying! 🫢✨