SOPGTR(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… SOPGTR(3) β€” bestie's guide to the packed-reflector glow-up πŸ’…

okay so first things first, the manual name is SOPGTR and it lives in section 3, and the whole page is literally just vibing out of this one file:

/home/abuild/rpmbuild/BUILD/lapack-
static-3.12.0-build/lapack-3.12.0/SRC/sopgtr.f

that's the path, no cap, that's the NAME section, we move ✨


🌸 SYNOPSIS 🌸

Functions/Subroutines

  • subroutine SOPGTR (uplo, n, ap, tau, q, ldq, work, info) β€” that's the whole squad, right there 🫢
SOPGTR

(yeah that's the entire description in the synopsis, she's mysterious like that πŸ’…)


πŸ¦‹ Function/Subroutine Documentation πŸ¦‹

subroutine SOPGTR (character uplo, integer n, real, dimension( * ) ap, real,
     dimension( * ) tau, real, dimension( ldq, * ) q, integer ldq, real,
     dimension( * ) work, integer info)

SOPGTR

πŸŽ€ Purpose πŸŽ€

!> !> SOPGTR generates a real orthogonal matrix Q which is defined as the !> product of n-1 elementary reflectors H(i) of order n, as returned by !> SSPTRD using packed storage: !> !> if UPLO = 'U', Q = H(n-1) . . . H(2) H(1), !> !> if UPLO = 'L', Q = H(1) H(2) . . . H(n-1). !>

so literally what this icon does is build you a real orthogonal matrix Q β€” and Q is defined as the product of n-1 elementary reflectors H(i) of order n, exactly as they came back from SSPTRD, using packed storage. it's giving assembly line but make it linear algebra πŸ’– the order of the product depends on UPLO:

  • if UPLO = 'U', then Q = H(n-1) . . . H(2) H(1)
  • if UPLO = 'L', then Q = H(1) H(2) . . . H(n-1)

periodt. that's it, that's the whole job πŸ”₯

🌈 Parameters 🌈

  • UPLO
!> UPLO is CHARACTER*1 !> = 'U': Upper triangular packed storage used in previous !> call to SSPTRD; !> = 'L': Lower triangular packed storage used in previous !> call to SSPTRD. !>

so UPLO is a CHARACTER*1 and it's basically the receipts from your last SSPTRD call πŸ‘‘ = 'U' means upper triangular packed storage was used in the previous call to SSPTRD, and = 'L' means lower triangular packed storage was used in the previous call to SSPTRD. pick the one that matches what you actually did, bestie, don't lie to the compiler πŸ™ˆ

  • N
!> N is INTEGER !> The order of the matrix Q. N >= 0. !>

N is INTEGER, it's the order of the matrix Q, and it has to be N >= 0. that's the vibe check βœ…

  • AP
!> AP is REAL array, dimension (N*(N+1)/2) !> The vectors which define the elementary reflectors, as !> returned by SSPTRD. !>

AP is a REAL array, dimension (N*(N+1)/2) β€” ok that dimension is iconic honestly β€” and it holds the vectors which define the elementary reflectors, as returned by SSPTRD. it's the packed one, she's compact, she's efficient πŸ’…

  • TAU
!> TAU is REAL array, dimension (N-1) !> TAU(i) must contain the scalar factor of the elementary !> reflector H(i), as returned by SSPTRD. !>

TAU is a REAL array, dimension (N-1), and TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by SSPTRD. note the "must" β€” this is not a suggestion, this is the law 🫑

  • Q
!> Q is REAL array, dimension (LDQ,N) !> The N-by-N orthogonal matrix Q. !>

Q is a REAL array, dimension (LDQ,N), and it's the N-by-N orthogonal matrix Q. she's the main character of this whole function, honestly 🌟

  • LDQ
!> LDQ is INTEGER !> The leading dimension of the array Q. LDQ >= max(1,N). !>

LDQ is INTEGER, it's the leading dimension of the array Q, and it's gotta satisfy LDQ >= max(1,N). no shortcuts, the leading dimension is not here to be flexible πŸ’€

  • WORK
!> WORK is REAL array, dimension (N-1) !>

WORK is a REAL array, dimension (N-1). she's the workspace, she does the invisible labour, respect her 🫢

  • INFO
!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !>

INFO is INTEGER and it's your little status report πŸŽ€ = 0 means successful exit β€” slay, we love a clean run β€” and < 0 means if INFO = -i, the i-th argument had an illegal value. read that number, it's literally telling you which argument to go apologise to 😭

πŸ‘‘ Author πŸ‘‘

  • Univ. of Tennessee
  • Univ. of California Berkeley
  • Univ. of Colorado Denver
  • NAG Ltd.

the whole academic friend group came together for this one, we stan a collaborative effort πŸ’œ

⭐ Definition at line 113 of file sopgtr.f. ⭐

yes bestie, line 113, write it down, cite your sources πŸ“

🧚 Author 🧚

Generated automatically by Doxygen for LAPACK from the source code.

so nobody hand-wrote this page, Doxygen did it for LAPACK automatically from the source code. the robots are doing the documentation now and honestly? they ate πŸ€–βœ¨


and that's the whole page!! no notes, only reflectors πŸ¦‹

πŸ’– this has been sopgtr.f(3) from LAPACK, Version 3.12.0, served fresh from /home/abui...RC/sopgtr.f(3) β€” mwah, go build your orthogonal matrix, bestie πŸ’…πŸŽ€πŸŒΈ
πŸ“¦ where this page comes from