Documentation of MARTY
A Modern ARtificial Theoretical phYsicist
groupIndices.h
Go to the documentation of this file.
1 // This file is part of MARTY.
2 //
3 // MARTY is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // MARTY is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with MARTY. If not, see <https://www.gnu.org/licenses/>.
15 
23 #ifndef GROUP_INDICES_H_INCLUDED
24 #define GROUP_INDICES_H_INCLUDED
25 
26 #include <array>
27 #include <vector>
28 #include "mrtError.h"
29 #include "mrtUtils.h"
30 #include "group.h"
31 
32 namespace mty {
33 
34 template<class Type, size_t N>
35  std::array<Type, N> toArray(
36  std::vector<Type> const &vec
37  )
38  {
39  HEPAssert(vec.size() == N,
40  mty::error::TypeError,
41  "Expecting a vector of size " + toString(N) + " in conversion"
42  ", vector of size " + toString(vec.size()) + " given.");
43  std::array<Type, N> res;
44  std::copy(vec.begin(), vec.end(), res.begin());
45  return res;
46  }
47 
48 bool isIndexZeroSU(
49  std::vector<int> const &rep,
50  size_t p
51  );
52 bool isIndexZeroEvenSO(
53  std::vector<int> const &rep,
54  size_t p
55  );
56 bool isIndexZeroOddSO(
57  std::vector<int> const &rep,
58  size_t p
59  );
60 bool isIndexZeroSp(
61  std::vector<int> const &rep,
62  size_t p
63  );
64 bool isIndexZeroE6(
65  std::vector<int> const &rep,
66  size_t p
67  );
68 bool isIndexZeroE7(
69  std::vector<int> const &rep,
70  size_t p
71  );
72 bool isIndexZeroE8(
73  std::vector<int> const &rep,
74  size_t p
75  );
76 bool isIndexZeroF4(
77  std::vector<int> const &rep,
78  size_t p
79  );
80 bool isIndexZeroG2(
81  std::vector<int> const &rep,
82  size_t p
83  );
84 
85 csl::Expr getIndexNorm(
86  algebra::Type algebra,
87  std::vector<int> const &rep,
88  size_t n
89  );
90 csl::Expr getSUIndexNorm(
91  std::vector<int> const &rep,
92  size_t n
93  );
94 csl::Expr getEvenSOIndexNorm(
95  std::vector<int> const &rep,
96  size_t n
97  );
98 csl::Expr getOddSOIndexNorm(
99  std::vector<int> const &rep,
100  size_t n
101  );
102 csl::Expr getSpIndexNorm(
103  std::vector<int> const &rep,
104  size_t n
105  );
106 csl::Expr getE6IndexNorm(
107  std::vector<int> const &rep,
108  size_t n
109  );
110 csl::Expr getE7IndexNorm(
111  std::vector<int> const &rep,
112  size_t n
113  );
114 csl::Expr getE8IndexNorm(
115  std::vector<int> const &rep,
116  size_t n
117  );
118 csl::Expr getF4IndexNorm(
119  std::vector<int> const &rep,
120  size_t n
121  );
122 csl::Expr getG2IndexNorm(
123  std::vector<int> const &rep,
124  size_t n
125  );
126 
127 csl::Expr getIndex(
128  algebra::Type algebra,
129  std::vector<int> const &rep,
130  size_t n
131  );
132 csl::Expr getSUIndex(
133  std::vector<int> const &rep,
134  size_t n
135  );
136 csl::Expr getEvenSOIndex(
137  std::vector<int> const &rep,
138  size_t n
139  );
140 csl::Expr getOddSOIndex(
141  std::vector<int> const &rep,
142  size_t n
143  );
144 csl::Expr getLastEvenSOIndex(
145  std::vector<int> const &rep,
146  size_t n,
147  bool normalize = true
148  );
149 csl::Expr getSpIndex(
150  std::vector<int> const &rep,
151  size_t n
152  );
153 csl::Expr getE6Index(
154  std::vector<int> const &rep,
155  size_t n
156  );
157 csl::Expr getE7Index(
158  std::vector<int> const &rep,
159  size_t n
160  );
161 csl::Expr getE8Index(
162  std::vector<int> const &rep,
163  size_t n
164  );
165 csl::Expr getF4Index(
166  std::vector<int> const &rep,
167  size_t n
168  );
169 csl::Expr getG2Index(
170  std::vector<int> const &rep,
171  size_t n
172  );
173 
174 // All the following indices are taken from
175 // Source : arXiv:hep-ph/9802376v1 (20 feb 1998)
176 // Further indices have not been taken into account here but appear in the
177 // mentionned paper (could be therefore added if needed):
178 // For E7: I_14 and I_18
179 // For E8: I_14, I_18, I_20, I_24 and I_30
180 
182 /*************************************************/
183 // E6 indices //
184 /*************************************************/
186 
187 template<size_t N>
188 using GIndex_t = std::pair<std::array<int, N>, long long int>;
189 
190 inline constexpr std::array<GIndex_t<6>, 12>
191  I2_E6_data =
192  {
193  GIndex_t<6>({ {1, 0, 0, 0, 0, 0}, 1 }),
194  GIndex_t<6>({ {0, 0, 0, 0, 1, 0}, 1 }),
195  GIndex_t<6>({ {0, 0, 0, 0, 0, 1}, 4 }),
196  GIndex_t<6>({ {0, 1, 0, 0, 0, 0}, 25 }),
197  GIndex_t<6>({ {0, 0, 0, 1, 0, 0}, 25 }),
198  GIndex_t<6>({ {0, 0, 0, 0, 2, 0}, 28 }),
199  GIndex_t<6>({ {2, 0, 0, 0, 0, 0}, 28 }),
200  GIndex_t<6>({ {1, 0, 0, 0, 1, 0}, 50 }),
201  GIndex_t<6>({ {0, 0, 0, 0, 1, 1}, 160 }),
202  GIndex_t<6>({ {1, 0, 0, 0, 0, 1}, 160 }),
203  GIndex_t<6>({ {0, 0, 0, 0, 0, 2}, 270 }),
204  GIndex_t<6>({ {0, 0, 1, 0, 0, 0}, 300 })
205  };
206 
207 inline constexpr std::array<GIndex_t<6>, 12>
208  I5_E6_data =
209  {
210  GIndex_t<6>({ {1, 0, 0, 0, 0, 0}, 1 }),
211  GIndex_t<6>({ {0, 0, 0, 0, 1, 0}, -1 }),
212  GIndex_t<6>({ {0, 0, 0, 0, 0, 1}, 0 }),
213  GIndex_t<6>({ {0, 1, 0, 0, 0, 0}, 11 }),
214  GIndex_t<6>({ {0, 0, 0, 1, 0, 0}, -11 }),
215  GIndex_t<6>({ {0, 0, 0, 0, 2, 0}, -44 }),
216  GIndex_t<6>({ {2, 0, 0, 0, 0, 0}, 44 }),
217  GIndex_t<6>({ {1, 0, 0, 0, 1, 0}, 0 }),
218  GIndex_t<6>({ {0, 0, 0, 0, 1, 1}, -88 }),
219  GIndex_t<6>({ {1, 0, 0, 0, 0, 1}, 88 }),
220  GIndex_t<6>({ {0, 0, 0, 0, 0, 2}, 0 }),
221  GIndex_t<6>({ {0, 0, 1, 0, 0, 0}, 0 })
222  };
223 
224 inline constexpr std::array<GIndex_t<6>, 12>
225  I6_E6_data =
226  {
227  GIndex_t<6>({ {1, 0, 0, 0, 0, 0}, 1 }),
228  GIndex_t<6>({ {0, 0, 0, 0, 1, 0}, 1 }),
229  GIndex_t<6>({ {0, 0, 0, 0, 0, 1}, -6 }),
230  GIndex_t<6>({ {0, 1, 0, 0, 0, 0}, -5 }),
231  GIndex_t<6>({ {0, 0, 0, 1, 0, 0}, -5 }),
232  GIndex_t<6>({ {0, 0, 0, 0, 2, 0}, 58 }),
233  GIndex_t<6>({ {2, 0, 0, 0, 0, 0}, 58 }),
234  GIndex_t<6>({ {1, 0, 0, 0, 1, 0}, 60 }),
235  GIndex_t<6>({ {0, 0, 0, 0, 1, 1}, -80 }),
236  GIndex_t<6>({ {1, 0, 0, 0, 0, 1}, -80 }),
237  GIndex_t<6>({ {0, 0, 0, 0, 0, 2}, -720 }),
238  GIndex_t<6>({ {0, 0, 1, 0, 0, 0}, -270 })
239  };
240 
241 inline constexpr std::array<GIndex_t<6>, 12>
242  I8_E6_data =
243  {
244  GIndex_t<6>({ {1, 0, 0, 0, 0, 0}, 1 }),
245  GIndex_t<6>({ {0, 0, 0, 0, 1, 0}, 1 }),
246  GIndex_t<6>({ {0, 0, 0, 0, 0, 1}, 18 }),
247  GIndex_t<6>({ {0, 1, 0, 0, 0, 0}, -101 }),
248  GIndex_t<6>({ {0, 0, 0, 1, 0, 0}, -101 }),
249  GIndex_t<6>({ {0, 0, 0, 0, 2, 0}, 154 }),
250  GIndex_t<6>({ {2, 0, 0, 0, 0, 0}, 154 }),
251  GIndex_t<6>({ {1, 0, 0, 0, 1, 0}, 36 }),
252  GIndex_t<6>({ {0, 0, 0, 0, 1, 1}, 664 }),
253  GIndex_t<6>({ {1, 0, 0, 0, 0, 1}, 664 }),
254  GIndex_t<6>({ {0, 0, 0, 0, 0, 2}, 3672 }),
255  GIndex_t<6>({ {0, 0, 1, 0, 0, 0}, -918 })
256  };
257 
258 inline constexpr std::array<GIndex_t<6>, 12>
259  I9_E6_data =
260  {
261  GIndex_t<6>({ {1, 0, 0, 0, 0, 0}, 1 }),
262  GIndex_t<6>({ {0, 0, 0, 0, 1, 0}, -1 }),
263  GIndex_t<6>({ {0, 0, 0, 0, 0, 1}, 0 }),
264  GIndex_t<6>({ {0, 1, 0, 0, 0, 0}, -229 }),
265  GIndex_t<6>({ {0, 0, 0, 1, 0, 0}, 229 }),
266  GIndex_t<6>({ {0, 0, 0, 0, 2, 0}, -284 }),
267  GIndex_t<6>({ {2, 0, 0, 0, 0, 0}, 284 }),
268  GIndex_t<6>({ {1, 0, 0, 0, 1, 0}, 0 }),
269  GIndex_t<6>({ {0, 0, 0, 0, 1, 1}, 152 }),
270  GIndex_t<6>({ {1, 0, 0, 0, 0, 1}, -152 }),
271  GIndex_t<6>({ {0, 0, 0, 0, 0, 2}, 0 }),
272  GIndex_t<6>({ {0, 0, 1, 0, 0, 0}, 0 })
273  };
274 
275 inline constexpr std::array<GIndex_t<6>, 12>
276  I12_E6_data =
277  {
278  GIndex_t<6>({ {1, 0, 0, 0, 0, 0}, 1 }),
279  GIndex_t<6>({ {0, 0, 0, 0, 1, 0}, 1 }),
280  GIndex_t<6>({ {0, 0, 0, 0, 0, 1}, -62 }),
281  GIndex_t<6>({ {0, 1, 0, 0, 0, 0}, -2021 }),
282  GIndex_t<6>({ {0, 0, 0, 1, 0, 0}, -2021 }),
283  GIndex_t<6>({ {0, 0, 0, 0, 2, 0}, 2074 }),
284  GIndex_t<6>({ {2, 0, 0, 0, 0, 0}, 2074 }),
285  GIndex_t<6>({ {1, 0, 0, 0, 1, 0}, 116 }),
286  GIndex_t<6>({ {0, 0, 0, 0, 1, 1}, 424 }),
287  GIndex_t<6>({ {1, 0, 0, 0, 0, 1}, 424 }),
288  GIndex_t<6>({ {0, 0, 0, 0, 0, 2}, -131928 }),
289  GIndex_t<6>({ {0, 0, 1, 0, 0, 0}, 122202 })
290  };
291 
293 /*************************************************/
294 // E7 indices //
295 /*************************************************/
297 
298 inline constexpr std::array<GIndex_t<7>, 21>
299  I2_E7_data =
300  {
301  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 0}, 1 }),
302  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 0}, 3 }),
303  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 1}, 30 }),
304  GIndex_t<7>({ {0, 0, 0, 0, 0, 2, 0}, 55 }),
305  GIndex_t<7>({ {0, 0, 0, 0, 1, 0, 0}, 54 }),
306  GIndex_t<7>({ {1, 0, 0, 0, 0, 1, 0}, 270 }),
307  GIndex_t<7>({ {2, 0, 0, 0, 0, 0, 0}, 351 }),
308  GIndex_t<7>({ {0, 1, 0, 0, 0, 0, 0}, 390 }),
309  GIndex_t<7>({ {0, 0, 0, 0, 0, 3, 0}, 1440 }),
310  GIndex_t<7>({ {0, 0, 0, 1, 0, 0, 0}, 1430 }),
311  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 1}, 2145 }),
312  GIndex_t<7>({ {0, 0, 0, 0, 1, 1, 0}, 2832 }),
313  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 1}, 4995 }),
314  GIndex_t<7>({ {1, 0, 0, 0, 0, 2, 0}, 9450 }),
315  GIndex_t<7>({ {1, 0, 0, 0, 1, 0, 0}, 9152 }),
316  GIndex_t<7>({ {3, 0, 0, 0, 0, 0, 0}, 17940 }),
317  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 2}, 17820 }),
318  GIndex_t<7>({ {0, 0, 0, 0, 0, 4, 0}, 24310 }),
319  GIndex_t<7>({ {2, 0, 0, 0, 0, 1, 0}, 21762 }),
320  GIndex_t<7>({ {0, 1, 0, 0, 0, 1, 0}, 23760 }),
321  GIndex_t<7>({ {0, 0, 1, 0, 0, 0, 0}, 24750 })
322  };
323 
324 inline constexpr std::array<GIndex_t<7>, 21>
325  I6_E7_data =
326  {
327  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 0}, 1 }),
328  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 0}, -2 }),
329  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 1}, -10 }),
330  GIndex_t<7>({ {0, 0, 0, 0, 0, 2, 0}, 90 }),
331  GIndex_t<7>({ {0, 0, 0, 0, 1, 0, 0}, 24 }),
332  GIndex_t<7>({ {1, 0, 0, 0, 0, 1, 0}, 30 }),
333  GIndex_t<7>({ {2, 0, 0, 0, 0, 0, 0}, -354 }),
334  GIndex_t<7>({ {0, 1, 0, 0, 0, 0, 0}, -200 }),
335  GIndex_t<7>({ {0, 0, 0, 0, 0, 3, 0}, 3600 }),
336  GIndex_t<7>({ {0, 0, 0, 1, 0, 0, 0}, -10 }),
337  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 1}, 530 }),
338  GIndex_t<7>({ {0, 0, 0, 0, 1, 1, 0}, 2872 }),
339  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 1}, -3165 }),
340  GIndex_t<7>({ {1, 0, 0, 0, 0, 2, 0}, 8400 }),
341  GIndex_t<7>({ {1, 0, 0, 0, 1, 0, 0}, -328 }),
342  GIndex_t<7>({ {3, 0, 0, 0, 0, 0, 0}, -26380 }),
343  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 2}, -9000 }),
344  GIndex_t<7>({ {0, 0, 0, 0, 0, 4, 0}, 88400 }),
345  GIndex_t<7>({ {2, 0, 0, 0, 0, 1, 0}, -9318 }),
346  GIndex_t<7>({ {0, 1, 0, 0, 0, 1, 0}, 600 }),
347  GIndex_t<7>({ {0, 0, 1, 0, 0, 0, 0}, -9000 })
348  };
349 
350 inline constexpr std::array<GIndex_t<7>, 21>
351  I8_E7_data =
352  {
353  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 0}, 1 }),
354  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 0}, 10 }),
355  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 1}, -82 }),
356  GIndex_t<7>({ {0, 0, 0, 0, 0, 2, 0}, 174 }),
357  GIndex_t<7>({ {0, 0, 0, 0, 1, 0, 0}, -72 }),
358  GIndex_t<7>({ {1, 0, 0, 0, 0, 1, 0}, 774 }),
359  GIndex_t<7>({ {2, 0, 0, 0, 0, 0, 0}, 2682 }),
360  GIndex_t<7>({ {0, 1, 0, 0, 0, 0, 0}, 40 }),
361  GIndex_t<7>({ {0, 0, 0, 0, 0, 3, 0}, 10176 }),
362  GIndex_t<7>({ {0, 0, 0, 1, 0, 0, 0}, -3442 }),
363  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 1}, -3658 }),
364  GIndex_t<7>({ {0, 0, 0, 0, 1, 1, 0}, 256 }),
365  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 1}, 963 }),
366  GIndex_t<7>({ {1, 0, 0, 0, 0, 2, 0}, 41328 }),
367  GIndex_t<7>({ {1, 0, 0, 0, 1, 0, 0}, 9320 }),
368  GIndex_t<7>({ {3, 0, 0, 0, 0, 0, 0}, 271676 }),
369  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 2}, -94824 }),
370  GIndex_t<7>({ {0, 0, 0, 0, 0, 4, 0}, 329888 }),
371  GIndex_t<7>({ {2, 0, 0, 0, 0, 1, 0}, 155826 }),
372  GIndex_t<7>({ {0, 1, 0, 0, 0, 1, 0}, 12672 }),
373  GIndex_t<7>({ {0, 0, 1, 0, 0, 0, 0}, -63240 })
374  };
375 
376 inline constexpr std::array<GIndex_t<7>, 21>
377  I10_E7_data =
378  {
379  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 0}, 1 }),
380  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 0}, -2 }),
381  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 1}, 230 }),
382  GIndex_t<7>({ {0, 0, 0, 0, 0, 2, 0}, 570 }),
383  GIndex_t<7>({ {0, 0, 0, 0, 1, 0, 0}, -456 }),
384  GIndex_t<7>({ {1, 0, 0, 0, 0, 1, 0}, -210 }),
385  GIndex_t<7>({ {2, 0, 0, 0, 0, 0, 0}, -834 }),
386  GIndex_t<7>({ {0, 1, 0, 0, 0, 0, 0}, 760 }),
387  GIndex_t<7>({ {0, 0, 0, 0, 0, 3, 0}, 50160 }),
388  GIndex_t<7>({ {0, 0, 0, 1, 0, 0, 0}, -7450 }),
389  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 1}, 13490 }),
390  GIndex_t<7>({ {0, 0, 0, 0, 1, 1, 0}, -16568 }),
391  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 1}, 36195 }),
392  GIndex_t<7>({ {1, 0, 0, 0, 0, 2, 0}, 59280 }),
393  GIndex_t<7>({ {1, 0, 0, 0, 1, 0, 0}, -78088 }),
394  GIndex_t<7>({ {3, 0, 0, 0, 0, 0, 0}, -116620 }),
395  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 2}, 404280 }),
396  GIndex_t<7>({ {0, 0, 0, 0, 0, 4, 0}, 2153840 }),
397  GIndex_t<7>({ {2, 0, 0, 0, 0, 1, 0}, -75318 }),
398  GIndex_t<7>({ {0, 1, 0, 0, 0, 1, 0}, 22440 }),
399  GIndex_t<7>({ {0, 0, 1, 0, 0, 0, 0}, 79800 })
400  };
401 
402 inline constexpr std::array<GIndex_t<7>, 21>
403  I12_E7_data =
404  {
405  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 0}, 1 }),
406  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 0}, -30 }),
407  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 1}, -2082 }),
408  GIndex_t<7>({ {0, 0, 0, 0, 0, 2, 0}, 2134 }),
409  GIndex_t<7>({ {0, 0, 0, 0, 1, 0, 0}, -1992 }),
410  GIndex_t<7>({ {1, 0, 0, 0, 0, 1, 0}, 534 }),
411  GIndex_t<7>({ {2, 0, 0, 0, 0, 0, 0}, -63438 }),
412  GIndex_t<7>({ {0, 1, 0, 0, 0, 0, 0}, 57480 }),
413  GIndex_t<7>({ {0, 0, 0, 0, 0, 3, 0}, 292896 }),
414  GIndex_t<7>({ {0, 0, 0, 1, 0, 0, 0}, 63998 }),
415  GIndex_t<7>({ {0, 0, 0, 0, 0, 1, 1}, -171138 }),
416  GIndex_t<7>({ {0, 0, 0, 0, 1, 1, 0}, -172464 }),
417  GIndex_t<7>({ {1, 0, 0, 0, 0, 0, 1}, -366717 }),
418  GIndex_t<7>({ {1, 0, 0, 0, 0, 2, 0}, 410928 }),
419  GIndex_t<7>({ {1, 0, 0, 0, 1, 0, 0}, -197560 }),
420  GIndex_t<7>({ {3, 0, 0, 0, 0, 0, 0}, -13615284 }),
421  GIndex_t<7>({ {0, 0, 0, 0, 0, 0, 2}, -6024744 }),
422  GIndex_t<7>({ {0, 0, 0, 0, 0, 4, 0}, 17066368 }),
423  GIndex_t<7>({ {2, 0, 0, 0, 0, 1, 0}, -3178974 }),
424  GIndex_t<7>({ {0, 1, 0, 0, 0, 1, 0}, 3531792 }),
425  GIndex_t<7>({ {0, 0, 1, 0, 0, 0, 0}, 2601722601720 })
426  };
427 
429 /*************************************************/
430 // E8 indices //
431 /*************************************************/
433 
434 inline constexpr std::array<GIndex_t<8>, 29>
435  I2_E8_data =
436  {
437  GIndex_t<8>({ {1, 0, 0, 0, 0, 0, 0}, 1 }),
438  GIndex_t<8>({ {0, 0, 0, 0, 0, 1, 0}, 25 }),
439  GIndex_t<8>({ {2, 0, 0, 0, 0, 0, 0}, 225 }),
440  GIndex_t<8>({ {0, 1, 0, 0, 0, 0, 0}, 245 }),
441  GIndex_t<8>({ {0, 0, 0, 0, 0, 0, 1}, 1425 }),
442  GIndex_t<8>({ {1, 0, 0, 0, 0, 1, 0}, 8379 }),
443  GIndex_t<8>({ {3, 0, 0, 0, 0, 0, 0}, 22750 }),
444  GIndex_t<8>({ {0, 0, 1, 0, 0, 0, 0}, 29640 }),
445  GIndex_t<8>({ {1, 1, 0, 0, 0, 0, 0}, 51200 }),
446  GIndex_t<8>({ {0, 0, 0, 0, 0, 2, 0}, 65610 }),
447  GIndex_t<8>({ {0, 0, 0, 0, 1, 0, 0}, 88200 }),
448  GIndex_t<8>({ {1, 0, 0, 0, 0, 0, 1}, 372736 }),
449  GIndex_t<8>({ {2, 0, 0, 0, 0, 1, 0}, 1083000 }),
450  GIndex_t<8>({ {0, 1, 0, 0, 0, 1, 0}, 1148175 }),
451  GIndex_t<8>({ {4, 0, 0, 0, 0, 0, 0}, 1404150 }),
452  GIndex_t<8>({ {0, 0, 0, 1, 0, 0, 0}, 2360085 }),
453  GIndex_t<8>({ {0, 2, 0, 0, 0, 0, 0}, 3441375 }),
454  GIndex_t<8>({ {2, 1, 0, 0, 0, 0, 0}, 4843800 }),
455  GIndex_t<8>({ {0, 0, 0, 0, 0, 1, 1}, 5068800 }),
456  GIndex_t<8>({ {1, 0, 1, 0, 0, 0, 0}, 5740875 }),
457  GIndex_t<8>({ {1, 0, 0, 0, 0, 2, 0}, 14773500 }),
458  GIndex_t<8>({ {1, 0, 0, 0, 1, 0, 0}, 19426550 }),
459  GIndex_t<8>({ {2, 0, 0, 0, 0, 0, 1}, 40883535 }),
460  GIndex_t<8>({ {0, 1, 0, 0, 0, 0, 1}, 42214200 }),
461  GIndex_t<8>({ {0, 0, 0, 0, 0, 3, 0}, 60885500 }),
462  GIndex_t<8>({ {3, 0, 0, 0, 0, 1, 0}, 79228100 }),
463  GIndex_t<8>({ {0, 0, 0, 0, 0, 0, 2}, 83281275 }),
464  GIndex_t<8>({ {0, 0, 1, 0, 0, 1, 0}, 93400125 }),
465  GIndex_t<8>({ {0, 0, 0, 0, 1, 0, 0}, 139094340 })
466  };
467 
468 inline constexpr std::array<GIndex_t<8>, 29>
469  I8_E8_data =
470  {
471  GIndex_t<8>({ {1, 0, 0, 0, 0, 0, 0}, 1 }),
472  GIndex_t<8>({ {0, 0, 0, 0, 0, 1, 0}, -17 }),
473  GIndex_t<8>({ {2, 0, 0, 0, 0, 0, 0}, 393 }),
474  GIndex_t<8>({ {0, 1, 0, 0, 0, 0, 0}, 119 }),
475  GIndex_t<8>({ {0, 0, 0, 0, 0, 0, 1}, -801 }),
476  GIndex_t<8>({ {1, 0, 0, 0, 0, 1, 0}, 357 }),
477  GIndex_t<8>({ {3, 0, 0, 0, 0, 0, 0}, 64330 }),
478  GIndex_t<8>({ {0, 0, 1, 0, 0, 0, 0}, 576 }),
479  GIndex_t<8>({ {1, 1, 0, 0, 0, 0, 0}, 59264 }),
480  GIndex_t<8>({ {0, 0, 0, 0, 0, 2, 0}, -68202 }),
481  GIndex_t<8>({ {0, 0, 0, 0, 1, 0, 0}, -64176 }),
482  GIndex_t<8>({ {1, 0, 0, 0, 0, 0, 1}, 12544 }),
483  GIndex_t<8>({ {2, 0, 0, 0, 0, 1, 0}, 991440 }),
484  GIndex_t<8>({ {0, 1, 0, 0, 0, 1, 0}, -64071 }),
485  GIndex_t<8>({ {4, 0, 0, 0, 0, 0, 0}, 6100842 }),
486  GIndex_t<8>({ {0, 0, 0, 1, 0, 0, 0}, -942669 }),
487  GIndex_t<8>({ {0, 2, 0, 0, 0, 0, 0}, 3576615 }),
488  GIndex_t<8>({ {2, 1, 0, 0, 0, 0, 0}, 10500696 }),
489  GIndex_t<8>({ {0, 0, 0, 0, 0, 1, 1}, -4540800 }),
490  GIndex_t<8>({ {1, 0, 1, 0, 0, 0, 0}, 3591945 }),
491  GIndex_t<8>({ {1, 0, 0, 0, 0, 2, 0}, -7295820 }),
492  GIndex_t<8>({ {1, 0, 0, 0, 1, 0, 0}, -3552406 }),
493  GIndex_t<8>({ {2, 0, 0, 0, 0, 0, 1}, 36197469 }),
494  GIndex_t<8>({ {0, 1, 0, 0, 0, 0, 1}, -2179296 }),
495  GIndex_t<8>({ {0, 0, 0, 0, 0, 3, 0}, -95237740 }),
496  GIndex_t<8>({ {3, 0, 0, 0, 0, 1, 0}, 167887580 }),
497  GIndex_t<8>({ {0, 0, 0, 0, 0, 0, 2}, -77203203 }),
498  GIndex_t<8>({ {0, 0, 1, 0, 0, 1, 0}, -36251565 }),
499  GIndex_t<8>({ {0, 0, 0, 0, 1, 0, 0}, -107301348 })
500  };
501 
502 inline constexpr std::array<GIndex_t<8>, 29>
503  I12_E8_data =
504  {
505  GIndex_t<8>({ {1, 0, 0, 0, 0, 0, 0}, 1 }),
506  GIndex_t<8>({ {0, 0, 0, 0, 0, 1, 0}, 223 }),
507  GIndex_t<8>({ {2, 0, 0, 0, 0, 0, 0}, 2073 }),
508  GIndex_t<8>({ {0, 1, 0, 0, 0, 0, 0}, -1801 }),
509  GIndex_t<8>({ {0, 0, 0, 0, 0, 0, 1}, -3921 }),
510  GIndex_t<8>({ {1, 0, 0, 0, 0, 1, 0}, 64677 }),
511  GIndex_t<8>({ {3, 0, 0, 0, 0, 0, 0}, 653050 }),
512  GIndex_t<8>({ {0, 0, 1, 0, 0, 0, 0}, -300624 }),
513  GIndex_t<8>({ {1, 1, 0, 0, 0, 0, 0}, -176896 }),
514  GIndex_t<8>({ {0, 0, 0, 0, 0, 2, 0}, 1623078 }),
515  GIndex_t<8>({ {0, 0, 0, 0, 1, 0, 0}, 344544 }),
516  GIndex_t<8>({ {1, 0, 0, 0, 0, 0, 1}, -928256 }),
517  GIndex_t<8>({ {2, 0, 0, 0, 0, 1, 0}, 15398400 }),
518  GIndex_t<8>({ {0, 1, 0, 0, 0, 1, 0}, 732969 }),
519  GIndex_t<8>({ {4, 0, 0, 0, 0, 0, 0}, 97389402 }),
520  GIndex_t<8>({ {0, 0, 0, 1, 0, 0, 0}, -20062029 }),
521  GIndex_t<8>({ {0, 2, 0, 0, 0, 0, 0}, -53721225 }),
522  GIndex_t<8>({ {2, 1, 0, 0, 0, 0, 0}, 50453496 }),
523  GIndex_t<8>({ {0, 0, 0, 0, 0, 1, 1}, 36284160 }),
524  GIndex_t<8>({ {1, 0, 1, 0, 0, 0, 0}, -51773175 }),
525  GIndex_t<8>({ {1, 0, 0, 0, 0, 2, 0}, 368355300 }),
526  GIndex_t<8>({ {1, 0, 0, 0, 1, 0, 0}, 74388314 }),
527  GIndex_t<8>({ {2, 0, 0, 0, 0, 0, 1}, 182867949 }),
528  GIndex_t<8>({ {0, 1, 0, 0, 0, 0, 1}, -439704336 }),
529  GIndex_t<8>({ {0, 0, 0, 0, 0, 3, 0}, 3610174100 }),
530  GIndex_t<8>({ {3, 0, 0, 0, 0, 1, 0}, 2727186380 }),
531  GIndex_t<8>({ {0, 0, 0, 0, 0, 0, 2}, -459950403 }),
532  GIndex_t<8>({ {0, 0, 1, 0, 0, 1, 0}, -180072525 }),
533  GIndex_t<8>({ {0, 0, 0, 0, 1, 0, 0}, -484327668 })
534  };
535 
537 /*************************************************/
538 // F4 indices //
539 /*************************************************/
541 
542 inline constexpr std::array<GIndex_t<4>, 7>
543  I2_F4_data =
544  {
545  GIndex_t<4>({ {0, 0, 0, 1}, 1 }),
546  GIndex_t<4>({ {1, 0, 0, 0}, 3 }),
547  GIndex_t<4>({ {0, 0, 1, 0}, 21 }),
548  GIndex_t<4>({ {0, 0, 0, 2}, 27 }),
549  GIndex_t<4>({ {1, 0, 0, 1}, 108 }),
550  GIndex_t<4>({ {2, 0, 0, 0}, 135 }),
551  GIndex_t<4>({ {0, 1, 0, 0}, 147 })
552  };
553 
554 inline constexpr std::array<GIndex_t<4>, 7>
555  I6_F4_data =
556  {
557  GIndex_t<4>({ {0, 0, 0, 1}, 1 }),
558  GIndex_t<4>({ {1, 0, 0, 0}, -7 }),
559  GIndex_t<4>({ {0, 0, 1, 0}, 1 }),
560  GIndex_t<4>({ {0, 0, 0, 2}, 57 }),
561  GIndex_t<4>({ {1, 0, 0, 1}, -132 }),
562  GIndex_t<4>({ {2, 0, 0, 0}, -645 }),
563  GIndex_t<4>({ {0, 1, 0, 0}, -133 })
564  };
565 
566 inline constexpr std::array<GIndex_t<4>, 7>
567  I8_F4_data =
568  {
569  GIndex_t<4>({ {0, 0, 0, 1}, 1 }),
570  GIndex_t<4>({ {1, 0, 0, 0}, 17 }),
571  GIndex_t<4>({ {0, 0, 1, 0}, -119 }),
572  GIndex_t<4>({ {0, 0, 0, 2}, 153 }),
573  GIndex_t<4>({ {1, 0, 0, 1}, 612 }),
574  GIndex_t<4>({ {2, 0, 0, 0}, 2907 }),
575  GIndex_t<4>({ {0, 1, 0, 0}, -1309 })
576  };
577 
578 inline constexpr std::array<GIndex_t<4>, 7>
579  I12_F4_data =
580  {
581  GIndex_t<4>({ {0, 0, 0, 1}, 1 }),
582  GIndex_t<4>({ {1, 0, 0, 0}, -63 }),
583  GIndex_t<4>({ {0, 0, 1, 0}, -1959 }),
584  GIndex_t<4>({ {0, 0, 0, 2}, 2073 }),
585  GIndex_t<4>({ {1, 0, 0, 1}, 372 }),
586  GIndex_t<4>({ {2, 0, 0, 0}, -134373 }),
587  GIndex_t<4>({ {0, 1, 0, 0}, 125811 })
588  };
589 
591 /*************************************************/
592 // G2 indices //
593 /*************************************************/
595 
596 inline constexpr std::array<GIndex_t<2>, 16>
597  I2_G2_data =
598  {
599  GIndex_t<2>({ {0, 1}, 1 }),
600  GIndex_t<2>({ {1, 0}, 4 }),
601  GIndex_t<2>({ {0, 2}, 9 }),
602  GIndex_t<2>({ {1, 1}, 32 }),
603  GIndex_t<2>({ {0, 3}, 44 }),
604  GIndex_t<2>({ {2, 0}, 55 }),
605  GIndex_t<2>({ {0, 4}, 156 }),
606  GIndex_t<2>({ {1, 2}, 144 }),
607  GIndex_t<2>({ {3, 0}, 351 }),
608  GIndex_t<2>({ {2, 1}, 286 }),
609  GIndex_t<2>({ {0, 5}, 450 }),
610  GIndex_t<2>({ {1, 3}, 480 }),
611  GIndex_t<2>({ {0, 6}, 1122 }),
612  GIndex_t<2>({ {2, 2}, 972 }),
613  GIndex_t<2>({ {4, 0}, 1496 }),
614  GIndex_t<2>({ {3, 1}, 1472 })
615  };
616 
617 inline constexpr std::array<GIndex_t<2>, 16>
618  I6_G2_data =
619  {
620  GIndex_t<2>({ {0, 1}, 1 }),
621  GIndex_t<2>({ {1, 0}, -26 }),
622  GIndex_t<2>({ {0, 2}, 39 }),
623  GIndex_t<2>({ {1, 1}, -208 }),
624  GIndex_t<2>({ {0, 3}, 494 }),
625  GIndex_t<2>({ {2, 0}, -1235 }),
626  GIndex_t<2>({ {0, 4}, 3666 }),
627  GIndex_t<2>({ {1, 2}, -456 }),
628  GIndex_t<2>({ {3, 0}, -20709 }),
629  GIndex_t<2>({ {2, 1}, -7904 }),
630  GIndex_t<2>({ {0, 5}, 19500 }),
631  GIndex_t<2>({ {1, 3}, 2640 }),
632  GIndex_t<2>({ {0, 6}, 82212 }),
633  GIndex_t<2>({ {2, 2}, -27378 }),
634  GIndex_t<2>({ {4, 0}, -193324 }),
635  GIndex_t<2>({ {3, 1}, -109408 })
636  };
637 
638 } // End of namespace mty
639 
640 #endif
Group objects handling different possible symmetry groups. For now only semi-simple groups have repre...
Namespace of MARTY.
Definition: 2HDM.h:31
Type
Different types of semi-simple Lie algebras.
Definition: semiSimpleAlgebra.h:52