BlasL3GeMM

Вычисляет произведение матриц общего вида.

C = alpha * op(A) * op(B) + beta * C

где C — матрица размера m на n, op(A) — матрица размера m на k, op(B) — матрица размера k на n.

Метод BlasL3GeMM применяется к матрице A. Матрица A имеет размер m на k, если параметр transa='N', иначе k на m.

BLAS-функция GEMM.

Вычисления для типа matrix<double>

bool  matrix::BlasL3GeMM(
   ENUM_BLAS_TRANS transa,        // задает вариант op(A)
   ENUM_BLAS_TRANS transb,        // задает вариант op(B)
   double          alpha,         // скалярный множитель alpha
   matrix&         B,             // матрица B
   double          beta,          // скалярный множитель beta
   matrix&         C              // результирующая матрица C
   );

Вычисления для типа matrix<float>

bool  matrixf::BlasL3GeMM(
   ENUM_BLAS_TRANS transa,        // задает вариант op(A)
   ENUM_BLAS_TRANS transb,        // задает вариант op(B)
   float           alpha,         // скалярный множитель alpha
   matrixf&        B,             // матрица B
   float           beta,          // скалярный множитель beta
   matrixf&        C              // результирующая матрица C
   );

Вычисления для типа matrix<complex>

bool  matrixc::BlasL3GeMM(
   ENUM_BLAS_TRANS transa,        // задает вариант op(A)
   ENUM_BLAS_TRANS transb,        // задает вариант op(B)
   complex         alpha,         // скалярный множитель alpha
   matrixc&        B,             // матрица B
   complex         beta,          // скалярный множитель beta
   matrixc&        C              // результирующая матрица C
   );

Вычисления для типа matrix<complexf>

bool  matrixcf::BlasL3GeMM(
   ENUM_BLAS_TRANS transa,        // задает вариант op(A)
   ENUM_BLAS_TRANS transb,        // задает вариант op(B)
   complexf        alpha,         // скалярный множитель alpha
   matrixcf&       B,             // матрица B
   complexf        beta,          // скалярный множитель beta
   matrixcf&       C              // результирующая матрица C
   );

Параметры

transa

[in]  Значение перечисления ENUM_BLAS_TRANS, задающее операцию:

если transa= 'N', то op(A) = A;

если transa= 'T', то op(A) =  A**T;

если transa= 'C', то op(A) = A**H.

transb

[in]  Значение перечисления ENUM_BLAS_TRANS, задающее операцию:

если transb= 'N', то op(B) = B;

если transb= 'T', то op(B) =  B**T;

если transb= 'C', то op(B) = B**H.

alpha

[in]  Скалярный множитель alpha.

B

[in]  Матрица B размера k на n, если transb='N', иначе размера n на k.

beta

[in]  Скалярный множитель beta.

C

[in, out]  Результирующая матрица C размера m на n. Если beta не равен нулю, то перед вызовом матрица C должна содержать актуальные данные. Если размер матрицы отличается от m на n, матрица C будет изменена до нужного размера и обнулена.

Возвращаемое значение

Возвращает true при успешном выполнении, иначе false в случае ошибки.

 

ENUM_BLAS_TRANS

Перечисление, определяющее варианты op(A) и op(B).

ID

Описание

BLASTRANS_N

'N': без транспонирования

BLASTRANS_T

'T': транспонирование

BLASTRANS_C

'C': сопряженное транспонирование