/home/abui...vsy_rook.f(3)
π NAME π
ok so bestie, this is <pink>/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/dlavsy_rook.f` β yes that's the whole entire path, no I'm not kidding, it's giving "my professor named the file with his whole address" energy π and it lives in the LAPACK library functions manual, section 3. Slay.
β¨ SYNOPSIS β¨
π§ Functions/Subroutines
subroutine DLAVSY_ROOK (uplo, trans, diag, n, nrhs, a, lda, ipiv, b, ldb, info)β the icon herself. That's it. That's the name. She's serving all caps and underscores.
subroutine DLAVSY_ROOK (uplo, trans, diag, n, nrhs, a, lda, ipiv, b, ldb, info)
π Function/Subroutine Documentation π
πΈ subroutine DLAVSY_ROOK
subroutine DLAVSY_ROOK (character uplo, character trans, character diag,
integer n, integer nrhs, double precision, dimension( lda, * ) a,
integer lda, integer, dimension( * ) ipiv, double precision, dimension(
ldb, * ) b, integer ldb, integer info)
DLAVSY_ROOK. She's the main character, obviously. π
π¦ Purpose:
!>
!> DLAVSY_ROOK 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 DSYTRF_ROOK.
!>
!> 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')
!> If TRANS = 'C', multiplies by U' or D * U' (or L' or D * L')
!>
So basically: DLAVSY_ROOK does one of those matrix-vector glow-ups, 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 that DSYTRF_ROOK computed. Yep, DSYTRF_ROOK is her bestie from earlier in the story. π₯
- If
TRANS = 'N', you multiply byUorU * D(orLorL * D) - If
TRANS = 'T', you multiply byU'orD * U'(orL'orD * L') - If
TRANS = 'C', you multiply byU'orD * U'(orL'orD * L')
Note how 'T' and 'C' do literally the exact same thing here β no cap, that's just how she is. π
π Parameters
π UPLO
!> UPLO is CHARACTER*1
!> Specifies whether the factor stored in A is upper or lower
!> triangular.
!> = 'U': Upper triangular
!> = 'L': Lower triangular
!>
Tells you whether the factor chillin' inside A is upper or lower triangular. Choose your fighter: 'U' for upper triangular, 'L' for lower triangular. β¨
π TRANS
!> TRANS is CHARACTER*1
!> Specifies the operation to be performed:
!> = 'N': x := A*x
!> = 'T': x := A'*x
!> = 'C': x := A'*x
!>
Which operation are we doing today, bestie? 'N' gives you x := A*x, 'T' gives you x := A'*x, and 'C' gives you x := A'*x too (yes, twins π―). π«Ά
π DIAG
!> DIAG is CHARACTER*1
!> 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.
!>
This one decides whether the diagonal blocks are unit matrices or not. If they're assumed unit, then A = U or A = L; otherwise A = U*D or A = L*D. Pick 'U' for "yep, unit matrices, we said what we said" or 'N' for "nope, non-unit." π
π§ N
!> N is INTEGER
!> The number of rows and columns of the matrix A. N >= 0.
!>
The number of rows and columns of matrix A β she's square, obviously. Constraint: N >= 0. β¨
π¦ NRHS
!> NRHS is INTEGER
!> The number of right hand sides, i.e., the number of vectors
!> x to be multiplied by A. NRHS >= 0.
!>
The number of right hand sides, aka how many vectors x are getting multiplied by A. Constraint: NRHS >= 0. πΈ
π A
!> A is DOUBLE PRECISION array, dimension (LDA,N)
!> The block diagonal matrix D and the multipliers used to
!> obtain the factor U or L as computed by DSYTRF_ROOK.
!> Stored as a 2-D triangular matrix.
!>
A DOUBLE PRECISION array, dimension (LDA,N). She's holding the block diagonal matrix D and the multipliers used to obtain the factor U or L, exactly as computed by DSYTRF_ROOK. Stored as a 2-D triangular matrix β lowkey fancy. π₯
β LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,N).
!>
Integer, the leading dimension of array A. Constraint is LDA >= max(1,N) β don't you dare go smaller. π€
π§ IPIV
!> IPIV is INTEGER array, dimension (N)
!> Details of the interchanges and the block structure of D,
!> as determined by DSYTRF_ROOK.
!>
!> 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) < 0 and IPIV(k-1) < 0, then rows and
!> columns k and -IPIV(k) were interchanged and rows and
!> columns k-1 and -IPIV(k-1) were inerchaged,
!> 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) < 0 and IPIV(k+1) < 0, then rows and
!> columns k and -IPIV(k) were interchanged and rows and
!> columns k+1 and -IPIV(k+1) were inerchaged,
!> D(k:k+1,k:k+1) is a 2-by-2 diagonal block.
!>
Integer array, dimension (N). She's the receipts π β details of the interchanges and the block structure of D, as determined by DSYTRF_ROOK.
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 β she stayed put.) - If
IPIV(k) < 0andIPIV(k-1) < 0, then rows and columnskand-IPIV(k)were interchanged and rows and columnsk-1and-IPIV(k-1)were inerchaged, andD(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) < 0andIPIV(k+1) < 0, then rows and columnskand-IPIV(k)were interchanged and rows and columnsk+1and-IPIV(k+1)were inerchaged, andD(k:k+1,k:k+1)is a 2-by-2 diagonal block. π
fun fact: "inerchaged" is a typo that lives in the actual source, so it lives here too. we don't fix, we preserve. π«Ά
π B
!> B is DOUBLE PRECISION array, dimension (LDB,NRHS)
!> On entry, B contains NRHS vectors of length N.
!> On exit, B is overwritten with the product A * B.
!>
DOUBLE PRECISION array, dimension (LDB,NRHS). On entry, B contains NRHS vectors of length N. On exit, B gets overwritten with the product A * B β so like, screenshot your original data first if you needed it, bestie ππ
π LDB
!> LDB is INTEGER
!> The leading dimension of the array B. LDB >= max(1,N).
!>
Integer, leading dimension of array B. Constraint: LDB >= max(1,N). Iconic and non-negotiable. π
π INFO
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -k, the k-th argument had an illegal value
!>
The vibe check at the end π« β INFO is INTEGER:
= 0: successful exit, we ate and left no crumbs π₯< 0: ifINFO = -k, 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 155 of file dlavsy_rook.f. β¨
π Author π
Generated automatically by Doxygen for LAPACK from the source code. (The robots did this one, not me β she's β¨automatedβ¨.)
k bye bestie, mwah π β this page was brought to you by LAPACK, Version 3.12.0, dated at the bottom of the original as /home/abui...vsy_rook.f(3). go forth and multiply your matrices responsibly π«Άπ
π¦ 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