Intel® oneAPI Math Kernel Library Developer Reference - C

mkl_?omatcopy2

Performs two-strided scaling and out-of-place transposition/copying of matrices.

Syntax

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);

Include Files

Description

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).

Note

Different arrays must not overlap.

Input Parameters

ordering

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.

trans

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'.

rows

The number of rows in matrix B (the source matrix).

cols

The number of columns in matrix B (the source matrix).

alpha

This parameter scales the input matrix by alpha.

a

Array.

lda

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.

stridea

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.

b

Array.

ldb

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.

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).

Output Parameters

b

Array, size at least m.

Contains the destination matrix.

Interfaces