10 #ifndef EIGEN_CXX11_TENSORSYMMETRY_TEMPLATEGROUPTHEORY_H
11 #define EIGEN_CXX11_TENSORSYMMETRY_TEMPLATEGROUPTHEORY_H
14 #include "../InternalHeaderCheck.h"
20 namespace group_theory {
122 template <
template <
typename,
typename>
class Equality,
typename id,
typename L>
125 template <
template <
typename,
typename>
class Equality,
typename id,
typename t,
typename... ts>
127 typedef std::conditional_t<
131 constexpr
static int global_flags =
138 constexpr
static int global_flags = 0;
154 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
155 typename g,
typename current_element,
typename elements,
156 bool dont_add_current_element
159 #ifndef EIGEN_PARSED_BY_DOXYGEN
162 typename concat<elements, type_list<current_element>>::type,
163 Equality<typename Multiply<current_element, g>::type, id>::value> {
166 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
167 typename g,
typename current_element,
typename elements>
172 constexpr
static int global_flags = Equality<current_element, id>::global_flags;
188 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
222 template <
template <
typename,
typename>
class Multiply,
typename sub_group_elements,
typename new_coset_rep,
229 template <
template <
typename,
typename>
class Multiply,
typename sub_group_elements,
typename new_coset_rep>
248 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
249 typename sub_group_elements,
typename elements,
typename generators,
typename rep_element,
int sub_group_size>
252 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
253 typename sub_group_elements,
typename elements,
typename g,
typename... gs,
typename rep_element,
270 constexpr
static int global_flags = _cil::global_flags | _helper::global_flags;
280 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
282 typename rep_element,
int sub_group_size>
286 constexpr
static int global_flags = 0;
303 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
304 typename sub_group_elements,
typename elements,
typename generators,
int sub_group_size,
int rep_pos,
310 sub_group_elements::count>
314 constexpr
static int new_rep_pos = rep_pos + sub_group_elements::count;
325 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
326 typename sub_group_elements,
typename elements,
typename generators,
int sub_group_size,
int rep_pos>
345 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
346 typename elements,
typename generators_done,
typename current_generator,
357 constexpr
static int rep_pos = elements::count;
360 Multiply, Equality, id,
372 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
373 typename elements,
typename generators_done,
typename current_generator>
392 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
393 typename generators_done,
typename remaining_generators,
typename elements>
413 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
414 typename generators_done,
typename elements>
434 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
435 typename generators,
int initial_global_flags = 0>
451 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
452 int initial_global_flags>
475 template <
template <
typename,
typename>
class Multiply,
template <
typename,
typename>
class Equality,
typename id,
476 typename Generators_>
479 typename strip_identities<Equality, id, Generators_>::type,
480 strip_identities<Equality, id, Generators_>::global_flags> {};
#define EIGEN_TPL_PP_SPEC_HACK_USE(n)
Definition: CXX11Workarounds.h:73
#define EIGEN_TPL_PP_SPEC_HACK_DEFC(mt, n)
Definition: CXX11Workarounds.h:72
MatrixXd L
Definition: LLT_example.cpp:6
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:70
squared absolute value
Definition: GlobalFunctions.h:87
type
Definition: compute_granudrum_aor.py:141
Definition: Eigen_Colamd.h:49
t
Definition: plotPSD.py:36
Definition: MoreMeta.h:268
Definition: MoreMeta.h:87
Definition: MoreMeta.h:296
Definition: MoreMeta.h:202
elements type
Definition: TemplateGroupTheory.h:329
Recursive template for adding all coset spaces for a new generator.
Definition: TemplateGroupTheory.h:307
dimino_add_all_coset_spaces< Multiply, Equality, id, sub_group_elements, new_elements, generators, sub_group_size, new_rep_pos, new_stop_condition > _helper
Definition: TemplateGroupTheory.h:319
constexpr static bool new_stop_condition
Definition: TemplateGroupTheory.h:315
constexpr static int global_flags
Definition: TemplateGroupTheory.h:322
_helper::type type
Definition: TemplateGroupTheory.h:321
get< rep_pos, elements >::type rep_element
Definition: TemplateGroupTheory.h:308
dimino_add_cosets_for_rep< Multiply, Equality, id, sub_group_elements, elements, generators, rep_element, sub_group_elements::count > _ac4r
Definition: TemplateGroupTheory.h:311
constexpr static int new_rep_pos
Definition: TemplateGroupTheory.h:314
_ac4r::type new_elements
Definition: TemplateGroupTheory.h:312
elements type
Definition: TemplateGroupTheory.h:285
Multiply< rep_element, g >::type new_coset_rep
Definition: TemplateGroupTheory.h:257
dimino_add_cosets_for_rep< Multiply, Equality, id, sub_group_elements, typename concat< elements, coset_elements >::type, type_list< gs... >, rep_element, sub_group_size > _helper
Definition: TemplateGroupTheory.h:267
dimino_get_coset_elements< Multiply, sub_group_elements, new_coset_rep, add_coset >::type coset_elements
Definition: TemplateGroupTheory.h:262
contained_in_list_gf< Equality, new_coset_rep, elements > _cil
Definition: TemplateGroupTheory.h:258
_helper::type type
Definition: TemplateGroupTheory.h:269
Recursive template for adding coset spaces.
Definition: TemplateGroupTheory.h:250
elements type
Definition: TemplateGroupTheory.h:376
Enlarge the group by adding a new generator.
Definition: TemplateGroupTheory.h:349
apply_op_from_right< Multiply, current_generator, elements >::type multiplied_elements
Definition: TemplateGroupTheory.h:354
concat< elements, multiplied_elements >::type new_elements
Definition: TemplateGroupTheory.h:355
_helper::type type
Definition: TemplateGroupTheory.h:368
constexpr static int global_flags
Definition: TemplateGroupTheory.h:369
constexpr static int rep_pos
Definition: TemplateGroupTheory.h:357
dimino_add_all_coset_spaces< Multiply, Equality, id, elements, new_elements, typename concat< generators_done, type_list< current_generator > >::type, elements::count, rep_pos, false > _helper
Definition: TemplateGroupTheory.h:367
elements type
Definition: TemplateGroupTheory.h:416
Recursive template that adds all remaining generators to a group.
Definition: TemplateGroupTheory.h:394
get< 0, remaining_generators >::type first_generator
Definition: TemplateGroupTheory.h:395
_helper::type new_elements
Definition: TemplateGroupTheory.h:402
skip< 1, remaining_generators >::type next_generators
Definition: TemplateGroupTheory.h:396
dimino_add_generator< Multiply, Equality, id, elements, generators_done, first_generator, _cil::value > _helper
Definition: TemplateGroupTheory.h:400
_next_iter::type type
Definition: TemplateGroupTheory.h:409
constexpr static int global_flags
Definition: TemplateGroupTheory.h:410
contained_in_list_gf< Equality, first_generator, elements > _cil
Definition: TemplateGroupTheory.h:398
dimino_add_remaining_generators< Multiply, Equality, id, typename concat< generators_done, type_list< first_generator > >::type, next_generators, new_elements > _next_iter
Definition: TemplateGroupTheory.h:407
elements type
Definition: TemplateGroupTheory.h:171
Recursive template that adds powers of the first generator to the list of group elements.
Definition: TemplateGroupTheory.h:163
Add all powers of the first generator to the list of group elements.
Definition: TemplateGroupTheory.h:190
helper::type type
Definition: TemplateGroupTheory.h:198
dimino_first_step_elements_helper< Multiply, Equality, id, first_generator, first_generator, type_list< id >, false > helper
Definition: TemplateGroupTheory.h:197
skip< 1, generators >::type next_generators
Definition: TemplateGroupTheory.h:192
constexpr static int global_flags
Definition: TemplateGroupTheory.h:199
type_list< first_generator > generators_done
Definition: TemplateGroupTheory.h:193
get< 0, generators >::type first_generator
Definition: TemplateGroupTheory.h:191
type_list type
Definition: TemplateGroupTheory.h:231
Generate all elements of a specific coset.
Definition: TemplateGroupTheory.h:225
apply_op_from_right< Multiply, new_coset_rep, sub_group_elements >::type type
Definition: TemplateGroupTheory.h:226
type_list< id > type
Definition: TemplateGroupTheory.h:454
Helper template that implements group element enumeration.
Definition: TemplateGroupTheory.h:436
dimino_first_step_elements< Multiply, Equality, id, generators > first_step
Definition: TemplateGroupTheory.h:437
dimino_add_remaining_generators< Multiply, Equality, id, typename first_step::generators_done, typename first_step::next_generators, typename first_step::type > _helper
Definition: TemplateGroupTheory.h:444
_helper::type type
Definition: TemplateGroupTheory.h:446
constexpr static int global_flags
Definition: TemplateGroupTheory.h:447
first_step::type first_step_elements
Definition: TemplateGroupTheory.h:438
Enumerate all elements in a finite group.
Definition: TemplateGroupTheory.h:480
type_list type
Definition: TemplateGroupTheory.h:137
std::conditional_t< Equality< id, t >::value, typename strip_identities< Equality, id, type_list< ts... > >::type, typename concat< type_list< t >, typename strip_identities< Equality, id, type_list< ts... > >::type >::type > type
Definition: TemplateGroupTheory.h:130
Cleanse a list of group elements of the identity element.
Definition: TemplateGroupTheory.h:123
Definition: MoreMeta.h:192
Definition: MoreMeta.h:22