gbtf2(3)
πΈ gbtf2 πΈ
okay so this is gbtf2(3) from the Library Functions Manual β bestie, it's a whole family of LAPACK routines that do LU factorization on general band matrices using the unblocked version of the algorithm. Four flavors, one page, all the tea below π
β¨ SYNOPSIS β¨
Functions
subroutine cgbtf2 (m, n, kl, ku, ab, ldab, ipiv, info)β CGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm. πsubroutine dgbtf2 (m, n, kl, ku, ab, ldab, ipiv, info)β DGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm. πsubroutine sgbtf2 (m, n, kl, ku, ab, ldab, ipiv, info)β SGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm. πsubroutine zgbtf2 (m, n, kl, ku, ab, ldab, ipiv, info)β ZGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm. π
Detailed Description
(that's literally it, she's a heading with no body β the real content lives down in Function Documentation π«Ά)
Function Documentation
π¦ subroutine cgbtf2 (integer m, integer n, integer kl, integer ku, complex, dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv, integer info)
subroutine cgbtf2 (integer m, integer n, integer kl, integer ku, complex,
dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv,
integer info)
CGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm.
Purpose
CGBTF2 computes an LU factorization of a complex m-by-n band matrix A using partial pivoting with row interchanges.
This is the unblocked version of the algorithm, calling Level 2 BLAS.
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.KLβKL is INTEGER. The number of subdiagonals within the band of A.KL >= 0.KUβKU is INTEGER. The number of superdiagonals within the band of A.KU >= 0.ABβAB is COMPLEX array, dimension (LDAB,N). On entry, the matrix A in band storage, in rowsKL+1to2*KL+KU+1; rows1toKLof the array need not be set. The j-th column of A is stored in the j-th column of the array AB as follows:AB(kl+ku+1+i-j,j) = A(i,j)formax(1,j-ku)<=i<=min(m,j+kl). On exit, details of the factorization: U is stored as an upper triangular band matrix withKL+KUsuperdiagonals in rows1toKL+KU+1, and the multipliers used during the factorization are stored in rowsKL+KU+2to2*KL+KU+1. See below for further details πLDABβLDAB is INTEGER. The leading dimension of the array AB.LDAB >= 2*KL+KU+1.IPIVβIPIV is INTEGER array, dimension (min(M,N)). The pivot indices; for1 <= i <= min(M,N), row i of the matrix was interchanged with rowIPIV(i).INFOβINFO is INTEGER= 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 factor U is exactly singular, and division by zero will occur if it is used to solve a system of equations. π
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details
The band storage scheme is illustrated by the following example, whenM = N = 6,KL = 2,KU = 1:
On entry: On exit:
* * * + + + * * * u14 u25 u36
* * + + + + * * u13 u24 u35 u46
* 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 * *
Array elements marked*are not used by the routine; 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.
Definition at line 144 of file cgbtf2.f.
π§ subroutine dgbtf2 (integer m, integer n, integer kl, integer ku, double precision, dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv, integer info)
subroutine dgbtf2 (integer m, integer n, integer kl, integer ku, double
precision, dimension( ldab, * ) ab, integer ldab, integer, dimension( *
) ipiv, integer info)
DGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm.
Purpose
DGBTF2 computes an LU factorization of a real m-by-n band matrix A using partial pivoting with row interchanges.
This is the unblocked version of the algorithm, calling Level 2 BLAS.
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.KLβKL is INTEGER. The number of subdiagonals within the band of A.KL >= 0.KUβKU is INTEGER. The number of superdiagonals within the band of A.KU >= 0.ABβAB is DOUBLE PRECISION array, dimension (LDAB,N). On entry, the matrix A in band storage, in rowsKL+1to2*KL+KU+1; rows1toKLof the array need not be set. The j-th column of A is stored in the j-th column of the array AB as follows:AB(kl+ku+1+i-j,j) = A(i,j)formax(1,j-ku)<=i<=min(m,j+kl). On exit, details of the factorization: U is stored as an upper triangular band matrix withKL+KUsuperdiagonals in rows1toKL+KU+1, and the multipliers used during the factorization are stored in rowsKL+KU+2to2*KL+KU+1. See below for further details πLDABβLDAB is INTEGER. The leading dimension of the array AB.LDAB >= 2*KL+KU+1.IPIVβIPIV is INTEGER array, dimension (min(M,N)). The pivot indices; for1 <= i <= min(M,N), row i of the matrix was interchanged with rowIPIV(i).INFOβINFO is INTEGER= 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 factor U is exactly singular, and division by zero will occur if it is used to solve a system of equations. π
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details
The band storage scheme is illustrated by the following example, whenM = N = 6,KL = 2,KU = 1:
On entry: On exit:
* * * + + + * * * u14 u25 u36
* * + + + + * * u13 u24 u35 u46
* 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 * *
Array elements marked*are not used by the routine; 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.
Definition at line 144 of file dgbtf2.f.
π subroutine sgbtf2 (integer m, integer n, integer kl, integer ku, real, dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv, integer info)
subroutine sgbtf2 (integer m, integer n, integer kl, integer ku, real,
dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv,
integer info)
SGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm.
Purpose
SGBTF2 computes an LU factorization of a real m-by-n band matrix A using partial pivoting with row interchanges.
This is the unblocked version of the algorithm, calling Level 2 BLAS.
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.KLβKL is INTEGER. The number of subdiagonals within the band of A.KL >= 0.KUβKU is INTEGER. The number of superdiagonals within the band of A.KU >= 0.ABβAB is REAL array, dimension (LDAB,N). On entry, the matrix A in band storage, in rowsKL+1to2*KL+KU+1; rows1toKLof the array need not be set. The j-th column of A is stored in the j-th column of the array AB as follows:AB(kl+ku+1+i-j,j) = A(i,j)formax(1,j-ku)<=i<=min(m,j+kl). On exit, details of the factorization: U is stored as an upper triangular band matrix withKL+KUsuperdiagonals in rows1toKL+KU+1, and the multipliers used during the factorization are stored in rowsKL+KU+2to2*KL+KU+1. See below for further details πLDABβLDAB is INTEGER. The leading dimension of the array AB.LDAB >= 2*KL+KU+1.IPIVβIPIV is INTEGER array, dimension (min(M,N)). The pivot indices; for1 <= i <= min(M,N), row i of the matrix was interchanged with rowIPIV(i).INFOβINFO is INTEGERβ¦ and that's exactly where part 1 runs out of page, bestie π the rest ofINFO's glow-up rolls over into part 2 πINFOβINTEGER, the exit-status bestie, and she is very important:= 0: successful exit, we ate and left no crumbs π< 0: ifINFO = -i, the i-th argument had an illegal value β rude of it honestly π> 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 π like it will literally break, no cap
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π¦ Further Details:
ok so this is the part where the band storage scheme gets illustrated, and honestly it's giving diagram-of-the-year. Watch this, bestie β this is the case when M = N = 6, KL = 2, KU = 1:
!>
!> The band storage scheme is illustrated by the following example, when
!> M = N = 6, KL = 2, KU = 1:
!>
!> On entry: On exit:
!>
!> * * * + + + * * * u14 u25 u36
!> * * + + + + * * u13 u24 u35 u46
!> * 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 * *
!>
!> Array elements marked * are not used by the routine; 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.
!>
tldr, so you don't have to squint: array elements marked * are not used by the routine, and 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. That's the whole tea β
Definition at line 144 of file sgbtf2.f.
π subroutine zgbtf2 (integer m, integer n, integer kl, integer ku, complex*16, dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv, integer info)
ZGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algorithm.
π Purpose:
ZGBTF2 computes an LU factorization of a complex m-by-n band matrix A using partial pivoting with row interchanges.
This is the unblocked version of the algorithm, calling Level 2 BLAS. (yes, the plainer sibling of the blocked one β she still slays, just one column-ish at a time π )
πΈ Parameters
MβINTEGER. The number of rows of the matrixA.M >= 0.NβINTEGER. The number of columns of the matrixA.N >= 0.KLβINTEGER. The number of subdiagonals within the band ofA.KL >= 0.KUβINTEGER. The number of superdiagonals within the band ofA.KU >= 0.ABβCOMPLEX*16array, dimension(LDAB,N). On entry, the matrixAin band storage, in rowsKL+1to2*KL+KU+1; rows1toKLof the array need not be set. The j-th column ofAis stored in the j-th column of the arrayABas follows:
AB(kl+ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl)
On exit, 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. (the "see below" is real, the diagram is literally right there, keep scrolling π«Ά)
LDABβINTEGER. The leading dimension of the arrayAB.LDAB >= 2*KL+KU+1. No exceptions, bestie, she's strict about her leading dimension.IPIVβINTEGERarray, dimension(min(M,N)). The pivot indices; for1 <= i <= min(M,N), rowiof the matrix was interchanged with rowIPIV(i). That's the receipts of every row swap πINFOβINTEGER, the vibe check at the end:= 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 π
π Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
π¦ Further Details:
once more for the people in the back β the band storage scheme, illustrated for the case when M = N = 6, KL = 2, KU = 1:
!>
!> The band storage scheme is illustrated by the following example, when
!> M = N = 6, KL = 2, KU = 1:
!>
!> On entry: On exit:
!>
!> * * * + + + * * * u14 u25 u36
!> * * + + + + * * u13 u24 u35 u46
!> * 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 * *
!>
!> Array elements marked * are not used by the routine; 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.
!>
Array elements marked * are not used by the routine; 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. Same deal as before, just the complex edition π§
Definition at line 144 of file zgbtf2.f.
Author
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole page, bestie β you made it to the end π this iconic little artifact is from LAPACK, Version 3.12.0, dated gbtf2(3) β go forth and factorize responsibly, ily, bye ππ¦β¨
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms