sgetrf.f(3)
π sgetrf.f β LAPACK, bestie edition
okay so this is a page from the LAPACK manual (that's the Linear Algebra PACKage, and yes it's as iconic as it sounds π). It's for sgetrf.f, and honestly? It's giving legendary. Let me walk you through it π«Ά
β¨ SYNOPSIS β¨
Functions/Subroutines:
subroutine sgetrf (M, N, A, LDA, IPIV, INFO)
SGETRF VARIANT: iterative version of Sivan Toledo's recursive LU
algorithm
πΈ Function/Subroutine Documentation πΈ
subroutine sgetrf (integer M, integer N, real, dimension( lda, * ) A,
integer LDA, integer, dimension( * ) IPIV, integer INFO)
SGETRF VARIANT: iterative version of Sivan Toledo's recursive LU algorithm
π Purpose π
So SGETRF computes an LU factorization of a general M-by-N matrix A using partial pivoting with row interchanges. Literally the main character of matrix factorization ngl π
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). slay.
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. lowkey efficient fr fr π¨
The pattern is as follows, with the large blocks of U being updated in one call to STRSM, 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. it's giving fractal energy π
[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 INTEGER The number of rows of the matrix A. M >= 0. (zero rows? valid, we respect it π«‘)
N
N is INTEGER The number of columns of the matrix A. N >= 0.
A
A is REAL 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. (they're free real estate, we just don't write them down π
)
LDA
LDA is INTEGER The leading dimension of the array A. LDA >= max(1,M).
IPIV
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). tracking every swap, no cap π
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 hear me β that last one is not a drill. If INFO > 0, the factorization finished, sure, but U is exactly singular, and if you go use it to solve a system of equations you will be dividing by zero. literally do not do that ππ
π Author π
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
πΈ Date πΈ
December 2016
β Definition β
Definition at line 136 of file VARIANTS/lu/REC/sgetrf.f.
π Author (of this here page) π
Generated automatically by Doxygen for LAPACK from the source code. (the robots did this one, respect the robots π€β¨)
okay that's the whole page, nothing skipped, everything's here, iykyk π
Version 3.8.0 Β· Tue Nov 14 2017 Β· sgetrf.f(3) β mwah, that's a wrap, go factor some matrices and stay hydrated ππ¦π
π¦ 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