12 #ifndef HAMMER_MATH_MULTIDIM_OPS_DOT
13 #define HAMMER_MATH_MULTIDIM_OPS_DOT
21 namespace MultiDimensional {
24 class VectorContainer;
25 class SparseContainer;
32 Dot(
const IndexPairList& indices, std::pair<bool, bool> shouldHC = {
false,
false});
62 const IndexPairList& indices, std::pair<bool, bool> shouldHC = {
false,
false});
65 const std::string& type)
const;
73 std::pair<bool, bool>
_hc;
std::tuple< IndexList, IndexList, IndexPairList > DotGroupType
std::vector< IndexPair > IndexPairList
IContainer * operator()(VectorContainer &first, const VectorContainer &second)
Dot(const IndexPairList &indices, std::pair< bool, bool > shouldHC={false, false})
Forward declarations of types used in the tensor classes.
std::shared_ptr< IContainer > SharedTensorData
std::pair< bool, bool > _hc
std::vector< DotGroupType > DotGroupList
std::pair< IndexList, LabelsList > getNewIndexLabels(const IContainer &first, const IContainer &second) const
std::vector< IndexType > IndexList
IndexList combineIndex(const IndexList &a, const IndexList &b) const
Outer product tensor indexer.
IContainer * error(IContainer &, const IContainer &)
std::set< IndexType > UniqueIndexList
UniqueIndexList _idxRight
SharedTensorData calcSharedDot(SharedTensorData origin, const IContainer &other, const IndexPairList &indices, std::pair< bool, bool > shouldHC={false, false})
DotGroupList partitionContractions(const BlockIndexing &lhs, const BlockIndexing &rhs) const
unsigned long long dotSignature(const IContainer &a, const IContainer &b, const std::string &type) const