CLAVSY(3)
π CLAVSY(3) β aka clavsy.f, the LAPACK girlie we stan π
okay so bestie, welcome to the manual page for clavsy.f, sitting pretty in the LAPACK 3.12.0 tree. it's a library function page in the Library Functions Manual, and yes it lives at this exact path:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/clavsy.f
that's the whole vibe. let's get into it π¦
β¨ SYNOPSIS β¨
πΈ Functions/Subroutines πΈ
subroutine CLAVSY (uplo, trans, diag, n, nrhs, a, lda, ipiv, b, ldb,
info)
that's it, that's the subroutine. she's called CLAVSY π
π Function/Subroutine Documentation π
subroutine CLAVSY (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)
CLAVSY β icon behavior, no notes π
π Purpose:
!>
!> CLAVSY performs one of the matrix-vector operations
!> x := A*x or x := A'*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 CSYTRF.
!>
!> If TRANS = 'N', multiplies by U or U * D (or L or L * D)
!> If TRANS = 'T', multiplies by U' or D * U' (or L' or D * L')
!>
so basically: CLAVSY does one of those matrix-vector operations up there, 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 CSYTRF. and then β literally the whole plot β if TRANS = 'N' it multiplies by U or U * D (or L or L * D), and if TRANS = 'T' it multiplies by U' or D * U' (or L' or D * L'). periodt β¨
π¦ Parameters π¦
UPLOβUPLOisCHARACTER*1. it specifies whether the factor stored inAis upper or lower triangular.= 'U': upper triangular.= 'L': lower triangular. pick your fighter πTRANSβTRANSisCHARACTER*1. it specifies the operation to be performed:= 'N':x := A*x, or= 'T':x := A'*x. that's the whole menu bestie πDIAGβDIAGisCHARACTER*1. it specifies whether or not the diagonal blocks are unit matrices. if the diagonal blocks are assumed to be unit, thenA = UorA = L, otherwiseA = U*DorA = L*D.= 'U': diagonal blocks are assumed to be unit matrices.= 'N': diagonal blocks are assumed to be non-unit matrices. lowkey the most important little letter in the whole page πNβNisINTEGER. the number of rows and columns of the matrixA.N >= 0. yes, zero counts, we love an inclusive queen β¨NRHSβNRHSisINTEGER. the number of right hand sides, i.e., the number of vectorsxto be multiplied byA.NRHS >= 0. multiply as many as you want, she's flexible πAβAisCOMPLEXarray, dimension(LDA,N). the block diagonal matrixDand the multipliers used to obtain the factorUorLas computed byCSYTRF. stored as a 2-D triangular matrix. so she's not a full square, she's triangular and she knows it πLDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,N). respect the leading dimension or she will not run, fr frIPIVβIPIVisINTEGERarray, dimension(N). details of the interchanges and the block structure ofD, as determined byCSYTRF. and okay this part has lore, so buckle up:
if UPLO = 'U':
- if
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block. (ifIPIV( k ) = k, no interchange was done). - if
IPIV(k) = IPIV(k-1) < 0, then rows and columnsk-1and-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 columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block. (ifIPIV( k ) = k, no interchange was done). - if
IPIV(k) = IPIV(k+1) < 0, then rows and columnsk+1and-IPIV(k)were interchanged,D(k:k+1,k:k+1)is a 2-by-2 diagonal block.
see how the upper case goes k-1 and the lower case goes k+1? that's not a typo, that's just her being extra in both directions π the -IPIV(k) is negative on purpose β that's the signal that a 2-by-2 block is in the building π
BβBisCOMPLEXarray, dimension(LDB,NRHS). on entry,BcontainsNRHSvectors of lengthN. on exit,Bis overwritten with the productA * B. so she does NOT preserve yourB, she replaces it, that's the deal bestie π«ΆLDBβLDBisINTEGER. the leading dimension of the arrayB.LDB >= max(1,N). same energy as LDA, don't test her πINFOβINFOisINTEGER.= 0: successful exit.< 0: ifINFO = -k, the k-th argument had an illegal value. so if you get a negative number, that's her politely telling you which of your arguments was a little messy πΈ
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad behind her π«Ά
definition at line 151 of file clavsy.f.
β Author (again, but doxygen flavored) β
generated automatically by Doxygen for LAPACK from the source code. not a human, a robot, and honestly she ate π€β¨
and that's the page!! π little sign-off for you: this is LAPACK Version 3.12.0, and the footer path vibe is /home/abui...IN/clavsy.f(3) β that's clavsy.f(3), all lowercase, all iconic. go multiply something, bestie ππ
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms