SRC/claqgb.f(3)

🌸 SRC/claqgb.f(3) β€” Library Functions Manual 🌸

okay bestie, welcome to the glow-up zone ✨ this is a page from the Library Functions Manual, and it's all about one iconic little Fortran subroutine that does matrix makeovers. no cap, she's serving scaling realness πŸ’…


πŸŽ€ NAME πŸŽ€

SRC/claqgb.f


πŸ¦‹ SYNOPSIS πŸ¦‹

Functions/Subroutines

subroutine claqgb (m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax,
    equed)

CLAQGB scales a general band matrix, using row and column scaling factors computed by sgbequ. literally her whole personality πŸ’–


πŸ‘‘ Function/Subroutine Documentation πŸ‘‘

subroutine claqgb (integer m, integer n, integer kl, integer ku, complex,
    dimension( ldab, * ) ab, integer ldab, real, dimension( * ) r, real,
    dimension( * ) c, real rowcnd, real colcnd, real amax, character equed)

CLAQGB scales a general band matrix, using row and column scaling factors computed by sgbequ. she's not doing the math herself, she's applying the looks that sgbequ curated 🫢

✨ Purpose ✨

!>
!> CLAQGB equilibrates a general M by N band matrix A with KL
!> subdiagonals and KU superdiagonals using the row and scaling factors
!> in the vectors R and C.
!>

so like, she takes your band matrix A β€” M by N, with KL subdiagonals and KU superdiagonals β€” and equilibrates it using those row and scaling factors hanging out in the R and C vectors. main character energy fr fr 🌈


πŸ’… Parameters πŸ’…

  • M β€” M is INTEGER, and it's the number of rows of the matrix A. M >= 0. keep it non-negative, bestie πŸ™ˆ
  • N β€” N is INTEGER, the number of columns of the matrix A. N >= 0. again, no negatives please πŸ’€
  • KL β€” KL is INTEGER, the number of subdiagonals within the band of A. KL >= 0. yes queen, stay non-negative ⭐
  • KU β€” KU is INTEGER, the number of superdiagonals within the band of A. KU >= 0. same vibe, same rule πŸŽ€
  • AB β€” AB is COMPLEX array, dimension (LDAB,N). on entry, this is the matrix A in band storage, in rows 1 to KL+KU+1. the j-th column of A is stored in the j-th column of the array AB like this:
AB(ku+1+i-j,j) = A(i,j) for max(1,j-ku)<=i<=min(m,j+kl)

on exit, it's the equilibrated matrix, in the same storage format as A. see EQUED for the form of the equilibrated matrix. she went in, got the glow-up, kept the same outfit πŸ’–

  • LDAB β€” LDAB is INTEGER, the leading dimension of the array AB. LDA >= KL+KU+1. (yes, it says LDA, we're keeping it exactly as written β€” no editing the sacred text, bestie 😭)
  • R β€” R is REAL array, dimension (M). the row scale factors for A. iconic little row receipts 🧚
  • C β€” C is REAL array, dimension (N). the column scale factors for A. matching column receipts, we love a coordinated set πŸ’œ
  • ROWCND β€” ROWCND is REAL. ratio of the smallest R(i) to the largest R(i). it's giving imbalance report πŸ”₯
  • COLCND β€” COLCND is REAL. ratio of the smallest C(i) to the largest C(i). same energy, column edition 🌸
  • AMAX β€” AMAX is REAL. absolute value of largest matrix entry. the biggest vibe in the room, literally πŸ’€
  • EQUED β€” EQUED is CHARACTER*1. specifies the form of equilibration that was done:
    • = 'N': No equilibration
    • = 'R': Row equilibration, i.e., A has been premultiplied by diag(R).
    • = 'C': Column equilibration, i.e., A has been postmultiplied by diag(C).
    • = 'B': Both row and column equilibration, i.e., A has been replaced by diag(R) * A * diag(C).

so 'N' is no glow-up, 'R' is row-only, 'C' is column-only, and 'B' is the full both-sides slay πŸ‘‘βœ¨


πŸ“ Internal Parameters πŸ“

!>  THRESH is a threshold value used to decide if row or column scaling
!>  should be done based on the ratio of the row or column scaling
!>  factors.  If ROWCND < THRESH, row scaling is done, and if
!>  COLCND < THRESH, column scaling is done.
!>
!>  LARGE and SMALL are threshold values used to decide if row scaling
!>  should be done based on the absolute size of the largest matrix
!>  element.  If AMAX > LARGE or AMAX < SMALL, row scaling is done.
!>

so THRESH is the cutoff that decides whether row or column scaling gets the green light, based on the ratio of the row or column scaling factors. if ROWCND < THRESH, row scaling is done; if COLCND < THRESH, column scaling is done. and LARGE and SMALL are thresholds deciding whether row scaling happens based on the absolute size of the largest matrix element β€” if AMAX > LARGE or AMAX < SMALL, row scaling is done. iykyk, the thresholds are doing all the decision-making behind the scenes πŸŒ€


🌈 Author 🌈

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

⭐ Definition ⭐

Definition at line 158 of file claqgb.f.


πŸ’– Author (again, but the generated one) πŸ’–

Generated automatically by Doxygen for LAPACK from the source code. she was born from automation, and honestly? iconic πŸŽ€


lowkey a whole serve: LAPACK Β· Version 3.12.0 Β· SRC/claqgb.f(3) β€” and that's the tea, bestie. drink up πŸ΅πŸ’…βœ¨
πŸ“¦ where this page comes from