CDBTF2(3)

πŸ“¦ version 1.5, in ubuntu jammy

✨ CDBTF2 ✨ β€” the NAME section, bestie

CDBTF2 β€” it computes an LU factorization of a real m-by-n band matrix A without using partial pivoting with row interchanges. πŸŽ€


πŸ“œ SYNOPSIS

SUBROUTINE CDBTF2( M, N, KL, KU, AB, LDAB, INFO )
    INTEGER INFO, KL, KU, LDAB, M, N
    COMPLEX  AB( LDAB, * )

πŸ’– DESCRIPTION

Okay so, the page opens with this line and I'm just relaying it exactly, no editing, no notes:

Cdbtrf computes an LU factorization of a real m-by-n band matrix A without using partial pivoting with row interchanges.

And then, the tea: this is the unblocked version of the algorithm, and it calls Level 2 BLAS. 🫢


🌸 ARGUMENTS (the part where every single one matters)

  • M (input) INTEGER β€” the number of rows of the matrix A. Constraint: M >= 0.
  • N (input) INTEGER β€” the number of columns of the matrix A. Constraint: N >= 0.
  • KL (input) INTEGER β€” the number of subdiagonals within the band of A. Constraint: KL >= 0.
  • KU (input) INTEGER β€” the number of superdiagonals within the band of A. Constraint: KU >= 0.
  • AB (input/output) COMPLEX array, dimension (LDAB,N) β€” here's where it gets cute. On entry, it holds the matrix A in band storage, sitting in rows KL+1 to 2*KL+KU+1; rows 1 to KL of the array need not be set πŸ™ˆ. The j-th column of A lives in the j-th column of the array AB like this:
AB(kl+ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl)

On exit, you get the details of the factorization: U is stored as an upper triangular band matrix with KL+KU superdiagonals in rows 1 to KL+KU+1, and the multipliers used during the factorization are stored in rows KL+KU+2 to 2*KL+KU+1. Further details are down below, keep scrolling bestie πŸ‘‡

  • LDAB (input) INTEGER β€” the leading dimension of the array AB. Constraint: LDAB >= 2*KL+KU+1.
  • INFO (output) INTEGER β€” the vibe check:
    • = 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 πŸ’€

πŸ¦‹ THE BAND STORAGE SCHEME (a whole illustrative moment)

The band storage scheme is illustrated by the following example, when M = N = 6, KL = 2, KU = 1:

On entry:                       On exit:

    *   a12  a23  a34  a45  a56      *   u12  u23  u34  u45  u56
   a11  a22  a33  a44  a55  a66     u11  u22  u33  u44  u55  u66
   a21  a32  a43  a54  a65   *      m21  m32  m43  m54  m65   *
   a31  a42  a53  a64   *    *      m31  m42  m53  m64   *    *

πŸ’… NOTES (read these, fr fr)

  • Array elements marked * are not used by the routine.
  • Elements marked + need not be set on entry, but they are required by the routine to store elements of U, because of fill-in resulting from the row interchanges. πŸ‘‘

and that's the page, bestie πŸ’œ β€” header said CDBTF2(3), and the footer had no source, no version, no date to spill, so that's the whole vibe for today. go forth and factor that band matrix, you ate 🫢✨

πŸ“¦ where this page comes from