CLAMSWLQ(3)

๐Ÿ“ฆ version 3.12.0, in opensuse-leap 16.0

๐Ÿ’… CLAMSWLQ(3) โ€” Library Functions Manual โœจ

Bestie, welcome to the CLAMSWLQ page ๐Ÿ’–. The manual name is Library Functions Manual, and the header source path is /home/abui.../clamswlq.f(3). This is the LAPACK girliesโ€™ short-wide-LQ era, and weโ€™re reading every single detail. No skimming, no cap. ๐ŸŽ€


๐Ÿ“› NAME

/home/abuild/rpmbuild/BUILD/lapack-static-3.12.0-build/lapack-3.12.0/SRC/clamswlq.f

๐ŸŒธ SYNOPSIS

๐Ÿงš Functions/Subroutines

subroutine CLAMSWLQ (side, trans, m, n, k, mb, nb, a, lda, t, ldt, c,
    ldc, work, lwork, info)
    CLAMSWLQ

๐Ÿชฉ Function/Subroutine Documentation

subroutine CLAMSWLQ (character side, character trans, integer m, integer n,
    integer k, integer mb, integer nb, complex, dimension( lda, * ) a,
    integer lda, complex, dimension( ldt, * ) t, integer ldt, complex,
    dimension(ldc, * ) c, integer ldc, complex, dimension( * ) work, integer
    lwork, integer info)
CLAMSWLQ

๐ŸŽฏ Purpose

CLAMSWLQ overwrites the general complex M-by-N matrix C with:

                 SIDE = 'L'     SIDE = 'R'
TRANS = 'N':      Q * C          C * Q
TRANS = 'T':      Q**H * C       C * Q**H

where Q is a complex unitary matrix defined as the product of blocked elementary reflectors computed by short wide LQ factorization (CLASWLQ).

Tiny heads-up, bestie: the table literally says TRANS = 'T' for the conjugate-transpose row, while the parameter list below says 'C' โ€” both are exactly what this page contains, so donโ€™t come for me ๐Ÿ’….

๐Ÿงธ Parameters

SIDE

SIDE is CHARACTER*1

  • = 'L': apply Q or Q**H from the Left;
  • = 'R': apply Q or Q**H from the Right.

TRANS

TRANS is CHARACTER*1

  • = 'N': No transpose, apply Q;
  • = 'C': Conjugate transpose, apply Q**H.

M

M is INTEGER

The number of rows of the matrix C. M >=0.

N

N is INTEGER

The number of columns of the matrix C. N >= 0.

K

K is INTEGER

The number of elementary reflectors whose product defines the matrix Q. M >= K >= 0;

MB

MB is INTEGER

The row block size to be used in the blocked LQ. M >= MB >= 1

NB

NB is INTEGER

The column block size to be used in the blocked LQ. NB > M.

A

A is COMPLEX array, dimension

(LDA,M) if SIDE = 'L',
(LDA,N) if SIDE = 'R'

The i-th row must contain the vector which defines the blocked elementary reflector H(i), for i = 1,2,...,k, as returned by CLASWLQ in the first k rows of its array argument A.

LDA

LDA is INTEGER

The leading dimension of the array A. LDA => max(1,K).

T

T is COMPLEX array, dimension

( M * Number of blocks(CEIL(N-K/NB-K)),

The blocked upper triangular block reflectors stored in compact form as a sequence of upper triangular blocks. See below for further details.

LDT

LDT is INTEGER

The leading dimension of the array T. LDT >= MB.

C

C is COMPLEX array, dimension (LDC,N)

On entry, the M-by-N matrix C. On exit, C is overwritten by Q*C or Q**H*C or C*Q**H or C*Q.

LDC

LDC is INTEGER

The leading dimension of the array C. LDC >= max(1,M).

WORK

WORK is (workspace) COMPLEX array, dimension (MAX(1,LWORK))

LWORK

LWORK is INTEGER

The dimension of the array WORK.
If SIDE = 'L', LWORK >= max(1,NB) * MB;
if SIDE = 'R', LWORK >= max(1,M) * MB.
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.

INFO

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.

๐Ÿ”Ž Further Details

Short-Wide LQ (SWLQ) performs LQ by a sequence of unitary transformations, representing Q as a product of other unitary 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 TPLQT.

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 195 of file clamswlq.f.

โœจ Author (Doxygenโ€™s version)

Generated automatically by Doxygen for LAPACK from the source code.


๐Ÿ’– Thatโ€™s the whole page, bestie. LAPACK Version 3.12.0, from /home/abui.../clamswlq.f(3). Periodt. ๐ŸŽ€

๐Ÿ“ฆ where this page comes from