DPBT01(3)

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

πŸ’… dpbt01(3) β€” like, the LAPACK manual page, bestie

okay so this is one of those LAPACK library function pages (yes the whole thing lives under /home/abui...IN/dpbt01.f(3) in the manual set) and honestly it's giving "niche but iconic." it's a test routine, it checks somebody's band-matrix factorization math, and it wants you to know it. periodt.


✨ NAME ✨

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/TESTING/LIN/dpbt01.f

like, that's literally the file path, bestie. that's the name. don't ask me to shorten it, that's what it says 🫢


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine DPBT01 (uplo, n, kd, a, lda, afac, ldafac, rwork, resid)
    DPBT01

that's the whole vibe check: one subroutine, nine arguments, zero chill.


🌸 Function/Subroutine Documentation 🌸

subroutine DPBT01 (character uplo, integer n, integer kd, double precision,
    dimension( lda, * ) a, integer lda, double precision, dimension( ldafac,
    * ) afac, integer ldafac, double precision, dimension( * ) rwork, double
    precision resid)
    DPBT01

πŸ’– Purpose πŸ’–

no cap, here's what it does β€” quoting the source comment energy:

!>
!> DPBT01 reconstructs a symmetric positive definite band matrix A from
!> its L*L' or U'*U factorization and computes the residual
!>    norm( L*L' - A ) / ( N * norm(A) * EPS ) or
!>    norm( U'*U - A ) / ( N * norm(A) * EPS ),
!> where EPS is the machine epsilon, L' is the conjugate transpose of
!> L, and U' is the conjugate transpose of U.
!>

so it rebuilds A from its factorization, then measures how badly that reconstruction misses. EPS is the machine epsilon, L' is the conjugate transpose of L, and U' is the conjugate transpose of U. that's the whole plot. it ate. πŸ’…


πŸ‘‘ Parameters πŸ‘‘

🌈 UPLO

UPLO is CHARACTER*1. it tells us which triangle of the symmetric matrix A we're storing:

  • = 'U' β€” upper triangular
  • = 'L' β€” lower triangular

pick one, bestie, and mean it.

⭐ N

N is INTEGER. it's the number of rows and columns of the matrix A. constraint: N >= 0. yes, zero counts, she's allowed to be empty.

πŸŽ€ KD

KD is INTEGER. it's the number of super-diagonals of the matrix A if UPLO = 'U', or the number of sub-diagonals if UPLO = 'L'. constraint: KD >= 0. diagonals above or below, depending on the vibe.

πŸ“ A

A is DOUBLE PRECISION array, dimension (LDA,N) β€” the original symmetric band matrix A. if UPLO = 'U', the upper triangular part of A is stored as a band matrix; if UPLO = 'L', the lower triangular part of A is stored. the columns of the appropriate triangle are stored in the columns of A and the diagonals of the triangle are stored in the rows of A. see DPBTRF for further details, iykyk.

🧚 LDA

LDA is INTEGER. β€” note the period, that's canon, I don't make the rules. it's the leading dimension of the array A. constraint: LDA >= max(1,KD+1). don't skimp on it or it's over for you πŸ’€

πŸ¦‹ AFAC

AFAC is DOUBLE PRECISION array, dimension (LDAFAC,N) β€” the factored form of the matrix A. AFAC contains the factor L or U from the L*L' or U'*U factorization in band storage format, as computed by DPBTRF. so this is the pre-chewed version, already factored, thank you DPBTRF.

πŸ’œ LDAFAC

LDAFAC is INTEGER β€” the leading dimension of the array AFAC. constraint: LDAFAC >= max(1,KD+1). same energy as LDA, different array.

πŸ”₯ RWORK

RWORK is DOUBLE PRECISION array, dimension (N). that's it. that's the whole entry. short and slay.

πŸ‘‘ RESID

RESID is DOUBLE PRECISION β€” the residual, obviously:

  • if UPLO = 'L', it's norm(L*L' - A) / ( N * norm(A) * EPS )
  • if UPLO = 'U', it's norm(U'*U - A) / ( N * norm(A) * EPS )

small number = good reconstruction. big number = the factorization is having a moment. 😭


πŸ’€ Author πŸ’€

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

like four whole institutions showed up for this one file, love that for them.

Definition at line 117 of file dpbt01.f.


🌟 Author (the other one) 🌟

Generated automatically by Doxygen for LAPACK from the source code.

robots wrote the docs, humans wrote the Fortran, that's the arrangement 🫢


okay that's the whole page, no notes, go forth and check your band matrices ✨

LAPACK β€” Version 3.12.0 β€” /home/abui...IN/dpbt01.f(3) β€” mwah, bye bestie πŸ’…πŸŽ€

πŸ“¦ where this page comes from