hfrk(3)

πŸ’– NAME πŸ’–

hfrk β€” the whole family of Hermitian/symmetric rank-k updates, but the matrix lives in RFP format (that's "Rectangular Full Packed", iykyk) ✨


✨ SYNOPSIS ✨

πŸŽ€ Functions

  • chfrk β€” CHFRK does a Hermitian rank-k operation on a matrix that's sitting in RFP format πŸ’…
  • dsfrk β€” DSFRK does a symmetric rank-k operation, matrix in RFP format πŸ¦‹
  • ssfrk β€” SSFRK does a symmetric rank-k operation, matrix in RFP format 🌸
  • zhfrk β€” ZHFRK does a Hermitian rank-k operation, matrix in RFP format πŸ‘‘

Each one is a subroutine taking (transr, uplo, trans, n, k, alpha, a, lda, beta, c). Same shape every time, only the types change β€” it's giving "one haircut four ways" 😭


πŸ¦‹ DETAILED DESCRIPTION πŸ¦‹

So here's the whole situation, bestie 🫢 This page is the home of the four rank-k updaters that work on matrices stored in RFP format. Nothing else happens under this name β€” that's the whole hfrk vibe. Below you get the full documentation for each subroutine, one at a time, with every single parameter spelled out, because past-you and future-you both deserve that 🌈


πŸ”₯ FUNCTION DOCUMENTATION πŸ”₯

πŸ’œ chfrk β€” the complex Hermitian one

subroutine chfrk (character transr, character uplo, character trans, integer
n, integer k, real alpha, complex, dimension( lda, * ) a, integer lda,
real beta, complex, dimension( * ) c)

CHFRK performs a Hermitian rank-k operation for matrix in RFP format ✨

Purpose

Okay so this is a Level 3 BLAS like routine for C in RFP Format. 🫢

CHFRK 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 πŸ‘‘

Parameters

  • TRANSR β€” TRANSR is CHARACTER*1.
    • = 'N': The Normal Form of RFP A is stored πŸŽ€
    • = 'C': The Conjugate-transpose Form of RFP A is stored ✨
  • UPLO β€” UPLO is CHARACTER*1. On entry, UPLO specifies whether the upper or lower triangular part of the array C is to be referenced, like:
    • 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.
    • Unchanged on exit 🫢
  • 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.
    • Unchanged on exit πŸ’…
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero. Unchanged on exit 🌸
  • K β€” K is INTEGER. On entry with TRANS = 'N' or 'n', K specifies the number of columns of the matrix A; on entry with TRANS = 'C' or 'c', K specifies the number of rows of the matrix A. K must be at least zero. Unchanged on exit πŸ¦‹
  • ALPHA β€” ALPHA is REAL. On entry, ALPHA specifies the scalar alpha. Unchanged on exit ✨
  • 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. Unchanged on exit πŸ’œ
  • 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 ). Unchanged on exit πŸŽ€
  • BETA β€” BETA is REAL. On entry, BETA specifies the scalar beta. Unchanged on exit 🌈
  • C β€” C is COMPLEX array, dimension (N*(N+1)/2). On entry, the matrix A in RFP Format. RFP Format is described by TRANSR, UPLO and N. 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 πŸ’€
Like, genuinely, you don't have to clean up the diagonal yourself β€” but also don't be surprised when it comes back with zero imaginary parts, bestie πŸ™ˆ

Author

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

Definition

Definition at line 166 of file chfrk.f. πŸ”₯


πŸ’™ dsfrk β€” the double-precision symmetric one

subroutine dsfrk (character transr, character uplo, character trans, integer
n, integer k, double precision alpha, double precision, dimension( lda, *
) a, integer lda, double precision beta, double precision, dimension( * ) c)

DSFRK performs a symmetric rank-k operation for matrix in RFP format ✨

Purpose

Level 3 BLAS like routine for C in RFP Format. 🫢

DSFRK 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 real 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 πŸ‘‘

Note: no **H here β€” DSFRK is the symmetric twin, so it's plain transpose <italic>T</italic>, not conjugate transpose. Different vibe, same energy πŸ’…

