zgetrf.f(3)
๐ธ NAME ๐ธ
Okay so bestie, this is zgetrf.f(3), and the manual name is LAPACK โ weโre folding that in right here so you donโt miss it. This page is all about zgetrf.f, the ZGETRF variant thatโs an iterative version of Sivan Toledoโs recursive LU algorithm. Slay. ๐
โจ SYNOPSIS โจ
Functions/Subroutines
subroutine zgetrf (M, N, A, LDA, IPIV, INFO)โ ZGETRF VARIANT: iterative version of Sivan Toledoโs recursive LU algorithm. Periodt.
๐ Function/Subroutine Documentation ๐
subroutine zgetrf (integer M, integer N, complex*16, dimension( lda, * ) A,
integer LDA, integer, dimension( * ) IPIV, integer INFO)
ZGETRF VARIANT: iterative version of Sivan Toledoโs recursive LU algorithm.
Purpose:
ZGETRF computes an LU factorization of a general M-by-N matrix A using partial pivoting with row interchanges. Iconic behavior, honestly.
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. Obsessed with the bit lore, ngl. ๐ง
[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โMisINTEGER. The number of rows of the matrixA.M >= 0.NโNisINTEGER. The number of columns of the matrixA.N >= 0.AโAisCOMPLEX*16array, dimension(LDA,N). On entry, the M-by-N matrix to be factored. On exit, the factorsLandUfrom the factorizationA = P*L*U; the unit diagonal elements ofLare not stored. No cap. ๐ซถLDAโLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,M).IPIVโIPIVisINTEGERarray, dimension(min(M,N)). The pivot indices; for1 <= i <= min(M,N), rowiof the matrix was interchanged with rowIPIV(i).INFOโINFOisINTEGER.= 0: successful exit ๐< 0: ifINFO = -i, thei-th argument had an illegal value> 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. ๐จ Bestie, thatโs the serious one โ do not ignore it.
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/zgetrf.f.
๐ซถ Author ๐ซถ
Generated automatically by Doxygen for LAPACK from the source code.
Byeeee bestie ๐ this page is from LAPACK Version 3.8.0, dated Tue Nov 14 2017, and itโs zgetrf.f(3) โ mwah. ๐๐ฆ
๐ฆ 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