SRC/zlahef.f(3)
π SRC/zlahef.f(3) β Library Functions Manual πΈ
okay bestie, buckle up, because this is a Fortran subroutine page and it's honestly kind of iconic β¨
β¨ NAME β¨
SRC/zlahef.f β the file that brings you zlahef, no cap π
π¦ SYNOPSIS π¦
Functions/Subroutines
subroutine zlahef (uplo, n, nb, kb, a, lda, ipiv, w, ldw, info)β ZLAHEF computes a partial factorization of a complex Hermitian indefinite matrix using the Bunch-Kaufman diagonal pivoting method (blocked algorithm, calling Level 3 BLAS).
π Function/Subroutine Documentation π
subroutine zlahef (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)
ZLAHEF computes a partial factorization of a complex Hermitian indefinite matrix using the Bunch-Kaufman diagonal pivoting method (blocked algorithm, calling Level 3 BLAS). literally the whole vibe of this file π
π Purpose π
ok so here's what it actually does, bestie:
!>
!> ZLAHEF computes a partial factorization of a complex Hermitian
!> matrix A using the 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**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.
!>
!> ZLAHEF is an auxiliary routine called by ZHETRF. It uses blocked code
!> (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or
!> A22 (if UPLO = 'L').
!>
quick translation: the order of D is at most NB, and the actual order gets handed back to you in KB β it's either NB or NB-1, or N if N <= NB. also pls note U**H means the conjugate transpose of U π«Ά. this routine is an auxiliary one, called by ZHETRF, and it uses blocked code (Level 3 BLAS girlies rise) to update A11 when UPLO = 'U' or A22 when UPLO = 'L'. slay π
π Parameters π
UPLOβUPLOisCHARACTER*1. it tells you 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 least 2 to allow for 2-by-2 pivot blocks π (fr fr, don't skip that one).KBβKBisINTEGER. the number of columns ofAthat were actually factored.KBis eitherNB-1orNB, orNifN <= NB.AβAisCOMPLEX*16 array, dimension (LDA,N).- On entry, the Hermitian matrix
A. 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.
- On entry, the Hermitian matrix
LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,N).IPIVβIPIVisINTEGER array, dimension (N). the details of the interchanges and the block structure ofD. here's the tea π:- 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) = IPIV(k-1) < 0, then rows and columnsk-1and-IPIV(k)were interchanged 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) = IPIV(k+1) < 0, then rows and columnsk+1and-IPIV(k)were interchanged andD(k:k+1,k:k+1)is a 2-by-2 diagonal block.
- Only the first
- If
WβWisCOMPLEX*16 array, 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. π (that's a real one, bestie β the factorization did finish, butDis singular, so be careful.)
π§ Author π§
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π« Contributors: π«
!>
!> December 2016, Igor Kozachenko,
!> Computer Science Division,
!> University of California, Berkeley
!>
β Definition at line 176 of file zlahef.f.
π Author (yes, another one) π
Generated automatically by Doxygen for LAPACK from the source code. not a human, just a little robot doing its thing π€β¨
okay that's the whole page, no skips, no summaries, every single detail is in there π«Ά
signing off β LAPACK, Version 3.12.0, SRC/zlahef.f(3) π
ππ
π¦ 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