ZLAHEF(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… ZLAHEF β€” the man page, but make it a group chat

okay so bestie, real talk: this page is zlahef.f(3) β€” that's the zlahef.f source file, manual section 3 (library functions, the good section ✨). The full path is literally:

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zlahef.f

No cap, that's the whole NAME section. The actual tea is down below πŸ‘‡


✨ 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. It's the blocked algorithm, calling Level 3 BLAS. Iconic behaviour fr.
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. She's efficient, she's structured, she's giving main character energy πŸ‘‘


🫢 Function/Subroutine Documentation 🫢

Purpose πŸ’–

!> 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 ) ( U12H U22H ) ! !> A = ( L11 0 ) ( D 0 ) ( L11H L21H ) 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').

so like β€” D has order at most NB, the actual order comes back in KB, and it's either NB or NB-1, or N if N <= NB. Also remember U**H is the conjugate transpose of U, iykyk πŸ’…

And she's an auxiliary routine, called by ZHETRF. She uses blocked code (calling Level 3 BLAS) to update the submatrix A11 (if UPLO = 'U') or A22 (if UPLO = 'L'). Team player energy 🫢


Parameters πŸŽ€

UPLO

!> UPLO is CHARACTER*1 !> Specifies whether the upper or lower triangular part of the !> Hermitian matrix A is stored: !> = 'U': Upper triangular !> = 'L': Lower triangular
  • 'U' β†’ upper triangular πŸ’«
  • 'L' β†’ lower triangular 🌸

pick one bestie, that's the vibe check

N

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

The order of the matrix A, and she must be N >= 0. Negative N is not the moment πŸ™ˆ

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 2-by-2 pivot blocks can actually happen β€” don't skimp on her πŸ“

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. KB is either NB-1 or NB, or N if N <= NB. She tells you what really happened, no cap ✨

A

!> A is COMPLEX*16 array, dimension (LDA,N) !> On entry, the Hermitian 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.

COMPLEX*16 array, dimension (LDA,N).

On entry: the Hermitian matrix A.

  • If UPLO = 'U', the leading n-by-n upper triangular part of A holds 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 holds 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 πŸ‘‘

LDA

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

Leading dimension of array A. Must be LDA >= max(1,N). Respect her boundaries πŸ’…

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) = IPIV(k-1) < 0, then rows and columns !> k-1 and -IPIV(k) were interchanged and 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) = IPIV(k+1) < 0, then rows and columns !> k+1 and -IPIV(k) were interchanged and D(k:k+1,k:k+1) !> is a 2-by-2 diagonal block.

INTEGER array, dimension (N). Holds the details of the interchanges and the block structure of D. This is the gossip column of the routine ngl.

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) = IPIV(k-1) < 0, then rows and columns k-1 and -IPIV(k) were interchanged, and 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) = IPIV(k+1) < 0, then rows and columns k+1 and -IPIV(k) were interchanged, and D(k:k+1,k:k+1) is a 2-by-2 diagonal block.

see the pattern? k-1 going up, k+1 going down. symmetry slay πŸ¦‹

W

!> W is COMPLEX*16 array, dimension (LDW,NB)

COMPLEX*16 array, dimension (LDW,NB). That's it, that's the whole description. mysterious queen πŸ’œ

LDW

!> LDW is INTEGER !> The leading dimension of the array W. LDW >= max(1,N).

Leading dimension of array W. Must be LDW >= max(1,N). same rule, W edition ✨

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.

INTEGER. The vibe report:

  • = 0: successful exit πŸŽ‰
  • > 0: if INFO = k, then D(k,k) is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular πŸ’€
⚠️ okay so that INFO > 0 case is not a crash β€” the work finished! It's just that D is exactly singular. Read the value, don't ignore it, bestie 😭

Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

the whole squad, credited properly 🫢


Contributors 🌈

!> December 2016, Igor Kozachenko, !> Computer Science Division, !> University of California, Berkeley

December 2016, Igor Kozachenko, Computer Science Division, University of California, Berkeley. giving credit where credit is due, periodt πŸ’…


Definition at line 176 of file zlahef.f πŸ“

That's where she lives. line 176. no further questions πŸŽ€


πŸ“œ Author (the Doxygen one) πŸ“œ

Generated automatically by Doxygen for LAPACK from the source code.

like, the whole page was auto-generated, she didn't even write this herself. queen behaviour honestly πŸ€–βœ¨


and that's the page bestie!! πŸ’– big sign-off energy: this is LAPACK, Version 3.12.0, and the footer also shows the path /home/abui...RC/zlahef.f(3) β€” truncated path, same file, same zlahef.f manual page we've been stanning this whole time. go forth and factorize your Hermitian indefinite matrix, you absolute icon πŸ‘‘πŸ¦‹πŸ’œ

πŸ“¦ where this page comes from