SLAREF(l)

πŸ“¦ version 1.5, in ubuntu jammy

πŸ’– NAME πŸ’–

okay so we're doing SLAREF today bestie β€” she's a LAPACK auxiliary routine (version 1.5, vintage icon) and what she does is applie one or several Householder reflectors of size 3 to one or two matrices (if column is specified) on either their rows or columns. that's it. that's the girl. πŸ’…


✨ SYNOPSIS ✨

SUBROUTINE SLAREF( TYPE, A, LDA, WANTZ, Z, LDZ, BLOCK, IROW1, ICOL1,
                   ISTART, ISTOP, ITMP1, ITMP2, LILOZ, LIHIZ, VECS, V2,
                   V3, T1, T2, T3 )

    LOGICAL        BLOCK, WANTZ

    CHARACTER      TYPE

    INTEGER        ICOL1, IROW1, ISTART, ISTOP, ITMP1, ITMP2, LDA, LDZ,
                   LIHIZ, LILOZ

    REAL           T1, T2, T3, V2, V3

    REAL           A( LDA, * ), VECS( * ), Z( LDZ, * )

πŸŽ€ PURPOSE πŸŽ€

SLAREF applies one or several Householder reflectors of size 3 to one or two matrices (if column is specified) on either their rows or columns. she's versatile like that. not her being a whole vibe πŸ¦‹


πŸ’… ARGUMENTS πŸ’…

the whole cast, one by one, no skips, no cap:

  • TYPE β€” (global input) CHARACTER*1. If it's 'R': apply reflectors to the rows of the matrix (apply from the left). Otherwise: apply reflectors to the columns of the matrix. Unchanged on exit. she said pick a lane and she'll respect it πŸ’œ
  • A β€” (global input/output) REAL array, (LDA,*). On entry, the matrix to receive the reflections. The updated matrix on exit. glow up incoming ✨
  • LDA β€” (local input) INTEGER. On entry, the leading dimension of A. Unchanged on exit. 🫢
  • WANTZ β€” (global input) LOGICAL. If .TRUE., then apply any column reflections to Z as well. If .FALSE., then do no additional work on Z. she's respecting your boundaries fr fr 😌
  • Z β€” (global input/output) REAL array, (LDZ,*). On entry, the second matrix to receive column reflections. This is changed only if WANTZ is set. don't touch her unless invited πŸŽ€
  • LDZ β€” (local input) INTEGER. On entry, the leading dimension of Z. Unchanged on exit.
  • BLOCK β€” (global input) LOGICAL. If .TRUE., then apply several reflectors at once and read their data from the VECS array. If .FALSE., apply the single reflector given by V2, V3, T1, T2, and T3. choose your fighter βš”οΈ
  • IROW1 β€” (local input/output) INTEGER. On entry, the local row element of A. Undefined on output. ⚠️ do not come for her after, she's not answering
  • ICOL1 β€” (local input/output) INTEGER. On entry, the local column element of A. Undefined on output. same energy πŸ’€
  • ISTART β€” (global input) INTEGER. Specifies the "number" of the first reflector. This is used as an index into VECS if BLOCK is set. ISTART is ignored if BLOCK is .FALSE. πŸ™ˆ
  • ISTOP β€” (global input) INTEGER. Specifies the "number" of the last reflector. This is used as an index into VECS if BLOCK is set. ISTOP is ignored if BLOCK is .FALSE. πŸ’«
  • ITMP1 β€” (local input) INTEGER. Starting range into A. For rows, this is the local first column. For columns, this is the local first row. yes she switches depending on the vibe πŸ¦‹
  • ITMP2 β€” (local input) INTEGER. Ending range into A. For rows, this is the local last column. For columns, this is the local last row.
  • LILOZ, LIHIZ β€” (local input) INTEGER. These serve the same purpose as ITMP1,ITMP2 but for Z when WANTZ is set. the sequel, the encore, the Z chapter 🌸
  • VECS β€” (global input) REAL array of size 3*N (matrix size). This holds the size 3 reflectors one after another and this is only accessed when BLOCK is .TRUE. πŸ”₯
  • V2, V3, T1, T2, T3 β€” (global input/output) REAL. This holds information on a single size 3 Householder reflector and is read when BLOCK is .FALSE., and overwritten when BLOCK is .TRUE. πŸ‘‘ she giveth and she taketh away

πŸ’– quick recap bestie: 'R' = rows from the left, anything else = columns. BLOCK decides whether you're reading VECS or the V2/V3/T1/T2/T3 single-reflector situation. WANTZ decides whether Z gets any love. periodt. πŸ’…

🌈 Implemented by

G. Henry, May 1, 1997 β€” the original main character, we stan 🫢


and that's a wrap on our girl SLAREF(l) from LAPACK version 1.5, dated 12 May 1997. old money, iconic, still relevant πŸ’œβœ¨ bye bestie, go reflect on something πŸͺžπŸŽ€

πŸ“¦ where this page comes from