larzt(3)
π
larzt (3) β Library Functions Manual π
okay so bestie, welcome to the larzt page, section 3 of the Library Functions Manual β yes it's a Fortran LAPACK situation, yes it's giving very much "linear algebra girlies rise", and yes we're gonna get through the whole thing together. No cap, this page is long, so buckle up. π¦
β¨ NAME β¨
larzt β larzt: generate T matrix π«
That's the whole name section. Short. Iconic. Ate.
πΈ SYNOPSIS πΈ
π«Ά Functions
okay so there's not one but four of these bad boys β one per numeric flavour, because Fortran really said "precision is a spectrum" and honestly? valid. π
clarzt π
subroutine clarzt (character direct, character storev, integer n, integer k,
complex, dimension( ldv, * ) v, integer ldv, complex, dimension( * )
tau, complex, dimension( ldt, * ) t, integer ldt)
CLARZT forms the triangular factor T of a block reflector H = I - vtvH.
dlarzt π
subroutine dlarzt (character direct, character storev, integer n, integer k,
double precision, dimension( ldv, * ) v, integer ldv, double precision,
dimension( * ) tau, double precision, dimension( ldt, * ) t, integer
ldt)
DLARZT forms the triangular factor T of a block reflector H = I - vtvH.
slarzt πΈ
subroutine slarzt (direct, storev, n, k, v, ldv, tau, t, ldt)
SLARZT forms the triangular factor T of a block reflector H = I - vtvH.
zlarzt π¦
subroutine zlarzt (direct, storev, n, k, v, ldv, tau, t, ldt)
ZLARZT forms the triangular factor T of a block reflector H = I - vtvH.
π¦ DETAILED DESCRIPTION π¦
the page literally just goes straight from here into the function docs β no extra prose, no little intro paragraph, nothing. the vibes are implied. π
π₯ FUNCTION DOCUMENTATION π₯
β subroutine clarzt β
subroutine clarzt (character direct, character storev, integer n, integer k,
complex, dimension( ldv, * ) v, integer ldv, complex, dimension( * )
tau, complex, dimension( ldt, * ) t, integer ldt)
CLARZT forms the triangular factor T of a block reflector H = I - vtvH.
π Purpose
okay so here's the whole deal, bestie:
CLARZTforms the triangular factorTof a complex block reflectorHof order >n, andHis defined as a product ofkelementary 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**H
- If
STOREV = 'R', the vector which defines the elementary reflectorH(i)is stored in thei-th row of the arrayV, and:
H = I - V**H * T * V
lowkey important: currently, onlySTOREV = 'R'andDIRECT = 'B'are supported. everything else is giving "not yet, babe". π
π Parameters
DIRECTβCHARACTER*1. Specifies the order in which the elementary reflectors are multiplied to form the block reflector:= 'F':H = H(1) H(2) . . . H(k)(Forward, not supported yet)= 'B':H = H(k) . . . H(2) H(1)(Backward)
STOREVβCHARACTER*1. Specifies how the vectors which define the elementary reflectors are stored (see also Further Details):= 'C': columnwise (not supported yet)= 'R': rowwise
NβINTEGER. The order of the block reflectorH.N >= 0.KβINTEGER. The order of the triangular factorT(= the number of elementary reflectors).K >= 1.VβCOMPLEXarray, dimension(LDV,K)ifSTOREV = 'C', or(LDV,N)ifSTOREV = 'R'. The matrixV. See further details.LDVβINTEGER. The leading dimension of the arrayV. IfSTOREV = 'C',LDV >= max(1,N); ifSTOREV = 'R',LDV >= K.TAUβCOMPLEXarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i).TβCOMPLEXarray, 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βINTEGER. The leading dimension of the arrayT.LDT >= K.
π§ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Contributors:
- A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
π Further Details:
okay bestie, this is the part where they draw you a picture, and honestly it's kind of a serve:
- The shape of the matrix
Vand the storage of the vectors which define theH(i)is best illustrated by the following example withn = 5andk = 3. - The elements equal to
1are not stored; the corresponding array elements are modified but restored on exit. - The rest of the array is not used.
DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
______V_____
( v1 v2 v3 ) / \
( v1 v2 v3 ) ( v1 v1 v1 v1 v1 . . . . 1 )
V = ( v1 v2 v3 ) ( v2 v2 v2 v2 v2 . . . 1 )
( v1 v2 v3 ) ( v3 v3 v3 v3 v3 . . 1 )
( v1 v2 v3 )
. . .
. . .
1 . .
1 .
1
DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
______V_____
1 / \
. 1 ( 1 . . . . v1 v1 v1 v1 v1 )
. . 1 ( . 1 . . . v2 v2 v2 v2 v2 )
. . . ( . . 1 . . v3 v3 v3 v3 v3 )
. . .
( v1 v2 v3 )
( v1 v2 v3 )
V = ( v1 v2 v3 )
( v1 v2 v3 )
( v1 v2 v3 )
Definition at line 184 of file clarzt.f. β¨
π subroutine dlarzt π
subroutine dlarzt (character direct, character storev, integer n, integer k,
double precision, dimension( ldv, * ) v, integer ldv, double precision,
dimension( * ) tau, double precision, dimension( ldt, * ) t, integer
ldt)
DLARZT forms the triangular factor T of a block reflector H = I - vtvH.
π Purpose
same energy, but real this time:
DLARZTforms the triangular factorTof a real block reflectorHof order >n, andHis defined as a product ofkelementary 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
again, bestie, heads up: currently, onlySTOREV = 'R'andDIRECT = 'B'are supported. π
π Parameters
DIRECTβCHARACTER*1. Specifies the order in which the elementary reflectors are multiplied to form the block reflector:= 'F':H = H(1) H(2) . . . H(k)(Forward, not supported yet)= 'B':H = H(k) . . . H(2) H(1)(Backward)
STOREVβCHARACTER*1. Specifies how the vectors which define the elementary reflectors are stored (see also Further Details):= 'C': columnwise (not supported yet)= 'R': rowwise
NβINTEGER. The order of the block reflectorH.N >= 0.KβINTEGER. The order of the triangular factorT(= the number of elementary reflectors).K >= 1.VβDOUBLE PRECISIONarray, dimension(LDV,K)ifSTOREV = 'C', or(LDV,N)ifSTOREV = 'R'. The matrixV. See further details.LDVβINTEGER. The leading dimension of the arrayV. IfSTOREV = 'C',LDV >= max(1,N); ifSTOREV = 'R',LDV >= K.TAUβDOUBLE PRECISIONarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i).TβDOUBLE PRECISIONarray, 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βINTEGER. The leading dimension of the arrayT.LDT >= K.
π§ Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Contributors:
- A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
π Further Details:
okay so this is exactly where part 1 of the page cuts off β the dlarzt further-details diagram is waiting for us in part 2, and it's the same "n = 5, k = 3" art moment, so don't go anywhere bestie π
okay so the shape of V and where the H(i) vectors actually live is genuinely best explained with a little diagram, and the original gives us this exact one β the elements equal to 1 are not stored, the corresponding array elements get modified but restored on exit, and the rest of the array is just vibing unused. here it is, character for character:
!>
!> The shape of the matrix V and the storage of the vectors which define
!> the H(i) is best illustrated by the following example with n = 5 and
!> k = 3. The elements equal to 1 are not stored; the corresponding
!> array elements are modified but restored on exit. The rest of the
!> array is not used.
!>
!> DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
!>
!> ______V_____
!> ( v1 v2 v3 ) / \
!> ( v1 v2 v3 ) ( v1 v1 v1 v1 v1 . . . . 1 )
!> V = ( v1 v2 v3 ) ( v2 v2 v2 v2 v2 . . . 1 )
!> ( v1 v2 v3 ) ( v3 v3 v3 v3 v3 . . 1 )
!> ( v1 v2 v3 )
!> . . .
!> . . .
!> 1 . .
!> 1 .
!> 1
!>
!> DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
!>
!> ______V_____
!> 1 / \
!> . 1 ( 1 . . . . v1 v1 v1 v1 v1 )
!> . . 1 ( . 1 . . . v2 v2 v2 v2 v2 )
!> . . . ( . . 1 . . v3 v3 v3 v3 v3 )
!> . . .
!> ( v1 v2 v3 )
!> ( v1 v2 v3 )
!> V = ( v1 v2 v3 )
!> ( v1 v2 v3 )
!> ( v1 v2 v3 )
!>
Definition at line 184 of file dlarzt.f.
πΈ slarzt β the real-valued block-reflector bestie
subroutine slarzt (character direct, character storev, integer n, integer k,
real, dimension( ldv, * ) v, integer ldv, real, dimension( * ) tau,
real, dimension( ldt, * ) t, integer ldt)
SLARZT forms the triangular factor T of a block reflector H = I - vtvH.
Purpose:
okay soSLARZTforms the triangular factorTof a real block reflectorHof order >n, which is defined as a product ofkelementary reflectors.
If DIRECT = 'F', then H = H(1) H(2) . . . H(k) and T is upper triangular.
If DIRECT = 'B', then H = H(k) . . . H(2) H(1) and T is lower triangular.
If STOREV = 'C', the vector which defines the elementary reflector H(i) is stored in the i-th column of the array V, and:
H = I - V * T * V**T
If STOREV = 'R', the vector which defines the elementary reflector H(i) is stored in the i-th row of the array V, and:
H = I - V**T * T * V
Currently, onlySTOREV = 'R'andDIRECT = 'B'are supported. that's the whole supported combo, bestie π
Parameters
DIRECTβDIRECT is CHARACTER*1. spec the order in which the elementary reflectors are multiplied to form the block reflector:= 'F':H = H(1) H(2) . . . H(k)(Forward, not supported yet)= 'B':H = H(k) . . . H(2) H(1)(Backward)
STOREVβSTOREV is CHARACTER*1. spec how the vectors which define the elementary reflectors are stored (see also Further Details):= 'C': columnwise (not supported yet)= 'R': rowwise
NβN is INTEGER. the order of the block reflectorH.N >= 0.KβK is INTEGER. the order of the triangular factorT(= the number of elementary reflectors).K >= 1.VβV is REAL array, dimension(LDV,K) if STOREV = 'C'(LDV,N) if STOREV = 'R'
the matrix V. see further details.
LDVβLDV is INTEGER. the leading dimension of the arrayV. IfSTOREV = 'C',LDV >= max(1,N); ifSTOREV = 'R',LDV >= K.TAUβTAU is REAL array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i).TβT is REAL array, 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βLDT is INTEGER. the leading dimension of the arrayT.LDT >= K.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Contributors:
- A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
Further Details:
Definition at line 184 of file slarzt.f.
π¦ zlarzt β complex block-reflector edition
subroutine zlarzt (character direct, character storev, integer n, integer k,
complex*16, dimension( ldv, * ) v, integer ldv, complex*16, dimension( *
) tau, complex*16, dimension( ldt, * ) t, integer ldt)
ZLARZT forms the triangular factor T of a block reflector H = I - vtvH.
Purpose:
okay soZLARZTforms the triangular factorTof a complex block reflectorHof order >n, which is defined as a product ofkelementary reflectors.
If DIRECT = 'F', then H = H(1) H(2) . . . H(k) and T is upper triangular.
If DIRECT = 'B', then H = H(k) . . . H(2) H(1) and T is lower triangular.
If STOREV = 'C', the vector which defines the elementary reflector H(i) is stored in the i-th column of the array V, and:
H = I - V * T * V**H
If STOREV = 'R', the vector which defines the elementary reflector H(i) is stored in the i-th row of the array V, and:
H = I - V**H * T * V
Currently, onlySTOREV = 'R'andDIRECT = 'B'are supported. same energy, same restriction, no cap β¨
Parameters
DIRECTβDIRECT is CHARACTER*1. spec the order in which the elementary reflectors are multiplied to form the block reflector:= 'F':H = H(1) H(2) . . . H(k)(Forward, not supported yet)= 'B':H = H(k) . . . H(2) H(1)(Backward)
STOREVβSTOREV is CHARACTER*1. spec how the vectors which define the elementary reflectors are stored (see also Further Details):= 'C': columnwise (not supported yet)= 'R': rowwise
NβN is INTEGER. the order of the block reflectorH.N >= 0.KβK is INTEGER. the order of the triangular factorT(= the number of elementary reflectors).K >= 1.VβV is COMPLEX*16 array, dimension(LDV,K) if STOREV = 'C'(LDV,N) if STOREV = 'R'
the matrix V. see further details.
LDVβLDV is INTEGER. the leading dimension of the arrayV. IfSTOREV = 'C',LDV >= max(1,N); ifSTOREV = 'R',LDV >= K.TAUβTAU is COMPLEX*16 array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i).TβT is COMPLEX*16 array, 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βLDT is INTEGER. the leading dimension of the arrayT.LDT >= K.
Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Contributors:
- A. Petitet, Computer Science Dept., Univ. of Tenn., Knoxville, USA
Further Details:
okay so the shape of the matrix V and how the vectors that define the H(i) are stored is best shown with this example where n = 5 and k = 3. The elements equal to 1 are not stored β their corresponding array spots get modified but then restored on exit. The rest of the array is just unused, literally not invited to the function. π
DIRECT = 'F' and STOREV = 'C': DIRECT = 'F' and STOREV = 'R':
______V_____
( v1 v2 v3 ) / \
( v1 v2 v3 ) ( v1 v1 v1 v1 v1 . . . . 1 )
V = ( v1 v2 v3 ) ( v2 v2 v2 v2 v2 . . . 1 )
( v1 v2 v3 ) ( v3 v3 v3 v3 v3 . . 1 )
( v1 v2 v3 )
. . .
. . .
1 . .
1 .
1
DIRECT = 'B' and STOREV = 'C': DIRECT = 'B' and STOREV = 'R':
______V_____
1 / \
. 1 ( 1 . . . . v1 v1 v1 v1 v1 )
. . 1 ( . 1 . . . v2 v2 v2 v2 v2 )
. . . ( . . 1 . . v3 v3 v3 v3 v3 )
. . .
( v1 v2 v3 )
( v1 v2 v3 )
V = ( v1 v2 v3 )
( v1 v2 v3 )
( v1 v2 v3 )
Definition at line 184 of file zlarzt.f.
β¨ Author β¨
Generated automatically by Doxygen for LAPACK from the source code. π«Ά
Thatβs the whole larzt(3) situation, bestie: source LAPACK, version 3.12.0, page larzt(3) β the footer date wasnβt in this chunk, so Iβm not inventing one, periodt. Byeee ππ
π¦ 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