RAJA
RAJA provides a collection of platform portability abstractions for C++ HPC applications.
Permutations.hpp
Go to the documentation of this file.
1 
11 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
12 // Copyright (c) Lawrence Livermore National Security, LLC and other
13 // RAJA Project Developers. See top-level LICENSE and COPYRIGHT
14 // files for dates and other details. No copyright assignment is required
15 // to contribute to RAJA.
16 //
17 // SPDX-License-Identifier: (BSD-3-Clause)
18 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
19 
20 #ifndef RAJA_FORALLN_PERMUTATIONS_HPP
21 #define RAJA_FORALLN_PERMUTATIONS_HPP
22 
23 #include "RAJA/config.hpp"
24 
25 #include <array>
26 
27 #include "camp/camp.hpp"
28 
29 namespace RAJA
30 {
31 
32 template<typename Indices>
33 struct as_array;
34 
35 template<camp::idx_t... Indices>
36 struct as_array<camp::idx_seq<Indices...>>
37 {
38  static constexpr std::array<Index_type, sizeof...(Indices)> get()
39  {
40  return {{Indices...}};
41  }
42 };
43 
44 using PERM_I = camp::idx_seq<0>;
45 using PERM_IJ = camp::idx_seq<0, 1>;
46 using PERM_JI = camp::idx_seq<1, 0>;
47 using PERM_IJK = camp::idx_seq<0, 1, 2>;
48 using PERM_IKJ = camp::idx_seq<0, 2, 1>;
49 using PERM_JIK = camp::idx_seq<1, 0, 2>;
50 using PERM_JKI = camp::idx_seq<1, 2, 0>;
51 using PERM_KIJ = camp::idx_seq<2, 0, 1>;
52 using PERM_KJI = camp::idx_seq<2, 1, 0>;
53 using PERM_IJKL = camp::idx_seq<0, 1, 2, 3>;
54 using PERM_IJLK = camp::idx_seq<0, 1, 3, 2>;
55 using PERM_IKJL = camp::idx_seq<0, 2, 1, 3>;
56 using PERM_IKLJ = camp::idx_seq<0, 2, 3, 1>;
57 using PERM_ILJK = camp::idx_seq<0, 3, 1, 2>;
58 using PERM_ILKJ = camp::idx_seq<0, 3, 2, 1>;
59 using PERM_JIKL = camp::idx_seq<1, 0, 2, 3>;
60 using PERM_JILK = camp::idx_seq<1, 0, 3, 2>;
61 using PERM_JKIL = camp::idx_seq<1, 2, 0, 3>;
62 using PERM_JKLI = camp::idx_seq<1, 2, 3, 0>;
63 using PERM_JLIK = camp::idx_seq<1, 3, 0, 2>;
64 using PERM_JLKI = camp::idx_seq<1, 3, 2, 0>;
65 using PERM_KIJL = camp::idx_seq<2, 0, 1, 3>;
66 using PERM_KILJ = camp::idx_seq<2, 0, 3, 1>;
67 using PERM_KJIL = camp::idx_seq<2, 1, 0, 3>;
68 using PERM_KJLI = camp::idx_seq<2, 1, 3, 0>;
69 using PERM_KLIJ = camp::idx_seq<2, 3, 0, 1>;
70 using PERM_KLJI = camp::idx_seq<2, 3, 1, 0>;
71 using PERM_LIJK = camp::idx_seq<3, 0, 1, 2>;
72 using PERM_LIKJ = camp::idx_seq<3, 0, 2, 1>;
73 using PERM_LJIK = camp::idx_seq<3, 1, 0, 2>;
74 using PERM_LJKI = camp::idx_seq<3, 1, 2, 0>;
75 using PERM_LKIJ = camp::idx_seq<3, 2, 0, 1>;
76 using PERM_LKJI = camp::idx_seq<3, 2, 1, 0>;
77 using PERM_IJKLM = camp::idx_seq<0, 1, 2, 3, 4>;
78 using PERM_IJKML = camp::idx_seq<0, 1, 2, 4, 3>;
79 using PERM_IJLKM = camp::idx_seq<0, 1, 3, 2, 4>;
80 using PERM_IJLMK = camp::idx_seq<0, 1, 3, 4, 2>;
81 using PERM_IJMKL = camp::idx_seq<0, 1, 4, 2, 3>;
82 using PERM_IJMLK = camp::idx_seq<0, 1, 4, 3, 2>;
83 using PERM_IKJLM = camp::idx_seq<0, 2, 1, 3, 4>;
84 using PERM_IKJML = camp::idx_seq<0, 2, 1, 4, 3>;
85 using PERM_IKLJM = camp::idx_seq<0, 2, 3, 1, 4>;
86 using PERM_IKLMJ = camp::idx_seq<0, 2, 3, 4, 1>;
87 using PERM_IKMJL = camp::idx_seq<0, 2, 4, 1, 3>;
88 using PERM_IKMLJ = camp::idx_seq<0, 2, 4, 3, 1>;
89 using PERM_ILJKM = camp::idx_seq<0, 3, 1, 2, 4>;
90 using PERM_ILJMK = camp::idx_seq<0, 3, 1, 4, 2>;
91 using PERM_ILKJM = camp::idx_seq<0, 3, 2, 1, 4>;
92 using PERM_ILKMJ = camp::idx_seq<0, 3, 2, 4, 1>;
93 using PERM_ILMJK = camp::idx_seq<0, 3, 4, 1, 2>;
94 using PERM_ILMKJ = camp::idx_seq<0, 3, 4, 2, 1>;
95 using PERM_IMJKL = camp::idx_seq<0, 4, 1, 2, 3>;
96 using PERM_IMJLK = camp::idx_seq<0, 4, 1, 3, 2>;
97 using PERM_IMKJL = camp::idx_seq<0, 4, 2, 1, 3>;
98 using PERM_IMKLJ = camp::idx_seq<0, 4, 2, 3, 1>;
99 using PERM_IMLJK = camp::idx_seq<0, 4, 3, 1, 2>;
100 using PERM_IMLKJ = camp::idx_seq<0, 4, 3, 2, 1>;
101 using PERM_JIKLM = camp::idx_seq<1, 0, 2, 3, 4>;
102 using PERM_JIKML = camp::idx_seq<1, 0, 2, 4, 3>;
103 using PERM_JILKM = camp::idx_seq<1, 0, 3, 2, 4>;
104 using PERM_JILMK = camp::idx_seq<1, 0, 3, 4, 2>;
105 using PERM_JIMKL = camp::idx_seq<1, 0, 4, 2, 3>;
106 using PERM_JIMLK = camp::idx_seq<1, 0, 4, 3, 2>;
107 using PERM_JKILM = camp::idx_seq<1, 2, 0, 3, 4>;
108 using PERM_JKIML = camp::idx_seq<1, 2, 0, 4, 3>;
109 using PERM_JKLIM = camp::idx_seq<1, 2, 3, 0, 4>;
110 using PERM_JKLMI = camp::idx_seq<1, 2, 3, 4, 0>;
111 using PERM_JKMIL = camp::idx_seq<1, 2, 4, 0, 3>;
112 using PERM_JKMLI = camp::idx_seq<1, 2, 4, 3, 0>;
113 using PERM_JLIKM = camp::idx_seq<1, 3, 0, 2, 4>;
114 using PERM_JLIMK = camp::idx_seq<1, 3, 0, 4, 2>;
115 using PERM_JLKIM = camp::idx_seq<1, 3, 2, 0, 4>;
116 using PERM_JLKMI = camp::idx_seq<1, 3, 2, 4, 0>;
117 using PERM_JLMIK = camp::idx_seq<1, 3, 4, 0, 2>;
118 using PERM_JLMKI = camp::idx_seq<1, 3, 4, 2, 0>;
119 using PERM_JMIKL = camp::idx_seq<1, 4, 0, 2, 3>;
120 using PERM_JMILK = camp::idx_seq<1, 4, 0, 3, 2>;
121 using PERM_JMKIL = camp::idx_seq<1, 4, 2, 0, 3>;
122 using PERM_JMKLI = camp::idx_seq<1, 4, 2, 3, 0>;
123 using PERM_JMLIK = camp::idx_seq<1, 4, 3, 0, 2>;
124 using PERM_JMLKI = camp::idx_seq<1, 4, 3, 2, 0>;
125 using PERM_KIJLM = camp::idx_seq<2, 0, 1, 3, 4>;
126 using PERM_KIJML = camp::idx_seq<2, 0, 1, 4, 3>;
127 using PERM_KILJM = camp::idx_seq<2, 0, 3, 1, 4>;
128 using PERM_KILMJ = camp::idx_seq<2, 0, 3, 4, 1>;
129 using PERM_KIMJL = camp::idx_seq<2, 0, 4, 1, 3>;
130 using PERM_KIMLJ = camp::idx_seq<2, 0, 4, 3, 1>;
131 using PERM_KJILM = camp::idx_seq<2, 1, 0, 3, 4>;
132 using PERM_KJIML = camp::idx_seq<2, 1, 0, 4, 3>;
133 using PERM_KJLIM = camp::idx_seq<2, 1, 3, 0, 4>;
134 using PERM_KJLMI = camp::idx_seq<2, 1, 3, 4, 0>;
135 using PERM_KJMIL = camp::idx_seq<2, 1, 4, 0, 3>;
136 using PERM_KJMLI = camp::idx_seq<2, 1, 4, 3, 0>;
137 using PERM_KLIJM = camp::idx_seq<2, 3, 0, 1, 4>;
138 using PERM_KLIMJ = camp::idx_seq<2, 3, 0, 4, 1>;
139 using PERM_KLJIM = camp::idx_seq<2, 3, 1, 0, 4>;
140 using PERM_KLJMI = camp::idx_seq<2, 3, 1, 4, 0>;
141 using PERM_KLMIJ = camp::idx_seq<2, 3, 4, 0, 1>;
142 using PERM_KLMJI = camp::idx_seq<2, 3, 4, 1, 0>;
143 using PERM_KMIJL = camp::idx_seq<2, 4, 0, 1, 3>;
144 using PERM_KMILJ = camp::idx_seq<2, 4, 0, 3, 1>;
145 using PERM_KMJIL = camp::idx_seq<2, 4, 1, 0, 3>;
146 using PERM_KMJLI = camp::idx_seq<2, 4, 1, 3, 0>;
147 using PERM_KMLIJ = camp::idx_seq<2, 4, 3, 0, 1>;
148 using PERM_KMLJI = camp::idx_seq<2, 4, 3, 1, 0>;
149 using PERM_LIJKM = camp::idx_seq<3, 0, 1, 2, 4>;
150 using PERM_LIJMK = camp::idx_seq<3, 0, 1, 4, 2>;
151 using PERM_LIKJM = camp::idx_seq<3, 0, 2, 1, 4>;
152 using PERM_LIKMJ = camp::idx_seq<3, 0, 2, 4, 1>;
153 using PERM_LIMJK = camp::idx_seq<3, 0, 4, 1, 2>;
154 using PERM_LIMKJ = camp::idx_seq<3, 0, 4, 2, 1>;
155 using PERM_LJIKM = camp::idx_seq<3, 1, 0, 2, 4>;
156 using PERM_LJIMK = camp::idx_seq<3, 1, 0, 4, 2>;
157 using PERM_LJKIM = camp::idx_seq<3, 1, 2, 0, 4>;
158 using PERM_LJKMI = camp::idx_seq<3, 1, 2, 4, 0>;
159 using PERM_LJMIK = camp::idx_seq<3, 1, 4, 0, 2>;
160 using PERM_LJMKI = camp::idx_seq<3, 1, 4, 2, 0>;
161 using PERM_LKIJM = camp::idx_seq<3, 2, 0, 1, 4>;
162 using PERM_LKIMJ = camp::idx_seq<3, 2, 0, 4, 1>;
163 using PERM_LKJIM = camp::idx_seq<3, 2, 1, 0, 4>;
164 using PERM_LKJMI = camp::idx_seq<3, 2, 1, 4, 0>;
165 using PERM_LKMIJ = camp::idx_seq<3, 2, 4, 0, 1>;
166 using PERM_LKMJI = camp::idx_seq<3, 2, 4, 1, 0>;
167 using PERM_LMIJK = camp::idx_seq<3, 4, 0, 1, 2>;
168 using PERM_LMIKJ = camp::idx_seq<3, 4, 0, 2, 1>;
169 using PERM_LMJIK = camp::idx_seq<3, 4, 1, 0, 2>;
170 using PERM_LMJKI = camp::idx_seq<3, 4, 1, 2, 0>;
171 using PERM_LMKIJ = camp::idx_seq<3, 4, 2, 0, 1>;
172 using PERM_LMKJI = camp::idx_seq<3, 4, 2, 1, 0>;
173 using PERM_MIJKL = camp::idx_seq<4, 0, 1, 2, 3>;
174 using PERM_MIJLK = camp::idx_seq<4, 0, 1, 3, 2>;
175 using PERM_MIKJL = camp::idx_seq<4, 0, 2, 1, 3>;
176 using PERM_MIKLJ = camp::idx_seq<4, 0, 2, 3, 1>;
177 using PERM_MILJK = camp::idx_seq<4, 0, 3, 1, 2>;
178 using PERM_MILKJ = camp::idx_seq<4, 0, 3, 2, 1>;
179 using PERM_MJIKL = camp::idx_seq<4, 1, 0, 2, 3>;
180 using PERM_MJILK = camp::idx_seq<4, 1, 0, 3, 2>;
181 using PERM_MJKIL = camp::idx_seq<4, 1, 2, 0, 3>;
182 using PERM_MJKLI = camp::idx_seq<4, 1, 2, 3, 0>;
183 using PERM_MJLIK = camp::idx_seq<4, 1, 3, 0, 2>;
184 using PERM_MJLKI = camp::idx_seq<4, 1, 3, 2, 0>;
185 using PERM_MKIJL = camp::idx_seq<4, 2, 0, 1, 3>;
186 using PERM_MKILJ = camp::idx_seq<4, 2, 0, 3, 1>;
187 using PERM_MKJIL = camp::idx_seq<4, 2, 1, 0, 3>;
188 using PERM_MKJLI = camp::idx_seq<4, 2, 1, 3, 0>;
189 using PERM_MKLIJ = camp::idx_seq<4, 2, 3, 0, 1>;
190 using PERM_MKLJI = camp::idx_seq<4, 2, 3, 1, 0>;
191 using PERM_MLIJK = camp::idx_seq<4, 3, 0, 1, 2>;
192 using PERM_MLIKJ = camp::idx_seq<4, 3, 0, 2, 1>;
193 using PERM_MLJIK = camp::idx_seq<4, 3, 1, 0, 2>;
194 using PERM_MLJKI = camp::idx_seq<4, 3, 1, 2, 0>;
195 using PERM_MLKIJ = camp::idx_seq<4, 3, 2, 0, 1>;
196 using PERM_MLKJI = camp::idx_seq<4, 3, 2, 1, 0>;
197 
198 namespace internal
199 {
200 
201 
202 template<camp::idx_t I, camp::idx_t J, camp::idx_t N, typename Perm>
204 {
205  static constexpr camp::idx_t value =
206  camp::seq_at<J, Perm>::value == I
207  ? J
209 };
210 
211 template<camp::idx_t I, camp::idx_t N, typename Perm>
213 {
214  static constexpr camp::idx_t value = I;
215 };
216 
217 
218 template<typename Range, typename Perm>
220 
221 template<camp::idx_t... Range, camp::idx_t... Perm>
222 struct InversePermutationHelper<camp::idx_seq<Range...>, camp::idx_seq<Perm...>>
223 {
224  static_assert(sizeof...(Range) == sizeof...(Perm), "Fatal Error");
225  using type = camp::idx_seq<
227  0,
228  sizeof...(Range),
229  camp::idx_seq<Perm...>>::value...>;
230 };
231 
232 
233 } // namespace internal
234 
238 template<typename Perm>
240  camp::make_idx_seq_t<camp::size<Perm>::value>,
241  Perm>::type;
242 
243 } // namespace RAJA
244 
245 #endif /* RAJA_FORALLN_PERMUTATIONS_HPP */
Definition: AlignedRangeIndexSetBuilders.cpp:35
camp::idx_seq< 0, 3, 1, 4, 2 > PERM_ILJMK
Definition: Permutations.hpp:90
camp::idx_seq< 2, 4, 1, 3, 0 > PERM_KMJLI
Definition: Permutations.hpp:146
camp::idx_seq< 3, 0, 1, 2, 4 > PERM_LIJKM
Definition: Permutations.hpp:149
camp::idx_seq< 3, 1, 0, 2 > PERM_LJIK
Definition: Permutations.hpp:73
camp::idx_seq< 3, 4, 2, 1, 0 > PERM_LMKJI
Definition: Permutations.hpp:172
camp::idx_seq< 1, 2, 4, 3, 0 > PERM_JKMLI
Definition: Permutations.hpp:112
camp::idx_seq< 4, 2, 3, 1, 0 > PERM_MKLJI
Definition: Permutations.hpp:190
camp::idx_seq< 2, 0, 3, 1 > PERM_KILJ
Definition: Permutations.hpp:66
camp::idx_seq< 0, 2, 1, 3 > PERM_IKJL
Definition: Permutations.hpp:55
camp::idx_seq< 3, 2, 4, 1, 0 > PERM_LKMJI
Definition: Permutations.hpp:166
camp::idx_seq< 3, 4, 2, 0, 1 > PERM_LMKIJ
Definition: Permutations.hpp:171
camp::idx_seq< 0, 2, 1, 4, 3 > PERM_IKJML
Definition: Permutations.hpp:84
camp::idx_seq< 0, 3, 1, 2, 4 > PERM_ILJKM
Definition: Permutations.hpp:89
camp::idx_seq< 2, 3, 0, 4, 1 > PERM_KLIMJ
Definition: Permutations.hpp:138
camp::idx_seq< 4, 3, 2, 0, 1 > PERM_MLKIJ
Definition: Permutations.hpp:195
camp::idx_seq< 2, 4, 3, 0, 1 > PERM_KMLIJ
Definition: Permutations.hpp:147
camp::idx_seq< 3, 4, 1, 2, 0 > PERM_LMJKI
Definition: Permutations.hpp:170
camp::idx_seq< 1, 4, 0, 3, 2 > PERM_JMILK
Definition: Permutations.hpp:120
camp::idx_seq< 0, 3, 2, 1 > PERM_ILKJ
Definition: Permutations.hpp:58
camp::idx_seq< 2, 3, 0, 1, 4 > PERM_KLIJM
Definition: Permutations.hpp:137
camp::idx_seq< 1, 2, 4, 0, 3 > PERM_JKMIL
Definition: Permutations.hpp:111
camp::idx_seq< 2, 3, 4, 0, 1 > PERM_KLMIJ
Definition: Permutations.hpp:141
camp::idx_seq< 2, 3, 0, 1 > PERM_KLIJ
Definition: Permutations.hpp:69
camp::idx_seq< 0, 1, 4, 2, 3 > PERM_IJMKL
Definition: Permutations.hpp:81
camp::idx_seq< 0, 2, 3, 4, 1 > PERM_IKLMJ
Definition: Permutations.hpp:86
camp::idx_seq< 0, 1, 4, 3, 2 > PERM_IJMLK
Definition: Permutations.hpp:82
camp::idx_seq< 2, 0, 4, 3, 1 > PERM_KIMLJ
Definition: Permutations.hpp:130
camp::idx_seq< 4, 3, 0, 2, 1 > PERM_MLIKJ
Definition: Permutations.hpp:192
camp::idx_seq< 4, 3, 0, 1, 2 > PERM_MLIJK
Definition: Permutations.hpp:191
camp::idx_seq< 2, 3, 1, 0 > PERM_KLJI
Definition: Permutations.hpp:70
camp::idx_seq< 2, 0, 1 > PERM_KIJ
Definition: Permutations.hpp:51
camp::idx_seq< 4, 2, 0, 3, 1 > PERM_MKILJ
Definition: Permutations.hpp:186
camp::idx_seq< 3, 2, 1, 0, 4 > PERM_LKJIM
Definition: Permutations.hpp:163
camp::idx_seq< 1, 2, 3, 4, 0 > PERM_JKLMI
Definition: Permutations.hpp:110
camp::idx_seq< 4, 0, 1, 2, 3 > PERM_MIJKL
Definition: Permutations.hpp:173
camp::idx_seq< 2, 1, 0, 3 > PERM_KJIL
Definition: Permutations.hpp:67
camp::idx_seq< 3, 2, 1, 4, 0 > PERM_LKJMI
Definition: Permutations.hpp:164
camp::idx_seq< 1, 0, 3, 2 > PERM_JILK
Definition: Permutations.hpp:60
camp::idx_seq< 4, 1, 3, 2, 0 > PERM_MJLKI
Definition: Permutations.hpp:184
camp::idx_seq< 1, 3, 0, 4, 2 > PERM_JLIMK
Definition: Permutations.hpp:114
camp::idx_seq< 0, 4, 1, 3, 2 > PERM_IMJLK
Definition: Permutations.hpp:96
camp::idx_seq< 2, 0, 3, 4, 1 > PERM_KILMJ
Definition: Permutations.hpp:128
camp::idx_seq< 4, 3, 2, 1, 0 > PERM_MLKJI
Definition: Permutations.hpp:196
camp::idx_seq< 1, 4, 2, 0, 3 > PERM_JMKIL
Definition: Permutations.hpp:121
camp::idx_seq< 4, 2, 1, 0, 3 > PERM_MKJIL
Definition: Permutations.hpp:187
camp::idx_seq< 3, 0, 2, 1, 4 > PERM_LIKJM
Definition: Permutations.hpp:151
camp::idx_seq< 3, 0, 1, 2 > PERM_LIJK
Definition: Permutations.hpp:71
camp::idx_seq< 1, 0, 3, 4, 2 > PERM_JILMK
Definition: Permutations.hpp:104
camp::idx_seq< 0, 3, 2, 1, 4 > PERM_ILKJM
Definition: Permutations.hpp:91
camp::idx_seq< 2, 4, 0, 1, 3 > PERM_KMIJL
Definition: Permutations.hpp:143
camp::idx_seq< 3, 4, 1, 0, 2 > PERM_LMJIK
Definition: Permutations.hpp:169
camp::idx_seq< 1, 2, 0, 3, 4 > PERM_JKILM
Definition: Permutations.hpp:107
camp::idx_seq< 2, 1, 3, 0, 4 > PERM_KJLIM
Definition: Permutations.hpp:133
camp::idx_seq< 4, 0, 2, 1, 3 > PERM_MIKJL
Definition: Permutations.hpp:175
camp::idx_seq< 3, 2, 0, 1, 4 > PERM_LKIJM
Definition: Permutations.hpp:161
camp::idx_seq< 1, 0 > PERM_JI
Definition: Permutations.hpp:46
camp::idx_seq< 0, 1, 2, 3 > PERM_IJKL
Definition: Permutations.hpp:53
camp::idx_seq< 0, 3, 2, 4, 1 > PERM_ILKMJ
Definition: Permutations.hpp:92
camp::idx_seq< 3, 1, 2, 4, 0 > PERM_LJKMI
Definition: Permutations.hpp:158
camp::idx_seq< 4, 0, 3, 1, 2 > PERM_MILJK
Definition: Permutations.hpp:177
camp::idx_seq< 1, 2, 0 > PERM_JKI
Definition: Permutations.hpp:50
camp::idx_seq< 3, 1, 4, 2, 0 > PERM_LJMKI
Definition: Permutations.hpp:160
camp::idx_seq< 4, 2, 0, 1, 3 > PERM_MKIJL
Definition: Permutations.hpp:185
camp::idx_seq< 1, 3, 2, 0, 4 > PERM_JLKIM
Definition: Permutations.hpp:115
camp::idx_seq< 2, 1, 4, 3, 0 > PERM_KJMLI
Definition: Permutations.hpp:136
camp::idx_seq< 3, 0, 4, 1, 2 > PERM_LIMJK
Definition: Permutations.hpp:153
camp::idx_seq< 2, 0, 1, 4, 3 > PERM_KIJML
Definition: Permutations.hpp:126
camp::idx_seq< 1, 2, 3, 0 > PERM_JKLI
Definition: Permutations.hpp:62
camp::idx_seq< 1, 3, 2, 0 > PERM_JLKI
Definition: Permutations.hpp:64
camp::idx_seq< 0, 4, 2, 3, 1 > PERM_IMKLJ
Definition: Permutations.hpp:98
std::ptrdiff_t Index_type
Definition: types.hpp:226
camp::idx_seq< 4, 0, 1, 3, 2 > PERM_MIJLK
Definition: Permutations.hpp:174
camp::idx_seq< 4, 1, 3, 0, 2 > PERM_MJLIK
Definition: Permutations.hpp:183
camp::idx_seq< 0, 3, 1, 2 > PERM_ILJK
Definition: Permutations.hpp:57
camp::idx_seq< 1, 0, 2 > PERM_JIK
Definition: Permutations.hpp:49
camp::idx_seq< 3, 1, 0, 2, 4 > PERM_LJIKM
Definition: Permutations.hpp:155
camp::idx_seq< 0, 3, 4, 2, 1 > PERM_ILMKJ
Definition: Permutations.hpp:94
camp::idx_seq< 0, 1, 3, 2, 4 > PERM_IJLKM
Definition: Permutations.hpp:79
camp::idx_seq< 2, 1, 0, 4, 3 > PERM_KJIML
Definition: Permutations.hpp:132
camp::idx_seq< 0, 3, 4, 1, 2 > PERM_ILMJK
Definition: Permutations.hpp:93
camp::idx_seq< 2, 1, 4, 0, 3 > PERM_KJMIL
Definition: Permutations.hpp:135
camp::idx_seq< 3, 2, 0, 1 > PERM_LKIJ
Definition: Permutations.hpp:75
camp::idx_seq< 2, 1, 3, 0 > PERM_KJLI
Definition: Permutations.hpp:68
camp::idx_seq< 1, 4, 0, 2, 3 > PERM_JMIKL
Definition: Permutations.hpp:119
camp::idx_seq< 3, 4, 0, 1, 2 > PERM_LMIJK
Definition: Permutations.hpp:167
camp::idx_seq< 3, 1, 2, 0 > PERM_LJKI
Definition: Permutations.hpp:74
camp::idx_seq< 1, 0, 2, 4, 3 > PERM_JIKML
Definition: Permutations.hpp:102
camp::idx_seq< 4, 3, 1, 0, 2 > PERM_MLJIK
Definition: Permutations.hpp:193
camp::idx_seq< 2, 4, 0, 3, 1 > PERM_KMILJ
Definition: Permutations.hpp:144
camp::idx_seq< 2, 3, 1, 4, 0 > PERM_KLJMI
Definition: Permutations.hpp:140
camp::idx_seq< 0, 1, 2, 3, 4 > PERM_IJKLM
Definition: Permutations.hpp:77
camp::idx_seq< 4, 2, 1, 3, 0 > PERM_MKJLI
Definition: Permutations.hpp:188
camp::idx_seq< 1, 4, 3, 2, 0 > PERM_JMLKI
Definition: Permutations.hpp:124
camp::idx_seq< 1, 2, 0, 4, 3 > PERM_JKIML
Definition: Permutations.hpp:108
camp::idx_seq< 3, 1, 4, 0, 2 > PERM_LJMIK
Definition: Permutations.hpp:159
camp::idx_seq< 3, 2, 0, 4, 1 > PERM_LKIMJ
Definition: Permutations.hpp:162
camp::idx_seq< 0, 2, 4, 1, 3 > PERM_IKMJL
Definition: Permutations.hpp:87
camp::idx_seq< 4, 1, 2, 0, 3 > PERM_MJKIL
Definition: Permutations.hpp:181
camp::idx_seq< 1, 0, 2, 3 > PERM_JIKL
Definition: Permutations.hpp:59
camp::idx_seq< 1, 4, 3, 0, 2 > PERM_JMLIK
Definition: Permutations.hpp:123
camp::idx_seq< 0, 4, 1, 2, 3 > PERM_IMJKL
Definition: Permutations.hpp:95
camp::idx_seq< 0, 4, 3, 2, 1 > PERM_IMLKJ
Definition: Permutations.hpp:100
camp::idx_seq< 4, 3, 1, 2, 0 > PERM_MLJKI
Definition: Permutations.hpp:194
camp::idx_seq< 3, 1, 0, 4, 2 > PERM_LJIMK
Definition: Permutations.hpp:156
camp::idx_seq< 2, 0, 1, 3, 4 > PERM_KIJLM
Definition: Permutations.hpp:125
camp::idx_seq< 1, 0, 2, 3, 4 > PERM_JIKLM
Definition: Permutations.hpp:101
camp::idx_seq< 0, 2, 3, 1, 4 > PERM_IKLJM
Definition: Permutations.hpp:85
camp::idx_seq< 2, 4, 1, 0, 3 > PERM_KMJIL
Definition: Permutations.hpp:145
camp::idx_seq< 4, 0, 3, 2, 1 > PERM_MILKJ
Definition: Permutations.hpp:178
camp::idx_seq< 0, 2, 4, 3, 1 > PERM_IKMLJ
Definition: Permutations.hpp:88
camp::idx_seq< 4, 1, 0, 2, 3 > PERM_MJIKL
Definition: Permutations.hpp:179
camp::idx_seq< 4, 1, 2, 3, 0 > PERM_MJKLI
Definition: Permutations.hpp:182
camp::idx_seq< 1, 2, 3, 0, 4 > PERM_JKLIM
Definition: Permutations.hpp:109
camp::idx_seq< 1, 0, 4, 2, 3 > PERM_JIMKL
Definition: Permutations.hpp:105
camp::idx_seq< 1, 0, 4, 3, 2 > PERM_JIMLK
Definition: Permutations.hpp:106
camp::idx_seq< 2, 0, 4, 1, 3 > PERM_KIMJL
Definition: Permutations.hpp:129
camp::idx_seq< 3, 0, 4, 2, 1 > PERM_LIMKJ
Definition: Permutations.hpp:154
camp::idx_seq< 0, 1 > PERM_IJ
Definition: Permutations.hpp:45
camp::idx_seq< 3, 0, 2, 4, 1 > PERM_LIKMJ
Definition: Permutations.hpp:152
camp::idx_seq< 2, 1, 0, 3, 4 > PERM_KJILM
Definition: Permutations.hpp:131
camp::idx_seq< 1, 0, 3, 2, 4 > PERM_JILKM
Definition: Permutations.hpp:103
camp::idx_seq< 0 > PERM_I
Definition: Permutations.hpp:44
typename internal::InversePermutationHelper< camp::make_idx_seq_t< camp::size< Perm >::value >, Perm >::type invert_permutation
Definition: Permutations.hpp:241
camp::idx_seq< 3, 0, 1, 4, 2 > PERM_LIJMK
Definition: Permutations.hpp:150
camp::idx_seq< 1, 3, 2, 4, 0 > PERM_JLKMI
Definition: Permutations.hpp:116
camp::idx_seq< 2, 4, 3, 1, 0 > PERM_KMLJI
Definition: Permutations.hpp:148
camp::idx_seq< 2, 3, 4, 1, 0 > PERM_KLMJI
Definition: Permutations.hpp:142
camp::idx_seq< Ints... > Perm
Definition: PermutedLayout.hpp:101
camp::idx_seq< 0, 4, 3, 1, 2 > PERM_IMLJK
Definition: Permutations.hpp:99
camp::idx_seq< 3, 2, 1, 0 > PERM_LKJI
Definition: Permutations.hpp:76
camp::idx_seq< 2, 1, 0 > PERM_KJI
Definition: Permutations.hpp:52
camp::idx_seq< 0, 2, 1, 3, 4 > PERM_IKJLM
Definition: Permutations.hpp:83
camp::idx_seq< 1, 3, 0, 2 > PERM_JLIK
Definition: Permutations.hpp:63
camp::idx_seq< 1, 4, 2, 3, 0 > PERM_JMKLI
Definition: Permutations.hpp:122
camp::idx_seq< 3, 1, 2, 0, 4 > PERM_LJKIM
Definition: Permutations.hpp:157
camp::idx_seq< 2, 3, 1, 0, 4 > PERM_KLJIM
Definition: Permutations.hpp:139
camp::idx_seq< 0, 4, 2, 1, 3 > PERM_IMKJL
Definition: Permutations.hpp:97
camp::idx_seq< 3, 2, 4, 0, 1 > PERM_LKMIJ
Definition: Permutations.hpp:165
camp::idx_seq< 2, 0, 3, 1, 4 > PERM_KILJM
Definition: Permutations.hpp:127
camp::idx_seq< 0, 1, 2, 4, 3 > PERM_IJKML
Definition: Permutations.hpp:78
camp::idx_seq< 3, 4, 0, 2, 1 > PERM_LMIKJ
Definition: Permutations.hpp:168
camp::idx_seq< 2, 0, 1, 3 > PERM_KIJL
Definition: Permutations.hpp:65
camp::idx_seq< 4, 2, 3, 0, 1 > PERM_MKLIJ
Definition: Permutations.hpp:189
camp::idx_seq< 3, 0, 2, 1 > PERM_LIKJ
Definition: Permutations.hpp:72
camp::idx_seq< 0, 1, 2 > PERM_IJK
Definition: Permutations.hpp:47
camp::idx_seq< 1, 3, 4, 2, 0 > PERM_JLMKI
Definition: Permutations.hpp:118
camp::idx_seq< 1, 3, 0, 2, 4 > PERM_JLIKM
Definition: Permutations.hpp:113
camp::idx_seq< 0, 1, 3, 4, 2 > PERM_IJLMK
Definition: Permutations.hpp:80
camp::idx_seq< 1, 3, 4, 0, 2 > PERM_JLMIK
Definition: Permutations.hpp:117
camp::idx_seq< 4, 1, 0, 3, 2 > PERM_MJILK
Definition: Permutations.hpp:180
camp::idx_seq< 1, 2, 0, 3 > PERM_JKIL
Definition: Permutations.hpp:61
camp::idx_seq< 0, 2, 3, 1 > PERM_IKLJ
Definition: Permutations.hpp:56
camp::idx_seq< 4, 0, 2, 3, 1 > PERM_MIKLJ
Definition: Permutations.hpp:176
camp::idx_seq< 2, 1, 3, 4, 0 > PERM_KJLMI
Definition: Permutations.hpp:134
camp::idx_seq< 0, 2, 1 > PERM_IKJ
Definition: Permutations.hpp:48
camp::idx_seq< 0, 1, 3, 2 > PERM_IJLK
Definition: Permutations.hpp:54
static constexpr std::array< Index_type, sizeof...(Indices)> get()
Definition: Permutations.hpp:38
Definition: Permutations.hpp:33
Definition: Permutations.hpp:204
static constexpr camp::idx_t value
Definition: Permutations.hpp:205
camp::idx_seq< CalcInversePermutationElem< Range, 0, sizeof...(Range), camp::idx_seq< Perm... > >::value... > type
Definition: Permutations.hpp:229
Definition: Permutations.hpp:219