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)#
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.
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.Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
Parameters
inmThe number of rows of the matrix A. m >= 0.
innThe number of columns of the matrix A. m >= n >= 0.
inmbThe row block size used by CLATSQR. mb > n.
innbThe column block size used by CLATSQR. nb >= 1.
inoutASingle 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.
inldaThe leading dimension of the array A. lda >= max(1, m).
inTSingle complex array, dimension (ldt, n * NIRB). The upper-triangular block reflectors from CLATSQR.
inldtThe leading dimension of the array T. ldt >= max(1, min(nb, n)).
outworkSingle complex workspace of size (max(1, lwork)). On exit, work[0] returns the optimal lwork.
inlworkThe 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.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
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
);
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)#
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.
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.Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
Parameters
inmThe number of rows of the matrix A. m >= 0.
innThe number of columns of the matrix A. m >= n >= 0.
inmbThe row block size used by ZLATSQR. mb > n.
innbThe column block size used by ZLATSQR. nb >= 1.
inoutADouble 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.
inldaThe leading dimension of the array A. lda >= max(1, m).
inTDouble complex array, dimension (ldt, n * NIRB). The upper-triangular block reflectors from ZLATSQR.
inldtThe leading dimension of the array T. ldt >= max(1, min(nb, n)).
outworkDouble complex workspace of size (max(1, lwork)). On exit, work[0] returns the optimal lwork.
inlworkThe 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.
outinfo= 0: successful exit
< 0: if info = -i, the i-th argument had an illegal value
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
);