CLAVSY(3)

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

πŸ’– 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 β€” UPLO is CHARACTER*1. it specifies whether the factor stored in A is upper or lower triangular. = 'U': upper triangular. = 'L': lower triangular. pick your fighter πŸ’…
  • TRANS β€” TRANS is CHARACTER*1. it specifies the operation to be performed: = 'N': x := A*x, or = 'T': x := A'*x. that's the whole menu bestie πŸ“
  • DIAG β€” DIAG is CHARACTER*1. it specifies 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. lowkey the most important little letter in the whole page πŸ™ˆ
  • N β€” N is INTEGER. the number of rows and columns of the matrix A. N >= 0. yes, zero counts, we love an inclusive queen ✨
  • NRHS β€” NRHS is INTEGER. the number of right hand sides, i.e., the number of vectors x to be multiplied by A. NRHS >= 0. multiply as many as you want, she's flexible πŸ’–
  • A β€” A is COMPLEX array, dimension (LDA,N). the block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by CSYTRF. stored as a 2-D triangular matrix. so she's not a full square, she's triangular and she knows it πŸ‘‘
  • LDA β€” LDA is INTEGER. the leading dimension of the array A. LDA >= max(1,N). respect the leading dimension or she will not run, fr fr
  • IPIV β€” IPIV is INTEGER array, dimension (N). details of the interchanges and the block structure of D, as determined by CSYTRF. and okay this part has lore, so buckle up:

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.

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 β€” B is 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 she does NOT preserve your B, she replaces it, that's the deal bestie 🫢
  • LDB β€” LDB is INTEGER. the leading dimension of the array B. LDB >= max(1,N). same energy as LDA, don't test her πŸ’…
  • INFO β€” INFO is INTEGER. = 0: successful exit. < 0: if INFO = -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