Parameters

  • TRANSR β€” TRANSR is CHARACTER*1.
    • = 'N': The Normal Form of RFP A is stored πŸŽ€
    • = 'T': The Transpose Form of RFP A is stored ✨
  • 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.
    • Unchanged on exit 🫢
  • 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.
    • Unchanged on exit πŸ’…
  • N β€” N is INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero. Unchanged on exit 🌸
  • 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. Unchanged on exit πŸ¦‹
  • ALPHA β€” ALPHA is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. Unchanged on exit ✨
  • A β€” A is 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. Unchanged on exit πŸ’œ
  • 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 ). Unchanged on exit πŸŽ€
  • BETA β€” BETA is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. Unchanged on exit 🌈
  • C β€” C is DOUBLE PRECISION array, dimension (NT), where NT = N*(N+1)/2. On entry, the symmetric matrix C in RFP Format. RFP Format is described by TRANSR, UPLO and N. πŸ’–
Little glow-up moment: DSFRK's C is described in terms of NT = N*(N+1)/2 instead of spelling the expression out β€” same size, different outfit, no cap πŸ‘‘

Author

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

Definition

Definition at line 164 of file dsfrk.f. πŸ”₯


πŸ’š ssfrk β€” the single-precision symmetric one

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

SSFRK performs a symmetric rank-k operation for matrix in RFP format ✨

Purpose

Level 3 BLAS like routine for C in RFP Format. 🫢

SSFRK 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 real 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 πŸ‘‘

Bestie this is literally DSFRK but in single precision REAL instead of DOUBLE PRECISION β€” same routine, smaller floats, still slaying 🌸

Parameters

  • TRANSR β€” TRANSR is CHARACTER*1.
    • = 'N': The Normal Form of RFP A is stored πŸŽ€
    • = 'T': The Transpose Form of RFP A is stored ✨
  • 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.
    • Unchanged on exit 🫢
  • TRANS β€”
🫢 aaaand that's where part 1 runs out, bestie β€” the rest of TRANS and everything after it is coming in part 2, don't go anywhere πŸ’…

Okay so picking up right where the parameter list left off β€” these next ones are giving β€œdon’t skim me, bestie” energy πŸ’…

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

Unchanged on exit. periodt.

  • N β€” is INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero. Unchanged on exit. ✨
  • 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. Unchanged on exit. 🫢
  • ALPHA β€” is REAL. On entry, ALPHA specifies the scalar alpha. Unchanged on exit.
  • 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. Unchanged on exit. πŸ’–
  • 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 ). Unchanged on exit. πŸŽ€
  • BETA β€” is REAL. On entry, BETA specifies the scalar beta. Unchanged on exit.
  • C β€” is REAL array, dimension (NT) where NT = N*(N+1)/2. On entry, the symmetric matrix C in RFP Format. RFP Format is described by TRANSR, UPLO and N. πŸ¦‹

Author

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

Definition at line 164 of file ssfrk.f.


πŸ¦‹ subroutine zhfrk

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

ZHFRK performs a Hermitian rank-k operation for matrix in RFP format. main character energy, no cap.

Purpose

Level 3 BLAS like routine for C in RFP Format. ZHFRK 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. πŸ”₯

Parameters

  • TRANSR β€” is CHARACTER*1. = 'N': The Normal Form of RFP A is stored; = 'C': The Conjugate-transpose Form of RFP A is stored. πŸ‘‘
  • 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.

Unchanged on exit. 🌸

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

Unchanged on exit. πŸ’…

  • N β€” is INTEGER. On entry, N specifies the order of the matrix C. N must be at least zero. Unchanged on exit. ⭐
  • 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. Unchanged on exit. 🫧
  • ALPHA β€” is DOUBLE PRECISION. On entry, ALPHA specifies the scalar alpha. Unchanged on exit.
  • 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. Unchanged on exit. πŸ’œ
  • 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 ). Unchanged on exit. 🌈
  • BETA β€” is DOUBLE PRECISION. On entry, BETA specifies the scalar beta. Unchanged on exit.
  • C β€” is COMPLEX*16 array, dimension (N*(N+1)/2). On entry, the matrix A in RFP Format. RFP Format is described by TRANSR, UPLO and N. 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. πŸ“

Author

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

Definition at line 166 of file zhfrk.f.

Author

Generated automatically by Doxygen for LAPACK from the source code.


And that’s the whole page, bestie β€” footer tea is LAPACK Version 3.12.0, page tag hfrk(3), and there’s no date line in that footer. πŸŽ€βœ¨ slay.

πŸ“¦ where this page comes from