/home/abui.../slaswlq.f(3)
π NAME
okay so bestie, this page is about /home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/slaswlq.f β a Fortran file in the LAPACK library, documented as a Library Functions Manual page π
β¨ SYNOPSIS β¨
Functions/Subroutines πΈ
subroutine SLASWLQ (m, n, mb, nb, a, lda, t, ldt, work, lwork, info)β the one and only, the main character herself:SLASWLQπ
π¦ Function/Subroutine Documentation π¦
subroutine SLASWLQ (integer m, integer n, integer mb, integer nb, real,
dimension( lda, * ) a, integer lda, real, dimension( ldt, *) t, integer
ldt, real, dimension( * ) work, integer lwork, integer info)
SLASWLQ π
π― Purpose
!> !> SLASWLQ computes a blocked Tall-Skinny LQ factorization of !> a real M-by-N matrix A for M <= N: !> !> A = ( L 0 ) * Q, !> !> where: !> !> Q is a n-by-N orthogonal matrix, stored on exit in an implicit !> form in the elements above the diagonal of the array A and in !> the elements of the array T; !> L is a lower-triangular M-by-M matrix stored on exit in !> the elements on and below the diagonal of the array A. !> 0 is a M-by-(N-M) zero matrix, if M < N, and is not stored. !> !>
π Parameters
M
!> M is INTEGER !> The number of rows of the matrix A. M >= 0. !>
so like, how many rows A has. M >= 0, no negatives bestie π«
N
!> N is INTEGER !> The number of columns of the matrix A. N >= M >= 0. !>
columns of A. note the judgment: N >= M >= 0 π
MB
!> MB is INTEGER !> The row block size to be used in the blocked QR. !> M >= MB >= 1 !>
the row block size for the blocked QR. M >= MB >= 1, fr fr.
NB
!> NB is INTEGER !> The column block size to be used in the blocked QR. !> NB > 0. !>
the column block size for the blocked QR. NB > 0, periodt.
A
!> A is REAL array, dimension (LDA,N) !> On entry, the M-by-N matrix A. !> On exit, the elements on and below the diagonal !> of the array contain the N-by-N lower triangular matrix L; !> the elements above the diagonal represent Q by the rows !> of blocked V (see Further Details). !> !>
a REAL array, dimension (LDA,N). on entry it's the M-by-N matrix A; on exit the on-and-below-diagonal bits hold the N-by-N lower triangular matrix L, and the above-diagonal bits represent Q via the rows of blocked V (see Further Details, bestie π).
LDA
!> LDA is INTEGER !> The leading dimension of the array A. LDA >= max(1,M). !>
leading dimension of A. LDA >= max(1,M) β iconic constraint, no notes π
T
!> T is REAL array, !> dimension (LDT, N * Number_of_row_blocks) !> where Number_of_row_blocks = CEIL((N-M)/(NB-M)) !> The blocked upper triangular block reflectors stored in compact form !> as a sequence of upper triangular blocks. !> See Further Details below. !>
a REAL array with dimension (LDT, N * Number_of_row_blocks), where Number_of_row_blocks = CEIL((N-M)/(NB-M)). it's the blocked upper triangular block reflectors, stored all compact as a sequence of upper triangular blocks. Further Details below, iykyk π«Ά
LDT
!> LDT is INTEGER !> The leading dimension of the array T. LDT >= MB. !>
leading dimension of T. LDT >= MB.
WORK
!> (workspace) REAL array, dimension (MAX(1,LWORK)) !> !>
the workspace πΌ β REAL array, dimension (MAX(1,LWORK)).
LWORK
!> LWORK is INTEGER !> The dimension of the array WORK. LWORK >= MB * M. !> 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. !> !>
dimension of WORK, and LWORK >= MB * M. and ooh, the fun part: if LWORK = -1 it assumes a workspace query β it only calculates the optimal size of the WORK array, returns that value as the first entry of the WORK array, and XERBLA issues no error message related to LWORK πβ¨
INFO
!> INFO is INTEGER !> = 0: successful exit !> < 0: if INFO = -i, the i-th argument had an illegal value !>
= 0: successful exit, slay π< 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.
(the whole squad that brought you this π«Ά)
π Further Details
!> Short-Wide LQ (SWLQ) performs LQ by a sequence of orthogonal transformations, !> representing Q as a product of other orthogonal matrices !> Q = Q(1) * Q(2) * . . . * Q(k) !> where each Q(i) zeros out upper diagonal entries of a block of NB rows of A: !> Q(1) zeros out the upper diagonal entries of rows 1:NB of A !> Q(2) zeros out the bottom MB-N rows of rows [1:M,NB+1:2*NB-M] of A !> Q(3) zeros out the bottom MB-N rows of rows [1:M,2*NB-M+1:3*NB-2*M] of A !> . . . !> !> Q(1) is computed by GELQT, which represents Q(1) by Householder vectors !> stored under the diagonal of rows 1:MB of A, and by upper triangular !> block reflectors, stored in array T(1:LDT,1:N). !> For more information see Further Details in GELQT. !> !> Q(i) for i>1 is computed by TPLQT, which represents Q(i) by Householder vectors !> stored in columns [(i-1)(NB-M)+M+1:i(NB-M)+M] of A, and by upper triangular !> block reflectors, stored in array T(1:LDT,(i-1)*M+1:i*M). !> The last Q(k) may use fewer rows. !> For more information see Further Details in TPQRT. !> !> For more details of the overall algorithm, see the description of !> Sequential TSQR in Section 2.2 of [1]. !> !> [1] βCommunication-Optimal Parallel and Sequential QR and LU Factorizations,β !> J. Demmel, L. Grigori, M. Hoemmen, J. Langou, !> SIAM J. Sci. Comput, vol. 34, no. 1, 2012 !>
Definition at line 165 of file slaswlq.f. π§
π« Author
Generated automatically by Doxygen for LAPACK from the source code.
β¨ and that's the whole thing! β¨ this little beauty lives in LAPACK, Version 3.12.0 β the doc page itself is /home/abui.../slaswlq.f(3). mwah, 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