Developer Reference for Intel® oneAPI Math Kernel Library for C
?laref
Applies Householder reflectors to matrices on their rows or columns.
Syntax
void slaref(const char *type, float *a, const MKL_INT *lda, const MKL_INT *wantz,
float *z, const MKL_INT *ldz, const MKL_INT *block, MKL_INT *irow1,
MKL_INT *icol1, const MKL_INT *istart, const MKL_INT *istop,
const MKL_INT *itmp1, const MKL_INT *itmp2, const MKL_INT *liloz,
const MKL_INT *lihiz, const float *vecs, float *v2, float *v3, float *t1,
float *t2, float *t3);
void dlaref(const char *type, double *a, const MKL_INT *lda, const MKL_INT *wantz,
double *z, const MKL_INT *ldz, const MKL_INT *block, MKL_INT *irow1,
MKL_INT *icol1, const MKL_INT *istart, const MKL_INT *istop,
const MKL_INT *itmp1, const MKL_INT *itmp2, const MKL_INT *liloz,
const MKL_INT *lihiz, const double *vecs, double *v2, double *v3, double *t1,
double *t2, double *t3);
void claref(const char *type, MKL_Complex8 *a, const MKL_INT *lda, const MKL_INT *wantz,
MKL_Complex8 *z, const MKL_INT *ldz, const MKL_INT *block, MKL_INT *irow1,
MKL_INT *icol1, const MKL_INT *istart, const MKL_INT *istop,
const MKL_INT *itmp1, const MKL_INT *itmp2, const MKL_INT *liloz,
const MKL_INT *lihiz, const MKL_Complex8 *vecs, MKL_Complex8 *v2,
MKL_Complex8 *v3, MKL_Complex8 *t1, MKL_Complex8 *t2, MKL_Complex8 *t3);
void zlaref(const char *type, MKL_Complex16 *a, const MKL_INT *lda, const MKL_INT *wantz,
MKL_Complex16 *z, const MKL_INT *ldz, const MKL_INT *block, MKL_INT *irow1,
MKL_INT *icol1, const MKL_INT *istart, const MKL_INT *istop,
const MKL_INT *itmp1, const MKL_INT *itmp2, const MKL_INT *liloz,
const MKL_INT *lihiz, const MKL_Complex16 *vecs, MKL_Complex16 *v2,
MKL_Complex16 *v3, MKL_Complex16 *t1, MKL_Complex16 *t2, MKL_Complex16 *t3);
Include Files
mkl_scalapack.h
Description
slaref dlaref ?laref applies one or several Householder reflectors of size 3 to one or two matrices (if column is specified) on either their rows or columns.
Input Parameters
- type
-
(local)
If ‘R’: Apply reflectors to the rows of the matrix (apply from left) Otherwise: Apply reflectors to the columns of the matrix Unchanged on exit.
- a
-
(local) REAL for slaref DOUBLE PRECISION for dlaref COMPLEX for claref DOUBLE COMPLEX for zlaref
Array, (lld_a,LOCc(ja+n-1))lld_a * LOCc ( ja + n -1)
On entry, the matrix to receive the reflections.
- lda
-
(local)
On entry, the leading dimension of a . Unchanged on exit.
- wantz
-
(local)
If wantz ≠ 0 , then apply any column reflections to z as well.
If wantz = 0 , then do no additional work on z .
- z
-
(local) REAL for slaref DOUBLE PRECISION for dlaref COMPLEX for claref DOUBLE COMPLEX for zlaref
Array, ldz * ncols , where the value ncols depends on other arguments. If wantzwantz ≠ 0 and type ≠ ‘R’ then ncols = icol1 + 3*( lihiz - liloz + 1). Otherwise, ncols is unused.
On entry, the second matrix to receive column reflections. This is changed only if wantz is set.
- ldz
-
(local)
On entry, the leading dimension of z . Unchanged on exit.
- block
-
(local)
If nonzero , then apply several reflectors at once and read their data from the vecs array.
If zero , apply the single reflector given by v2 , v3 , t1 , t2 , and t3 .
- irow1
-
(local)
On entry, the local row element of a .
- icol1
-
(local)
On entry, the local column element of a .
- istart
-
(local)
Specifies the “number” of the first reflector. This is used as an index into vecs if block is set. istart is ignored if block is zero .
- istop
-
(local)
Specifies the “number” of the last reflector. This is used as an index into vecs if block is set. istop is ignored if block is zero .
- itmp1
-
(local)
Starting range into a . For rows, this is the local first column. For columns, this is the local first row.
- itmp2
-
(local)
Ending range into a . For rows, this is the local last column. For columns, this is the local last row.
- liloz , lihiz
-
(local)
These serve the same purpose as itmp1 , itmp2 but for z when wantz is set.
- vecs
-
(local) REAL for slaref DOUBLE PRECISION for dlaref COMPLEX for claref DOUBLE COMPLEX for zlaref Array of size 3*N (matrix size)
This holds the size 3 reflectors one after another and this is only accessed when block is nonzero
- v2 , v3 , t1 , t2 , t3
-
(local) REAL for slaref DOUBLE PRECISION for dlaref COMPLEX for claref DOUBLE COMPLEX for zlaref
This holds information on a single size 3 Householder reflector and is read when block is zero , and overwritten when block is nonzero
Output Parameters
- a
-
The updated matrix on exit.
- z
-
This is changed only if wantz is set.
- irow1
-
Undefined on output.
- icol1
-
Undefined on output.
v2 , v3 , t1 , t2 , t3
Overwritten when block is nonzero.