Class TensorCanonicalizer

Inheritance Relationships

Derived Types

Class Documentation

class TensorCanonicalizer

Base class for Tensor canonicalizers To make custom canonicalizer make a derived class and install an instance of that class in a Context (see Context::set_tensor_canonicalizer())

Subclassed by sequant::DefaultTensorCanonicalizer, sequant::NullTensorCanonicalizer

Public Types

using index_comparer_t = tensor_index_comparer_t
using index_pair_t = tensor_index_pair_t
using index_pair_comparer_t = tensor_index_pair_comparer_t

Public Functions

virtual ~TensorCanonicalizer()
virtual ExprPtr apply(AbstractTensor&) const = 0
Returns:

a side effect of canonicalization (e.g. phase), or nullptr if none

Public Static Functions

static index_comparer_t default_index_comparer()
Returns:

the default index comparer

static index_pair_comparer_t default_index_pair_comparer()
Returns:

the default index pair comparer

Protected Static Functions

static inline auto mutable_bra_range(AbstractTensor &t)
static inline auto mutable_ket_range(AbstractTensor &t)
static inline auto mutable_aux_range(AbstractTensor &t)