dgetrf.f(3)
π dgetrf.f(3) β LAPACK π
β¨ NAME β¨
dgetrf.f β yes bestie, that's the name, and it's lowkey iconic.
π¦ SYNOPSIS π¦
π§ Functions/Subroutines π§
subroutine dgetrf (M, N, A, LDA, IPIV, INFO)β DGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
π Function/Subroutine Documentation π
subroutine dgetrf (integer M, integer N, double precision, dimension( lda, * ) A, integer LDA, integer, dimension( * ) IPIV, integer INFO)
DGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
π― Purpose π―
DGETRF 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βM is INTEGERThe number of rows of the matrix A.M >= 0.NβN is INTEGERThe number of columns of the matrix A.N >= 0.AβA is DOUBLE PRECISION 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βLDA is INTEGERThe leading dimension of the array A.LDA >= max(1,M).IPIVβIPIV is INTEGER array, dimension (min(M,N))The pivot indices; for1 <= i <= min(M,N), rowiof the matrix was interchanged with rowIPIV(i).INFOβINFO is 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.
bestie, that > 0 case is not a cute little warning β U is exactly singular, and division by zero will absolutely happen if you use it 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 136 of file VARIANTS/lu/REC/dgetrf.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
And that's the whole page, bestie π β dgetrf.f(3), LAPACK version 3.8.0, dated Tue Nov 14 2017. periodt π
β¨
π¦ where this page comes from
- centos-stream 9: lapack 3.9.0-10.el9 Β· BSD
- centos-stream 9: lapack 3.9.0-10.el9 Β· BSD
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms