DLAREF(l)

πŸ“¦ version 1.5, in ubuntu jammy

πŸ’– DLAREF πŸ’–

ok so bestie, welcome to DLAREF, a LAPACK auxiliary routine (we're on version 1.5, vintage but iconic ✨). She applies one or several Householder reflectors of size 3 to one or two matrices (only if column is specified, ok) β€” on either their rows or their columns. She's giving ✨linear algebra✨, she's giving πŸ¦‹transformationsπŸ¦‹, and honestly? obsessed.


🌸 SYNOPSIS 🌸

SUBROUTINE DLAREF( 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

    DOUBLE         PRECISION T1, T2, T3, V2, V3

    DOUBLE         PRECISION A( LDA, * ), VECS( * ), Z( LDZ, * )

like. look at all those arguments. she's that girl πŸ’…


πŸŽ€ PURPOSE πŸŽ€

DLAREF applies one or several Householder reflectors of size 3 to one or two matrices (if column is specified, remember!!) on either their rows or their columns. no cap, that's literally the whole job and she does it flawlessly πŸ’–


✨ ARGUMENTS ✨

okay bestie this is the part where you actually pay attention, because every single one of these matters. i'm not gatekeeping anything, we're going through ALL of them 🫢

  • TYPE (global input) CHARACTER*1 β€” if it's 'R', she applies the reflectors to the rows of the matrix (apply from the left, iykyk). otherwise? she applies them to the columns of the matrix. this stays unchanged on exit.
  • A (global input/output) DOUBLE PRECISION array, (LDA,*) β€” on entry this is the matrix that receives the reflections. on exit it's the updated matrix. she ate and left no crumbs πŸ”₯
  • 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. like, none. she's off the clock πŸ’€
  • Z (global input/output) DOUBLE PRECISION array, (LDZ,*) β€” on entry, the second matrix that receives the column reflections. this is changed only if WANTZ is set. so if you didn't set WANTZ, don't come crying to me πŸ™ˆ
  • 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. two modes, both iconic πŸ’…
  • IROW1 (local input/output) INTEGER β€” on entry, the local row element of A. undefined on output (so like, don't look at her after, she's changed 😭).
  • ICOL1 (local input/output) INTEGER β€” on entry, the local column element of A. undefined on output (same vibe, 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.. (see the pattern? the block-mode-only girls stay in their lane πŸŽ€)
  • ITMP1 (local input) INTEGER β€” starting range into A. for rows, this is the local first column. for columns, this is the local first row. context-dependent queen πŸ‘‘
  • 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 Z-squad counterparts, fr fr πŸ’œ
  • VECS (global input) DOUBLE PRECISION 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.. bestie if BLOCK is false she literally does not see this array, it's giving invisible 🌈
  • V2, V3, T1, T2, T3 (global input/output) DOUBLE PRECISION β€” this holds information on a single size 3 Householder reflector, and is read when BLOCK is .FALSE., and overwritten when BLOCK is .TRUE.. so heads up: in block mode she's writing over these. not a drill, she will replace them πŸ’€
🌟 implemented by: G. Henry, May 1, 1997 β€” shoutout to the icon, the blueprint, the moment πŸ‘‘

and that's the whole page bestie!! no gatekeeping, every argument accounted for, nothing skipped. you're basically a LAPACK girlie now πŸ¦‹βœ¨

LAPACK version 1.5 β€” 12 May 1997. yeah she's old, she's still THAT routine, and she still slays. periodt πŸ’…πŸŽ€πŸ’–

πŸ“¦ where this page comes from