SRC/dorml2.f(3)
πΈ SRC/dorml2.f(3)
okay bestie, welcome to this page from the Library Functions Manual β it's the SRC/dorml2.f one, and it's all about dorml2. No cap, it's an unblocked LAPACK routine and it's lowkey iconic. π
β¨ NAME β¨
SRC/dorml2.f β that's the file/page name, periodt. π
π SYNOPSIS π
Functions/Subroutines
subroutine dorml2 (side, trans, m, n, k, a, lda, tau, c, ldc, work,
info)
DORML2 multiplies a general matrix by the orthogonal matrix from the LQ factorization determined by sgelqf (unblocked algorithm). That's the whole vibe. π¦
π«Ά Function/Subroutine Documentation π«Ά
subroutine dorml2 (character side, character trans, integer m, integer n,
integer k, double precision, dimension( lda, * ) a, integer lda, double
precision, dimension( * ) tau, double precision, dimension( ldc, * ) c,
integer ldc, double precision, dimension( * ) work, integer info)
DORML2 multiplies a general matrix by the orthogonal matrix from the LQ factorization determined by sgelqf (unblocked algorithm). (Yes, same glow-up as the synopsis β the routine is the main character.) β¨
π Purpose π
The source comments spell it out like this, and we're keeping them exactly:
!>
!> DORML2 overwrites the general real m by n matrix C with
!>
!> Q * C if SIDE = 'L' and TRANS = 'N', or
!>
!> Q**T* C if SIDE = 'L' and TRANS = 'T', or
!>
!> C * Q if SIDE = 'R' and TRANS = 'N', or
!>
!> C * Q**T if SIDE = 'R' and TRANS = 'T',
!>
!> where Q is a real orthogonal matrix defined as the product of k
!> elementary reflectors
!>
!> Q = H(k) . . . H(2) H(1)
!>
!> as returned by DGELQF. Q is of order m if SIDE = 'L' and of order n
!> if SIDE = 'R'.
!>
So basically: overwrite real m by n matrix C with one of those four products, where Q is a real orthogonal matrix made from k elementary reflectors. Q has order m when SIDE = 'L', order n when SIDE = 'R'. Slay. π
π Parameters π
SIDEβSIDEisCHARACTER*1.= 'L': applyQorQ**Tfrom the Left.= 'R': applyQorQ**Tfrom the Right.
TRANSβTRANSisCHARACTER*1.= 'N': applyQ(No transpose).= 'T': applyQ**T(Transpose).
MβMisINTEGER. The number of rows of the matrixC.M >= 0.NβNisINTEGER. The number of columns of the matrixC.N >= 0.KβKisINTEGER. The number of elementary reflectors whose product defines the matrixQ. IfSIDE = 'L',M >= K >= 0; ifSIDE = 'R',N >= K >= 0.AβAisDOUBLE PRECISIONarray, dimension(LDA,M) if SIDE = 'L', (LDA,N) if SIDE = 'R'. The i-th row must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byDGELQFin the firstkrows of its array argumentA.LDAβLDAisINTEGER. The leading dimension of the arrayA.LDA >= max(1,K).TAUβTAUisDOUBLE PRECISIONarray, dimension(K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byDGELQF.CβCisDOUBLE PRECISIONarray, dimension(LDC,N). On entry, thembynmatrixC. On exit,Cis overwritten byQ*CorQ**T*CorC*Q**TorC*Q.LDCβLDCisINTEGER. The leading dimension of the arrayC.LDC >= max(1,M).WORKβWORKisDOUBLE PRECISIONarray, dimension(N) if SIDE = 'L', (M) if SIDE = 'R'.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 156 of file dorml2.f.
π§ Author π§
Generated automatically by Doxygen for LAPACK from the source code.
π That's the whole page, bestie β brought to you by LAPACK Version 3.12.0 and the SRC/dorml2.f(3) era. Stay orthogonal. π
π¦ where this page comes from
- arch rolling: lapack-doc 3.12.1-2 Β· custom
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms