CLAVHE(3)

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

πŸ’… CLAVHE(3) β€” the iconic LAPACK subroutine that's about to be your new bestie

Okay so bestie, grab your iced coffee because we're diving into the CLAVHE manual page from /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/clavhe.f. This is literally a Library Functions Manual situation and it's giving main character energy. No cap, this little file is iconic and we're gonna understand it together. πŸŽ€


✨ SYNOPSIS ✨

So here's the whole vibe β€” CLAVHE lives in the Functions/Subroutines category, and the call looks like this:

subroutine CLAVHE (uplo, trans, diag, n, nrhs, a, lda, ipiv, b, ldb, info)

Yeah that's our girl CLAVHE, periodt. πŸ’–


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

Okay so here's the full signature, and it's lowkey a lot of arguments but you're gonna slay:

subroutine CLAVHE (character uplo, character trans, character diag, integer
    n, integer nrhs, complex, dimension( lda, * ) a, integer lda, integer,
    dimension( * ) ipiv, complex, dimension( ldb, * ) b, integer ldb,
    integer info)

Again β€” it's CLAVHE, our icon. πŸ‘‘

🌸 Purpose 🌸

Okay bestie, listen up:

CLAVHE performs one of the matrix-vector operations text x := A*x or x := A^H*x, where x is an N element vector and A is one of the factors from the block U*D*U' or L*D*L' factorization computed by CHETRF.

And the trans tea β˜•:

If TRANS = 'N', multiplies by U or U * D (or L or L * D) If TRANS = 'C', multiplies by U' or D * U' (or L' or D * L')

Literally so clean. Obsessed. πŸ’œ


✨ Parameters ✨

Okay so here's where we get into the details β€” every single one, no skipping, because we don't gatekeep here. πŸ’…

  • UPLO β€” this is a CHARACTER*1, and it specifies whether the factor stored in A is upper or lower triangular.
= 'U': Upper triangular = 'L': Lower triangular
  • TRANS β€” CHARACTER*1, specifies the operation to be performed:
= 'N': x := A*x = 'C': x := A^H*x
  • DIAG β€” CHARACTER*1, this one's about whether or not the diagonal blocks are unit matrices. If the diagonal blocks are assumed to be unit, then A = U or A = L, otherwise A = U*D or A = L*D.
= 'U': Diagonal blocks are assumed to be unit matrices. = 'N': Diagonal blocks are assumed to be non-unit matrices.
  • N β€” INTEGER, the number of rows and columns of the matrix A. And the rule is N >= 0.
  • NRHS β€” INTEGER, the number of right hand sides, i.e., the number of vectors x to be multiplied by A. And NRHS >= 0.
  • A β€” COMPLEX array, dimension (LDA,N). This is the block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by CHETRF_ROOK. Stored as a 2-D triangular matrix, iykyk.
  • LDA β€” INTEGER, the leading dimension of the array A. The requirement is LDA >= max(1,N).
  • IPIV β€” INTEGER array, dimension (N). This is the details of the interchanges and the block structure of D, as determined by CHETRF. So here's the situation, bestie:
If UPLO = 'U': - If IPIV(k) > 0, then rows and columns k and IPIV(k) were interchanged and D(k,k) is a 1-by-1 diagonal block. (If IPIV( k ) = k, no interchange was done). - If IPIV(k) = IPIV(k-1) < 0, then rows and columns k-1 and -IPIV(k) were interchanged, D(k-1:k,k-1:k) is a 2-by-2 diagonal block.
If UPLO = 'L': - If IPIV(k) > 0, then rows and columns k and IPIV(k) were interchanged and D(k,k) is a 1-by-1 diagonal block. (If IPIV( k ) = k, no interchange was done). - If IPIV(k) = IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were interchanged, D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
  • B β€” COMPLEX array, dimension (LDB,NRHS). On entry, B contains NRHS vectors of length N. On exit, B is overwritten with the product A * B. So yeah she's doing double duty, iconic. πŸ’–
  • LDB β€” INTEGER, the leading dimension of the array B. Requirement: LDB >= max(1,N).
  • INFO β€” INTEGER, the tea on how it went:
= 0: successful exit < 0: if INFO = -k, the k-th argument had an illegal value

πŸ‘‘ Author πŸ‘‘

So this page was brought to us by a whole squad of legends:

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

And the definition is at line 151 of file clavhe.f. Slay. πŸŽ€


🌈 Little Sign-Off 🌈

Sooo this whole thing was generated automatically by Doxygen for LAPACK from the source code, and it's LAPACK Version 3.12.0. That's the vibe check β€” /home/abui...IN/clavhe.f(3). Byeee bestie, go multiply some matrices! πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from