ZDBTF2(3)
β¨ ZDBTF2 β¨
okay so bestie, welcome to ZDBTF2(3) π
this one computes an LU factorization of a real m-by-n band matrix A without using partial pivoting with row interchanges. no cap, that's the whole job.
π SYNOPSIS π
SUBROUTINE ZDBTF2( M, N, KL, KU, AB, LDAB, INFO )
INTEGER INFO, KL, KU, LDAB, M, N
COMPLEX*16 AB( LDAB, * )
π¦ DESCRIPTION π¦
so Zdbtrf computes an LU factorization of a real m-by-n band matrix A without using partial pivoting with row interchanges. that's it, that's the plot π«Ά
this is the unblocked version of the algorithm, calling Level 2 BLAS. it's giving "doing it the straightforward way, one step at a time" energy π
πΈ ARGUMENTS πΈ
M(input)INTEGERβ the number of rows of the matrixA. gotta beM >= 0.N(input)INTEGERβ the number of columns of the matrixA. gotta beN >= 0.KL(input)INTEGERβ the number of subdiagonals within the band ofA.KL >= 0.KU(input)INTEGERβ the number of superdiagonals within the band ofA.KU >= 0.AB(input/output)COMPLEX*16array, dimension(LDAB,N)β the star of the show β¨
on entry, this 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 (so don't stress about them, bestie π).
the j-th column of A is stored 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, it's holding 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. see below for further details π
LDAB(input)INTEGERβ the leading dimension of the arrayAB.LDAB >= 2*KL+KU+1. it's the ceiling, respect it πINFO(output)INTEGERβ the vibe check report:= 0: successful exit π slay< 0: ifINFO = -i, the i-th argument had an illegal value. somebody passed something they shouldn't have π> 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. no cap, that's a real one π
π BAND STORAGE, ILLUSTRATED π
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 * *
π A LITTLE NOTE ABOUT * AND + π
array elements marked * are not used by the routine β they're just chilling, not invited to the party π
ββοΈ
elements marked + need not be set on entry, but are required by the routine to store elements of U, because of fill-in resulting from the row interchanges. so likeβ¦ they get promoted to main character status mid-routine π
and that's the whole page, bestie π this is ZDBTF2(3) straight out of the LAPACK manual set β section 3, the source/version and date stamp is the usual little footer your install ships with, so go check yours if you need the exact numbers π love u, go factor something πΈ
π¦ 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