SRC/dlarzt.f(3)

✨ SRC/dlarzt.f(3) ✨ β€” live from the Library Functions Manual, bestie πŸ«ΆπŸ’–

🌸 NAME 🌸

SRC/dlarzt.f β€” that’s the whole name, and honestly it ate πŸ’…

✨ SYNOPSIS ✨

🌈 Functions/Subroutines 🌈

subroutine dlarzt (direct, storev, n, k, v, ldv, tau, t, ldt)

DLARZT forms the triangular factor T of a block reflector H = I - vtvH. 🫢

πŸ’– Function/Subroutine Documentation πŸ’–

   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 πŸŽ€

Okay so picture this: DLARZT builds the triangular factor T of a real block reflector H of order > n, and that H is defined as a product of k elementary reflectors. No cap, that’s the whole assignment. 🌟

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, only STOREV = 'R' and DIRECT = 'B' are supported. 🚨 So don’t come for the other combos yet β€” they are not supported, bestie.

🧚 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 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 reflector H. Constraint: N >= 0. ✨

πŸ’… K πŸ’…

K is INTEGER β€” the order of the triangular factor T (= the number of elementary reflectors). Constraint: K >= 1. πŸ”₯

🌈 V 🌈

V is a DOUBLE PRECISION array, dimension:

  • (LDV,K) if STOREV = 'C'
  • (LDV,N) if STOREV = 'R'

This is the matrix V. See further details below, bestie. 🫢

🎯 LDV 🎯

LDV is INTEGER β€” the leading dimension of the array V. If STOREV = 'C', then LDV >= max(1,N); if STOREV = 'R', then LDV >= K. πŸ’–

🌟 TAU 🌟

TAU is a DOUBLE PRECISION array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i). ✨

πŸ“ T πŸ“

T is a DOUBLE PRECISION 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. Constraint: 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 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. πŸ“

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for LAPACK from the source code.


Okay that’s the whole page, bestie β€” brought to you by LAPACK version 3.12.0 and SRC/dlarzt.f(3). Stay triangular, stay iconic, and don’t forget to restore those array elements on exit πŸ˜­πŸ’–βœ¨

πŸ“¦ where this page comes from