DLAREF(l)
π 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 PRECISIONarray,(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 ofA. unchanged on exit.WANTZ(global input)LOGICALβ if.TRUE., then apply any column reflections toZas well. if.FALSE., then do no additional work onZ. like, none. she's off the clock πZ(global input/output)DOUBLE PRECISIONarray,(LDZ,*)β on entry, the second matrix that receives the column reflections. this is changed only ifWANTZis set. so if you didn't setWANTZ, don't come crying to me πLDZ(local input)INTEGERβ on entry, the leading dimension ofZ. unchanged on exit.BLOCK(global input)LOGICALβ if.TRUE., then apply several reflectors at once and read their data from theVECSarray. if.FALSE., apply the single reflector given byV2,V3,T1,T2, andT3. two modes, both iconic πIROW1(local input/output)INTEGERβ on entry, the local row element ofA. 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 ofA. undefined on output (same vibe, same energy).ISTART(global input)INTEGERβ specifies the "number" of the first reflector. this is used as an index intoVECSifBLOCKis set.ISTARTis ignored ifBLOCKis.FALSE..ISTOP(global input)INTEGERβ specifies the "number" of the last reflector. this is used as an index intoVECSifBLOCKis set.ISTOPis ignored ifBLOCKis.FALSE.. (see the pattern? the block-mode-only girls stay in their lane π)ITMP1(local input)INTEGERβ starting range intoA. 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 intoA. 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 asITMP1,ITMP2but forZwhenWANTZis set. the Z-squad counterparts, fr fr πVECS(global input)DOUBLE PRECISIONarray of size3*N(matrix size) β this holds the size 3 reflectors one after another, and this is only accessed whenBLOCKis.TRUE.. bestie ifBLOCKis 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 whenBLOCKis.FALSE., and overwritten whenBLOCKis.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
- ubuntu jammy: scalapack-doc 1.5-11
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms