ungtsqr_row#

Functions

void cungtsqr_row(
    const INT           m,
    const INT           n,
    const INT           mb,
    const INT           nb,
          c64* restrict A,
    const INT           lda,
    const c64* restrict T,
    const INT           ldt,
          c64* restrict work,
    const INT           lwork,
          INT*          info
);
void cungtsqr_row(const INT m, const INT n, const INT mb, const INT nb, c64 *restrict A, const INT lda, const c64 *restrict T, const INT ldt, c64 *restrict work, const INT lwork, INT *info)#

CUNGTSQR_ROW generates an M-by-N complex matrix Q_out with orthonormal columns from the output of CLATSQR.

These N orthonormal columns are the first N columns of a product of complex unitary matrices Q(k)_in of order M, which are returned by CLATSQR in a special format.

 Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
The input matrices Q(k)_in are stored in row and column blocks in A. See the documentation of CLATSQR for more details on the format of Q(k)_in, where each Q(k)_in is represented by block Householder transformations. This routine calls an auxiliary routine CLARFB_GETT, where the computation is performed on each individual block. The algorithm first sweeps NB-sized column blocks from the right to left starting in the bottom row block and continues to the top row block (hence _ROW in the routine name). This sweep is in reverse order of the order in which CLATSQR generates the output blocks.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. m >= n >= 0.

in
mb

The row block size used by CLATSQR. mb > n.

in
nb

The column block size used by CLATSQR. nb >= 1.

inout
A

Single complex array, dimension (lda, n). On entry, the elements below the diagonal represent the unit lower-trapezoidal blocked matrix V computed by CLATSQR. On exit, the M-by-N orthonormal matrix Q_out.

in
lda

The leading dimension of the array A. lda >= max(1, m).

in
T

Single complex array, dimension (ldt, n * NIRB). The upper-triangular block reflectors from CLATSQR.

in
ldt

The leading dimension of the array T. ldt >= max(1, min(nb, n)).

out
work

Single complex workspace of size (max(1, lwork)). On exit, work[0] returns the optimal lwork.

in
lwork

The dimension of the array work. lwork >= nblocal * max(nblocal, (n-nblocal)), where nblocal=min(nb,n). If lwork = -1, then a workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value

Functions

void zungtsqr_row(
    const INT            m,
    const INT            n,
    const INT            mb,
    const INT            nb,
          c128* restrict A,
    const INT            lda,
    const c128* restrict T,
    const INT            ldt,
          c128* restrict work,
    const INT            lwork,
          INT*           info
);
void zungtsqr_row(const INT m, const INT n, const INT mb, const INT nb, c128 *restrict A, const INT lda, const c128 *restrict T, const INT ldt, c128 *restrict work, const INT lwork, INT *info)#

ZUNGTSQR_ROW generates an M-by-N complex matrix Q_out with orthonormal columns from the output of ZLATSQR.

These N orthonormal columns are the first N columns of a product of complex unitary matrices Q(k)_in of order M, which are returned by ZLATSQR in a special format.

 Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
The input matrices Q(k)_in are stored in row and column blocks in A. See the documentation of ZLATSQR for more details on the format of Q(k)_in, where each Q(k)_in is represented by block Householder transformations. This routine calls an auxiliary routine ZLARFB_GETT, where the computation is performed on each individual block. The algorithm first sweeps NB-sized column blocks from the right to left starting in the bottom row block and continues to the top row block (hence _ROW in the routine name). This sweep is in reverse order of the order in which ZLATSQR generates the output blocks.

Parameters

in
m

The number of rows of the matrix A. m >= 0.

in
n

The number of columns of the matrix A. m >= n >= 0.

in
mb

The row block size used by ZLATSQR. mb > n.

in
nb

The column block size used by ZLATSQR. nb >= 1.

inout
A

Double complex array, dimension (lda, n). On entry, the elements below the diagonal represent the unit lower-trapezoidal blocked matrix V computed by ZLATSQR. On exit, the M-by-N orthonormal matrix Q_out.

in
lda

The leading dimension of the array A. lda >= max(1, m).

in
T

Double complex array, dimension (ldt, n * NIRB). The upper-triangular block reflectors from ZLATSQR.

in
ldt

The leading dimension of the array T. ldt >= max(1, min(nb, n)).

out
work

Double complex workspace of size (max(1, lwork)). On exit, work[0] returns the optimal lwork.

in
lwork

The dimension of the array work. lwork >= nblocal * max(nblocal, (n-nblocal)), where nblocal=min(nb,n). If lwork = -1, then a workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -i, the i-th argument had an illegal value