SLAMSH(l)

πŸ“¦ version 1.5, in ubuntu jammy

πŸ’– SLAMSH πŸ’–

ok so bestie, welcome to SLAMSH(l) β€” a LAPACK auxiliary routine, version 1.5, and she is niche but she is serving. buckle up πŸŽ€


✨ NAME ✨

SLAMSH β€” send multiple shifts through a small (single node) matrix to see how consecutive small subdiagonal elements are modified by subsequent shifts in an effort to maximize the number of bulges that can be sent through πŸ’…


✨ SYNOPSIS ✨

SUBROUTINE SLAMSH ( S, LDS, NBULGE, JBLK, H, LDH, N, ULP )

    INTEGER       LDS, NBULGE, JBLK, LDH, N

    REAL          ULP

    REAL          S(LDS,*), H(LDH,*)

✨ PURPOSE ✨

ok so here's the vibe: SLAMSH sends multiple shifts through a small (single node) matrix to see how consecutive small subdiagonal elements are modified by subsequent shifts, all in an effort to maximize the number of bulges that can be sent through. it's giving bulge logistics πŸ”₯

and SLAMSH should only be called when there are multiple shifts/bulges (NBULGE > 1) and the first shift is starting in the middle of an unreduced Hessenberg matrix because of two or more consecutive small subdiagonal elements. like, that's her whole lane, don't call her for anything else 🫢


✨ ARGUMENTS ✨

  • S β€” (local input/output) REAL array, (LDS,*). On entry, the matrix of shifts. Only the 2x2 diagonal of S is referenced. It is assumed that S has JBLK double shifts (size 2). On exit, the data is rearranged in the best order for applying. glow-up era ✨
  • LDS β€” (local input) INTEGER. On entry, the leading dimension of S. Unchanged on exit. 1 < NBULGE <= JBLK <= LDS/2
  • NBULGE β€” (local input/output) INTEGER. On entry, the number of bulges to send through H ( >1 ). NBULGE should be less than the maximum determined (JBLK). 1 < NBULGE <= JBLK <= LDS/2 On exit, the maximum number of bulges that can be sent through. she comes in a request and leaves with the receipts πŸ’€
  • JBLK β€” (local input) INTEGER. On entry, the number of shifts determined for S. Unchanged on exit.
  • H β€” (local input/output) REAL array (LDH,N). On entry, the local matrix to apply the shifts on. H should be aligned so that the starting row is 2. On exit, the data is destroyed. no cap, she ate that matrix, it's gone 😭
  • LDS β€” (local input) INTEGER. On entry, the leading dimension of S. Unchanged on exit.
yes bestie, LDS really does show up twice in this list. that's just how the original page is built. we don't question her, we support her πŸ’œ
  • N β€” (local input) INTEGER. On entry, the size of H. If all the bulges are expected to go through, N should be at least 4*NBULGE+2. Otherwise, NBULGE may be reduced by this routine.
  • ULP β€” (local input) REAL. On entry, machine precision. Unchanged on exit.
oh and if you're squinting at the synopsis wondering where LDH's little description went β€” the original page declares LDH in the synopsis but doesn't spell it out down here in ARGUMENTS. i'm just reporting what she said, not adding anything πŸ™ˆ

Implemented by: G. Henry, May 1, 1997 πŸ‘‘


ok that's the whole page, you're officially fluent in SLAMSH behavior, go be the main character of your own Hessenberg matrix πŸŒˆπŸ¦‹

LAPACK version 1.5 β€” 12 May 1997 β€” SLAMSH(l) β­πŸ’–

πŸ“¦ where this page comes from