/home/abui...RC/zgbsv.f(3)
π NAME π
ok so this is the man page for /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/zgbsv.f β like, that's literally the whole name, bestie, it's a path and it's living its truth.
It's part of the Library Functions Manual, and it's all about ZGBSV, the icon that solves your linear systems for general band matrices. Fr fr.
β¨ SYNOPSIS β¨
π«Ά Functions/Subroutines
subroutine ZGBSV (n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
ZGBSV computes the solution to system of linear equations A * X = B for GB matrices (simple driver). yeah that's the whole vibe π«
π Function/Subroutine Documentation π
subroutine ZGBSV (integer n, integer kl, integer ku, integer nrhs,
complex*16, dimension( ldab, * ) ab, integer ldab, integer, dimension( *
) ipiv, complex*16, dimension( ldb, * ) b, integer ldb, integer info)
ZGBSV computes the solution to system of linear equations A * X = B for GB matrices (simple driver) β she's a simple driver and she's booked and busy π
πΈ Purpose πΈ
ok so here's the tea, straight from the source, no cap:
!>
!> ZGBSV 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.
!>
like, she factors A into L * U with partial pivoting and row interchanges, then solves A * X = B with the factored form. main character energy tbh π
π¦ Parameters π¦
NβNis INTEGER. it's the number of linear equations, aka the order of the matrixA.N >= 0. yes, zero is allowed, she's inclusive.
!> N is INTEGER
!> The number of linear equations, i.e., the order of the
!> matrix A. N >= 0.
!>
KLβKLis INTEGER. the number of subdiagonals within the band ofA.KL >= 0. those are the little guys under the diagonal π
!> KL is INTEGER
!> The number of subdiagonals within the band of A. KL >= 0.
!>
KUβKUis INTEGER. the number of superdiagonals within the band ofA.KU >= 0. and these are the ones over the diagonal, slay β¨
!> KU is INTEGER
!> The number of superdiagonals within the band of A. KU >= 0.
!>
NRHSβNRHSis INTEGER. the number of right hand sides, aka the number of columns of the matrixB.NRHS >= 0. so many hands to hold π«Ά
!> NRHS is INTEGER
!> The number of right hand sides, i.e., the number of columns
!> of the matrix B. NRHS >= 0.
!>
ABβABis COMPLEX*16 array, dimension(LDAB,N). this one's got lore, so buckle up:- On entry, the matrix
Ain band storage, in rowsKL+1to2*KL+KU+1. rows1toKLof the array need not be set (they're just vibing, unbothered). - the j-th column of
Ais stored in the j-th column of the arrayABas follows:AB(KL+KU+1+i-j,j) = A(i,j)formax(1,j-KU)<=i<=min(N,j+KL) - On exit, details of the factorization:
Uis 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. (spoiler: the further details are giving iconic, keep scrolling π)
- On entry, the matrix
!> AB is COMPLEX*16 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.
!>
LDABβLDABis INTEGER. the leading dimension of the arrayAB.LDAB >= 2*KL+KU+1. don't skimp on it, she needs the room π
!> LDAB is INTEGER
!> The leading dimension of the array AB. LDAB >= 2*KL+KU+1.
!>
IPIVβIPIVis INTEGER array, dimension(N). the pivot indices that define the permutation matrixP; row i of the matrix was interchanged with rowIPIV(i). it's literally the receipts of who swapped with who π
!> 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).
!>
BβBis COMPLEX*16 array, dimension(LDB,NRHS). On entry, the N-by-NRHS right hand side matrixB. On exit, ifINFO = 0, the N-by-NRHS solution matrixX. glow-up arc fr fr π¦
!> B is COMPLEX*16 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.
!>
LDBβLDBis INTEGER. the leading dimension of the arrayB.LDB >= max(1,N). noted. respect themax(1,N). π
!> LDB is INTEGER
!> The leading dimension of the array B. LDB >= max(1,N).
!>
INFOβINFOis INTEGER. the vibe check of the whole operation:= 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 the solution has not been computed. π like, she tried, but the math said no.
!> 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.
!>
π Author π
the absolute legends behind this:
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
we stan all four, no notes π«Ά
β Further Details: β
ok this is the part where she shows you the band storage scheme with an actual example, and honestly? it's giving art. 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 * *
!>
and the key, bestie, don't skip it:
!>
!> 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 * = ignored, she's not looking at those. + = you don't gotta set 'em going in, but the routine needs them to stash U because of fill-in from the row interchanges. it's giving necessary chaos π
Definition at line 161 of file zgbsv.f.
πΈ a lil sign-off πΈ
this page was generated automatically by Doxygen for LAPACK from the source code β no humans hand-wrote this, she's self-made β¨
and the footer tea: LAPACK, Version 3.12.0, /home/abui...RC/zgbsv.f(3) β that's the source/version and the file, periodt. πππ¦
π¦ 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