/home/abui...RC/cgbsv.f(3)
πΈ CGBSV β cgbsv.f β¨
ok so bestie, this page lives at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/cgbsv.f and it's from the LAPACK Library Functions Manual, section 3 π
like it's literally a Fortran source doc, cgbsv.f(3), and we're about to get into it.
β¨ SYNOPSIS β¨
π Functions/Subroutines
subroutine CGBSV (n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
CGBSV computes the solution to system of linear equations A * X = B for GB matrices (simple driver) β yes she's a simple driver, she's lowkey the main character of band-matrix solving π«Ά
π Function/Subroutine Documentation π
subroutine CGBSV (integer n, integer kl, integer ku, integer nrhs, complex,
dimension( ldab, * ) ab, integer ldab, integer, dimension( * ) ipiv,
complex, dimension( ldb, * ) b, integer ldb, integer info)
CGBSV computes the solution to system of linear equations A * X = B for GB matrices (simple driver) β okay so same energy as the synopsis, it's giving consistency, we love that for her β¨
π Purpose:
!>
!> CGBSV computes the solution to a complex system of linear equations
!> A * X = B, where A is a band matrix of order N with KL subdiagonals
!> and KU superdiagonals, and X and B are N-by-NRHS matrices.
!>
!> The LU decomposition with partial pivoting and row interchanges is
!> used to factor A as A = L * U, where L is a product of permutation
!> and unit lower triangular matrices with KL subdiagonals, and U is
!> upper triangular with KL+KU superdiagonals. The factored form of A
!> is then used to solve the system of equations A * X = B.
!>
so basically: band matrix A, order N, with KL subdiagonals and KU superdiagonals, and X and B are N-by-NRHS matrices, periodt π
She factors A = L * U with LU decomposition + partial pivoting + row interchanges, where L is a product of permutation and unit lower triangular matrices with KL subdiagonals, and U is upper triangular with KL+KU superdiagonals. Then she uses the factored form to solve A * X = B. iconic behavior, no cap π₯
π¦ Parameters π¦
N
!> N is INTEGER
!> The number of linear equations, i.e., the order of the
!> matrix A. N >= 0.
!>
the number of linear equations aka the order of matrix A, and N >= 0 fr fr π
KL
!> KL is INTEGER
!> The number of subdiagonals within the band of A. KL >= 0.
!>
how many subdiagonals live inside the band of A, KL >= 0 π
KU
!> KU is INTEGER
!> The number of superdiagonals within the band of A. KU >= 0.
!>
how many superdiagonals live inside the band of A, KU >= 0 β¨
NRHS
!> NRHS is INTEGER
!> The number of right hand sides, i.e., the number of columns
!> of the matrix B. NRHS >= 0.
!>
the number of right hand sides aka the number of columns of matrix B, NRHS >= 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(N,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.
!>
AB is a COMPLEX array, dimension (LDAB,N). On entry it's matrix A in band storage, living 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 those π). The j-th column of A is stored in the j-th column of AB like this: AB(KL+KU+1+i-j,j) = A(i,j) for max(1,j-KU)<=i<=min(N,j+KL). On exit you get the factorization deets: U is stored as an upper triangular band matrix with KL+KU superdiagonals in rows 1 to KL+KU+1, and the multipliers from the factorization chill 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.
!>
the leading dimension of the array AB, and LDAB >= 2*KL+KU+1 β do not skip that one bestie π
IPIV
!> IPIV is INTEGER array, dimension (N)
!> The pivot indices that define the permutation matrix P;
!> row i of the matrix was interchanged with row IPIV(i).
!>
INTEGER array, dimension (N) β the pivot indices defining permutation matrix P; row i of the matrix was interchanged with row IPIV(i) π
B
!> B is COMPLEX array, dimension (LDB,NRHS)
!> On entry, the N-by-NRHS right hand side matrix B.
!> On exit, if INFO = 0, the N-by-NRHS solution matrix X.
!>
COMPLEX array, dimension (LDB,NRHS). On entry: the N-by-NRHS right hand side matrix B. On exit, if INFO = 0: the N-by-NRHS solution matrix X. glow-up moment π
LDB
!> LDB is INTEGER
!> The leading dimension of the array B. LDB >= max(1,N).
!>
the leading dimension of the array B, LDB >= max(1,N) πΈ
INFO
!> INFO is INTEGER
!> = 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 the solution has not been computed.
!>
INTEGER, and here's the vibe check:
= 0: successful exit, we slayed β¨< 0: ifINFO = -i, thei-th argument had an illegal value, rude π€> 0: ifINFO = i,U(i,i)is exactly zero. The factorization has been completed, but the factorUis exactly singular, and the solution has not been computed π
π 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.
!>
so the band storage scheme is illustrated above when M = N = 6, KL = 2, KU = 1. Array elements marked * are not used by the routine (ignore them, they're not the vibe π); 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 π₯
bestie please clock the difference between entry and exit β that fill-in from row interchanges is literally the whole point of the + slots, don't come for me π
Definition at line 161 of file cgbsv.f. π
π« Author π«
Generated automatically by Doxygen for LAPACK from the source code π«Ά
ok that's the whole page, mwah π β LAPACK, Version 3.12.0, and this little beauty is /home/abui...RC/cgbsv.f(3), see you in the next manpage bestie πβ¨π
π¦ where this page comes from
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms