sgetrf.f(3)

πŸ“¦ version 3.9.0, in centos-stream 9

πŸ’… 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: 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. ⚠️
🚨 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