CDBTF2(3)
β¨ 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:
Cdbtrfcomputes an LU factorization of a real m-by-n band matrixAwithout 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 matrixA. Constraint:M >= 0.N(input)INTEGERβ the number of columns of the matrixA. Constraint:N >= 0.KL(input)INTEGERβ the number of subdiagonals within the band ofA. Constraint:KL >= 0.KU(input)INTEGERβ the number of superdiagonals within the band ofA. Constraint:KU >= 0.AB(input/output)COMPLEXarray, dimension(LDAB,N)β here's where it gets cute. On entry, it holds the matrixAin band storage, sitting in rowsKL+1to2*KL+KU+1; rows1toKLof the array need not be set π. The j-th column ofAlives in the j-th column of the arrayABlike 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 arrayAB. Constraint:LDAB >= 2*KL+KU+1.INFO(output)INTEGERβ the vibe check:= 0: successful exit β¨< 0: ifINFO = -i, the i-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 π
π¦ 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 ofU, 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
- ubuntu jammy: scalapack-doc 1.5-11
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms