SRC/cgetrf.f(3)

πŸ’… SRC/cgetrf.f

ok so this page is from the LAPACK manual (you'll see the version + date at the bottom, mwah) β€” it's the docs for a single routine, and bestie, it's lowkey iconic. Let's get into it ✨


✨ SYNOPSIS

Functions/Subroutines

  • subroutine cgetrf (m, n, a, lda, ipiv, info) β€” the one and only, CGETRF πŸŽ€

🫢 Function/Subroutine Documentation

subroutine cgetrf (integer m, integer n, complex, dimension( lda, * ) a,
    integer lda, integer, dimension( * ) ipiv, integer info)

CGETRF β€” say hi πŸ‘‹

🌸 Purpose

!>
!> CGETRF 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 is the right-looking Level 3 BLAS version of the algorithm.
!>

so basically: it takes your general M-by-N matrix A and does an LU factorization with partial pivoting and row interchanges. The way it factors is

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). and ngl, the cute little detail at the end: this is the right-looking Level 3 BLAS version of the algorithm. no cap πŸ”₯


πŸ’– Parameters

  • M
!>          M is INTEGER
!>          The number of rows of the matrix A.  M >= 0.
!>

the number of rows of A. must be M >= 0.

  • N
!>          N is INTEGER
!>          The number of columns of the matrix A.  N >= 0.
!>

the number of columns of A. must be N >= 0.

  • A
!>          A is COMPLEX 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.
!>

a COMPLEX array, dimension (LDA,N). On entry, it's the M-by-N matrix to be factored. On exit, it holds the factors L and U from A = P*L*U β€” and heads up, the unit diagonal elements of L are not stored πŸ™ˆ (they're implied, bestie, like a vibe).

  • LDA
!>          LDA is INTEGER
!>          The leading dimension of the array A.  LDA >= max(1,M).
!>

the leading dimension of the array A. must satisfy 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).
!>

an 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.
!>

an INTEGER status report, and pls actually read it:

  • = 0: successful exit, we slayed ✨
  • < 0: if INFO = -i, the i-th argument had an illegal value 🚨
  • > 0: if INFO = i, then 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 you use it to solve a system of equations 😭
fr fr, if you get INFO > 0, don't just ignore it β€” the solve step after this will be a whole mess πŸ’€

πŸ‘‘ Author

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

Definition at line 107 of file cgetrf.f.


πŸ¦‹ Author

Generated automatically by Doxygen for LAPACK from the source code.


ok that's the whole page, bestie β€” every flag, every bound, every pivot πŸ’… This was LAPACK Version 3.12.0, SRC/cgetrf.f(3), and that's the tea β˜• Go factor something, ily πŸ«ΆπŸ’–

πŸ“¦ where this page comes from