Go to the documentation of this file.
10 #ifndef EIGEN_CXX11_TENSORSYMMETRY_DYNAMICSYMMETRY_H
11 #define EIGEN_CXX11_TENSORSYMMETRY_DYNAMICSYMMETRY_H
24 void add(
int one,
int two,
int flags = 0);
26 template<
typename Gen_>
27 inline void add(Gen_) {
add(Gen_::One, Gen_::Two, Gen_::Flags); }
33 template<
typename Op,
typename RV,
typename Index,
std::size_t N,
typename... Args>
36 eigen_assert(
N >=
m_numIndices &&
"Can only apply symmetry group to objects that have at least the required amount of indices.");
42 template<
typename Op,
typename RV,
typename Index,
typename... Args>
45 eigen_assert(idx.size() >=
m_numIndices &&
"Can only apply symmetry group to objects that have at least the required amount of indices.");
54 template<
typename Tensor_,
typename... IndexTypes>
57 static_assert(
sizeof...(otherIndices) + 1 == Tensor_::NumIndices,
"Number of indices used to access a tensor coefficient must be equal to the rank of the tensor.");
58 return operator()(tensor, std::array<typename Tensor_::Index, Tensor_::NumIndices>{{firstIndex, otherIndices...}});
61 template<
typename Tensor_>
96 template<
typename Index>
100 result.reserve(idx.size());
101 for (
auto k :
m_elements[which].representation)
115 result.representation.push_back(
g.two);
117 result.representation.push_back(
g.one);
119 result.representation.push_back(
int(k));
124 GroupElement
mul(GroupElement, GroupElement)
const;
143 if (ee.representation ==
e.representation)
144 return ee.flags ^
e.flags;
153 template<
typename... Gen>
167 template<
typename Gen1,
typename... GenNext>
187 int v =
g2.representation[
g1.representation[
i]];
189 result.representation.push_back(
v);
204 gelem.representation.reserve(newNumIndices);
206 gelem.representation.push_back(
i);
256 coset_rep += coset_order;
262 switch (flagDiffOfSameGenerator) {
289 #endif // EIGEN_CXX11_TENSORSYMMETRY_DYNAMICSYMMETRY_H
GroupElement mul(GroupElement g1, Generator g2) const
Namespace containing all symbols from the Eigen library.
std::vector< GroupElement > m_elements
Array< double, 1, 3 > e(1./3., 0.5, 2.)
std::array< Index, N > h_permute(std::size_t which, const std::array< Index, N > &idx, internal::numeric_list< int, n... >) const
Pose3 g1(Rot3(), Point3(100.0, 0.0, 300.0))
DynamicSGroupFromTemplateArgs(DynamicSGroupFromTemplateArgs const &other)
DynamicSGroup & operator=(const DynamicSGroup &o)
DynamicSGroupFromTemplateArgs< Gen... > & operator=(const DynamicSGroupFromTemplateArgs< Gen... > &o)
std::vector< int > representation
void updateGlobalFlags(int flagDiffOfSameGenerator)
DynamicSGroupFromTemplateArgs()
#define eigen_internal_assert(x)
void add_all(internal::type_list<>)
DynamicSGroup(const DynamicSGroup &o)
GroupElement ge(Generator const &g) const
Pose3 g2(g1.expmap(h *V1_g1))
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroup > operator()(Tensor_ &tensor, typename Tensor_::Index firstIndex, IndexTypes... otherIndices) const
void add(int one, int two, int flags=0)
DynamicSGroupFromTemplateArgs(DynamicSGroupFromTemplateArgs &&other)
std::vector< Index > h_permute(std::size_t which, std::vector< Index > idx) const
void swap(GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &a, GeographicLib::NearestNeighbor< dist_t, pos_t, distfun_t > &b)
void addHermiticity(int one, int two)
int findElement(GroupElement e) const
void addAntiSymmetry(int one, int two)
GroupElement mul(Generator g1, Generator g2) const
void g(const string &key, int i)
DynamicSGroup & operator=(DynamicSGroup &&o)
RV apply(const std::vector< Index > &idx, RV initial, Args &&... args) const
constexpr Generator(int one_, int two_, int flags_)
GroupElement mul(GroupElement, GroupElement) const
internal::tensor_symmetry_value_setter< Tensor_, DynamicSGroup > operator()(Tensor_ &tensor, std::array< typename Tensor_::Index, Tensor_::NumIndices > const &indices) const
DynamicSGroup(DynamicSGroup &&o)
RV apply(const std::array< Index, N > &idx, RV initial, Args &&... args) const
GroupElement mul(Generator g1, GroupElement g2) const
void add_all(internal::type_list< Gen1, GenNext... >)
Array< int, Dynamic, 1 > v
DynamicSGroupFromTemplateArgs< Gen... > & operator=(DynamicSGroupFromTemplateArgs< Gen... > &&o)
std::vector< Generator > m_generators
void addSymmetry(int one, int two)
void addAntiHermiticity(int one, int two)
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
gtsam
Author(s):
autogenerated on Fri Nov 1 2024 03:32:27