DPBTRS(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… DPBTRS(3) β€” bestie's guide to solving banded systems ✨

Okay so like, first things first, this page is dpbtrs.f(3) and it lives in the Library Functions Manual β€” it's the manpage for DPBTRS from LAPACK and I'm gonna explain it to you like you're my group chat, no cap.


🌸 NAME 🌸

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dpbtrs.f β€” yes bestie that's the actual full path, it's giving very "I was compiled from source" energy πŸ’…


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine DPBTRS (uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
    DPBTRS

✨ Function/Subroutine Documentation ✨

subroutine DPBTRS (character uplo, integer n, integer kd, integer nrhs,
    double precision, dimension( ldab, * ) ab, integer ldab, double
    precision, dimension( ldb, * ) b, integer ldb, integer info)
    DPBTRS

πŸŽ€ Purpose πŸŽ€

!> !> DPBTRS solves a system of linear equations A*X = B with a symmetric !> positive definite band matrix A using the Cholesky factorization !> A = UT*U or A = L*LT computed by DPBTRF. !>

So like, the whole vibe is: you've already done the Cholesky factorization with DPBTRF, and now DPBTRS comes in to actually solve A*X = B for a symmetric positive definite band matrix. It's giving "the sequel we deserved" πŸ”₯


πŸ’– Parameters πŸ’–

πŸ‘‘ UPLO

!> UPLO is CHARACTER*1 !> = 'U': Upper triangular factor stored in AB; !> = 'L': Lower triangular factor stored in AB. !>

Like, which triangle of the matrix are we working with bestie? 'U' = upper triangular factor is chilling in AB, 'L' = lower triangular factor is the one in AB. Pick your fighter πŸ’…

πŸ‘‘ N

!> N is INTEGER !> The order of the matrix A. N >= 0. !>

The order of matrix A, aka how big the whole thing is. And it's gotta be N >= 0 β€” negative orders are NOT it, periodt.

πŸ‘‘ KD

!> KD is INTEGER !> The number of superdiagonals of the matrix A if UPLO = 'U', !> or the number of subdiagonals if UPLO = 'L'. KD >= 0. !>

The number of superdiagonals when UPLO = 'U', or the number of subdiagonals when UPLO = 'L'. Also KD >= 0, no exceptions. This is what makes it a band matrix, iykyk πŸ¦‹

πŸ‘‘ 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 β€” basically how many columns matrix B has. NRHS >= 0, always. It's giving "how many problems are we solving at once" energy 😭

πŸ‘‘ AB

!> AB is DOUBLE PRECISION array, dimension (LDAB,N) !> The triangular factor U or L from the Cholesky factorization !> A = UT*U or A = L*LT of the band matrix A, stored in the !> first KD+1 rows of the array. The j-th column of U or L is !> stored in the j-th column of the array AB as follows: !> if UPLO ='U', AB(kd+1+i-j,j) = U(i,j) for max(1,j-kd)<=i<=j; !> if UPLO ='L', AB(1+i-j,j) = L(i,j) for j<=i<=min(n,j+kd). !>

Okay this one is the main character fr. AB is a DOUBLE PRECISION array with dimension (LDAB,N) and it's holding the triangular factor U or L from the Cholesky factorization A = U**T*U or A = L*L**T of the band matrix A, stored in the first KD+1 rows. And the j-th column of U or L gets stored in the j-th column of AB like this:

if UPLO ='U', AB(kd+1+i-j,j) = U(i,j) for max(1,j-kd)<=i<=j;
if UPLO ='L', AB(1+i-j,j)    = L(i,j) for j<=i<=min(n,j+kd).

Copy those index formulas EXACTLY bestie, they are the whole tea 🍡

πŸ‘‘ LDAB

!> LDAB is INTEGER !> The leading dimension of the array AB. LDAB >= KD+1. !>

Leading dimension of the array AB. The rule is LDAB >= KD+1 β€” don't mess this up or it's gonna be a bad time πŸ™ˆ

πŸ‘‘ B

!> B is DOUBLE PRECISION array, dimension (LDB,NRHS) !> On entry, the right hand side matrix B. !> On exit, the solution matrix X. !>

The glow-up of arrays: on entry it's your right hand side matrix B, on exit it's the solution matrix X. Literally transforming in place, we love a come-up story πŸ’–

πŸ‘‘ LDB

!> LDB is INTEGER !> The leading dimension of the array B. LDB >= max(1,N). !>

Leading dimension of the array B. Requirement: LDB >= max(1,N). Noted πŸ“

πŸ‘‘ INFO

!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !>

The vibe check at the end πŸ’€ = 0 means successful exit (slay), and < 0 means if INFO = -i, the i-th argument had an illegal value β€” so like, one of your args was not it and it's telling you which one. Very helpful fr.


🌈 Author 🌈

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

πŸ“– Definition at line 120 of file dpbtrs.f.


🧚 Author (of this manpage) 🧚

Generated automatically by Doxygen for LAPACK from the source code.


okay so that's the whole thing bestie β€” shoutout to LAPACK Version 3.12.0 for the source and to Doxygen for auto-generating this page from dpbtrs.f(3) πŸ’œ Go solve those banded systems, you're gonna ate 🫢✨
πŸ“¦ where this page comes from