lahef_rook(3)
๐ NAME ๐
okay bestie, welcome to the lahef_rook(3) page in the Library Functions Manual ๐ซถ. This is all about lahef_rook โ which is short for la{he,sy}f_rook โ and it's literally the triangular factor step โจ.
๐ธ SYNOPSIS ๐ธ
Here's the whole cast, no cap:
subroutine clahef_rook (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)โ the complex Hermitian one ๐subroutine clasyf_rook (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)โCLASYF_ROOKcomputes a partial factorization of a complex symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method.subroutine dlasyf_rook (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)โDLASYF_ROOKcomputes a partial factorization of a real symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method.subroutine slasyf_rook (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)โSLASYF_ROOKcomputes a partial factorization of a real symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method.subroutine zlahef_rook (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)โ the other complex Hermitian signature, sitting pretty โจsubroutine zlasyf_rook (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)โZLASYF_ROOKcomputes a partial factorization of a complex symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method.
๐ฆ Detailed Description ๐ฆ
bestie, this section is literally just a handoff โ the real tea is in the function docs right below ๐ซถ.
๐ Function Documentation ๐
๐
subroutine clahef_rook
subroutine clahef_rook (character uplo, integer n, integer nb, integer kb, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( ldw, * ) w, integer ldw, integer info)
๐ Purpose ๐
okay so CLAHEF_ROOK computes a partial factorization of a complex Hermitian matrix A using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. The partial factorization has this whole shape:
!> A = ( I U12 ) ( A11 0 ) ( I 0 ) if UPLO = 'U', or:
!> ( 0 U22 ) ( 0 D ) ( U12**H U22**H )
!>
!> A = ( L11 0 ) ( D 0 ) ( L11**H L21**H ) 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. Note that U**H denotes the conjugate transpose of U.
CLAHEF_ROOK is an auxiliary routine called by CHETRF_ROOK. It uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). iconic behavior, honestly ๐
.
๐ Parameters ๐
UPLOโUPLOisCHARACTER*1. It says whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U':Upper triangular= 'L':Lower triangular
NโNisINTEGER. The order of the matrixA.N >= 0.NBโNBisINTEGER. The maximum number of columns of the matrixAthat should be factored.NBshould be at least2to allow for 2-by-2 pivot blocks.KBโKBisINTEGER. The number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB.AโAisCOMPLEXarray, dimension(LDA,N). On entry, the Hermitian matrixA. IfUPLO = 'U', the leading n-by-n upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leading n-by-n lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit,Acontains details of the partial factorization.LDAโLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVโIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD.- 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)wereinerchaged(yes bestie, that's the source spelling ๐), andD(k-1:k,k-1:k)is a 2-by-2 diagonal block.
- Only the last
- 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)wereinerchaged, andD(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WโWisCOMPLEXarray, dimension(LDW,NB).LDWโLDWisINTEGER. The leading dimension of the arrayW.LDW >= max(1,N).INFOโINFOisINTEGER.= 0:successful exit> 0:ifINFO = k,D(k,k)is exactly zero. The factorization has been completed, but the block diagonal matrixDis exactly singular.
๐ Author ๐
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ 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
๐ Definition at line 182 of file clahef_rook.f.
๐
subroutine clasyf_rook
subroutine clasyf_rook (character uplo, integer n, integer nb, integer kb, complex, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv, complex, dimension( ldw, * ) w, integer ldw, integer info)
๐ Purpose ๐
okay so CLASYF_ROOK computes a partial factorization of a complex symmetric matrix A using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. The partial factorization has this whole shape:
!> 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.
CLASYF_ROOK is an auxiliary routine called by CSYTRF_ROOK. It uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). periodt ๐.
๐ Parameters ๐
UPLOโUPLOisCHARACTER*1. It says whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U':Upper triangular= 'L':Lower triangular
NโNisINTEGER. The order of the matrixA.N >= 0.NBโNBisINTEGER. The maximum number of columns of the matrixAthat should be factored.NBshould be at least2to allow for 2-by-2 pivot blocks.KBโKBisINTEGER. The number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB.AโAisCOMPLEXarray, dimension(LDA,N). On entry, the symmetric matrixA. IfUPLO = 'U', the leading n-by-n upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leading n-by-n lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit,Acontains details of the partial factorization.LDAโLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVโIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD.- 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)wereinerchaged, andD(k-1:k,k-1:k)is a 2-by-2 diagonal block.
- Only the last
- 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)wereinerchaged, andD(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WโWisCOMPLEXarray, dimension(LDW,NB).LDWโLDWisINTEGER. The leading dimension of the arrayW.LDW >= max(1,N).INFOINFOโ bestie, it's anINTEGER, and it's the vibe check at the end ๐= 0: slay, successful exit โจ> 0: ifINFO = k, thenD(k,k)is exactly zero. Like, the factorization finished its whole thing, but the block diagonal matrixDis exactly singular. Not a full-on error, but she's giving "I did the work and the answer is degenerate" ๐ญ
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ซถ 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
Definition at line 182 of file clasyf_rook.f.
๐ธ dlasyf_rook โ the double precision edition, she's back and she's real
subroutine dlasyf_rook (character uplo, integer n, integer nb, integer kb,
double precision, dimension( lda, * ) a, integer lda, integer,
dimension( * ) ipiv, double precision, dimension( ldw, * ) w, integer
ldw, integer info)
DLASYF_ROOK computes a partial factorization of a real symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. Iconic behaviour, no notes ๐
โจ Purpose:
DLASYF_ROOK computes a partial factorization of a real symmetric matrix A using the bounded Bunch-Kaufman () diagonal pivoting method โ yes, the parentheses are literally empty in the source, she ate and left no crumbs ๐. 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. So KB is basically D's main character energy, lowkey ๐
DLASYF_ROOK is an auxiliary routine called by DSYTRF_ROOK. It uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). Fr fr, it's the backstage crew making the whole show work ๐
๐ Parameters
UPLOโUPLOisCHARACTER*1. She specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NโNisINTEGER. The order of the matrixA.N >= 0.NBโNBisINTEGER. The maximum number of columns of the matrixAthat should be factored.NBshould be at least2to allow for 2-by-2 pivot blocks โ like, give her at least two, she needs room ๐ฆKBโKBisINTEGER. The number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB. She's an output girlie, don't expect her to have opinions on entry ๐AโAisDOUBLE PRECISIONarray, dimension(LDA,N).- On entry, the symmetric matrix
A. IfUPLO = 'U', the leadingn-by-nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leadingn-by-nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. - On exit,
Acontains details of the partial factorization. So she comes in as a matrix and leaves as โจloreโจ
- On entry, the symmetric matrix
LDAโLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVโIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD. Listen closely, this one's a whole saga ๐- 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 interchanged,D(k-1:k,k-1:k)is a 2-by-2 diagonal block.
- Only the last
- 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 interchanged,D(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WโWisDOUBLE PRECISIONarray, dimension(LDW,NB). That's it, that's her whole description. She's mysterious like that ๐LDWโLDWisINTEGER. The leading dimension of the arrayW.LDW >= max(1,N).INFOโINFOisINTEGER.= 0: successful exit โจ> 0: ifINFO = k,D(k,k)is exactly zero. The factorization has been completed, but the block diagonal matrixDis exactly singular. Completed but singular is such a mood ngl ๐
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ซถ 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
Definition at line 182 of file dlasyf_rook.f.
๐ฆ slasyf_rook โ same energy, single precision, still iconic
subroutine slasyf_rook (character uplo, integer n, integer nb, integer kb,
real, dimension( lda, * ) a, integer lda, integer, dimension( * ) ipiv,
real, dimension( ldw, * ) w, integer ldw, integer info)
SLASYF_ROOK computes a partial factorization of a real symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method. Same routine, different precision, still serving ๐ฅ
โจ Purpose:
SLASYF_ROOK computes a partial factorization of a real symmetric matrix A using the bounded Bunch-Kaufman () diagonal pivoting method (empty parens again โ we respect the source's choices ๐
). 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. She's literally the same girl as DLASYF_ROOK, just living in REAL land ๐ธ
SLASYF_ROOK is an auxiliary routine called by SSYTRF_ROOK. It uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). Bestie, she's the support act that makes the headliner possible ๐
๐ Parameters
UPLOโUPLOisCHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U': Upper triangular= 'L': Lower triangular
NโNisINTEGER. The order of the matrixA.N >= 0.NBโNBisINTEGER. The maximum number of columns of the matrixAthat should be factored.NBshould be at least2to allow for 2-by-2 pivot blocks.KBโKBisINTEGER. The number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB.AโAisREALarray, dimension(LDA,N).- On entry, the symmetric matrix
A. IfUPLO = 'U', the leadingn-by-nupper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leadingn-by-nlower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. - On exit,
Acontains details of the partial factorization.
- On entry, the symmetric matrix
LDAโLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,N).IPIVโIPIVisINTEGERarray, dimension(N). Details of the interchanges and the block structure ofD.- 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 interchanged,D(k-1:k,k-1:k)is a 2-by-2 diagonal block.
- Only the last
- 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 interchanged,D(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WโWisREALarray, dimension(LDW,NB). Still mysterious, still not elaborating ๐LDWโLDWisINTEGER. The leading dimension of the arrayW.LDW >= max(1,N).INFOโINFOisINTEGER.= 0: successful exit โจ> 0: ifINFO = k,D(k,k)is exactly zero. The factorization has been completed, but the block diagonal matrixDis exactly singular.
๐ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ซถ Contributors:
๐ 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 โจ
Definition at line 182 of file slasyf_rook.f.
๐ zlahef_rook ๐
okay bestie, this is where the complex Hermitian edition shows up and it is lowkey the same blueprint, just wearing a conjugate-transpose fit ๐ฆ
subroutine zlahef_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)
โจ Purpose โจ
ZLAHEF_ROOK computes a partial factorization of a complex Hermitian matrix A using the bounded Bunch-Kaufman () diagonal pivoting method. ๐ซถ The partial factorization has this shape:
A = ( I U12 ) ( A11 0 ) ( I 0 ) if UPLO = 'U', or:
( 0 U22 ) ( 0 D ) ( U12**H U22**H )
A = ( L11 0 ) ( D 0 ) ( L11**H L21**H ) if UPLO = 'L'
( L21 I ) ( 0 A22 ) ( 0 I )
where the order of D is at most NB. The actual order comes back to you in the argument KB, and it's either NB or NB-1, or N if N <= NB. ๐ And remember, U**H means the conjugate transpose of U โ that little H is doing so much work, periodt.
ZLAHEF_ROOK is an auxiliary routine called by ZHETRF_ROOK. It uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). โก
๐ธ Parameters ๐ธ
UPLOโUPLO is CHARACTER*1. Tells us whether the upper or lower triangular part of the Hermitian matrixAis stored:= 'U':Upper triangular= 'L':Lower triangular
NโN is INTEGER. The order of the matrixA.N >= 0. ๐งฎNBโNB is INTEGER. The maximum number of columns of the matrixAthat should be factored.NBshould be at least 2 to allow for 2-by-2 pivot blocks. (like, don't starve it, it needs room for pairs ๐)KBโKB is INTEGER. The number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB. ๐AโA is COMPLEX*16 array, dimension (LDA,N). On entry, the Hermitian matrixA. IfUPLO = 'U', the leading n-by-n upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leading n-by-n lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit,Acontains details of the partial factorization. ๐LDAโLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N). ๐IPIVโIPIV is INTEGER array, dimension (N). All the tea on the interchanges and the block structure ofD:- 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,D(k-1:k,k-1:k)is a 2-by-2 diagonal block. ๐ญ (yes, two at once, main character energy)
- Only the last
- 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,D(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WโW is COMPLEX*16 array, dimension (LDW,NB). ๐งบLDWโLDW is INTEGER. The leading dimension of the arrayW.LDW >= max(1,N). ๐INFOโINFO is INTEGER:= 0:successful exit ๐> 0:ifINFO = k,D(k,k)is exactly zero. The factorization has been completed, but the block diagonal matrixDis exactly singular. โ ๏ธ (translation: it finished, butDis genuinely singular, so don't act surprised)
๐ Author ๐
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ 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 โจ
Definition at line 182 of file zlahef_rook.f.
๐ zlasyf_rook ๐
okay so ZLASYF_ROOK computes a partial factorization of a complex symmetric matrix using the bounded Bunch-Kaufman ("rook") diagonal pivoting method โ note the quotes around "rook" this time, we're being fancy ๐
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)
โจ Purpose โจ
ZLASYF_ROOK computes a partial factorization of a complex symmetric matrix A using the bounded Bunch-Kaufman () diagonal pivoting method. ๐ฆ Here's the form, and yes it's the transpose version, not the H version โ keep up bestie:
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 handed back in the argument KB, and it's 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'). ๐ฅ
๐ธ Parameters ๐ธ
UPLOโUPLO is CHARACTER*1. Specifies whether the upper or lower triangular part of the symmetric matrixAis stored:= 'U':Upper triangular= 'L':Lower triangular
NโN is INTEGER. The order of the matrixA.N >= 0. ๐งฎNBโNB is INTEGER. The maximum number of columns of the matrixAthat should be factored.NBshould be at least 2 to allow for 2-by-2 pivot blocks. ๐ซถKBโKB is INTEGER. The number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB. โญAโA is COMPLEX*16 array, dimension (LDA,N). On entry, the symmetric matrixA. IfUPLO = 'U', the leading n-by-n upper triangular part ofAcontains the upper triangular part of the matrixA, and the strictly lower triangular part ofAis not referenced. IfUPLO = 'L', the leading n-by-n lower triangular part ofAcontains the lower triangular part of the matrixA, and the strictly upper triangular part ofAis not referenced. On exit,Acontains details of the partial factorization. ๐LDAโLDA is INTEGER. The leading dimension of the arrayA.LDA >= max(1,N). ๐IPIVโIPIV is INTEGER array, dimension (N). The interchanges and the block structure ofD, spelled out:- 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,D(k-1:k,k-1:k)is a 2-by-2 diagonal block. ๐
- Only the last
- 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,D(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WโW is COMPLEX*16 array, dimension (LDW,NB). ๐งบLDWโLDW is INTEGER. The leading dimension of the arrayW.LDW >= max(1,N). ๐INFOโINFO is INTEGER:= 0:successful exit ๐> 0:ifINFO = k,D(k,k)is exactly zero. The factorization has been completed, but the block diagonal matrixDis exactly singular. โ ๏ธ (fr fr, it's singular โ no cap, no rescuing it)
๐ Author ๐
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
๐ 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 โจ
Definition at line 182 of file zlasyf_rook.f.
โจ AUTHOR โจ
ok so nobody actually wrote this page by hand, bestie โ it's generated automatically by Doxygen for LAPACK from the source code. so the "author" is basically a robot that read the source and typed all this up ๐ ngl that's kind of iconic of it.
so yeah, if you spot a typo in here, don't come for a human, because there isn't one to come for ๐ซถ the source code is the main character, Doxygen is just the hype account, and LAPACK is the whole entire franchise ๐
and that's the whole page, fr fr โ you made it to the end ๐ this was lahef_rook(3) from LAPACK, Version 3.12.0, and the footer is just that version stamp plus the page name (no date on this one, it's giving minimal ๐). now go forth and factor things, bestie ๐โจ
๐ฆ 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