/home/abui.../slaswlq.f(3)

πŸ“¦ version 3.12.0, in opensuse-leap 16.0

πŸ’… 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: 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 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