gbtrf(3)
π gbtrf(3) β the triangular factor bestie
okay so bestie, this is gbtrf(3) from the Library Functions Manual, and it is literally the band-matrix LU factorization moment. we're keeping every flag, constraint, and cursed little matrix diagram, no cap. π«Ά
β¨ NAME β¨
gbtrf β gbtrf: triangular factor
πΈ SYNOPSIS πΈ
Functions
subroutine cgbtrf (m, n, kl, ku, ab, ldab, ipiv, info)β CGBTRFsubroutine dgbtrf (m, n, kl, ku, ab, ldab, ipiv, info)β DGBTRFsubroutine sgbtrf (m, n, kl, ku, ab, ldab, ipiv, info)β SGBTRFsubroutine zgbtrf (m, n, kl, ku, ab, ldab, ipiv, info)β ZGBTRF
π Detailed Description π
the full breakdown lives in the function docs below, bestie. it's giving βwe go function by function and we do not skip a single parameter.β π
π§ Function Documentation π§
π subroutine cgbtrf
subroutine cgbtrf (integer m, integer n, integer kl, integer ku, complex,
dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv,
integer info)
CGBTRF
Purpose
CGBTRF computes an LU factorization of a complex m-by-n band matrix A using partial pivoting with row interchanges.
This is the blocked version of the algorithm, calling Level 3 BLAS. slay. β¨
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 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 is stored in the j-th column of the array AB as 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.
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; 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: ifINFO = -i, thei-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.
bestie, thatINFO > 0case is not a vibe.U(i,i)is exactly zero, the factorUis exactly singular, and division by zero will occur if it is used to solve a system of equations. periodt.
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, 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. π¦
Definition at line 143 of file cgbtrf.f.
π subroutine dgbtrf
subroutine dgbtrf (integer m, integer n, integer kl, integer ku, double
precision, dimension( ldab, * ) ab, integer ldab, integer, dimension( *
) ipiv, integer info)
DGBTRF
Purpose
DGBTRF computes an LU factorization of a real m-by-n band matrix A using partial pivoting with row interchanges.
This is the blocked version of the algorithm, calling Level 3 BLAS. iconic. π
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 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 is stored in the j-th column of the array AB as 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.
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; 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: ifINFO = -i, thei-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.
again with the singularUwarning:INFO > 0meansU(i,i)is exactly zero. the factorization completed, but the factorUis exactly singular, and division by zero will occur if it is used to solve a system of equations. do not ignore her.
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, 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. π§
Definition at line 143 of file dgbtrf.f.
π subroutine sgbtrf
subroutine sgbtrf (integer m, integer n, integer kl, integer ku, real,
dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv,
integer info)
SGBTRF
Purpose
SGBTRF computes an LU factorization of a real m-by-n band matrix A using partial pivoting with row interchanges.
This is the blocked version of the algorithm, calling Level 3 BLAS. main character energy fr fr. π
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 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 is stored in the j-th column of the array AB as 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.
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; 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: ifINFO = -i, thei-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.
one more time for the people in the back:INFO > 0meansU(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. not cute, but important.
Author
Univ. of Tennessee
Univ. of California Berkeley
Univ. of Colorado Denver
NAG Ltd.
Further Details
okay so picture this π β same band storage scheme, but as a whole aesthetic. When M = N = 6, KL = 2, KU = 1, here's literally what it looks like. Left half is On entry, right half is 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 * *
k so read the room bestie π«Ά β array elements marked * are not used by the routine, they're just vibing there being decorative. Elements marked + need not be set on entry, but the routine does require them so it can stash elements of U, because of fill-in resulting from the row interchanges. So like, don't panic if they're garbage going in, but don't touch them after π
Definition at line 143 of file sgbtrf.f.
π zgbtrf β the complex/COMPLEX*16 glow-up π
subroutine zgbtrf (integer m, integer n, integer kl, integer ku, complex*16,
dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv,
integer info)
β¨ Purpose β¨
okay so ZGBTRF computes an LU factorization of a complex m-by-n band matrix A using partial pivoting with row interchanges. slay π
and like, for the record: this is the blocked version of the algorithm, calling Level 3 BLAS. highkey iconic π
πΈ Parameters πΈ
MβM is INTEGER. the number of rows of the matrix A.M >= 0. no cap.NβN is INTEGER. the number of columns of the matrix A.N >= 0. periodt.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*16 array, dimension (LDAB,N). okay so:- On entry, it's the matrix A in band storage, in rows
KL+1to2*KL+KU+1. rows1toKLof the array need not be set (they're just... there π¦). 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)formax(1,j-ku)<=i<=min(m,j+kl). - On exit, it's the factorization details: U is stored as an upper triangular band matrix with
KL+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 β¬οΈ
- On entry, it's the matrix A in band storage, in rows
LDABβLDAB is INTEGER. the leading dimension of the array AB.LDAB >= 2*KL+KU+1. bestie do not skimp on this one.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). it's giving receipts for every swap π₯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. β οΈ like, it finished, but she's singular. do not pass go.
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π¦ Further Details π¦
(the band storage scheme again, because consistency is a lifestyle π
β illustrated for when M = N = 6, KL = 2, KU = 1:)
* * * + + + * * * 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 * *
again for the people in the back π£ β 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 143 of file zgbtrf.f.
π AUTHOR π
Generated automatically by Doxygen for LAPACK from the source code. (not me writing my own press release, the robot did it π€π)
and that's the whole vibe check, bestie β this beauty is from LAPACK, Version 3.12.0, living at gbtrf(3). go forth and factorize π
β¨π
π¦ 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