/home/abui.../stplqt2.f(3)
πΈ /home/abui.../stplqt2.f(3) β Library Functions Manual π
okay bestie, so this is a man page out of LAPACK's Library Functions Manual, and it's literally all about one lil Fortran subroutine. she's niche, she's math, she ate. let's get into it β¨
π NAME π
/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/stplqt2.f
yes that's the whole name, no cap β the file path is the name. she's giving "full government name because my mom is calling" energy π«Ά
π SYNOPSIS π
Functions/Subroutines
subroutine STPLQT2 (m, n, l, a, lda, b, ldb, t, ldt, info)
so like, STPLQT2 computes a LQ factorization of a real or complex triangular-pentagonal matrix β which is literally just a triangular block + a pentagonal block hanging out together β using the compact WY representation for Q. iconic behavior honestly π
π¦ Function/Subroutine Documentation π¦
subroutine STPLQT2 (integer m, integer n, integer l, real, dimension( lda, * ) a, integer lda, real, dimension( ldb, * ) b, integer ldb, real, dimension( ldt, * ) t, integer ldt, integer info)
STPLQT2 computes a LQ factorization of a real or complex "triangular-pentagonal" matrix β that's a matrix made of a triangular block plus a pentagonal block β and it does it with the compact WY representation for Q. slay π
β¨ Purpose β¨
fr fr, here's the deal straight from the source:
!>
!> STPLQT2 computes a LQ a factorization of a real
!> matrix C, which is composed of a triangular block A and pentagonal block B,
!> using the compact WY representation for Q.
!>
πΈ Parameters πΈ
MβMisINTEGER. the total number of rows of the matrixB, bestie.M >= 0.
!> M is INTEGER
!> The total number of rows of the matrix B.
!> M >= 0.
!>
NβNisINTEGER. the number of columns of the matrixB, and also the order of the triangular matrixA.N >= 0.
!> N is INTEGER
!> The number of columns of the matrix B, and the order of
!> the triangular matrix A.
!> N >= 0.
!>
LβLisINTEGER. the number of rows of the lower trapezoidal part ofB.MIN(M,N) >= L >= 0. peep Further Details if you wanna know why π
!> L is INTEGER
!> The number of rows of the lower trapezoidal part of B.
!> MIN(M,N) >= L >= 0. See Further Details.
!>
AβAisREALarray, dimension(LDA,M). on entry it's the lower triangularM-by-MmatrixA. on exit, everything on and below the diagonal holds the lower triangular matrixL. glow-up moment β¨
!> A is REAL array, dimension (LDA,M)
!> On entry, the lower triangular M-by-M matrix A.
!> On exit, the elements on and below the diagonal of the array
!> contain the lower triangular matrix L.
!>
LDAβLDAisINTEGER. the leading dimension of the arrayA.LDA >= max(1,M).
!> LDA is INTEGER
!> The leading dimension of the array A. LDA >= max(1,M).
!>
BβBisREALarray, dimension(LDB,N). on entry it's the pentagonalM-by-NmatrixBβ the firstN-Lcolumns are rectangular and the lastLcolumns are lower trapezoidal. on exit,Bholds the pentagonal matrixV. again, Further Details is right there π§
!> B is REAL array, dimension (LDB,N)
!> On entry, the pentagonal M-by-N matrix B. The first N-L columns
!> are rectangular, and the last L columns are lower trapezoidal.
!> On exit, B contains the pentagonal matrix V. See Further Details.
!>
LDBβLDBisINTEGER. the leading dimension of the arrayB.LDB >= max(1,M).
!> LDB is INTEGER
!> The leading dimension of the array B. LDB >= max(1,M).
!>
TβTisREALarray, dimension(LDT,M). theN-by-Nupper triangular factorTof the block reflector. Further Details, bestie, go look π
!> T is REAL array, dimension (LDT,M)
!> The N-by-N upper triangular factor T of the block reflector.
!> See Further Details.
!>
LDTβLDTisINTEGER. the leading dimension of the arrayT.LDT >= max(1,M).
!> LDT is INTEGER
!> The leading dimension of the array T. LDT >= max(1,M)
!>
INFOβINFOisINTEGER.= 0: successful exit, we love to see it π.< 0: ifINFO = -i, thei-th argument had an illegal value, not cute π
!> INFO is INTEGER
!> = 0: successful exit
!> < 0: if INFO = -i, the i-th argument had an illegal value
!>
π«Ά Author π«Ά
- Univ. of Tennessee
- Univ. of California Berkeley
- Univ. of Colorado Denver
- NAG Ltd.
the whole squad really showed up for this one π
π₯ Further Details π₯
okay this is the part where she gets detailed, strap in:
!>
!> The input matrix C is a M-by-(M+N) matrix
!>
!> C = [ A ][ B ]
!>
!>
!> where A is an lower triangular M-by-M matrix, and B is M-by-N pentagonal
!> matrix consisting of a M-by-(N-L) rectangular matrix B1 left of a M-by-L
!> upper trapezoidal matrix B2:
!>
!> B = [ B1 ][ B2 ]
!> [ B1 ] <- M-by-(N-L) rectangular
!> [ B2 ] <- M-by-L lower trapezoidal.
!>
!> The lower trapezoidal matrix B2 consists of the first L columns of a
!> N-by-N lower triangular matrix, where 0 <= L <= MIN(M,N). If L=0,
!> B is rectangular M-by-N; if M=L=N, B is lower triangular.
!>
!> The matrix W stores the elementary reflectors H(i) in the i-th row
!> above the diagonal (of A) in the M-by-(M+N) input matrix C
!>
!> C = [ A ][ B ]
!> [ A ] <- lower triangular M-by-M
!> [ B ] <- M-by-N pentagonal
!>
!> so that W can be represented as
!>
!> W = [ I ][ V ]
!> [ I ] <- identity, M-by-M
!> [ V ] <- M-by-N, same form as B.
!>
!> Thus, all of information needed for W is contained on exit in B, which
!> we call V above. Note that V has the same form as B; that is,
!>
!> W = [ V1 ][ V2 ]
!> [ V1 ] <- M-by-(N-L) rectangular
!> [ V2 ] <- M-by-L lower trapezoidal.
!>
!> The rows of V represent the vectors which define the H(i)'s.
!> The (M+N)-by-(M+N) block reflector H is then given by
!>
!> H = I - W**T * T * W
!>
!> where W^H is the conjugate transpose of W and T is the upper triangular
!> factor of the block reflector.
!>
like, the whole V/W/H pipeline is genuinely elegant once you see it β she's doing main character math π«
Definition at line 176 of file stplqt2.f.
β Author β
Generated automatically by Doxygen for LAPACK from the source code. (a robot wrote this one, no thoughts head empty π€β¨)
and that's the whole page bestie!! π sign-off time: this was <rainbow>LAPACK β Version 3.12.0 β /home/abui.../stplqt2.f(3)</rainbow> π go forth and factorize 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