Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Types | Static Private Attributes | List of all members
Eigen::StaticSGroup< Gen > Class Template Reference

Static symmetry group. More...

#include <StaticSymmetry.h>

Public Member Functions

template<typename Tensor_ , typename... IndexTypes>
internal::tensor_symmetry_value_setter< Tensor_, StaticSGroup< Gen... > > operator() (Tensor_ &tensor, typename Tensor_::Index firstIndex, IndexTypes... otherIndices) const
 
template<typename Tensor_ >
internal::tensor_symmetry_value_setter< Tensor_, StaticSGroup< Gen... > > operator() (Tensor_ &tensor, std::array< typename Tensor_::Index, Tensor_::NumIndices > const &indices) const
 
constexpr StaticSGroup ()
 
constexpr StaticSGroup (const StaticSGroup< Gen... > &)
 
constexpr StaticSGroup (StaticSGroup< Gen... > &&)
 

Static Public Member Functions

template<typename Op , typename RV , typename Index , std::size_t N, typename... Args>
static RV apply (const std::array< Index, N > &idx, RV initial, Args &&... args)
 
template<typename Op , typename RV , typename Index , typename... Args>
static RV apply (const std::vector< Index > &idx, RV initial, Args &&... args)
 
static constexpr int globalFlags ()
 
static constexpr std::size_t size ()
 

Static Public Attributes

static constexpr std::size_t static_size = ge::count
 

Private Types

typedef group_elements::type ge
 
typedef internal::group_theory::enumerate_group_elements< internal::tensor_static_symgroup_multiply, internal::tensor_static_symgroup_equality, typename internal::tensor_static_symgroup_identity_ctor< NumIndices >::type, internal::type_list< typename internal::tensor_static_symgroup_element_ctor< Gen, NumIndices >::type... > > group_elements
 

Static Private Attributes

static constexpr std::size_t NumIndices = internal::tensor_symmetry_num_indices<Gen...>::value
 

Detailed Description

template<typename... Gen>
class Eigen::StaticSGroup< Gen >

Static symmetry group.

This class represents a symmetry group that is known and resolved completely at compile time. Ideally, no run-time penalty is incurred compared to the manual unrolling of the symmetry.

CAUTION:

Do not use this class directly for large symmetry groups. The compiler may run into a limit, or segfault or in the very least will take a very, very, very long time to compile the code. Use the SGroup class instead if you want a static group. That class contains logic that will automatically select the DynamicSGroup class instead if the symmetry group becomes too large. (In that case, unrolling may not even be beneficial.)

Definition at line 181 of file StaticSymmetry.h.

Member Typedef Documentation

◆ ge

template<typename... Gen>
typedef group_elements::type Eigen::StaticSGroup< Gen >::ge
private

Definition at line 190 of file StaticSymmetry.h.

◆ group_elements

Definition at line 189 of file StaticSymmetry.h.

Constructor & Destructor Documentation

◆ StaticSGroup() [1/3]

template<typename... Gen>
constexpr Eigen::StaticSGroup< Gen >::StaticSGroup ( )
inline

Definition at line 192 of file StaticSymmetry.h.

◆ StaticSGroup() [2/3]

template<typename... Gen>
constexpr Eigen::StaticSGroup< Gen >::StaticSGroup ( const StaticSGroup< Gen... > &  )
inline

Definition at line 193 of file StaticSymmetry.h.

◆ StaticSGroup() [3/3]

template<typename... Gen>
constexpr Eigen::StaticSGroup< Gen >::StaticSGroup ( StaticSGroup< Gen... > &&  )
inline

Definition at line 194 of file StaticSymmetry.h.

Member Function Documentation

◆ apply() [1/2]

template<typename... Gen>
template<typename Op , typename RV , typename Index , std::size_t N, typename... Args>
static RV Eigen::StaticSGroup< Gen >::apply ( const std::array< Index, N > &  idx,
RV  initial,
Args &&...  args 
)
inlinestatic

Definition at line 197 of file StaticSymmetry.h.

◆ apply() [2/2]

template<typename... Gen>
template<typename Op , typename RV , typename Index , typename... Args>
static RV Eigen::StaticSGroup< Gen >::apply ( const std::vector< Index > &  idx,
RV  initial,
Args &&...  args 
)
inlinestatic

Definition at line 203 of file StaticSymmetry.h.

◆ globalFlags()

template<typename... Gen>
static constexpr int Eigen::StaticSGroup< Gen >::globalFlags ( )
inlinestatic

Definition at line 214 of file StaticSymmetry.h.

◆ operator()() [1/2]

template<typename... Gen>
template<typename Tensor_ , typename... IndexTypes>
internal::tensor_symmetry_value_setter<Tensor_, StaticSGroup<Gen...> > Eigen::StaticSGroup< Gen >::operator() ( Tensor_ &  tensor,
typename Tensor_::Index  firstIndex,
IndexTypes...  otherIndices 
) const
inline

Definition at line 217 of file StaticSymmetry.h.

◆ operator()() [2/2]

template<typename... Gen>
template<typename Tensor_ >
internal::tensor_symmetry_value_setter<Tensor_, StaticSGroup<Gen...> > Eigen::StaticSGroup< Gen >::operator() ( Tensor_ &  tensor,
std::array< typename Tensor_::Index, Tensor_::NumIndices > const &  indices 
) const
inline

Definition at line 224 of file StaticSymmetry.h.

◆ size()

template<typename... Gen>
static constexpr std::size_t Eigen::StaticSGroup< Gen >::size ( )
inlinestatic

Definition at line 211 of file StaticSymmetry.h.

Member Data Documentation

◆ NumIndices

template<typename... Gen>
constexpr std::size_t Eigen::StaticSGroup< Gen >::NumIndices = internal::tensor_symmetry_num_indices<Gen...>::value
staticprivate

Definition at line 183 of file StaticSymmetry.h.

◆ static_size

template<typename... Gen>
constexpr std::size_t Eigen::StaticSGroup< Gen >::static_size = ge::count
static

Definition at line 209 of file StaticSymmetry.h.


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


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:43:33