herk(3)

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

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

okay so bestie, welcome to herk ✨ this is the LAPACK page for the {he,sy}rk family β€” "Hermitian/symmetric rank-k update" β€” and honestly? it's giving foundational. six routines, one job: smash out a rank-k update on your matrix and look cute doing it. no cap. let's get into it πŸ’…


πŸ“› NAME πŸ“›

herk - {he,sy}rk: Hermitian/symmetric rank-k update


✨ SYNOPSIS ✨

🫢 Functions 🫢

  • subroutine cherk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc) β€” CHERK
  • subroutine csyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc) β€” CSYRK
  • subroutine dsyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc) β€” DSYRK
  • subroutine ssyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc) β€” SSYRK
  • subroutine zherk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc) β€” ZHERK
  • subroutine zsyrk (uplo, trans, n, k, alpha, a, lda, beta, c, ldc) β€” ZSYRK

πŸ¦‹ Detailed Description πŸ¦‹

(this section is a vibe β€” the real tea is all in the Function Documentation below πŸ‘‡)


🌸 Function Documentation 🌸

πŸ‘‘ subroutine cherk (character uplo, character trans, integer n, integer k, real alpha, complex, dimension(lda,) a, integer lda, real beta, complex, dimension(ldc,) c, integer ldc) πŸ‘‘

CHERK

Purpose:

CHERK performs one of the hermitian rank k operations

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

or

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

where alpha and beta are real scalars, C is an n by n hermitian matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. periodt. πŸ’–

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*A**H + beta*C.

 TRANS = 'C' or 'c'   C := alpha*A**H*A + beta*C.
  • 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 matrix A, and on entry with TRANS = 'C' or 'c', K specifies the number of rows of the matrix A. K must be at least zero.

  • ALPHA

ALPHA is REAL On entry, ALPHA specifies the scalar alpha.

  • A

A is 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

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

  • BETA

BETA is REAL On entry, BETA specifies the scalar beta.

  • C

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

Note: 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. 😌
  • 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 REAL( C(J,J) ) when BETA = 1.
    Ed Anderson, Cray Research Inc.

Definition at line 172 of file cherk.f.


πŸŽ€ subroutine csyrk (character uplo, character trans, integer n, integer k, complex alpha, complex, dimension(lda,) a, integer lda, complex beta, complex, dimension(ldc,) c, integer ldc) πŸŽ€

CSYRK

Purpose:

CSYRK performs one of the symmetric rank k operations

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. 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*A**T + beta*C.

 TRANS = 'T' or 't'   C := alpha*A**T*A + beta*C.
  • 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 matrix A, and on entry with TRANS = 'T' or 't', K specifies the number of rows of the matrix A. K must be at least zero.

  • ALPHA

ALPHA is COMPLEX On entry, ALPHA specifies the scalar alpha.

  • A

A is 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

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

  • BETA

BETA is COMPLEX On entry, BETA specifies the scalar beta.

  • C

C is 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. 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 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 166 of file csyrk.f.


πŸ’œ subroutine dsyrk (character uplo, character trans, integer n, integer k, double precision alpha, double precision, dimension(lda,) a, integer lda, double precision beta, double precision, dimension(ldc,) c, integer ldc) πŸ’œ

DSYRK

Purpose:

DSYRK performs one of the symmetric rank k operations

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. (same energy as csyrk but make it double precision πŸ’…)

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 gets referenced, bestie. The upper part? Not invited. πŸ’…
  • TRANS β€” TRANS is CHARACTER*1. When you call this, TRANS tells us which operation to do:
    • TRANS = 'N' or 'n' β€” C := alpha*A*A**T + beta*C.
    • TRANS = 'T' or 't' β€” C := alpha*A**T*A + beta*C.
    • TRANS = 'C' or 'c' β€” C := alpha*A**T*A + beta*C.
  • N β€” N is INTEGER. On entry, N is the order of the matrix C. It has to be at least zero. No negative vibes allowed. ✨
  • K β€” K is INTEGER. When TRANS = 'N' or 'n', K is the number of columns of matrix A. When TRANS = 'T' or 't' or 'C' or 'c', K is the number of rows of matrix A. And K must be at least zero. Zero is fine, negative is a no. πŸ’œ
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA is the scalar alpha. It's literally just a number you pick. πŸ“
  • A β€” A is a DOUBLE PRECISION array, dimension ( LDA, ka ). ka is k when TRANS = 'N' or 'n', and n otherwise. Before you call with TRANS = 'N' or 'n', the leading n by k part of A must contain the matrix A. Otherwise, the leading k by n part of A must contain the matrix A. So fill it in correctly, bestie. 😭
  • LDA β€” LDA is 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, it must be at least max( 1, k ). Respect the bounds, queen. πŸ‘‘
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA is the scalar beta. Another number, another slay. πŸ’…
  • C β€” C is a DOUBLE PRECISION array, dimension ( LDC, N ). Before entry with UPLO = 'U' or 'u', the leading n by n upper triangular part of C must contain the upper triangular part of the symmetric matrix. The strictly lower triangular part of C is not referenced. On exit, the upper triangular part of 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 C must contain the lower triangular part of the symmetric matrix. The strictly upper triangular part of C is not referenced. On exit, the lower triangular part of C is overwritten by the lower triangular part of the updated matrix. Only one triangle gets touched, the other is a ghost. πŸ‘»
  • 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, n ). Don't forget 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 168 of file dsyrk.f.

