ungtsqr#

Functions

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

CUNGTSQR generates an M-by-N complex matrix Q_out with orthonormal columns, which are the first N columns of a product of complex unitary matrices of order M which are returned by CLATSQR.

 Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
See the documentation for CLATSQR.

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 to return arrays A and T. mb > n. (Note that if mb > m, then m is used instead of mb as the row block size).

in
nb

The column block size used by CLATSQR to return arrays A and T. nb >= 1. (Note that if nb > n, then n is used instead of nb as the column block size).

inout
A

Single complex array, dimension (lda, n). On entry, the elements on and above the diagonal are not accessed. The elements below the diagonal represent the unit lower-trapezoidal blocked matrix V computed by CLATSQR that defines the input matrices Q_in(k). On exit, the array A contains an 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) where NIRB = Number_of_input_row_blocks = MAX(1, CEIL((m-n)/(mb-n))). The upper-triangular block reflectors used to define the input matrices Q_in(k).

in
ldt

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

out
work

Workspace array, dimension (max(2, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.

in
lwork

The dimension of the array work. lwork >= (m+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(
    const INT            m,
    const INT            n,
    const INT            mb,
    const INT            nb,
          c128* restrict A,
    const INT            lda,
          c128* restrict T,
    const INT            ldt,
          c128* restrict work,
    const INT            lwork,
          INT*           info
);
void zungtsqr(const INT m, const INT n, const INT mb, const INT nb, c128 *restrict A, const INT lda, c128 *restrict T, const INT ldt, c128 *restrict work, const INT lwork, INT *info)#

ZUNGTSQR generates an M-by-N complex matrix Q_out with orthonormal columns, which are the first N columns of a product of complex unitary matrices of order M which are returned by ZLATSQR.

 Q_out = first_N_columns_of( Q(1)_in * Q(2)_in * ... * Q(k)_in ).
See the documentation for ZLATSQR.

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 to return arrays A and T. mb > n. (Note that if mb > m, then m is used instead of mb as the row block size).

in
nb

The column block size used by ZLATSQR to return arrays A and T. nb >= 1. (Note that if nb > n, then n is used instead of nb as the column block size).

inout
A

Double complex array, dimension (lda, n). On entry, the elements on and above the diagonal are not accessed. The elements below the diagonal represent the unit lower-trapezoidal blocked matrix V computed by ZLATSQR that defines the input matrices Q_in(k). On exit, the array A contains an 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) where NIRB = Number_of_input_row_blocks = MAX(1, CEIL((m-n)/(mb-n))). The upper-triangular block reflectors used to define the input matrices Q_in(k).

in
ldt

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

out
work

Workspace array, dimension (max(2, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.

in
lwork

The dimension of the array work. lwork >= (m+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