/home/abui...syf_rook.f(3)
π NAME
ok so bestie, this page is from the Library Functions Manual, and the thing it's documenting is literally just this file path:
/home/abuild/rpmbuild/BUILD/lapack-
static-3.12.0-build/lapack-3.12.0/SRC/zlasyf_rook.f
that's it, that's the name. it's giving "my whole identity is my address" energy but honestly? iconic. π
β¨ SYNOPSIS β¨
Functions/Subroutines
ok so there's exactly one (1) subroutine here and she is the moment:
subroutine ZLASYF_ROOK (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)
ZLASYF_ROOK computes a partial factorization of a complex symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. no cap, that's the whole vibe. π¦
πΈ Function/Subroutine Documentation πΈ
subroutine ZLASYF_ROOK (character uplo, integer n, integer nb, integer kb,
complex*16, dimension( lda, * ) a, integer lda, integer, dimension( * )
ipiv, complex*16, dimension( ldw, * ) w, integer ldw, integer info)
ZLASYF_ROOK computes a partial factorization of a complex symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. (yes the full name, no abbreviations, we're being precise today π
)
Purpose:
so here's what she actually does, and the math is lowkey gorgeous:
!>
!> ZLASYF_ROOK computes a partial factorization of a complex symmetric
!> matrix A using the bounded Bunch-Kaufman () diagonal
!> pivoting method. The partial factorization has the form:
!>
!> A = ( I U12 ) ( A11 0 ) ( I 0 ) if UPLO = 'U', or:
!> ( 0 U22 ) ( 0 D ) ( U12**T U22**T )
!>
!> A = ( L11 0 ) ( D 0 ) ( L11**T L21**T ) if UPLO = 'L'
!> ( L21 I ) ( 0 A22 ) ( 0 I )
!>
!> where the order of D is at most NB. The actual order is returned in
!> the argument KB, and is either NB or NB-1, or N if N <= NB.
!>
!> ZLASYF_ROOK is an auxiliary routine called by ZSYTRF_ROOK. It uses
!> blocked code (calling Level 3 BLAS) to update the submatrix
!> A11 (if UPLO = 'U') or A22 (if UPLO = 'L').
!>
bestie read that last line again: she's an auxiliary routine called by ZSYTRF_ROOK β she's the supportive best friend doing the blocked code (Level 3 BLAS, fancy) to update A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). main character energy in the background fr fr. π
π Parameters π
UPLO
!> UPLO is CHARACTER*1
!> Specifies whether the upper or lower triangular part of the
!> symmetric matrix A is stored:
!> = 'U': Upper triangular
!> = 'L': Lower triangular
!>
'U'β upper triangular, storing the top half π- `'L' β lower triangular, storing the bottom half π«Ά
pick one, she'll respect it.
N
!> N is INTEGER
!> The order of the matrix A. N >= 0.
!>
the order of the matrix A. and N >= 0 β zero is allowed, negative is not the vibe.
NB
!> NB is INTEGER
!> The maximum number of columns of the matrix A that should be
!> factored. NB should be at least 2 to allow for 2-by-2 pivot
!> blocks.
!>
max number of columns of A that should be factored. NB should be at least 2 so that 2-by-2 pivot blocks can exist. like, don't come at her with NB = 1, that's embarrassing. π
KB
!> KB is INTEGER
!> The number of columns of A that were actually factored.
!> KB is either NB-1 or NB, or N if N <= NB.
!>
the number of columns of A that were actually factored β so she's either NB-1 or NB, or N if N <= NB. she's an output, she tells you what really happened. π
A
!> A is COMPLEX*16 array, dimension (LDA,N)
!> On entry, the symmetric matrix A. If UPLO = 'U', the leading
!> n-by-n upper triangular part of A contains the upper
!> triangular part of the matrix A, and the strictly lower
!> triangular part of A is not referenced. If UPLO = 'L', the
!> leading n-by-n lower triangular part of A contains the lower
!> triangular part of the matrix A, and the strictly upper
!> triangular part of A is not referenced.
!> On exit, A contains details of the partial factorization.
!>
A is COMPLEX*16, dimension (LDA,N). on entry it's the symmetric matrix:
- if
UPLO = 'U': the leadingn-by-nupper triangular part holds the upper triangular part ofA, and the strictly lower triangular part is not referenced β like, ignored, unbothered, thriving elsewhere β¨ - if
UPLO = 'L': the leadingn-by-nlower triangular part holds the lower triangular part ofA, and the strictly upper triangular part is not referenced β same deal π¦
on exit, A contains details of the partial factorization. she's a working girl, she changes. π
LDA
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,N).
!>
the leading dimension of the array A, and LDA >= max(1,N). non-negotiable ngl.
IPIV
!> IPIV is INTEGER array, dimension (N)
!> Details of the interchanges and the block structure of D.
!>
!> If UPLO = 'U':
!> Only the last KB elements of IPIV are set.
!>
!> 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) < 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':
!> Only the first KB elements of IPIV are set.
!>
!> 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) < 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.
!>
IPIV is INTEGER, dimension (N). she holds the details of the interchanges and the block structure of D. this is the messy part, stay with me:
if UPLO = 'U':
- only the last
KBelements ofIPIVare set - if
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block π - 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 (their spelling, not mine π), andD(k-1:k,k-1:k)is a 2-by-2 diagonal block
if UPLO = 'L':
- only the first
KBelements ofIPIVare set - if
IPIV(k) > 0, then rows and columnskandIPIV(k)were interchanged andD(k,k)is a 1-by-1 diagonal block π - 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
notice how upper uses k-1 and lower uses k+1 β the way that's not symmetric is genuinely sending me π
W
!> W is COMPLEX*16 array, dimension (LDW,NB)
!>
W is COMPLEX*16, dimension (LDW,NB). that's it. that's the whole description. she's mysterious, she's a workspace, we love her. π§
LDW
!> LDW is INTEGER
!> The leading dimension of the array W. LDW >= max(1,N).
!>
the leading dimension of the array W, and LDW >= max(1,N). same energy as LDA, different letter. β
INFO
!> INFO is INTEGER
!> = 0: successful exit
!> > 0: if INFO = k, D(k,k) is exactly zero. The factorization
!> has been completed, but the block diagonal matrix D is
!> exactly singular.
!>
INFO is INTEGER:
= 0β successful exit, we ate, everyone go home π> 0β ifINFO = k, thenD(k,k)is exactly zero. the factorization has been completed, but the block diagonal matrixDis exactly singular. like she did the work but the result is degenerate. not a fail exactly, more of a "we did it but at what cost" situation π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad. the avengers of numerical linear algebra. π«Ά
π Contributors:
!>
!> November 2013, Igor Kozachenko,
!> Computer Science Division,
!> University of California, Berkeley
!>
!> September 2007, Sven Hammarling, Nicholas J. Higham, Craig Lucas,
!> School of Mathematics,
!> University of Manchester
!>
!>
shoutout Igor Kozachenko (November 2013, Computer Science Division, University of California, Berkeley) and Sven Hammarling, Nicholas J. Higham, Craig Lucas (September 2007, School of Mathematics, University of Manchester). legends, all of them. π₯
π Definition at line 182 of file zlasyf_rook.f. π
if you want to go read the source, line 182 of zlasyf_rook.f. go get her. π
Author
Generated automatically by Doxygen for LAPACK from the source code. so nobody hand-wrote this page, a robot did it, and honestly? she understood the assignment. π€β¨
that's the whole page bestie β LAPACK, Version 3.12.0, and the file is /home/abui...syf_rook.f(3). go forth and factor those complex symmetric matrices partially. mwah. ππ
π¦ 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