SRC/zlarzt.f(3)

NAME πŸ’…

SRC/zlarzt.f β€” this page is from the Library Functions Manual, bestie, and the main character is zlarzt. It forms the triangular factor T of a block reflector H = I - vtvH. πŸ’–

SYNOPSIS ✨

Functions/Subroutines πŸŽ€

  • subroutine zlarzt (direct, storev, n, k, v, ldv, tau, t, ldt) β€” ZLARZT forms the triangular factor T of a block reflector H = I - vtvH.

Function/Subroutine Documentation πŸŽ€

okay so the full signature is literally this:

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)

and its whole vibe is: ZLARZT forms the triangular factor T of a block reflector H = I - vtvH. πŸ¦‹

Purpose: πŸ¦‹

picture this: ZLARZT forms the triangular factor T of a complex block reflector H of order > n, built as a product of k elementary 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 that defines 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', that vector is stored in the i-th row of the array V, and:

H  =  I - V**H * T * V

Currently, only STOREV = 'R' and DIRECT = 'B' are supported. That’s not a suggestion, bestie β€” it’s the actual limit. πŸ’€

Parameters 🌸

DIRECT

DIRECT is CHARACTER*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, not supported yet)
  • = 'B': H = H(k) . . . H(2) H(1) (Backward)

STOREV

STOREV is CHARACTER*1. It specifies how the vectors that 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 reflector H. N >= 0.

K

K is INTEGER. The order of the triangular factor T (= 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 array V. If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K.

TAU

TAU is COMPLEX*16 array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i).

T

T is COMPLEX*16 array, dimension (LDT,K). The k by k triangular factor T of the block reflector. If DIRECT = 'F', T is upper triangular; if DIRECT = 'B', T is lower triangular. The rest of the array is not used.

LDT

LDT is INTEGER. The leading dimension of the array T. 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: πŸ”₯

The shape of the matrix V and the storage of the vectors that 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. Here’s the source diagram in all its ASCII glory:

!>
!>  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 zlarzt.f πŸ“

Definition at line 184 of file zlarzt.f.

Author πŸ€– (Generated automatically by Doxygen for LAPACK from the source code)

Generated automatically by Doxygen for LAPACK from the source code.


okay bestie, that’s the whole page πŸ’‹πŸ’– β€” footer energy is LAPACK Version 3.12.0 on SRC/zlarzt.f(3). Now go slay, but remember the supported lane: STOREV = 'R' and DIRECT = 'B'. periodt. ✨

πŸ“¦ where this page comes from