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_ROOK converts the factorization output format used in ZSYTRF_ROOK provided on entry in parameter A into the factorization output format used in ZSYTRF_RK (or ZSYTRF_BK) that is stored on exit in parameters A and E. IPIV format for ZSYTRF_ROOK and ZSYTRF_RK (or ZSYTRF_BK) is the same and is not converted.
If parameter WAY = 'R': ZSYCONVF_ROOK performs the conversion in reverse direction, i.e. converts the factorization output format used in ZSYTRF_RK (or ZSYTRF_BK) provided on entry in parameters A and E into the factorization output format used in ZSYTRF_ROOK that is stored on exit in parameter A. IPIV format for ZSYTRF_ROOK and ZSYTRF_RK (or ZSYTRF_BK) is the same and is not converted.
ZSYCONVF_ROOK can also convert in Hermitian matrix case, i.e. between formats used in ZHETRF_ROOK and ZHETRF_RK (or ZHETRF_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 🌸

UPLO is CHARACTER*1 Specifies 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 πŸ¦‹

WAY is CHARACTER*1 = 'C': Convert = 'R': Revert

so 'C' means "convert this", 'R' means "revert that", she's flexible like that πŸ’–


✨ N ✨

N is INTEGER The 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 πŸ’œ

A is COMPLEX*16 array, 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 in ZSYTRF_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) If UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. If UPLO = 'L': multipliers used to obtain factor L in the superdiagonal part of A. On exit, contains factorization details in format used in ZSYTRF_RK or ZSYTRF_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) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A.
2) If WAY = 'R': On entry, contains factorization details in format used in ZSYTRF_RK or ZSYTRF_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) If UPLO = 'U': factor U in the superdiagonal part of A. If UPLO = 'L': factor L in the subdiagonal part of A. On exit, contains factorization details in format used in ZSYTRF_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) If UPLO = 'U': multipliers used to obtain factor U in the superdiagonal part of A. If UPLO = '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 πŸŽ€

LDA is INTEGER The 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 🌟

E is COMPLEX*16 array, 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 If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) is set to 0; If UPLO = '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 If UPLO = 'U': E(i) = D(i-1,i), i=2:N, E(1) not referenced; If UPLO = '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 πŸ’€

IPIV is INTEGER array, dimension (N) On entry, details of the interchanges and the block structure of D as determined: 1) by ZSYTRF_ROOK, if WAY ='C'; 2) by ZSYTRF_RK (or ZSYTRF_BK), if WAY ='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 πŸ“

INFO is INTEGER = 0: successful exit < 0: if INFO = -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