SRC/dormql.f(3)
π SRC/dormql.f β from the LAPACK Library Functions Manual π
okay bestie, gather round, because today we're reading the docs for SRC/dormql.f and honestly? it's giving main character energy. this is straight out of the LAPACK Library Functions Manual and it's lowkey iconic. let's get into it π
β¨ SYNOPSIS β¨
π«Ά Functions/Subroutines
subroutine dormql (side, trans, m, n, k, a, lda, tau, c, ldc, work,
lwork, info)
DORMQL β that's the whole vibe. that's the function. π
πΈ Function/Subroutine Documentation πΈ
β subroutine dormql
subroutine dormql (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 lwork,
integer info)
DORMQL β no cap, that's the signature, character for character. π¦
π Purpose:
!>
!> DORMQL 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 defined as the product of k
!> elementary reflectors
!>
!> Q = H(k) . . . H(2) H(1)
!>
!> as returned by DGEQLF. Q is of order M if SIDE = 'L' and of order N
!> if SIDE = 'R'.
!>
so basically π: DORMQL straight up overwrites your general real M-by-N matrix C β like, it does not ask, it just does it. and where it gets applied depends on SIDE and TRANS, per that cute little grid up there. Q itself is a real orthogonal matrix, defined as the product of k elementary reflectors, Q = H(k) . . . H(2) H(1), exactly as returned by DGEQLF. and here's the tea: Q is of order M if SIDE = 'L', and of order N if SIDE = 'R'. iykyk β¨
π Parameters π
SIDEβSIDEisCHARACTER*1. it's the "which side tho" flag:= 'L': applyQorQ**Tfrom the Left;= 'R': applyQorQ**Tfrom the Right.
TRANSβTRANSisCHARACTER*1. the "transpose or nah" flag:= 'N': No transpose, applyQ;= 'T': Transpose, applyQ**T.
MβMisINTEGER. the number of rows of the matrixC.M >= 0. (yes, zero is allowed, she's flexible π )NβNisINTEGER. the number of columns of the matrixC.N >= 0.KβKisINTEGER. the number of elementary reflectors whose product defines the matrixQ. the rules:- If
SIDE = 'L',M >= K >= 0; - if
SIDE = 'R',N >= K >= 0.
- If
AβAisDOUBLE PRECISION array, dimension (LDA,K). the i-th column must contain the vector which defines the elementary reflectorH(i), fori = 1,2,...,k, as returned byDGEQLFin the last k columns of its array argumentA. like, that's the assignment, bestie πLDAβLDAisINTEGER. the leading dimension of the arrayA:- If
SIDE = 'L',LDA >= max(1,M); - if
SIDE = 'R',LDA >= max(1,N).
- If
TAUβTAUisDOUBLE PRECISION array, dimension (K).TAU(i)must contain the scalar factor of the elementary reflectorH(i), as returned byDGEQLF. π¦CβCisDOUBLE PRECISION array, dimension (LDC,N). the glow-up happens here:- On entry, the M-by-N matrix
C. - On exit,
Cis overwritten byQ*CorQ**T*CorC*Q**TorC*Q. (she's had a whole transformation, we love to see it β¨)
- On entry, the M-by-N matrix
LDCβLDCisINTEGER. the leading dimension of the arrayC.LDC >= max(1,M). non-negotiable fr fr.WORKβWORKisDOUBLE PRECISION array, dimension (MAX(1,LWORK)). the workspace. and the fun part: On exit, ifINFO = 0,WORK(1)returns the optimalLWORK. she tells you the tea on her way out πLWORKβLWORKisINTEGER. the dimension of the arrayWORK:- If
SIDE = 'L',LWORK >= max(1,N); - if
SIDE = 'R',LWORK >= max(1,M). - For good performance,
LWORKshould generally be larger. (bigger workspace = better performance, that's the whole mood π₯) - If
LWORK = -1, then a workspace query is assumed; the routine only calculates the optimal size of theWORKarray, returns this value as the first entry of theWORKarray, and no error message related toLWORKis issued byXERBLA. β¨ query mode activated β¨
- If
INFOβINFOisINTEGER. the receipts:= 0: successful exit π< 0: ifINFO = -i, the i-th argument had an illegal value π
heads up bestie: if you pass something illegal,INFOgoes negative and it's specifically-ifor the i-th argument. check your args, no cap. π
π Author
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
π Definition at line 165 of file dormql.f.
π Author
Generated automatically by Doxygen for LAPACK from the source code.
and that's the whole page, bestie! π«Ά this was LAPACK, Version 3.12.0, dated with SRC/dormql.f(3) β go forth and apply those reflectors. periodt. πβ¨πΈ
π¦ 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