TESTING/LIN/clavhp.f(3)

πŸ“¦
version 3.12.1 Β· 2 versions
, in arch rolling

πŸ’… TESTING/LIN/clavhp.f(3) β€” Library Functions Manual, but make it a vibe

okay so bestie, this page is from the Library Functions Manual and it's literally all about TESTING/LIN/clavhp.f β€” a Fortran file that lives inside the LAPACK test suite. it's giving "deep internals, handle with care" and honestly? we're obsessed. ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

  • subroutine clavhp (uplo, trans, diag, n, nrhs, a, ipiv, b, ldb, info) β€” the one and only CLAVHP, our main character πŸ‘‘

🌸 Function/Subroutine Documentation 🌸

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

CLAVHP β€” say it with me, the icon herself πŸŽ€

✨ Purpose ✨

!> !> CLAVHP performs one of the matrix-vector operations !> x := A*x or x := A^H*x, !> where x is an N element vector and A is one of the factors !> from the symmetric factorization computed by CHPTRF. !> CHPTRF produces a factorization of the form !> U * D * U^H or L * D * L^H, !> where U (or L) is a product of permutation and unit upper (lower) !> triangular matrices, U^H (or L^H) is the conjugate transpose of !> U (or L), and D is Hermitian and block diagonal with 1 x 1 and !> 2 x 2 diagonal blocks. The multipliers for the transformations !> and the upper or lower triangular parts of the diagonal blocks !> are stored columnwise in packed format in the linear array A. !> !> If TRANS = 'N' or 'n', CLAVHP multiplies either by U or U * D !> (or L or L * D). !> If TRANS = 'C' or 'c', CLAVHP multiplies either by U^H or D * U^H !> (or L^H or D * L^H ). !>

like, she takes your packed factor from CHPTRF and does the multiply for you. no cap, that's the whole gig. 🫢

πŸ’œ The Arguments (every single one, don't skip) πŸ’œ

!> UPLO - CHARACTER*1 !> On entry, UPLO specifies whether the triangular matrix !> stored in A is upper or lower triangular. !> UPLO = 'U' or 'u' The matrix is upper triangular. !> UPLO = 'L' or 'l' The matrix is lower triangular. !> Unchanged on exit. !>
  • UPLO (CHARACTER*1) β€” on entry you tell it whether the triangular matrix chillin' in A is upper or lower triangular. UPLO = 'U' or 'u' β†’ upper. UPLO = 'L' or 'l' β†’ lower. stays the same on exit, no notes. πŸ‘‘
!> TRANS - CHARACTER*1 !> On entry, TRANS specifies the operation to be performed as !> follows: !> TRANS = 'N' or 'n' x := A*x. !> TRANS = 'C' or 'c' x := A^H*x. !> Unchanged on exit. !>
  • TRANS (CHARACTER*1) β€” on entry, picks the operation: TRANS = 'N' or 'n' β†’ x := A*x, and TRANS = 'C' or 'c' β†’ x := A^H*x. unchanged on exit. ✨
!> DIAG - CHARACTER*1 !> On entry, DIAG specifies whether the diagonal blocks are !> assumed to be unit matrices, as follows: !> DIAG = 'U' or 'u' Diagonal blocks are unit matrices. !> DIAG = 'N' or 'n' Diagonal blocks are non-unit. !> Unchanged on exit. !>
  • DIAG (CHARACTER*1) β€” on entry, says whether the diagonal blocks are assumed to be unit matrices: DIAG = 'U' or 'u' β†’ unit, DIAG = 'N' or 'n' β†’ non-unit. unchanged on exit. πŸ¦‹
!> N - INTEGER !> On entry, N specifies the order of the matrix A. !> N must be at least zero. !> Unchanged on exit. !>
  • N (INTEGER) β€” on entry, the order of matrix A. N must be at least zero. unchanged on exit. ⭐
!> NRHS - INTEGER !> On entry, NRHS specifies the number of right hand sides, !> i.e., the number of vectors x to be multiplied by A. !> NRHS must be at least zero. !> Unchanged on exit. !>
  • NRHS (INTEGER) β€” on entry, how many right hand sides you've got, i.e. how many vectors x are getting multiplied by A. NRHS must be at least zero. unchanged on exit. 🌈
!> A - COMPLEX array, dimension( N*(N+1)/2 ) !> On entry, A contains a block diagonal matrix and the !> multipliers of the transformations used to obtain it, !> stored as a packed triangular matrix. !> Unchanged on exit. !>
  • A (COMPLEX array, dimension( N*(N+1)/2 )) β€” on entry, A holds a block diagonal matrix plus the multipliers of the transformations used to get it, stored as a packed triangular matrix. unchanged on exit, she's just here to be read from. πŸ’–
!> IPIV - INTEGER array, dimension( N ) !> On entry, IPIV contains the vector of pivot indices as !> determined by CSPTRF or CHPTRF. !> If IPIV( K ) = K, no interchange was done. !> If IPIV( K ) <> K but IPIV( K ) > 0, then row K was inter- !> changed with row IPIV( K ) and a 1 x 1 pivot block was used. !> If IPIV( K ) < 0 and UPLO = 'U', then row K-1 was exchanged !> with row | IPIV( K ) | and a 2 x 2 pivot block was used. !> If IPIV( K ) < 0 and UPLO = 'L', then row K+1 was exchanged !> with row | IPIV( K ) | and a 2 x 2 pivot block was used. !>
  • IPIV (INTEGER array, dimension( N )) β€” on entry, the vector of pivot indices exactly as determined by CSPTRF or CHPTRF. here's the lore:
    • If IPIV( K ) = K, no interchange was done.
    • If IPIV( K ) <> K but IPIV( K ) > 0, then row K was interchanged with row IPIV( K ) and a 1 x 1 pivot block was used.
    • If IPIV( K ) < 0 and UPLO = 'U', then row K-1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used.
    • If IPIV( K ) < 0 and UPLO = 'L', then row K+1 was exchanged with row | IPIV( K ) | and a 2 x 2 pivot block was used.
!> 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. !>
  • B (COMPLEX array, dimension( LDB, NRHS )) β€” on entry, B holds NRHS vectors of length N. on exit, B is overwritten with the product A * B. so yeah, she eats your input and gives you output in the same spot 😭 (iconic behaviour, honestly)
!> LDB - INTEGER !> On entry, LDB contains the leading dimension of B as !> declared in the calling program. LDB must be at least !> max( 1, N ). !> Unchanged on exit. !>
  • LDB (INTEGER) β€” on entry, the leading dimension of B as declared in the calling program. LDB must be at least max( 1, N ). unchanged on exit. πŸ“
!> INFO - INTEGER !> INFO is the error flag. !> On exit, a value of 0 indicates a successful exit. !> A negative value, say -K, indicates that the K-th argument !> has an illegal value. !>
  • INFO (INTEGER) β€” the error flag, bestie. on exit, 0 = successful exit, slay. a negative value, like -K, means the K-th argument had an illegal value. πŸ’€

πŸ‘‘ Author πŸ‘‘

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

Definition at line 129 of file clavhp.f.


🧚 Author (again, the meta one) 🧚

Generated automatically by Doxygen for LAPACK from the source code. yes, a robot wrote the docs. we stan a machine-generated king. πŸ€–πŸ’…


and that's the whole page, bestie β€” no skips, no crumbs left behind. go forth and multiply (matrices). πŸ¦‹βœ¨

~ LAPACK, Version 3.12.0, TESTING/LIN/clavhp.f(3) ~ mwah πŸ’‹

πŸ“¦ where this page comes from