PLASMA  2.8.0
PLASMA - Parallel Linear Algebra for Scalable Multi-core Architectures
int CORE_ztsmqr_hetra1 ( PLASMA_enum  side,
PLASMA_enum  trans,
int  m1,
int  n1,
int  m2,
int  n2,
int  k,
int  ib,
PLASMA_Complex64_t *  A1,
int  lda1,
PLASMA_Complex64_t *  A2,
int  lda2,
const PLASMA_Complex64_t *  V,
int  ldv,
const PLASMA_Complex64_t *  T,
int  ldt,
PLASMA_Complex64_t *  WORK,
int  ldwork 
)

CORE_ztsmqr_hetra1: see CORE_ztsmqr

This kernel applies a left transformation on | A1'| | A2 |

Needs therefore to make the explicit transpose of A1 before and after the application of the block of reflectors Can be further optimized by changing accordingly the underneath kernel ztsrfb!

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;
  • PlasmaConjTrans : ConjTranspose, apply Q**H.
[in]m1The number of rows of the tile A1. M1 >= 0.
[in]n1The number of columns of the tile A1. N1 >= 0.
[in]m2The number of rows of the tile A2. M2 >= 0. M2 = M1 if side == PlasmaRight.
[in]n2The number of columns of the tile A2. N2 >= 0. N2 = N1 if side == PlasmaLeft.
[in]kThe number of elementary reflectors whose product defines the matrix Q.
[in]ibThe inner-blocking size. IB >= 0.
[in,out]A1On entry, the M1-by-N1 tile A1. On exit, A1 is overwritten by the application of Q.
[in]lda1The leading dimension of the array A1. LDA1 >= max(1,M1).
[in,out]A2On entry, the M2-by-N2 tile A2. On exit, A2 is overwritten by the application of Q.
[in]lda2The leading dimension of the tile A2. LDA2 >= max(1,M2).
[in]VThe i-th row must contain the vector which defines the elementary reflector H(i), for i = 1,2,...,k, as returned by CORE_ZTSQRT in the first k columns of its array argument V.
[in]ldvThe leading dimension of the array V. LDV >= max(1,K).
[in]TThe IB-by-N1 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.
[out]WORKWorkspace array of size LDWORK-by-N1 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,M1) if side == PlasmaRight
Returns
Return values
PLASMA_SUCCESSsuccessful exit
<0if -i, the i-th argument had an illegal value