12 #ifndef HAMMER_MATH_MULTIDIM_SCALARCONTAINER
13 #define HAMMER_MATH_MULTIDIM_SCALARCONTAINER
27 namespace MultiDimensional {
34 size_t rank()
const override;
53 ElementType element(IndexList::const_iterator start, IndexList::const_iterator end)
const override;
57 void clear()
override;
64 SerialType write(flatbuffers::FlatBufferBuilder* msgwriter)
const override;
IContainer & operator*=(double value) override
IndexType labelToIndex(IndexLabel label) const override
bool isSameShape(const IContainer &other) const override
std::pair< flatbuffers::Offset< void >, Serial::FBTensorTypes > SerialType
std::vector< IndexPair > IndexPairList
size_t dataSize() const override
reference element(const IndexList &coords={}) override
IndexPairList getSpinLabelPairs() const override
SerialType write(flatbuffers::FlatBufferBuilder *msgwriter) const override
std::complex< double > ElementType
IndexPairList getSameLabelPairs(const IContainer &other, const UniqueLabelsList &indices) const override
std::unique_ptr< IContainer > TensorData
size_t entrySize() const override
size_t rank() const override
bool canAddAt(const IContainer &subContainer, IndexLabel coord, IndexType position) const override
Interface class for tensor container data structure.
std::vector< IndexType > IndexList
size_t numValues() const override
IndexLabel
label identifiers of tensor indices they are used to determine which indices can be contracted togeth...
IndexList dims() const override
TensorData makeScalar(complex< double > value)
bool compare(const IContainer &other) const override
TensorData clone() const override
TensorData makeEmptyScalar()
std::vector< IndexLabel > LabelsList
std::set< IndexLabel > UniqueLabelsList
IContainer & conjugate() override
auto end(reversion_wrapper< T > w)
LabelsList labels() const override