6 #ifndef MYRAMATH_SPARSE_GEMM_H     7 #define MYRAMATH_SPARSE_GEMM_H    17 #include <myramath/MYRAMATH_EXPORT.h>    23 template<
class Number> 
class Matrix;
    24 template<
class Number> 
class MatrixRange;
    25 template<
class Number> 
class CMatrixRange;
    26 template<
class Number> 
class CSparseMatrixRange;
    31 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberS>& C, 
const CSparseMatrixRange<NumberS>& A, 
char op_A, 
const CMatrixRange<NumberS>& B, 
char op_B, NumberS alpha=1, NumberS beta=0);
    32 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberD>& C, 
const CSparseMatrixRange<NumberD>& A, 
char op_A, 
const CMatrixRange<NumberD>& B, 
char op_B, NumberD alpha=1, NumberD beta=0);
    33 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberC>& C, 
const CSparseMatrixRange<NumberC>& A, 
char op_A, 
const CMatrixRange<NumberC>& B, 
char op_B, NumberC alpha=1, NumberC beta=0);
    34 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberZ>& C, 
const CSparseMatrixRange<NumberZ>& A, 
char op_A, 
const CMatrixRange<NumberZ>& B, 
char op_B, NumberZ alpha=1, NumberZ beta=0);
    37 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CSparseMatrixRange<NumberS>& A, 
char op_A, 
const CMatrixRange<NumberS>& B, 
char op_B, NumberS alpha=1);
    38 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CSparseMatrixRange<NumberD>& A, 
char op_A, 
const CMatrixRange<NumberD>& B, 
char op_B, NumberD alpha=1);
    39 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CSparseMatrixRange<NumberC>& A, 
char op_A, 
const CMatrixRange<NumberC>& B, 
char op_B, NumberC alpha=1);
    40 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CSparseMatrixRange<NumberZ>& A, 
char op_A, 
const CMatrixRange<NumberZ>& B, 
char op_B, NumberZ alpha=1);
    43 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CSparseMatrixRange<NumberS>& A, 
char op_A, 
const CMatrixRange<NumberS>& B, NumberS alpha=1);
    44 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CSparseMatrixRange<NumberD>& A, 
char op_A, 
const CMatrixRange<NumberD>& B, NumberD alpha=1);
    45 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CSparseMatrixRange<NumberC>& A, 
char op_A, 
const CMatrixRange<NumberC>& B, NumberC alpha=1);
    46 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CSparseMatrixRange<NumberZ>& A, 
char op_A, 
const CMatrixRange<NumberZ>& B, NumberZ alpha=1);
    49 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CSparseMatrixRange<NumberS>& A, 
const CMatrixRange<NumberS>& B, 
char op_B, NumberS alpha=1);
    50 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CSparseMatrixRange<NumberD>& A, 
const CMatrixRange<NumberD>& B, 
char op_B, NumberD alpha=1);
    51 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CSparseMatrixRange<NumberC>& A, 
const CMatrixRange<NumberC>& B, 
char op_B, NumberC alpha=1);
    52 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CSparseMatrixRange<NumberZ>& A, 
const CMatrixRange<NumberZ>& B, 
char op_B, NumberZ alpha=1);
    55 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CSparseMatrixRange<NumberS>& A, 
const CMatrixRange<NumberS>& B, NumberS alpha=1);
    56 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CSparseMatrixRange<NumberD>& A, 
const CMatrixRange<NumberD>& B, NumberD alpha=1);
    57 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CSparseMatrixRange<NumberC>& A, 
const CMatrixRange<NumberC>& B, NumberC alpha=1);
    58 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CSparseMatrixRange<NumberZ>& A, 
const CMatrixRange<NumberZ>& B, NumberZ alpha=1);
    61 MYRAMATH_EXPORT Matrix<NumberS> operator * (
const CSparseMatrixRange<NumberS>& A, 
const CMatrixRange<NumberS>& B);
    62 MYRAMATH_EXPORT Matrix<NumberD> operator * (
const CSparseMatrixRange<NumberD>& A, 
const CMatrixRange<NumberD>& B);
    63 MYRAMATH_EXPORT Matrix<NumberC> operator * (
const CSparseMatrixRange<NumberC>& A, 
const CMatrixRange<NumberC>& B);
    64 MYRAMATH_EXPORT Matrix<NumberZ> operator * (
const CSparseMatrixRange<NumberZ>& A, 
const CMatrixRange<NumberZ>& B);
    69 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberS>& C, 
const CMatrixRange<NumberS>& A, 
char op_A, 
const CSparseMatrixRange<NumberS>& B, 
char op_B, NumberS alpha=1, NumberS beta=0);
    70 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberD>& C, 
const CMatrixRange<NumberD>& A, 
char op_A, 
const CSparseMatrixRange<NumberD>& B, 
char op_B, NumberD alpha=1, NumberD beta=0);
    71 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberC>& C, 
const CMatrixRange<NumberC>& A, 
char op_A, 
const CSparseMatrixRange<NumberC>& B, 
char op_B, NumberC alpha=1, NumberC beta=0);
    72 MYRAMATH_EXPORT 
void gemm_inplace(
const MatrixRange<NumberZ>& C, 
const CMatrixRange<NumberZ>& A, 
char op_A, 
const CSparseMatrixRange<NumberZ>& B, 
char op_B, NumberZ alpha=1, NumberZ beta=0);
    75 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A, 
char op_A, 
const CSparseMatrixRange<NumberS>& B, 
char op_B, NumberS alpha=1);
    76 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A, 
char op_A, 
const CSparseMatrixRange<NumberD>& B, 
char op_B, NumberD alpha=1);
    77 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A, 
char op_A, 
const CSparseMatrixRange<NumberC>& B, 
char op_B, NumberC alpha=1);
    78 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A, 
char op_A, 
const CSparseMatrixRange<NumberZ>& B, 
char op_B, NumberZ alpha=1);
    81 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A, 
char op_A, 
const CSparseMatrixRange<NumberS>& B, NumberS alpha=1);
    82 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A, 
char op_A, 
const CSparseMatrixRange<NumberD>& B, NumberD alpha=1);
    83 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A, 
char op_A, 
const CSparseMatrixRange<NumberC>& B, NumberC alpha=1);
    84 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A, 
char op_A, 
const CSparseMatrixRange<NumberZ>& B, NumberZ alpha=1);
    87 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A, 
const CSparseMatrixRange<NumberS>& B, 
char op_B, NumberS alpha=1);
    88 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A, 
const CSparseMatrixRange<NumberD>& B, 
char op_B, NumberD alpha=1);
    89 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A, 
const CSparseMatrixRange<NumberC>& B, 
char op_B, NumberC alpha=1);
    90 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A, 
const CSparseMatrixRange<NumberZ>& B, 
char op_B, NumberZ alpha=1);
    93 MYRAMATH_EXPORT Matrix<NumberS> gemm(
const CMatrixRange<NumberS>& A, 
const CSparseMatrixRange<NumberS>& B, NumberS alpha=1);
    94 MYRAMATH_EXPORT Matrix<NumberD> gemm(
const CMatrixRange<NumberD>& A, 
const CSparseMatrixRange<NumberD>& B, NumberD alpha=1);
    95 MYRAMATH_EXPORT Matrix<NumberC> gemm(
const CMatrixRange<NumberC>& A, 
const CSparseMatrixRange<NumberC>& B, NumberC alpha=1);
    96 MYRAMATH_EXPORT Matrix<NumberZ> gemm(
const CMatrixRange<NumberZ>& A, 
const CSparseMatrixRange<NumberZ>& B, NumberZ alpha=1);
    99 MYRAMATH_EXPORT Matrix<NumberS> operator * (
const CMatrixRange<NumberS>& A, 
const CSparseMatrixRange<NumberS>& B);
   100 MYRAMATH_EXPORT Matrix<NumberD> operator * (
const CMatrixRange<NumberD>& A, 
const CSparseMatrixRange<NumberD>& B);
   101 MYRAMATH_EXPORT Matrix<NumberC> operator * (
const CMatrixRange<NumberC>& A, 
const CSparseMatrixRange<NumberC>& B);
   102 MYRAMATH_EXPORT Matrix<NumberZ> operator * (
const CMatrixRange<NumberZ>& A, 
const CSparseMatrixRange<NumberZ>& B);
 
Various utility functions/classes related to scalar Number types.