SRC/slaqr5.f(3)

✨ SRC/slaqr5.f ✨

okay bestie, this is the Library Functions Manual entry for SRC/slaqr5.f, and it's literally all about one tiny-but-iconic joint: SLAQR5 doing a single small-bulge multi-shift QR sweep. No cap. Let's go πŸ’…


πŸ’– NAME πŸ’–

SRC/slaqr5.f

🌸 SYNOPSIS 🌸

Functions/Subroutines

subroutine slaqr5 (wantt, wantz, kacc22, n, ktop, kbot, nshfts, sr, si,
    h, ldh, iloz, ihiz, z, ldz, v, ldv, u, ldu, nv, wv, ldwv, nh, wh,
    ldwh)

SLAQR5 performs a single small-bulge multi-shift QR sweep. periodt ✨

πŸŒ€ Function/Subroutine Documentation πŸŒ€

subroutine slaqr5

subroutine slaqr5 (logical wantt, logical wantz, integer kacc22, integer n,
    integer ktop, integer kbot, integer nshfts, real, dimension( * ) sr,
    real, dimension( * ) si, real, dimension( ldh, * ) h, integer ldh,
    integer iloz, integer ihiz, real, dimension( ldz, * ) z, integer ldz,
    real, dimension( ldv, * ) v, integer ldv, real, dimension( ldu, * ) u,
    integer ldu, integer nv, real, dimension( ldwv, * ) wv, integer ldwv,
    integer nh, real, dimension( ldwh, * ) wh, integer ldwh)

SLAQR5 performs a single small-bulge multi-shift QR sweep. slay 🫢

Purpose

okay so SLAQR5, called by SLAQR0, performs a single small-bulge multi-shift QR sweep. That's the whole purpose, bestie. πŸ’–

Parameters

  • WANTT β€” WANTT is LOGICAL. WANTT = .true. if the quasi-triangular Schur factor is being computed. WANTT is set to .false. otherwise. πŸŽ€
  • WANTZ β€” WANTZ is LOGICAL. WANTZ = .true. if the orthogonal Schur factor is being computed. WANTZ is set to .false. otherwise. πŸ¦‹
  • KACC22 β€” KACC22 is INTEGER with value 0, 1, or 2. It specifies the computation mode of far-from-diagonal orthogonal updates.
    • = 0: SLAQR5 does not accumulate reflections and does not use matrix-matrix multiply to update far-from-diagonal matrix entries.
    • = 1: SLAQR5 accumulates reflections and uses matrix-matrix multiply to update the far-from-diagonal matrix entries.
    • = 2: Same as KACC22 = 1. This option used to enable exploiting the 2-by-2 structure during matrix multiplications, but this is no longer supported.
  • N β€” N is INTEGER. N is the order of the Hessenberg matrix H upon which this subroutine operates. πŸ‘‘
  • KTOP β€” KTOP is INTEGER.
  • KBOT β€” KBOT is INTEGER. These are the first and last rows and columns of an isolated diagonal block upon which the QR sweep is to be applied. It is assumed without a check that either KTOP = 1 or H(KTOP,KTOP-1) = 0, and either KBOT = N or H(KBOT+1,KBOT) = 0. no check, just vibes 😭
  • NSHFTS β€” NSHFTS is INTEGER. NSHFTS gives the number of simultaneous shifts. NSHFTS must be positive and even. ✨
  • SR β€” SR is REAL array, dimension (NSHFTS).
  • SI β€” SI is REAL array, dimension (NSHFTS). SR contains the real parts and SI contains the imaginary parts of the NSHFTS shifts of origin that define the multi-shift QR sweep. On output SR and SI may be reordered. reorder era πŸ”
  • H β€” H is REAL array, dimension (LDH,N). On input H contains a Hessenberg matrix. On output a multi-shift QR sweep with shifts SR(J)+i*SI(J) is applied to the isolated diagonal block in rows and columns KTOP through KBOT. πŸ”₯
  • LDH β€” LDH is INTEGER. LDH is the leading dimension of H just as declared in the calling procedure. LDH >= MAX(1,N).
  • ILOZ β€” ILOZ is INTEGER.
  • IHIZ β€” IHIZ is INTEGER. Specify the rows of Z to which transformations must be applied if WANTZ is .TRUE.. 1 <= ILOZ <= IHIZ <= N. 🎯
  • Z β€” Z is REAL array, dimension (LDZ,IHIZ). If WANTZ = .TRUE., then the QR Sweep orthogonal similarity transformation is accumulated into Z(ILOZ:IHIZ,ILOZ:IHIZ) from the right. If WANTZ = .FALSE., then Z is unreferenced. πŸ’«
  • LDZ β€” LDZ is INTEGER. The page really says LDA is the leading dimension of Z just as declared in the calling procedure β€” iykyk. LDZ >= N. πŸ™ˆ
  • V β€” V is REAL array, dimension (LDV,NSHFTS/2).
  • LDV β€” LDV is INTEGER. LDV is the leading dimension of V as declared in the calling procedure. LDV >= 3.
  • U β€” U is REAL array, dimension (LDU,2*NSHFTS).
  • LDU β€” LDU is INTEGER. LDU is the leading dimension of U just as declared in the in the calling subroutine. LDU >= 2*NSHFTS. (yes, "in the in the" is in the source πŸ’€)
  • NV β€” NV is INTEGER. NV is the number of rows in WV agailable for workspace β€” that's the original spelling, bestie. NV >= 1. πŸ“
  • WV β€” WV is REAL array, dimension (LDWV,2*NSHFTS).
  • LDWV β€” LDWV is INTEGER. LDWV is the leading dimension of WV as declared in the in the calling subroutine. LDWV >= NV.
  • NH β€” NH is INTEGER. NH is the number of columns in array WH available for workspace. NH >= 1.
  • WH β€” WH is REAL array, dimension (LDWH,NH).
  • LDWH β€” LDWH is INTEGER. Leading dimension of WH just as declared in the calling procedure. LDWH >= 2*NSHFTS. πŸŽ€

πŸ‘©β€πŸ”¬ Author

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

🌟 Contributors:

  • Karen Braman and Ralph Byers, Department of Mathematics, University of Kansas, USA
  • Lars Karlsson, Daniel Kressner, and Bruno Lang
  • Thijs Steel, Department of Computer science, KU Leuven, Belgium

πŸ“š References:

  • K. Braman, R. Byers and R. Mathias, The Multi-Shift QR Algorithm Part I: Maintaining Well Focused Shifts, and Level 3 Performance, SIAM Journal of Matrix Analysis, volume 23, pages 929--947, 2002.
  • Lars Karlsson, Daniel Kressner, and Bruno Lang, Optimally packed chains of bulges in multishift QR algorithms. ACM Trans. Math. Softw. 40, 2, Article 12 (February 2014).

πŸ“ Definition at line 262 of file slaqr5.f.

πŸ€– Author

Generated automatically by Doxygen for LAPACK from the source code.


okay that's the whole page, bestie. signing off with LAPACK, Version 3.12.0, from SRC/slaqr5.f(3) β€” slay forever πŸ’–βœ¨

πŸ“¦ where this page comes from