Tatooine
Public Types | Public Member Functions | Static Public Member Functions | Private Attributes | List of all members
tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors > Struct Template Reference

#include <contracted_dynamic_tensor.h>

Collaboration diagram for tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >:
[legend]

Public Types

using value_type = common_type< typename IndexedTensors::tensor_type::value_type... >
 
using indices_per_tensor = type_list< typename IndexedTensors::indices... >
 
template<std::size_t I>
using indices_of_tensor = type_list_at< indices_per_tensor, I >
 
using free_indices = tatooine::einstein_notation::free_indices< IndexedTensors... >
 
using contracted_indices = tatooine::einstein_notation::contracted_indices< IndexedTensors... >
 

Public Member Functions

template<typename E , std::size_t ... Is>
auto constexpr dimension (std::index_sequence< Is... >) const
 
template<typename E >
auto constexpr dimension () const
 
 contracted_dynamic_tensor (IndexedTensors... tensors)
 
template<std::size_t I>
auto at () const
 
template<std::size_t I>
auto at ()
 
constexpr auto num_tensors ()
 
template<std::size_t... ContractedIndexSequence, std::size_t... ContractedTensorsSequence>
requires free_indices
::empty auto to_scalar (std::index_sequence< ContractedIndexSequence... >, std::index_sequence< ContractedTensorsSequence... >) const
 
 operator value_type () const
 

Static Public Member Functions

static auto constexpr rank ()
 

Private Attributes

std::tuple< IndexedTensors... > m_tensors
 

Member Typedef Documentation

◆ contracted_indices

template<typename... IndexedTensors>
using tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::contracted_indices = tatooine::einstein_notation::contracted_indices<IndexedTensors...>

◆ free_indices

template<typename... IndexedTensors>
using tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::free_indices = tatooine::einstein_notation::free_indices<IndexedTensors...>

◆ indices_of_tensor

template<typename... IndexedTensors>
template<std::size_t I>
using tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::indices_of_tensor = type_list_at<indices_per_tensor, I>

◆ indices_per_tensor

template<typename... IndexedTensors>
using tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::indices_per_tensor = type_list<typename IndexedTensors::indices...>

◆ value_type

template<typename... IndexedTensors>
using tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::value_type = common_type<typename IndexedTensors::tensor_type::value_type...>

Constructor & Destructor Documentation

◆ contracted_dynamic_tensor()

template<typename... IndexedTensors>
tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::contracted_dynamic_tensor ( IndexedTensors...  tensors)
inline

Member Function Documentation

◆ at() [1/2]

template<typename... IndexedTensors>
template<std::size_t I>
auto tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::at ( )
inline

◆ at() [2/2]

template<typename... IndexedTensors>
template<std::size_t I>
auto tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::at ( ) const
inline

◆ dimension() [1/2]

template<typename... IndexedTensors>
template<typename E >
auto constexpr tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::dimension ( ) const
inlineconstexpr

◆ dimension() [2/2]

template<typename... IndexedTensors>
template<typename E , std::size_t ... Is>
auto constexpr tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::dimension ( std::index_sequence< Is... >  ) const
inlineconstexpr

◆ num_tensors()

template<typename... IndexedTensors>
constexpr auto tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::num_tensors ( )
inlineconstexpr

◆ operator value_type()

template<typename... IndexedTensors>
tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::operator value_type ( ) const
inline

◆ rank()

template<typename... IndexedTensors>
static auto constexpr tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::rank ( )
inlinestaticconstexpr

◆ to_scalar()

template<typename... IndexedTensors>
template<std::size_t... ContractedIndexSequence, std::size_t... ContractedTensorsSequence>
requires free_indices
::empty auto tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::to_scalar ( std::index_sequence< ContractedIndexSequence... >  ,
std::index_sequence< ContractedTensorsSequence... >   
) const
inline

Member Data Documentation

◆ m_tensors

template<typename... IndexedTensors>
std::tuple<IndexedTensors...> tatooine::einstein_notation::contracted_dynamic_tensor< IndexedTensors >::m_tensors
private

The documentation for this struct was generated from the following file: