Intel® oneAPI Math Kernel Library Developer Reference - C
Performs two-strided scaling and out-of-place transposition/copying of matrices.
void mkl_somatcopy2 (char ordering, char trans, size_t rows, size_t cols, const float alpha, const float * A, size_t lda, size_t stridea, float * B, size_t ldb, size_t strideb);
void mkl_domatcopy2 (char ordering, char trans, size_t rows, size_t cols, const double alpha, const double * A, size_t lda, size_t stridea, double * B, size_t ldb, size_t strideb);
void mkl_comatcopy2 (char ordering, char trans, size_t rows, size_t cols, const MKL_Complex8 alpha, const MKL_Complex8 * A, size_t lda, size_t stridea, MKL_Complex8 * B, size_t ldb, size_t strideb);
void mkl_zomatcopy2 (char ordering, char trans, size_t rows, size_t cols, const MKL_Complex16 alpha, const MKL_Complex16 * A, size_t lda, size_t stridea, MKL_Complex16 * B, size_t ldb, size_t strideb);
The mkl_?omatcopy2 routine performs two-strided scaling and out-of-place transposition/copying of matrices. A transposition operation can be a normal matrix copy, a transposition, a conjugate transposition, or just a conjugation. The operation is defined as follows:
B := alpha*op(A)
Normally, matrices in the BLAS or LAPACK are specified by a single stride index. For instance, in the column-major order, A(2,1) is stored in memory one element away from A(1,1), but A(1,2) is a leading dimension away. The leading dimension in this case is at least the number of rows of the source matrix. If a matrix has two strides, then both A(2,1) and A(1,2) may be an arbitrary distance from A(1,1).
Different arrays must not overlap.
Ordering of the matrix storage.
If ordering = 'R' or 'r', the ordering is row-major.
If ordering = 'C' or 'c', the ordering is column-major.
Parameter that specifies the operation type.
If trans = 'N' or 'n', op(A)=A and the matrix A is assumed unchanged on input.
If trans = 'T' or 't', it is assumed that A should be transposed.
If trans = 'C' or 'c', it is assumed that A should be conjugate transposed.
If trans = 'R' or 'r', it is assumed that A should be only conjugated.
If the data is real, then trans = 'R' is the same as trans = 'N', and trans = 'C' is the same as trans = 'T'.
The number of rows in matrix B (the source matrix).
The number of columns in matrix B (the source matrix).
This parameter scales the input matrix by alpha.
Array.
If ordering = 'R' or 'r', lda represents the number of elements in array a between adjacent rows of matrix A; lda must be at least equal to the number of columns of matrix A.
If ordering = 'C' or 'c', lda represents the number of elements in array a between adjacent columns of matrix A; lda must be at least 1 and not more than the number of columns in matrix A.
If ordering = 'R' or 'r', stridea represents the number of elements in array a between adjacent columns of matrix A. stridea must be at least 1 and not more than the number of columns in matrix A.
If ordering = 'C' or 'c', stridea represents the number of elements in array a between adjacent rows of matrix A. stridea must be at least equal to the number of columns in matrix A.
Array.
If ordering = 'R' or 'r', ldb represents the number of elements in array b between adjacent rows of matrix B.
If trans = 'T' or 't' or 'C' or 'c', ldb must be at least equal to rows/strideb.
If trans = 'N' or 'n' or 'R' or 'r', ldb must be at least equal to cols/strideb.
If ordering = 'C' or 'c', ldb represents the number of elements in array b between adjacent columns of matrix B.
If trans = 'T' or 't' or 'C' or 'c', ldb must be at least 1 and not more than rows/strideb.
If trans = 'N' or 'n' or 'R' or 'r', ldb must be at least 1 and not more than cols/strideb.
If ordering = 'R' or 'r', strideb represents the number of elements in array b between adjacent columns of matrix B.
If trans = 'T' or 't' or 'C' or 'c', strideb must be at least 1 and not more than rows (the number of rows in matrix B).
If trans = 'N' or 'n' or 'R' or 'r', strideb must be at least 1 and not more than cols (the number of columns in matrix B).
If ordering = 'C' or 'c', strideb represents the number of elements in array b between adjacent rows of matrix B.
If trans = 'T' or 't' or 'C' or 'c', strideb must be at least equal to rows (the number of rows in matrix B).
If trans = 'N' or 'n' or 'R' or 'r', strideb must be at least equal to cols (the number of columns in matrix B).
Array, size at least m.
Contains the destination matrix.