10 #ifndef EIGEN_CXX11_TENSORSYMMETRY_TEMPLATEGROUPTHEORY_H 11 #define EIGEN_CXX11_TENSORSYMMETRY_TEMPLATEGROUPTHEORY_H 17 namespace group_theory {
119 template<
template<
typename,
typename>
class Equality,
typename id,
typename L>
struct strip_identities;
122 template<
typename,
typename>
class Equality,
130 Equality<id, t>::value,
138 template<
typename,
typename>
class Equality,
145 constexpr
static int global_flags = 0;
162 template<
typename,
typename>
class Multiply,
163 template<
typename,
typename>
class Equality,
166 typename current_element,
168 bool dont_add_current_element
176 typename Multiply<current_element, g>::type,
177 typename concat<elements, type_list<current_element>>::type,
178 Equality<typename Multiply<current_element, g>::type, id>::value
182 template<
typename,
typename>
class Multiply,
183 template<
typename,
typename>
class Equality,
186 typename current_element,
192 constexpr
static int global_flags = Equality<current_element, id>::global_flags;
209 template<
typename,
typename>
class Multiply,
210 template<
typename,
typename>
class Equality,
229 typedef typename helper::type
type;
230 constexpr
static int global_flags = helper::global_flags;
254 template<
typename,
typename>
class Multiply,
255 typename sub_group_elements,
256 typename new_coset_rep,
261 typedef typename apply_op_from_right<Multiply, new_coset_rep, sub_group_elements>::type
type;
265 template<
typename,
typename>
class Multiply,
266 typename sub_group_elements,
267 typename new_coset_rep
289 template<
typename,
typename>
class Multiply,
290 template<
typename,
typename>
class Equality,
292 typename sub_group_elements,
295 typename rep_element,
301 template<
typename,
typename>
class Multiply,
302 template<
typename,
typename>
class Equality,
304 typename sub_group_elements,
308 typename rep_element,
314 typedef contained_in_list_gf<Equality, new_coset_rep, elements>
_cil;
315 constexpr
static bool add_coset = !_cil::value;
329 typename concat<elements, coset_elements>::type,
335 typedef typename _helper::type
type;
336 constexpr
static int global_flags = _cil::global_flags | _helper::global_flags;
347 template<
typename,
typename>
class Multiply,
348 template<
typename,
typename>
class Equality,
350 typename sub_group_elements,
353 typename rep_element,
359 constexpr
static int global_flags = 0;
377 template<
typename,
typename>
class Multiply,
378 template<
typename,
typename>
class Equality,
380 typename sub_group_elements,
398 sub_group_elements::count
402 constexpr
static int new_rep_pos = rep_pos + sub_group_elements::count;
403 constexpr
static bool new_stop_condition = new_rep_pos >= new_elements::count;
418 constexpr
static int global_flags = _helper::global_flags | _ac4r::global_flags;
422 template<
typename,
typename>
class Multiply,
423 template<
typename,
typename>
class Equality,
425 typename sub_group_elements,
434 constexpr
static int global_flags = 0;
450 template<
typename,
typename>
class Multiply,
451 template<
typename,
typename>
class Equality,
454 typename generators_done,
455 typename current_generator,
465 typedef typename concat<elements, multiplied_elements>::type
new_elements;
467 constexpr
static int rep_pos = elements::count;
475 typename concat<generators_done, type_list<current_generator>>
::type,
481 constexpr
static int global_flags = _helper::global_flags;
485 template<
typename,
typename>
class Multiply,
486 template<
typename,
typename>
class Equality,
489 typename generators_done,
490 typename current_generator
496 constexpr
static int global_flags = 0;
512 template<
typename,
typename>
class Multiply,
513 template<
typename,
typename>
class Equality,
515 typename generators_done,
516 typename remaining_generators,
524 typedef contained_in_list_gf<Equality, first_generator, elements>
_cil;
542 typename concat<generators_done, type_list<first_generator>>
::type,
548 constexpr
static int global_flags =
550 _helper::global_flags |
551 _next_iter::global_flags;
555 template<
typename,
typename>
class Multiply,
556 template<
typename,
typename>
class Equality,
558 typename generators_done,
564 constexpr
static int global_flags = 0;
582 template<
typename,
typename>
class Multiply,
583 template<
typename,
typename>
class Equality,
586 int initial_global_flags = 0
603 constexpr
static int global_flags =
604 initial_global_flags |
605 first_step::global_flags |
606 _helper::global_flags;
611 template<
typename,
typename>
class Multiply,
612 template<
typename,
typename>
class Equality,
614 int initial_global_flags
619 constexpr
static int global_flags = initial_global_flags;
640 template<
typename,
typename>
class Multiply,
641 template<
typename,
typename>
class Equality,
650 typename strip_identities<Equality, id, _generators>::type,
651 strip_identities<Equality, id, _generators>::global_flags
662 #endif // EIGEN_CXX11_TENSORSYMMETRY_TEMPLATEGROUPTHEORY_H
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
contained_in_list_gf< Equality, first_generator, elements > _cil
get< 0, remaining_generators >::type first_generator
contained_in_list_gf< Equality, new_coset_rep, elements > _cil
apply_op_from_right< Multiply, current_generator, elements >::type multiplied_elements
dimino_first_step_elements_helper< Multiply, Equality, id, first_generator, first_generator, type_list< id >, false > helper
conditional< 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 type
type_list< first_generator > generators_done
dimino_add_remaining_generators< Multiply, Equality, id, typename first_step::generators_done, typename first_step::next_generators, typename first_step::type > _helper
dimino_add_cosets_for_rep< Multiply, Equality, id, sub_group_elements, elements, generators, rep_element, sub_group_elements::count > _ac4r
skip< 1, generators >::type next_generators
#define EIGEN_TPL_PP_SPEC_HACK_DEFC(mt, n)
concat< elements, multiplied_elements >::type new_elements
Multiply< rep_element, g >::type new_coset_rep
dimino_add_generator< Multiply, Equality, id, elements, generators_done, first_generator, _cil::value > _helper
dimino_add_remaining_generators< Multiply, Equality, id, typename concat< generators_done, type_list< first_generator > >::type, next_generators, new_elements > _next_iter
first_step::type first_step_elements
skip< 1, remaining_generators >::type next_generators
dimino_get_coset_elements< Multiply, sub_group_elements, new_coset_rep, add_coset >::type coset_elements
_helper::type new_elements
#define EIGEN_TPL_PP_SPEC_HACK_USE(n)
get< rep_pos, elements >::type rep_element
dimino_add_all_coset_spaces< Multiply, Equality, id, sub_group_elements, new_elements, generators, sub_group_size, new_rep_pos, new_stop_condition > _helper
get< 0, generators >::type first_generator
apply_op_from_right< Multiply, new_coset_rep, sub_group_elements >::type type
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
dimino_first_step_elements< Multiply, Equality, id, generators > first_step