SORMTR(3)
π¦ SORMTR(3) β Library Functions Manual π¦
okay bestie, welcome to SORMTR(3) β the LAPACK page thatβs about applying a real orthogonal matrix Q to a matrix C. Itβs giving linear algebra main character energy, and yes, weβre gonna get through every single parameter together. π
π NAME
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/sormtr.f
Like, thatβs literally the NAME section. The whole path. Iconic, honestly. π
β¨ SYNOPSIS
π§ Functions/Subroutines
subroutine SORMTR (side, uplo, trans, m, n, a, lda, tau, c, ldc, work,
lwork, info)
SORMTR.
π Function/Subroutine Documentation
π subroutine SORMTR (character side, character uplo, character trans, integer m, integer n, real, dimension( lda, * ) a, integer lda, real, dimension( * ) tau, real, dimension( ldc, * ) c, integer ldc, real, dimension( * ) work, integer lwork, integer info)
subroutine SORMTR (character side, character uplo, character trans, integer
m, integer n, real, dimension( lda, * ) a, integer lda, real, dimension(
* ) tau, real, dimension( ldc, * ) c, integer ldc, real, dimension( * )
work, integer lwork, integer info)
SORMTR. periodt. π
πΈ Purpose
okay so hereβs the tea: SORMTR 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
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 SSYTRD:
- if
UPLO = 'U',Q = H(nq-1) . . . H(2) H(1); - if
UPLO = 'L',Q = H(1) H(2) . . . H(nq-1).
Lowkey beautiful. Highkey still a lot of indices. π
ποΈ Parameters
- SIDE β
SIDEisCHARACTER*1= 'L': apply Q or Q**T from the Left;= 'R': apply Q or Q**T from the Right.
- UPLO β
UPLOisCHARACTER*1= 'U': Upper triangle of A contains elementary reflectors from SSYTRD;= 'L': Lower triangle of A contains elementary reflectors from SSYTRD.
- TRANS β
TRANSisCHARACTER*1= 'N': No transpose, apply Q;= 'T': Transpose, apply Q**T.
- M β
MisINTEGER. Itβs the number of rows of the matrix C.M >= 0β no shady negative row counts here. π«Ά - N β
NisINTEGER. Itβs the number of columns of the matrix C.N >= 0β same vibe check, bestie. β¨ - A β
AisREAL array, dimension(LDA,M)ifSIDE = 'L'(LDA,N)ifSIDE = 'R'
The vectors which define the elementary reflectors, as returned by SSYTRD.
- LDA β
LDAisINTEGER. Itβs the leading dimension of the array A.LDA >= max(1,M)ifSIDE = 'L';LDA >= max(1,N)ifSIDE = 'R'. Respect the leading dimension, fr fr. π - TAU β
TAUisREAL array, dimension(M-1)ifSIDE = 'L'(N-1)ifSIDE = 'R'
TAU(i) must contain the scalar factor of the elementary reflector H(i), as returned by SSYTRD.
- C β
CisREAL array, dimension(LDC,N). On entry, the M-by-N matrix C. On exit, C is overwritten byQ*CorQ**T*CorC*Q**TorC*Q. So yeah, C gets a whole glow-up. π - LDC β
LDCisINTEGER. Itβs the leading dimension of the array C.LDC >= max(1,M). Thatβs the rule, no cap. π - WORK β
WORKisREAL array, dimension(MAX(1,LWORK)). On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. Cute little workspace behavior. π§ - LWORK β
LWORKisINTEGER. Itβs 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.
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. Important little plot twist, bestie. β
- INFO β
INFOisINTEGER= 0: successful exit< 0: ifINFO = -i, the i-th argument had an illegal value
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
Definition at line 170 of file sormtr.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
mwah π this page is from LAPACK Version 3.12.0, and the footer source path is /home/abui...RC/sormtr.f(3). Slay, bestie β go apply that Q responsibly. π«Ά
π¦ 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