DORMTR(3)
π¦ dormtr.f(3) β like, the whole DORMTR vibe check π¦
okay bestie so this is the manual page for dormtr.f (that's the (3) section obviously, library functions, you know the drill), and the actual source file lives at /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dormtr.f. iconic path ngl π
β¨ NAME β¨
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/dormtr.f β that's the file, that's the whole name section, she's not wordy, she's booked and busy π
πΈ SYNOPSIS πΈ
Functions/Subroutines
subroutine DORMTR (side, uplo, trans, m, n, a, lda, tau, c, ldc, work, lwork, info)β DORMTR π«Ά
π Function/Subroutine Documentation π
subroutine DORMTR (character side, character uplo, character trans, integer
m, integer n, double precision, dimension( lda, * ) a, integer lda,
double precision, dimension( * ) tau, double precision, dimension( ldc,
* ) c, integer ldc, double precision, dimension( * ) work, integer
lwork, integer info)
DORMTR β she's the main character of this whole page, no cap β
π Purpose π
so what does she actually do? literally this:
DORMTR overwrites the general real M-by-N matrix C with
SIDE = 'L' SIDE = 'R'
TRANS = 'N': Q * C C * Q
TRANS = 'T': Q**T * C C * Q**T
and where Q is a real orthogonal matrix of order nq, with nq = m if SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of nq-1 elementary reflectors, as returned by DSYTRD:
if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1);
if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1).
that's the whole deal, she's just multiplying your matrix by Q and calling it a day π
π Parameters π
SIDE
SIDE is CHARACTER*1
= 'L': apply Q or Q**T from the Left;= 'R': apply Q or Q**T from the Right.
left or right, pick your fighter π₯
UPLO
UPLO is CHARACTER*1
= 'U': Upper triangle of A contains elementary reflectors from DSYTRD;= 'L': Lower triangle of A contains elementary reflectors from DSYTRD.
so like, which triangle of A is holding the reflectors. upper? lower? she needs to know π
TRANS
TRANS is CHARACTER*1
= 'N': No transpose, apply Q;= 'T': Transpose, apply Q**T.
no transpose or transpose, that's it, that's the choice β¨
M
M is INTEGER
The number of rows of the matrix C. M >= 0.
N
N is INTEGER
The number of columns of the matrix C. N >= 0.
A
A is DOUBLE PRECISION array, dimension
(LDA,M) if SIDE = 'L'
(LDA,N) if SIDE = 'R'
The vectors which define the elementary reflectors, as returned by DSYTRD. she got these from DSYTRD and she's not letting them go π
LDA
LDA is INTEGER
The leading dimension of the array A. LDA >= max(1,M) if SIDE = 'L'; LDA >= max(1,N) if SIDE = 'R'.
TAU
TAU is DOUBLE PRECISION array, dimension
(M-1) if SIDE = 'L'
(N-1) if SIDE = 'R'
TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by DSYTRD. yes bestie, TAU, not tau-the-greek-letter, TAU-the-scalar-factors π
C
C is DOUBLE PRECISION array, dimension (LDC,N)
On entry, the M-by-N matrix C.
On exit, C is overwritten by Q*C or QT*C or C*QT or C*Q.
note that she OVERWRITES your C β your original C is gone, she ate and left no crumbs π
LDC
LDC is INTEGER
The leading dimension of the array C. LDC >= max(1,M).
WORK
WORK is DOUBLE PRECISION array, dimension (MAX(1,LWORK))
On exit, if INFO = 0, WORK(1) returns the optimal LWORK. little sneak peek, love that for you π§
LWORK
LWORK is INTEGER
The dimension of the array WORK.
If SIDE = 'L', LWORK >= max(1,N); if SIDE = 'R', LWORK >= max(1,M).
For optimum performance LWORK >= N*NB if SIDE = 'L', and LWORK >= M*NB if SIDE = 'R', where NB is the optimal blocksize.nb, blocksize, optimum performance, she's highkey flexible about it π
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.
INFO
INFO is INTEGER
= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value
zero means slay, negative means one of your arguments is not it π
π₯ Author π₯
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad, the founding mothers and fathers of this routine, we stan π«Ά
Definition at line 169 of file dormtr.f.
β Author β
Generated automatically by Doxygen for LAPACK from the source code. yes she was built by a robot, she's still iconic π€β¨
okay so that's the whole page bestie. and finally β the important metadata, presented with the reverence it deserves: this is LAPACK, Version 3.12.0, dated /home/abui...RC/dormtr.f(3), straight from the footer, and that's the tea. periodt. π
ππ
π¦ 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