dgetrf.f(3)

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

πŸ’– 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 INTEGER The number of rows of the matrix A. M >= 0.
  • N β€” N is INTEGER The 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 factorization A = P*L*U; the unit diagonal elements of L are not stored.
  • 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).
  • 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, 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