CNORXZ
Container with Native Operation Routines and Expressions
Loading...
Searching...
No Matches
index_mul.h
Go to the documentation of this file.
1// -*- C++ -*-
14#ifndef __cxz_index_mul_h__
15#define __cxz_index_mul_h__
16
17#include "base/base.h"
18#include "index_base.h"
19
20namespace CNORXZ
21{
23 {
24 template <class BlockT, class... Indices, class I, SizeT... Is>
25 static decltype(auto) evalMX(const Sptr<GMIndex<BlockT,Indices...>>& a,
26 const Sptr<I>& b, Isq<Is...> is);
27
28 template <class BlockT, class... Indices, class I, typename Meta, SizeT... Js>
29 static decltype(auto) evalXM(const Sptr<I>& a, const Sptr<GMIndex<BlockT,Indices...>>& b,
31
32 template <class BlockT1, class... Indices1, class BlockT2, class... Indices2,
33 SizeT... Is, SizeT... Js>
34 static decltype(auto) evalMM(const Sptr<GMIndex<BlockT1,Indices1...>>& a,
37 };
38
44 template <class I1, typename Meta1, class I2, typename Meta2>
45 inline decltype(auto) operator*(const IndexInterface<I1,Meta1>& a,
47
53 template <class I1, typename Meta1, class... Indices>
54 inline decltype(auto) operator*(const IndexInterface<I1,Meta1>& a,
55 const SPack<Indices...>& b);
56
62 template <class I2, typename Meta2, class... Indices>
63 inline decltype(auto) operator*(const SPack<Indices...>& a,
65
71 template <class... Indices1, class... Indices2>
72 inline decltype(auto) operator*(const SPack<Indices1...>& a, const SPack<Indices2...>& b);
73
79 template <class I1, typename Meta1>
80 inline decltype(auto) operator*(const IndexInterface<I1,Meta1>& a, const DPack& b);
81
87 template <class I2, typename Meta2>
88 inline decltype(auto) operator*(const DPack& a, const IndexInterface<I2,Meta2>& b);
89
95 inline decltype(auto) operator*(const DPack& a, const DPack& b);
96
104 template <class I1, class I2>
105 decltype(auto) iptrMul(const Sptr<I1>& a, const Sptr<I2>& b);
106}
107
108#endif
basic headers
Index base declaration.
uint64_t SizeT
Definition types.h:38
Sptr< Range > rangeCast(const RangePtr r)
std::index_sequence< Is... > Isq
Definition types.h:74
decltype(auto) iptrMul(const Sptr< I1 > &a, const Sptr< I2 > &b)
std::shared_ptr< T > Sptr
Definition types.h:48
static decltype(auto) evalMX(const Sptr< GMIndex< BlockT, Indices... > > &a, const Sptr< I > &b, Isq< Is... > is)
static decltype(auto) evalXM(const Sptr< I > &a, const Sptr< GMIndex< BlockT, Indices... > > &b, Isq< Js... > js)
static decltype(auto) evalMM(const Sptr< GMIndex< BlockT1, Indices1... > > &a, const Sptr< GMIndex< BlockT2, Indices2... > > &b, Isq< Is... > is, Isq< Js... > js)