SRC/zsytrs_rook.f(3)

🌸 SRC/zsytrs_rook.f(3) 🌸

okay so this is a page from the Library Functions Manual and bestie, it is so specific β€” it's literally one subroutine and its whole entire vibe. let's get into it πŸ’…


✨ NAME ✨

SRC/zsytrs_rook.f β€” that's the file, that's the name, no cap πŸŽ€


✨ SYNOPSIS ✨

πŸ¦‹ Functions/Subroutines

  • subroutine zsytrs_rook (uplo, n, nrhs, a, lda, ipiv, b, ldb, info) β€” the one and only, ZSYTRS_ROOK πŸ‘‘

✨ Function/Subroutine Documentation ✨

πŸ’– the subroutine itself

subroutine zsytrs_rook (character uplo, integer n, integer nrhs, complex*16,
    dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv,
    complex*16, dimension( ldb, * ) b, integer ldb, integer info)

ZSYTRS_ROOK β€” say it with me, main character energy ⭐

🧚 Purpose:

ZSYTRS_ROOK solves a system of linear equations A*X = B with a complex symmetric matrix A using the factorization A = U*D*UT or A = L*D*LT computed by ZSYTRF_ROOK.

so like, you already did the hard part with ZSYTRF_ROOK, and now this lil icon finishes the job 😌✨


🌸 Parameters

UPLO

UPLO is CHARACTER*1 Specifies whether the details of the factorization are stored as an upper or lower triangular matrix. = 'U': Upper triangular, form is A = U*D*UT; = 'L': Lower triangular, form is A = L*D*LT.

bestie you gotta tell it which triangle you're living in β€” upper girlie or lower girlie, pick one πŸ’…

N

N is INTEGER The order of the matrix A. N >= 0.

the size of the whole situation. and yes, N >= 0, respect the boundary 🫢

NRHS

NRHS is INTEGER The number of right hand sides, i.e., the number of columns of the matrix B. NRHS >= 0.

how many right hand sides you're serving β€” literally the column count of B. also NRHS >= 0 fr fr 🌈

A

A is COMPLEX*16 array, dimension (LDA,N) The block diagonal matrix D and the multipliers used to obtain the factor U or L as computed by ZSYTRF_ROOK.

this is the stuff ZSYTRF_ROOK handed you β€” the block diagonal matrix D plus the multipliers that got you U or L. don't mess with it, it's already iconic πŸ‘‘

LDA

LDA is INTEGER The leading dimension of the array A. LDA >= max(1,N).

the leading dimension of A. LDA >= max(1,N), no exceptions πŸŽ€

IPIV

IPIV is INTEGER array, dimension (N) Details of the interchanges and the block structure of D as determined by ZSYTRF_ROOK.

all the interchange deets and the block structure of D, straight from ZSYTRF_ROOK. iykyk πŸ¦‹

B

B is COMPLEX*16 array, dimension (LDB,NRHS) On entry, the right hand side matrix B. On exit, the solution matrix X.

the glow-up of the century honestly: goes in as the right hand side matrix B, comes out as the solution matrix X. we love a transformation ✨😭

LDB

LDB is INTEGER The leading dimension of the array B. LDB >= max(1,N).

leading dimension of B. LDB >= max(1,N) β€” same energy as LDA, keep it consistent πŸ’œ

INFO

INFO is INTEGER = 0: successful exit < 0: if INFO = -i, the i-th argument had an illegal value

the vibe check at the end πŸ’€ 0 means slay, you're done. if it's < 0 and INFO = -i, then the i-th argument had an illegal value β€” so like, go check your arguments bestie πŸ™ˆ


πŸŽ€ Author

Univ. of Tennessee

Univ. of California Berkeley

Univ. of Colorado Denver

NAG Ltd.

shoutout to the whole squad, periodt 🫢


🌟 Contributors:

December 2016, Igor Kozachenko, Computer Science Division, University of California, Berkeley
September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas, School of Mathematics, University of Manchester

legends, all of them πŸ‘‘βœ¨


πŸ“ Definition at line 134 of file zsytrs_rook.f.

that's where it lives, that's the address, go visit 🏠


πŸ’« Author (the meta one) πŸ’«

Generated automatically by Doxygen for LAPACK from the source code. yeah, a robot wrote the page about the subroutine. it's giving inception πŸŒ€


lowkey the whole thing is just: factor once with ZSYTRF_ROOK, then let this little icon solve A*X = B for you. slay. πŸ’–

LAPACK, Version 3.12.0 β€” okay bye bestie, mwah, go solve something symmetric πŸ’‹πŸŒΈπŸ¦‹

πŸ“¦ where this page comes from