SRC/slarft.f(3)
π SRC/slarft.f(3) β Library Functions Manual π
okay bestie, welcome to the SRC/slarft.f(3) page from the Library Functions Manual. This one is all about slarft, and it's lowkey iconic if you're into block reflectors. π¦
π NAME π
SRC/slarft.f β that's the file, fr fr.
β¨ SYNOPSIS β¨
Functions/Subroutines
recursive subroutine slarft (direct, storev, n, k, v, ldv, tau, t, ldt)β SLARFT forms the triangular factorTof a block reflectorH = I - vtvH.
π Function/Subroutine Documentation π
recursive subroutine slarft (character direct, character storev, integer n,
integer k, real, dimension( ldv, * ) v, integer ldv, real, dimension( *
) tau, real, dimension( ldt, * ) t, integer ldt)
SLARFT forms the triangular factor T of a block reflector H = I - vtvH.
π§ Purpose π§
Here's the tea: SLARFT forms the triangular factor T of a real block reflector H of order n, and H is defined as a product of k elementary reflectors.
- If
DIRECT = 'F', thenH = H(1) H(2) . . . H(k)andTis upper triangular. - If
DIRECT = 'B', thenH = H(k) . . . H(2) H(1)andTis lower triangular. - If
STOREV = 'C', the vector which defines the elementary reflectorH(i)is stored in thei-th column of the arrayV, and:
H = I - V * T * V**T
- If
STOREV = 'R', the vector which defines the elementary reflectorH(i)is stored in thei-th row of the arrayV, and:
H = I - V**T * T * V
π Parameters π
DIRECTβDIRECTisCHARACTER*1. It specifies the order in which the elementary reflectors are multiplied to form the block reflector:= 'F':H = H(1) H(2) . . . H(k)(Forward)= 'B':H = H(k) . . . H(2) H(1)(Backward)
STOREVβSTOREVisCHARACTER*1. It specifies how the vectors which define the elementary reflectors are stored (see also Further Details):= 'C': columnwise= 'R': rowwise
NβNisINTEGER. The order of the block reflectorH.N >= 0.KβKisINTEGER. The order of the triangular factorT(= the number of elementary reflectors).K >= 1.VβVisREALarray, dimension(LDV,K)ifSTOREV = 'C', or(LDV,N)ifSTOREV = 'R'. The matrixV. See further details.LDVβLDVisINTEGER. The leading dimension of the arrayV. IfSTOREV = 'C',LDV >= max(1,N); ifSTOREV = 'R',LDV >= K.TAUβTAUisREALarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i).TβTisREALarray, dimension(LDT,K). Thekbyktriangular factorTof the block reflector. IfDIRECT = 'F',Tis upper triangular; ifDIRECT = 'B',Tis lower triangular. The rest of the array is not used.LDTβLDTisINTEGER. The leading dimension of the arrayT.LDT >= K.
πΈ Author πΈ
- Univ. of Tennessee
- Univ. of California Berkeley
- Johnathan Rhyne, Univ. of Colorado Denver (original author, 2024)
- NAG Ltd.
π¦ Further Details π¦
The shape of the matrix V and the storage of the vectors which define the H(i) is best illustrated by this example with n = 5 and k = 3. The elements equal to 1 are not stored.
DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
V = ( 1 ) V = ( 1 v1 v1 v1 v1 )
( v1 1 ) ( 1 v2 v2 v2 )
( v1 v2 1 ) ( 1 v3 v3 )
( v1 v2 v3 )
( v1 v2 v3 )
DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
V = ( v1 v2 v3 ) V = ( v1 v1 1 )
( v1 v2 v3 ) ( v2 v2 v2 1 )
( 1 v2 v3 ) ( v3 v3 v3 v3 1 )
( 1 v3 )
( 1 )
Definition at line 162 of file slarft.f.
π Author π
Generated automatically by Doxygen for LAPACK from the source code.
Cute sign-off: this page is from LAPACK Version 3.12.0, source SRC/slarft.f(3) β and the footer has no date listed, just those deets. π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms