SRC/slarz.f(3)

SRC/slarz.f πŸ’…

Okay so bestie, this is literally the manual for SRC/slarz.f β€” a Fortran file in LAPACK that does some iconic matrix magic. It's giving "linear algebra but make it fashion" ✨


✨ SYNOPSIS ✨

Here's the function/subroutine tea:

subroutine slarz (side, m, n, l, v, incv, tau, c, ldc, work)

SLARZ applies an elementary reflector (as returned by stzrzf) to a general matrix. No cap, that's the whole vibe.


πŸŽ€ Function/Subroutine Documentation πŸŽ€

subroutine slarz (character side, integer m, integer n, integer l, real, dimension( * ) v, integer incv, real tau, real, dimension( ldc, * ) c, integer ldc, real, dimension( * ) work)

SLARZ applies an elementary reflector (as returned by stzrzf) to a general matrix. Like, it literally takes a reflector and slaps it onto a matrix πŸ’…

🌸 Purpose 🌸

!> SLARZ applies a real elementary reflector H to a real M-by-N !> matrix C, from either the left or the right. H is represented in the !> form ! !> H = I - tau * v * v**T ! !> where tau is a real scalar and v is a real vector. ! !> If tau = 0, then H is taken to be the unit matrix. ! !> H is a product of k elementary reflectors as returned by STZRZF.

So basically H is this fancy reflector thing made from tau and v. If tau is zero, H just becomes the identity matrix β€” like it's not even trying, periodt. And H is actually a whole product of k elementary reflectors from STZRZF. Obsessed πŸ”₯


🌈 Parameters 🌈

  • SIDE β€” CHARACTER*1 β€” tells you which side the reflector goes on:
    • = 'L': form H * C (left side, left side, left side)
    • = 'R': form C * H (right side, right side, right side)
  • M β€” INTEGER β€” the number of rows of the matrix C. Like how tall it is πŸ“
  • N β€” INTEGER β€” the number of columns of the matrix C. How wide it is πŸ“
  • L β€” INTEGER β€” the number of entries of the vector V that contain the meaningful part of the Householder vectors. Constraints, bestie:
    • If SIDE = 'L', then M >= L >= 0
    • If SIDE = 'R', then N >= L >= 0
  • V β€” REAL array, dimension (1+(L-1)*abs(INCV)) β€” the vector v in the representation of H as returned by STZRZF. Lowkey important: V is not used if TAU = 0 πŸ’€
  • INCV β€” INTEGER β€” the increment between elements of v. And INCV <> 0 β€” no zero increments allowed, fr fr 🚫
  • TAU β€” REAL β€” the value tau in the representation of H. The main character of the equation ✨
  • C β€” REAL array, dimension (LDC,N) β€” on entry, the M-by-N matrix C. On exit, C is overwritten by:
    • H * C if SIDE = 'L'
    • C * H if SIDE = 'R' Like it literally gets replaced, no take-backsies πŸ’…
  • LDC β€” INTEGER β€” the leading dimension of the array C. Must be LDC >= max(1,M). Respect the constraint, bestie 🫢
  • WORK β€” REAL array, dimension:
    • (N) if SIDE = 'L'
    • or (M) if SIDE = 'R' It's the workspace, doing the behind-the-scenes work 🧚

πŸ‘‘ 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: πŸ¦‹

!>

(That's literally it β€” nothing else in the further details. Iconic minimalism 😭)


⭐ Definition at line 144 of file slarz.f. ⭐


🌟 Author 🌟

Generated automatically by Doxygen for LAPACK from the source code. Like the robots did this one, no cap πŸ€–βœ¨


And that's the whole manual, bestie! LAPACK Version 3.12.0, SRC/slarz.f(3), slaying since forever. Periodt πŸ’…πŸŽ€

πŸ“¦ where this page comes from