SLAREF(l)
π 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)REALarray,(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 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. she's respecting your boundaries fr fr πZβ (global input/output)REALarray,(LDZ,*). On entry, the second matrix to receive column reflections. This is changed only ifWANTZis set. don't touch her unless invited π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. choose your fighter βοΈIROW1β (local input/output)INTEGER. On entry, the local row element ofA. Undefined on output. β οΈ do not come for her after, she's not answeringICOL1β (local input/output)INTEGER. On entry, the local column element ofA. Undefined on output. 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.π«ITMP1β (local input)INTEGER. Starting range intoA. 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 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 sequel, the encore, the Z chapter πΈVECSβ (global input)REALarray of size3*N(matrix size). This holds the size 3 reflectors one after another and this is only accessed whenBLOCKis.TRUE.π₯V2,V3,T1,T2,T3β (global input/output)REAL. This holds information on a single size 3 Householder reflector and is read whenBLOCKis.FALSE., and overwritten whenBLOCKis.TRUE.π she giveth and she taketh away
π quick recap bestie:'R'= rows from the left, anything else = columns.BLOCKdecides whether you're readingVECSor theV2/V3/T1/T2/T3single-reflector situation.WANTZdecides whetherZgets 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
- 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