TESTING/LIN/clavhp.f(3)
π 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 onlyCLAVHP, 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' inAis 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, andTRANS = '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 matrixA.Nmust 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 vectorsxare getting multiplied byA.NRHSmust 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,Aholds 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 byCSPTRForCHPTRF. here's the lore:- If
IPIV( K ) = K, no interchange was done. - If
IPIV( K ) <> KbutIPIV( K ) > 0, then rowKwas interchanged with rowIPIV( K )and a 1 x 1 pivot block was used. - If
IPIV( K ) < 0andUPLO = 'U', then rowK-1was exchanged with row| IPIV( K ) |and a 2 x 2 pivot block was used. - If
IPIV( K ) < 0andUPLO = 'L', then rowK+1was exchanged with row| IPIV( K ) |and a 2 x 2 pivot block was used.
- If
!> 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,BholdsNRHSvectors of lengthN. on exit,Bis overwritten with the productA * 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 ofBas declared in the calling program.LDBmust be at leastmax( 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
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms