DORMTR(3)

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

πŸ¦‹ 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: if INFO = -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