PLASMA
Parallel Linear Algebra Software for Multicore Architectures
unmqr: Apply Householder reflectors from QR to a tile

Functions

 __attribute__ ((weak))
 

Detailed Description

Function Documentation

__attribute__ ( (weak)  )

Overwrites the general m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = Plasma_ConjTrans Q^H * C C * Q^H

where Q is a unitary matrix defined as the product of k elementary reflectors

\[ Q = H(1) H(2) ... H(k) \]

as returned by core_cgeqrt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^H from the Left;
  • PlasmaRight : apply Q or Q^H from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • Plasma_ConjTrans : Transpose, apply Q^H.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,k) The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_cgeqrt in the first k columns of its array argument A.
[in]ldaThe leading dimension of the array A. If side = PlasmaLeft, lda >= max(1,m); if side = PlasmaRight, lda >= max(1,n).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^T*C or C*Q^T or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-n if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,m) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = PlasmaTrans Q^T * C C * Q^T

where Q is a orthogonal matrix defined as the product of k elementary reflectors

\[ Q = H(1) H(2) ... H(k) \]

as returned by core_dgeqrt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^T from the Left;
  • PlasmaRight : apply Q or Q^T from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • PlasmaTrans : Transpose, apply Q^T.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,k) The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_dgeqrt in the first k columns of its array argument A.
[in]ldaThe leading dimension of the array A. If side = PlasmaLeft, lda >= max(1,m); if side = PlasmaRight, lda >= max(1,n).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^T*C or C*Q^T or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-n if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,m) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = PlasmaTrans Q^T * C C * Q^T

where Q is a orthogonal matrix defined as the product of k elementary reflectors

\[ Q = H(1) H(2) ... H(k) \]

as returned by core_sgeqrt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^T from the Left;
  • PlasmaRight : apply Q or Q^T from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • PlasmaTrans : Transpose, apply Q^T.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,k) The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_sgeqrt in the first k columns of its array argument A.
[in]ldaThe leading dimension of the array A. If side = PlasmaLeft, lda >= max(1,m); if side = PlasmaRight, lda >= max(1,n).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^T*C or C*Q^T or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-n if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,m) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value

Overwrites the general m-by-n tile C with

                              side = PlasmaLeft      side = PlasmaRight

trans = PlasmaNoTrans Q * C C * Q trans = Plasma_ConjTrans Q^H * C C * Q^H

where Q is a unitary matrix defined as the product of k elementary reflectors

\[ Q = H(1) H(2) ... H(k) \]

as returned by core_zgeqrt. Q is of order m if side = PlasmaLeft and of order n if side = PlasmaRight.

Parameters
[in]side
  • PlasmaLeft : apply Q or Q^H from the Left;
  • PlasmaRight : apply Q or Q^H from the Right.
[in]trans
  • PlasmaNoTrans : No transpose, apply Q;
  • Plasma_ConjTrans : Transpose, apply Q^H.
[in]mThe number of rows of the tile C. m >= 0.
[in]nThe number of columns of the tile C. n >= 0.
[in]kThe number of elementary reflectors whose product defines the matrix Q. If side = PlasmaLeft, m >= k >= 0; if side = PlasmaRight, n >= k >= 0.
[in]ibThe inner-blocking size. ib >= 0.
[in]ADimension: (lda,k) The i-th column must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by core_zgeqrt in the first k columns of its array argument A.
[in]ldaThe leading dimension of the array A. If side = PlasmaLeft, lda >= max(1,m); if side = PlasmaRight, lda >= max(1,n).
[in]TThe ib-by-k triangular factor T of the block reflector. T is upper triangular by block (economic storage); The rest of the array is not referenced.
[in]ldtThe leading dimension of the array T. ldt >= ib.
[in,out]COn entry, the m-by-n tile C. On exit, C is overwritten by Q*C or Q^T*C or C*Q^T or C*Q.
[in]ldcThe leading dimension of the array C. ldc >= max(1,m).
workAuxiliary workspace array of length ldwork-by-n if side == PlasmaLeft ldwork-by-ib if side == PlasmaRight
[in]ldworkThe leading dimension of the array work. ldwork >= max(1,ib) if side == PlasmaLeft ldwork >= max(1,m) if side == PlasmaRight
Return values
PlasmaSuccesssuccessful exit
<0 if -i, the i-th argument had an illegal value