CPBT01(3)

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

πŸŽ€ NAME πŸŽ€

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

okay so bestie, this is a section 3 Library Functions Manual page for a Fortran file, and yes the "name" is literally the whole build path πŸ’€ that's just how LAPACK's doxygen rolls, we don't question it, we simply vibe.


✨ SYNOPSIS ✨

Functions/Subroutines

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

πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine CPBT01 (character uplo, integer n, integer kd, complex,
    dimension( lda, * ) a, integer lda, complex, dimension( ldafac, * )
    afac, integer ldafac, real, dimension( * ) rwork, real resid)
    CPBT01

🌸 Purpose 🌸

!> !> CPBT01 reconstructs a Hermitian 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. !>

like literally, she takes your band matrix A apart from its factorization, puts it back together, and then checks her own work β€” and honestly? main character energy πŸ‘‘ the residual is how much she fumbled, scaled by N, norm(A) and EPS so the number actually means something.


πŸ’… Parameters πŸ’…

  • UPLO
!> UPLO is CHARACTER*1 !> Specifies whether the upper or lower triangular part of the !> Hermitian matrix A is stored: !> = 'U': Upper triangular !> = 'L': Lower triangular !>

one character, two moods: 'U' upper triangular, 'L' lower triangular. that's it, that's the whole personality test 🫢

  • N
!> N is INTEGER !> The number of rows and columns of the matrix A. N >= 0. !>

how many rows and columns (she's square, obviously ✨), and N >= 0 β€” no negative girlies allowed.

  • KD
!> KD is INTEGER !> The number of super-diagonals of the matrix A if UPLO = 'U', !> or the number of sub-diagonals if UPLO = 'L'. KD >= 0. !>

the band width, basically β€” number of super-diagonals when UPLO = 'U', number of sub-diagonals when UPLO = 'L'. and KD >= 0 too, we stay non-negative in this house πŸ’–

  • A
!> A is COMPLEX array, dimension (LDA,N) !> The original Hermitian 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 CPBTRF for further details. !>

COMPLEX array, dimension (LDA,N) β€” the original Hermitian band matrix, our queen before the glow-up. if UPLO = 'U' you're storing the upper triangular part as a band matrix; if UPLO = 'L' you're storing the lower triangular part. and the storage layout is so specific: the columns of the appropriate triangle live in the columns of A, and the diagonals of the triangle live in the rows of A. for the full lore, go see CPBTRF (iykyk) πŸ“–

  • LDA
!> LDA is INTEGER. !> The leading dimension of the array A. LDA >= max(1,KD+1). !>

the leading dimension of A, and it's gotta be LDA >= max(1,KD+1) β€” no cap, that's the floor.

  • AFAC
!> AFAC is COMPLEX 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 CPBTRF. !>

COMPLEX array, dimension (LDAFAC,N) β€” the factored form, aka the after picture. it holds the factor L or U from the L*L' or U'*U factorization, in band storage format, exactly as computed by CPBTRF. it's giving "trust the process" πŸ”₯

  • LDAFAC
!> LDAFAC is INTEGER !> The leading dimension of the array AFAC. !> LDAFAC >= max(1,KD+1). !>

leading dimension of AFAC, same rule bestie: LDAFAC >= max(1,KD+1).

  • RWORK
!> RWORK is REAL array, dimension (N) !>

a REAL workspace array, dimension (N). she's just here to help 🧚

  • RESID
!> RESID is REAL !> If UPLO = 'L', norm(L*L' - A) / ( N * norm(A) * EPS ) !> If UPLO = 'U', norm(U'*U - A) / ( N * norm(A) * EPS ) !>

a REAL, and it's the whole point of the function β€” the receipts:

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

small number = she ate. big number = something's off and we need to talk 😭


πŸ‘‘ Author πŸ‘‘

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

the whole squad, shoutout to all four 🫢

Definition at line 118 of file cpbt01.f.


⭐ Author (the meta one) ⭐

Generated automatically by Doxygen for LAPACK from the source code. (yes, this page has two authors sections β€” she contains multitudes πŸ’…)


and that's the page, bestie β€” brought to you by LAPACK, Version 3.12.0, with the date stamp up top being all mangled into /home/abui...IN/cpbt01.f(3) because the path ate it πŸ™ˆ slay, go reconstruct something ✨

πŸ“¦ where this page comes from