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
171 #ifndef EIGEN_PARSED_BY_DOXYGEN
178 typename Multiply<current_element, g>::type,
179 typename concat<elements, type_list<current_element>>::type,
180 Equality<typename Multiply<current_element, g>::type, id>::value
184 template<
typename,
typename>
class Multiply,
185 template<
typename,
typename>
class Equality,
188 typename current_element,
195 constexpr
static int global_flags = Equality<current_element, id>::global_flags;
212 template<
typename,
typename>
class Multiply,
213 template<
typename,
typename>
class Equality,
232 typedef typename helper::type
type;
257 template<
typename,
typename>
class Multiply,
258 typename sub_group_elements,
259 typename new_coset_rep,
264 typedef typename apply_op_from_right<Multiply, new_coset_rep, sub_group_elements>::type
type;
268 template<
typename,
typename>
class Multiply,
269 typename sub_group_elements,
270 typename new_coset_rep
292 template<
typename,
typename>
class Multiply,
293 template<
typename,
typename>
class Equality,
295 typename sub_group_elements,
298 typename rep_element,
304 template<
typename,
typename>
class Multiply,
305 template<
typename,
typename>
class Equality,
307 typename sub_group_elements,
311 typename rep_element,
317 typedef contained_in_list_gf<Equality, new_coset_rep, elements>
_cil;
318 constexpr
static bool add_coset = !_cil::value;
332 typename concat<elements, coset_elements>::type,
338 typedef typename _helper::type
type;
339 constexpr
static int global_flags = _cil::global_flags | _helper::global_flags;
350 template<
typename,
typename>
class Multiply,
351 template<
typename,
typename>
class Equality,
353 typename sub_group_elements,
356 typename rep_element,
362 constexpr
static int global_flags = 0;
380 template<
typename,
typename>
class Multiply,
381 template<
typename,
typename>
class Equality,
383 typename sub_group_elements,
401 sub_group_elements::count
405 constexpr
static int new_rep_pos = rep_pos + sub_group_elements::count;
425 template<
typename,
typename>
class Multiply,
426 template<
typename,
typename>
class Equality,
428 typename sub_group_elements,
453 template<
typename,
typename>
class Multiply,
454 template<
typename,
typename>
class Equality,
457 typename generators_done,
458 typename current_generator,
468 typedef typename concat<elements, multiplied_elements>::type
new_elements;
470 constexpr
static int rep_pos = elements::count;
478 typename concat<generators_done, type_list<current_generator>>
::type,
488 template<
typename,
typename>
class Multiply,
489 template<
typename,
typename>
class Equality,
492 typename generators_done,
493 typename current_generator
515 template<
typename,
typename>
class Multiply,
516 template<
typename,
typename>
class Equality,
518 typename generators_done,
519 typename remaining_generators,
527 typedef contained_in_list_gf<Equality, first_generator, elements>
_cil;
545 typename concat<generators_done, type_list<first_generator>>
::type,
558 template<
typename,
typename>
class Multiply,
559 template<
typename,
typename>
class Equality,
561 typename generators_done,
585 template<
typename,
typename>
class Multiply,
586 template<
typename,
typename>
class Equality,
589 int initial_global_flags = 0
607 initial_global_flags |
614 template<
typename,
typename>
class Multiply,
615 template<
typename,
typename>
class Equality,
617 int initial_global_flags
643 template<
typename,
typename>
class Multiply,
644 template<
typename,
typename>
class Equality,
653 typename strip_identities<Equality, id, _generators>::type,
654 strip_identities<Equality, id, _generators>::global_flags
665 #endif // EIGEN_CXX11_TENSORSYMMETRY_TEMPLATEGROUPTHEORY_H