ZGETRF(3)
β¨ ZGETRF(3) β¨
okay bestie, gather round, we're doing a LAPACK deep-dive π this one lives in the Library Functions Manual, and the actual file it's documenting is:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgetrf.f
yes that's a whole path, no i will not be shortening it, the path is iconic and we respect it π«Ά
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine ZGETRF (m, n, a, lda, ipiv, info)
ZGETRF β that's the main character, that's her name π
π¦ Function/Subroutine Documentation π¦
subroutine ZGETRF (integer m, integer n, complex*16, dimension( lda, * ) a,
integer lda, integer, dimension( * ) ipiv, integer info)
ZGETRF πβ¨
π Purpose π
!> !> ZGETRF computes an LU factorization of a general M-by-N matrix A !> using partial pivoting with row interchanges. !> !> The factorization has the form !> A = P * L * U !> where P is a permutation matrix, L is lower triangular with unit !> diagonal elements (lower trapezoidal if m > n), and U is upper !> triangular (upper trapezoidal if m < n). !> !> This is the right-looking Level 3 BLAS version of the algorithm. !>
so literally what it does is take your general M-by-N matrix A and factorize it as A = P * L * U using partial pivoting with row interchanges, no cap π₯ P is a permutation matrix, L is lower triangular with unit diagonal elements (lower trapezoidal if m > n, she contains multitudes), and U is upper triangular (upper trapezoidal if m < n). and the whole thing is the right-looking Level 3 BLAS version of the algorithm β highkey the fast one, we love her π
π Parameters π
Mβ integer, and it's the number of rows of the matrixA. must satisfyM >= 0. zero rows? valid. slay.
!> M is INTEGER
!> The number of rows of the matrix A. M >= 0.
Nβ integer, the number of columns of the matrixA. must satisfyN >= 0. same energy.
!> N is INTEGER
!> The number of columns of the matrix A. N >= 0.
AβCOMPLEX*16array, dimension(LDA,N). on entry it's the M-by-N matrix you want factored, and on exit it holds the factorsLandUfrom the factorizationA = P*L*U. caveat bestie: the unit diagonal elements ofLare not stored β they're implied, we don't waste memory on ones π
!> A is COMPLEX*16 array, dimension (LDA,N)
!> On entry, the M-by-N matrix to be factored.
!> On exit, the factors L and U from the factorization
!> A = P*L*U; the unit diagonal elements of L are not stored.
LDAβ integer, the leading dimension of the arrayA. must satisfyLDA >= max(1,M). periodt.
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,M).
IPIVβ integer array, dimension(min(M,N)), the pivot indices β¨ for1 <= i <= min(M,N), rowiof the matrix was interchanged with rowIPIV(i). that's the receipts of every swap, keep them π
!> IPIV is INTEGER array, dimension (min(M,N))
!> The pivot indices; for 1 <= i <= min(M,N), row i of the
!> matrix was interchanged with row IPIV(i).
INFOβ integer, the vibe check on how it went:= 0: successful exit, we ate π< 0: ifINFO = -i, the i-th argument had an illegal value β you passed something cursed π> 0: ifINFO = i,U(i,i)is exactly zero. the factorization has been completed, but the factorUis exactly singular, and division by zero will occur if it is used to solve a system of equations. not a drill, that's undefined-behaviour-adjacent behaviour, be careful fr fr π
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!> > 0: if INFO = i, U(i,i) is exactly zero. The factorization
!> has been completed, but the factor U is exactly
!> singular, and division by zero will occur if it is used
!> to solve a system of equations.
π Author π
the legends themselves:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Definition π
at line 107 of file zgetrf.f. iykyk π
β Author β
Generated automatically by Doxygen for LAPACK from the source code π€ (yes the robots wrote the docs, we still stan)
and that's the whole page bestie π§π brought to you by LAPACK, Version 3.12.0, straight out of /home/abui...RC/zgetrf.f(3) β go factorize something gorgeous today πΈπ¦π
π¦ 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