🌸 subroutine ssyrk 🌸

subroutine ssyrk (character uplo, character trans, integer n, integer k,
     real alpha, real, dimension(lda,*) a, integer lda, real beta, real,
     dimension(ldc,*) c, integer ldc)

SSYRK

Purpose:

SSYRK performs one of the symmetric rank k operations

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. It's giving linear algebra realness. πŸ’–

Parameters

  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO tells you whether the upper or lower triangular part of the array C is referenced:
    • 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*A**T + beta*C.
    • TRANS = 'T' or 't' β€” C := alpha*A**T*A + beta*C.
    • TRANS = 'C' or 'c' β€” C := alpha*A**T*A + beta*C.
  • 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 matrix A, and on entry with TRANS = 'T' or 't' or 'C' or 'c', K specifies the number of rows of the matrix A. K 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 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 ). πŸ‘‘
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. πŸ’…
  • C β€” C is 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. 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 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 168 of file ssyrk.f.

πŸ’– subroutine zherk πŸ’–

subroutine zherk (character uplo, character trans, integer n, integer k,
     double precision alpha, complex*16, dimension(lda,*) a, integer lda,
     double precision beta, complex*16, dimension(ldc,*) c, integer ldc)

ZHERK

Purpose:

ZHERK performs one of the hermitian rank k operations

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

or

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

where alpha and beta are real scalars, C is an n by n hermitian matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. Hermitian, not symmetric, okay? Know the difference. πŸ’…

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*A**H + beta*C.
    • TRANS = 'C' or 'c' β€” C := alpha*A**H*A + beta*C.
  • 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 matrix A, and on entry with TRANS = 'C' or 'c', K specifies the number of rows of the matrix A. K must be at least zero. πŸ’œ
  • ALPHA β€” ALPHA is DOUBLE PRECISION . 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 ). πŸ‘‘
  • BETA
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. πŸ’–
  • 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. No cap, that’s just the vibe. 🫢
  • 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 172 of file zherk.f.


✨ subroutine zsyrk ✨

   subroutine zsyrk (character uplo, character trans, integer n, integer k,
       complex*16 alpha, complex*16, dimension(lda,*) a, integer lda,
       complex*16 beta, complex*16, dimension(ldc,*) c, integer ldc)

ZSYRK πŸ’–

🎯 Purpose 🎯

ZSYRK performs one of the symmetric rank k operations

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

or

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

where alpha and beta are scalars, C is an n by n symmetric matrix and A is an n by k matrix in the first case and a k by n matrix in the second case. πŸ’«

πŸŽ€ 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*A**T + beta*C.
    • TRANS = 'T' or 't' C := alpha*A**T*A + beta*C.
  • 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 matrix A, and on entry with TRANS = 'T' or 't', K specifies the number of rows of the matrix A. 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 ). πŸ”₯
  • BETA β€” BETA is COMPLEX*16. On entry, BETA specifies the scalar beta. πŸ’–
  • 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 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 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 166 of file zsyrk.f.


Author πŸ‘‘

Generated automatically by Doxygen for LAPACK from the source code. ✨


πŸ’– That’s a wrap, bestie! Version 3.12.0, dated Tue Nov 28 2023 12:08:43, for herk(3). Stay iconic! πŸ’…βœ¨