6 #ifndef MYRAMATH_DENSE_GEMM_H 7 #define MYRAMATH_DENSE_GEMM_H 14 #include <myramath/utility/detail/LIBPUBLIC.h> 20 template<
class Number>
class Matrix;
21 template<
class Number>
class CMatrixRange;
22 template<
class Number>
class MatrixRange;
25 LIBPUBLIC
void gemm_inplace(
const MatrixRange<NumberS>& C,
const CMatrixRange<NumberS>& A,
char op_A,
const CMatrixRange<NumberS>& B,
char op_B, NumberS alpha=1, NumberS beta=0);
27 LIBPUBLIC
void gemm_inplace(
const MatrixRange<NumberD>& C,
const CMatrixRange<NumberD>& A,
char op_A,
const CMatrixRange<NumberD>& B,
char op_B, NumberD alpha=1, NumberD beta=0);
28 LIBPUBLIC
void gemm_inplace(
const MatrixRange<NumberC>& C,
const CMatrixRange<NumberC>& A,
char op_A,
const CMatrixRange<NumberC>& B,
char op_B, NumberC alpha=1, NumberC beta=0);
29 LIBPUBLIC
void gemm_inplace(
const MatrixRange<NumberZ>& C,
const CMatrixRange<NumberZ>& A,
char op_A,
const CMatrixRange<NumberZ>& B,
char op_B, NumberZ alpha=1, NumberZ beta=0);
33 LIBPUBLIC Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A,
char op_A,
const CMatrixRange<NumberS>& B,
char op_B, NumberS alpha=1);
35 LIBPUBLIC Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A,
char op_A,
const CMatrixRange<NumberD>& B,
char op_B, NumberD alpha=1);
36 LIBPUBLIC Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A,
char op_A,
const CMatrixRange<NumberC>& B,
char op_B, NumberC alpha=1);
37 LIBPUBLIC Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A,
char op_A,
const CMatrixRange<NumberZ>& B,
char op_B, NumberZ alpha=1);
41 LIBPUBLIC Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A,
char op_A,
const CMatrixRange<NumberS>& B, NumberS alpha=1);
43 LIBPUBLIC Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A,
char op_A,
const CMatrixRange<NumberD>& B, NumberD alpha=1);
44 LIBPUBLIC Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A,
char op_A,
const CMatrixRange<NumberC>& B, NumberC alpha=1);
45 LIBPUBLIC Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A,
char op_A,
const CMatrixRange<NumberZ>& B, NumberZ alpha=1);
49 LIBPUBLIC Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A,
const CMatrixRange<NumberS>& B,
char op_B, NumberS alpha=1);
51 LIBPUBLIC Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A,
const CMatrixRange<NumberD>& B,
char op_B, NumberD alpha=1);
52 LIBPUBLIC Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A,
const CMatrixRange<NumberC>& B,
char op_B, NumberC alpha=1);
53 LIBPUBLIC Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A,
const CMatrixRange<NumberZ>& B,
char op_B, NumberZ alpha=1);
57 LIBPUBLIC Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A,
const CMatrixRange<NumberS>& B, NumberS alpha=1);
59 LIBPUBLIC Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A,
const CMatrixRange<NumberD>& B, NumberD alpha=1);
60 LIBPUBLIC Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A,
const CMatrixRange<NumberC>& B, NumberC alpha=1);
61 LIBPUBLIC Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A,
const CMatrixRange<NumberZ>& B, NumberZ alpha=1);
65 LIBPUBLIC Matrix<NumberS> operator* (
const CMatrixRange<NumberS>& A,
const CMatrixRange<NumberS>& B);
67 LIBPUBLIC Matrix<NumberD> operator* (
const CMatrixRange<NumberD>& A,
const CMatrixRange<NumberD>& B);
68 LIBPUBLIC Matrix<NumberC> operator* (
const CMatrixRange<NumberC>& A,
const CMatrixRange<NumberC>& B);
69 LIBPUBLIC Matrix<NumberZ> operator* (
const CMatrixRange<NumberZ>& A,
const CMatrixRange<NumberZ>& B);
Various utility functions/classes related to scalar Number types.