MyraMath
gemm.h
Go to the documentation of this file.
1 // ========================================================================= //
2 // This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
3 // and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
4 // ========================================================================= //
5 
6 #ifndef MYRAMATH_DENSE_GEMM_H
7 #define MYRAMATH_DENSE_GEMM_H
8 
14 #include <myramath/utility/detail/LIBPUBLIC.h>
16 
17 namespace myra {
18 
19 // Forward declarations.
20 template<class Number> class Matrix;
21 template<class Number> class CMatrixRange;
22 template<class Number> class MatrixRange;
23 
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);
31 
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);
39 
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);
47 
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);
55 
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);
63 
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);
71 
72 } // namespace
73 
74 #endif
Definition: syntax.dox:1
Various utility functions/classes related to scalar Number types.