SRC/slarzt.f(3)

πŸ’… SRC/slarzt.f(3)

Ok so bestie, buckle up β€” this is a LAPACK manpage from the SRC/slarzt.f file, and it's genuinely serving linear-algebra main character energy. It's giving "Library Functions Manual" realness, so you already know it's a fortran thing. Let's get into it ✨


πŸ¦‹ SYNOPSIS

Functions/Subroutines

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

✨ Function/Subroutine Documentation ✨

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

SLARZT forms the triangular factor T of a real block reflector H of order > n, which is defined as a product of k elementary reflectors.

If DIRECT = 'F', H = H(1) H(2) . . . H(k) and T is upper triangular;

If DIRECT = 'B', 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. πŸ™ˆ (yes bestie, that's a real limitation, don't come for me)


πŸŽ€ Parameters

  • DIRECT β€” is 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 β€” is 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 β€” is INTEGER. The order of the block reflector H. N >= 0. ✨
  • K β€” is INTEGER. The order of the triangular factor T (= the number of elementary reflectors). K >= 1. 🫢
  • V β€” is REAL array, dimension
(LDV,K) if STOREV = 'C'
(LDV,N) if STOREV = 'R'

The matrix V. See further details. πŸ’œ

  • LDV β€” is INTEGER. The leading dimension of the array V. If STOREV = 'C', LDV >= max(1,N); if STOREV = 'R', LDV >= K. πŸ¦‹
  • TAU β€” is REAL array, dimension (K). TAU(i) must contain the scalar factor of the elementary reflector H(i). ⭐
  • T β€” is REAL 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 β€” 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 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':

        ( v1 v2 v3 )
        ( v1 v2 v3 )
    V = ( v1 v2 v3 )
        ( v1 v2 v3 )
        ( v1 v2 v3 )
           .  .  .
           .  .  .
           1  .  .
              1  .
                 1

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':

           1
           .  1
           .  .  1
           .  .  .
           .  .  .
        ( v1 v2 v3 )
        ( v1 v2 v3 )
    V = ( v1 v2 v3 )
        ( v1 v2 v3 )
        ( v1 v2 v3 )

DIRECT = 'B' and STOREV = 'R':

                                               ______V_____
                                           /            \
                  ( 1 . . . . v1 v1 v1 v1 v1 )
                  ( . 1 . . . v2 v2 v2 v2 v2 )
                  ( . . 1 . . v3 v3 v3 v3 v3 )
           1
           .  1
           .  .  1
           .  .  .
           .  .  .
        ( v1 v2 v3 )
        ( v1 v2 v3 )
    V = ( v1 v2 v3 )
        ( v1 v2 v3 )
        ( v1 v2 v3 )
ngl those diagrams are a whole vibe check on their own β€” stare at them long enough and the row/column storage situation lowkey clicks. 🌸

Definition at line 184 of file slarzt.f.


🌟 Author

Generated automatically by Doxygen for LAPACK from the source code.


okay that's the whole page bestie, no skips, no cuts 🫢 β€” this absolute icon of a manpage is LAPACK, Version 3.12.0, and it came to us courtesy of that Doxygen-for-LAPACK auto-generation pipeline. periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from