CGETRF(3)
π NAME π
Bestie, this is cgetrf.f(3) from the Library Functions Manual π. The source file path is exactly this, no cap:
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/VARIANTS/lu/REC/cgetrf.f
β¨ SYNOPSIS β¨
π§© Functions/Subroutines π§©
subroutine CGETRF (m, n, a, lda, ipiv, info)
CGETRF VARIANT: iterative version of Sivan Toledo's recursive LU
algorithm
π« Function/Subroutine Documentation π«
subroutine CGETRF (integer m, integer n, complex, dimension( lda, * ) a,
integer lda, integer, dimension( * ) ipiv, integer info)
The variant note is CGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm. Iconic β¨.
πΈ Purpose πΈ
Okay so here's the tea β: CGETRF 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 code implements an iterative version of Sivan Toledo's recursive LU algorithm[1]. For square matrices, this iterative versions should be within a factor of two of the optimum number of memory transfers.
The pattern is as follows, with the large blocks of U being updated in one call to DTRSM, and the dotted lines denoting sections that have had all pending permutations applied:
!> 1 2 3 4 5 6 7 8
!> +-+-+---+-------+------
!> | |1| | |
!> |.+-+ 2 | |
!> | | | | |
!> |.|.+-+-+ 4 |
!> | | | |1| |
!> | | |.+-+ |
!> | | | | | |
!> |.|.|.|.+-+-+---+ 8
!> | | | | | |1| |
!> | | | | |.+-+ 2 |
!> | | | | | | | |
!> | | | | |.|.+-+-+
!> | | | | | | | |1|
!> | | | | | | |.+-+
!> | | | | | | | | |
!> |.|.|.|.|.|.|.|.+-----
!> | | | | | | | | |
!>
The 1-2-1-4-1-2-1-8-... pattern is the position of the last 1 bit in the binary expansion of the current column. Each Schur update is applied as soon as the necessary portion of U is available.
[1] Toledo, S. 1997. Locality of Reference in LU Decomposition with Partial Pivoting. SIAM J. Matrix Anal. Appl. 18, 4 (Oct. 1997), 1065-1081. http://dx.doi.org/10.1137/S0895479896297744
π§Έ Parameters π§Έ
MβMis INTEGER. The number of rows of the matrix A.M >= 0.NβNis INTEGER. The number of columns of the matrix A.N >= 0.AβAis COMPLEX array, dimension(LDA,N). On entry, the M-by-N matrix to be factored. On exit, the factors L and U from the factorizationA = P*L*U; the unit diagonal elements of L are not stored.LDAβLDAis INTEGER. The leading dimension of the array A.LDA >= max(1,M).IPIVβIPIVis INTEGER array, dimension(min(M,N)). The pivot indices; for1 <= i <= min(M,N), row i of the matrix was interchanged with rowIPIV(i).INFOβINFOis INTEGER.= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value> 0: ifINFO = 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 π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Date π
December 2016
Definition at line 135 of file cgetrf.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
That's the whole page, bestie π«Ά. Footer says LAPACK Version 3.12.0 and /home/abui...EC/cgetrf.f(3), and the date is December 2016. Slay, bye! π
π¦ 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