DORGTSQR(3)
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dorgtsqr.f β bestie, that's the whole file path, it's giving full government name energy π but lowkey that is how this page introduces itself. It's a DORGTSQR situation and we're gonna get into it.
β¨ SYNOPSIS β¨
Functions/Subroutines
subroutine DORGTSQR (m, n, mb, nb, a, lda, t, ldt, work, lwork, info)
DORGTSQR β that's the whole vibe check right there π
πΈ Function/Subroutine Documentation πΈ
subroutine DORGTSQR (integer m, integer n, integer mb, integer nb, double
precision, dimension( lda, * ) a, integer lda, double precision,
dimension( ldt, * ) t, integer ldt, double precision, dimension( * )
work, integer lwork, integer info)
DORGTSQR π (yes, the signature gets repeated, that's just how this page rolls, no cap)
π¦ Purpose π¦
Okay so here's the tea: DORGTSQR generates an M-by-N real matrix Q_out with orthonormal columns. Those columns are the first N columns of a product of real orthogonal matrices of order M that DLATSQR returns. Not me being dramatic, that's literally the spec:
Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
Go check the documentation for DLATSQR for the full backstory, iykyk π
π§ Parameters π§
M
M is INTEGER. The number of rows of the matrix A. M >= 0. Main character dimension fr fr.
N
N is INTEGER. The number of columns of the matrix A. M >= N >= 0. Slay, note the nesting: M is the ceiling and N is chillin' under it.
MB
MB is INTEGER. The row block size used by DLATSQR to return arrays A and T. MB > N. (Heads up: if MB > M, then M is used instead of MB as the row block size β the routine just quietly caps it, iconic π)
NB
NB is INTEGER. The column block size used by DLATSQR to return arrays A and T. NB >= 1. (Also heads up: if NB > N, then N is used instead of NB as the column block size β same energy, different axis π«)
A
A is DOUBLE PRECISION array, dimension (LDA,N).
On entry:
- The elements on and above the diagonal are not accessed. We literally do not look at them, they're not invited to the party π
- The elements below the diagonal represent the unit lower-trapezoidal blocked matrix
Vcomputed byDLATSQRthat defines the input matricesQ_in(k)(ones on the diagonal are not stored) β same format as the outputAbelow the diagonal inDLATSQRπ
On exit:
- The array
Acontains an M-by-N orthonormal matrixQ_out, i.e. the columns ofAare orthogonal unit vectors. Gorgeous. Perfect. No notes β¨
LDA
LDA is INTEGER. The leading dimension of the array A. LDA >= max(1,M). Respect the minimum or catch these hands π«Ά
T
T is DOUBLE PRECISION array, dimension (LDT, N * NIRB) where
NIRB = Number_of_input_row_blocks
= MAX( 1, CEIL((M-N)/(MB-N)) )
and let NICB = Number_of_input_col_blocks = CEIL(N/NB). Cute little acronyms, we love a named quantity π
The upper-triangular block reflectors used to define the input matrices Q_in(k), k=(1:NIRB*NICB). The block reflectors are stored in compact form in NIRB block reflector sequences. Each of the NIRB block reflector sequences is stored in a larger NB-by-N column block of T and consists of NICB smaller NB-by-NB upper-triangular column blocks. Same format as the output T in DLATSQR. It's giving nested storage, it's giving matryoshka doll, and honestly? Ate. π₯
LDT
LDT is INTEGER. The leading dimension of the array T. LDT >= max(1,min(NB1,N)). (Yes, NB1 β that's exactly what the source says, we do not correct the source, we respect the source π)
WORK
(workspace) DOUBLE PRECISION array, dimension (MAX(2,LWORK)). On exit, if INFO = 0, WORK(1) returns the optimal LWORK. Bestie's got the receipts for your next allocation β¨
LWORK
LWORK is INTEGER. The dimension of the array WORK. LWORK >= (M+NB)*N. If LWORK = -1, then a workspace query is assumed. The routine only calculates the optimal size of the WORK array, returns this value as the first entry of the WORK array, and no error message related to LWORK is issued by XERBLA β so don't expect to be scolded, it's just doing recon π
INFO
INFO is INTEGER.
= 0: successful exit π slay< 0: ifINFO = -i, the i-th argument had an illegal value π somebody passed something cursed
π Author π
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
The whole squad showed up π
π Contributors: π
- November 2019, Igor Kozachenko, Computer Science Division, University of California, Berkeley
Shoutout Igor, dropping contributions in November 2019 and we're still thanking them π«Ά
Definition at line 174 of file dorgtsqr.f. That's the exact coordinate, go look if you don't believe me π
π Author π
Generated automatically by Doxygen for LAPACK from the source code. Not a human, just a robot doing its little robot thing π€β¨ (we still appreciate you, Doxygen)
LAPACK Β· Version 3.12.0 Β· /home/abui.../dorgtsqr.f(3) β okay that's the whole page bestie, mwah, go write some orthonormal columns πππ¦
π¦ 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