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,
134 constexpr
static int global_flags = Equality<id, t>::global_flags |
strip_identities<Equality, id,
type_list<ts...>>::global_flags;
138 template<
typename,
typename>
class Equality,
140 EIGEN_TPL_PP_SPEC_HACK_DEFC(
typename, ts)
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,
191 typedef elements type;
192 constexpr
static int global_flags = Equality<current_element, id>::global_flags;
209 template<
typename,
typename>
class Multiply,
210 template<
typename,
typename>
class Equality,
217 typedef typename skip<1, generators>::type next_generators;
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,
313 typedef typename Multiply<rep_element, g>::type new_coset_rep;
314 typedef contained_in_list_gf<Equality, new_coset_rep, elements> _cil;
315 constexpr
static bool add_coset = !_cil::value;
322 >::type coset_elements;
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,
352 EIGEN_TPL_PP_SPEC_HACK_DEFC(
typename, empty),
353 typename rep_element,
358 typedef elements type;
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
400 typedef typename _ac4r::type new_elements;
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;
417 typedef typename _helper::type type;
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,
433 typedef elements type;
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,
464 typedef typename apply_op_from_right<Multiply, current_generator, elements>::type multiplied_elements;
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,
480 typedef typename _helper::type 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
495 typedef elements type;
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,
522 typedef typename skip<1, remaining_generators>::type next_generators;
524 typedef contained_in_list_gf<Equality, first_generator, elements> _cil;
536 typedef typename _helper::type new_elements;
542 typename concat<generators_done, type_list<first_generator>>::type,
547 typedef typename _next_iter::type 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,
563 typedef elements type;
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
591 typedef typename first_step::type first_step_elements;
598 typename first_step::next_generators,
599 typename first_step::type
602 typedef typename _helper::type type;
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 Definition: TemplateGroupTheory.h:214
Definition: TemplateGroupTheory.h:387
Definition: TemplateGroupTheory.h:170
Definition: EmulateCXX11Meta.h:27
Namespace containing all symbols from the Eigen library.
Definition: bench_norm.cpp:85
Definition: EmulateCXX11Meta.h:114
Definition: TemplateGroupTheory.h:645
Definition: TemplateGroupTheory.h:259
Definition: TemplateGroupTheory.h:298
Definition: BandTriangularSolver.h:13
Definition: TemplateGroupTheory.h:458
Definition: TemplateGroupTheory.h:588
Definition: TemplateGroupTheory.h:519
Generic expression where a coefficient-wise unary operator is applied to an expression.
Definition: CwiseUnaryOp.h:55
Definition: TemplateGroupTheory.h:119