Developer Reference for Intel® oneAPI Math Kernel Library for C

ID 766684
Date 3/22/2024
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

mkl_?omatcopy

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

Syntax

void mkl_somatcopy (char ordering, char trans, size_t rows, size_t cols, const float alpha, const float * A, size_t lda, float * B, size_t ldb);

void mkl_domatcopy (char ordering, char trans, size_t rows, size_t cols, const double alpha, const double * A, size_t lda, double * B, size_t ldb);

void mkl_comatcopy (char ordering, char trans, size_t rows, size_t cols, const MKL_Complex8 alpha, const MKL_Complex8 * A, size_t lda, MKL_Complex8 * B, size_t ldb);

void mkl_zomatcopy (char ordering, char trans, size_t rows, size_t cols, const MKL_Complex16 alpha, const MKL_Complex16 * A, size_t lda, MKL_Complex16 * B, size_t ldb);

Include Files

  • mkl.h

Description

The mkl_?omatcopy routine performs 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)

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 A (the input matrix).

cols

The number of columns in matrix A (the input matrix).

alpha

This parameter scales the input matrix by alpha.

a

Input array.

If ordering = 'R' or 'r', the size of a is lda*rows.

If ordering = 'C' or 'c', the size of a is lda*cols.

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 equal to the number of row in matrix A.

b

Output array.

If ordering = 'R' or 'r';

  • If trans = 'T' or 't' or 'C' or 'c', the size of b is ldb * cols.

  • If trans = 'N' or 'n' or 'R' or 'r', the size of b is ldb * rows.

If ordering = 'C' or 'c';

  • If trans = 'T' or 't' or 'C' or 'c', the size of b is ldb * rows.

  • If trans = 'N' or 'n' or 'R' or 'r', the size of b is ldb * cols.

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.

  • If trans = 'N' or 'n' or 'R' or 'r', ldb must be at least equal to cols.

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 equal to cols.

  • If trans = 'N' or 'n' or 'R' or 'r', ldb must be at least equal to rows.

Output Parameters

b

Output array.

Contains the destination matrix.

Interfaces