SOPGTR(3)
π 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', thenQ = H(n-1) . . . H(2) H(1) - if
UPLO = 'L', thenQ = 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 beensopgtr.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
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: lapack-man 3.12.0-160000.2.2 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms