SRC/zsyconvf_rook.f(3)
π SRC/zsyconvf_rook.f(3) β Library Functions Manual π
okay so bestie, welcome to the LAPACK Library Functions Manual entry for SRC/zsyconvf_rook.f β¨ this is literally the glow-up conversion routine for factorization formats and i'm obsessed π
π NAME π
SRC/zsyconvf_rook.f β no cap, that's the whole name, she's mysterious like that π
β¨ SYNOPSIS β¨
πΈ Functions/Subroutines πΈ
subroutine zsyconvf_rook (uplo, way, n, a, lda, e, ipiv, info)β the main character herself,ZSYCONVF_ROOKπ
π Function/Subroutine Documentation π
π subroutine zsyconvf_rook π
okay so here's the full signature bestie, look at her:
subroutine zsyconvf_rook (character uplo, character way, integer n,
complex*16, dimension( lda, * ) a, integer lda, complex*16, dimension( *
) e, integer, dimension( * ) ipiv, integer info)
she's giving ZSYCONVF_ROOK and she's here to convert your factorization formats π₯
π¦ Purpose π¦
If parameter WAY = 'C':ZSYCONVF_ROOKconverts the factorization output format used inZSYTRF_ROOKprovided on entry in parameter A into the factorization output format used inZSYTRF_RK(orZSYTRF_BK) that is stored on exit in parameters A and E. IPIV format forZSYTRF_ROOKandZSYTRF_RK(orZSYTRF_BK) is the same and is not converted.
If parameter WAY = 'R':ZSYCONVF_ROOKperforms the conversion in reverse direction, i.e. converts the factorization output format used inZSYTRF_RK(orZSYTRF_BK) provided on entry in parameters A and E into the factorization output format used inZSYTRF_ROOKthat is stored on exit in parameter A. IPIV format forZSYTRF_ROOKandZSYTRF_RK(orZSYTRF_BK) is the same and is not converted.
ZSYCONVF_ROOKcan also convert in Hermitian matrix case, i.e. between formats used inZHETRF_ROOKandZHETRF_RK(orZHETRF_BK).
so basically she speaks both languages, ROOK format and RK/BK format, and she's fluent in both directions π
no cap, the IPIV format stays the same in all of them so she doesn't even touch it, periodt β¨
π Parameters π
okay so here are all the parameters bestie, i'm gonna go through them one by one because every single one matters π
πΈ UPLO πΈ
UPLOisCHARACTER*1Specifies whether the details of the factorization are stored as an upper or lower triangular matrix A. ='U': Upper triangular ='L': Lower triangular
she needs to know if your matrix A is serving upper triangular energy or lower triangular energy, iykyk π
π¦ WAY π¦
WAYisCHARACTER*1='C': Convert ='R': Revert
so 'C' means "convert this", 'R' means "revert that", she's flexible like that π
β¨ N β¨
NisINTEGERThe order of the matrix A.N >= 0.
literally just the size of your matrix bestie, and it better be zero or bigger, fr fr π
π A π
AisCOMPLEX*16array, dimension(LDA,N)
okay so this one has two whole personalities depending on WAY, buckle up:
1) If WAY ='C': On entry, contains factorization details in format used inZSYTRF_ROOK: a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and b) IfUPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. IfUPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A. On exit, contains factorization details in format used inZSYTRF_RKorZSYTRF_BK: a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in array E), and b) IfUPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A.
2) If WAY = 'R': On entry, contains factorization details in format used inZSYTRF_RKorZSYTRF_BK: a) ONLY diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.D(k,k) = A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in array E), and b) IfUPLO = 'U': factor U in the superdiagonal part of A. IfUPLO = 'L': factor L in the subdiagonal part of A. On exit, contains factorization details in format used inZSYTRF_ROOK: a) all elements of the symmetric block diagonal matrix D on the diagonal of A and on superdiagonal (or subdiagonal) of A, and b) IfUPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. IfUPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A.
so like, she's shuffling where the D matrix elements live, moving the off-diagonal bits into E when converting and back into A when reverting, it's giving main character energy π β¨
π LDA π
LDAisINTEGERThe leading dimension of the array A.LDA >= max(1,N).
just the leading dimension bestie, and it has to be at least max(1,N), no exceptions, periodt π
π E π
EisCOMPLEX*16array, dimension(N)
okay so E is also living a double life:
1) If WAY ='C': On entry, just a workspace. On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where IfUPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)is set to 0; IfUPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)is set to 0.
2) If WAY = 'R': On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where IfUPLO = 'U':E(i) = D(i-1,i),i=2:N,E(1)not referenced; IfUPLO = 'L':E(i) = D(i+1,i),i=1:N-1,E(N)not referenced. On exit, is not changed
so when converting she fills E up with the off-diagonal D elements, and when reverting she reads them out of E and leaves E exactly as she found it, iconic behavior honestly π¦π
π IPIV π
IPIVisINTEGERarray, dimension(N)On entry, details of the interchanges and the block structure of D as determined: 1) byZSYTRF_ROOK, ifWAY ='C'; 2) byZSYTRF_RK(orZSYTRF_BK), ifWAY ='R'. The IPIV format is the same for all these routines. On exit, is not changed.
she literally does not touch IPIV at all, it's the same format in all these routines so she leaves it alone, respectful queen πβ¨
π INFO π
INFOisINTEGER= 0: successful exit < 0: ifINFO = -i, the i-th argument had an illegal value
zero means everything's slay, negative means some argument was not it and she's telling you which one, bestie π
πΈ Author πΈ
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Contributors: π
November 2017, Igor Kozachenko, Computer Science Division, University of California, Berkeley
shoutout to Igor for this contribution, we love to see it π«Ά
π Definition at line 199 of file zsyconvf_rook.f. π
that's where she lives, line 199, no cap π
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole thing bestie! π
β¨ this page is from LAPACK Version 3.12.0 and the file is SRC/zsyconvf_rook.f(3), so yeah, that's the vibe, that's the tea, periodt ππ¦π
hope that helped, ily, go convert some factorization formats responsibly ππ
π¦ 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