1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: RelMRCI_tasks1.h
4 // Copyright (C) 2014 Toru Shiozaki
5 //
6 // Author: Toru Shiozaki <shiozaki@northwestern.edu>
7 // Maintainer: Shiozaki group
8 //
9 // This file is part of the BAGEL package.
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //
24
25 #include <bagel_config.h>
26 #ifdef COMPILE_SMITH
27
28 #include <src/smith/relmrci/RelMRCI_tasks1.h>
29
30 using namespace std;
31 using namespace bagel;
32 using namespace bagel::SMITH;
33 using namespace bagel::SMITH::RelMRCI;
34
Task0(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)35 Task0::Task0(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
36 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
37 out_ = t[0];
38 in_ = in;
39 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
40 for (auto& x0 : *range[1])
41 for (auto& x3 : *range[1])
42 for (auto& x1 : *range[1])
43 for (auto& x2 : *range[1])
44 if (t[0]->is_local(x0, x3, x1, x2))
45 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x3, x1, x2}}, in, t[0], range));
46 }
47
Task1(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)48 Task1::Task1(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
49 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
50 out_ = t[0];
51 in_ = in;
52 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
53 for (auto& x5 : *range[1])
54 for (auto& x4 : *range[1])
55 for (auto& x0 : *range[1])
56 for (auto& x3 : *range[1])
57 for (auto& x1 : *range[1])
58 for (auto& x2 : *range[1])
59 if (t[0]->is_local(x5, x4, x0, x3, x1, x2))
60 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x0, x3, x1, x2}}, in, t[0], range));
61 }
62
Task2(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)63 Task2::Task2(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
64 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
65 out_ = t[0];
66 in_ = in;
67 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
68 for (auto& x1 : *range[1])
69 for (auto& x3 : *range[1])
70 for (auto& x0 : *range[1])
71 for (auto& x2 : *range[1])
72 if (t[0]->is_local(x1, x3, x0, x2))
73 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, x3, x0, x2}}, in, t[0], range));
74 }
75
Task3(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)76 Task3::Task3(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
77 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
78 out_ = t[0];
79 in_ = in;
80 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
81 for (auto& x0 : *range[1])
82 for (auto& x5 : *range[1])
83 for (auto& x1 : *range[1])
84 for (auto& x4 : *range[1])
85 for (auto& x3 : *range[1])
86 for (auto& x2 : *range[1])
87 if (t[0]->is_local(x0, x5, x1, x4, x3, x2))
88 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x0, x5, x1, x4, x3, x2}}, in, t[0], range));
89 }
90
Task4(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)91 Task4::Task4(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
92 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
93 out_ = t[0];
94 in_ = in;
95 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
96 for (auto& x0 : *range[1])
97 for (auto& x5 : *range[1])
98 for (auto& x2 : *range[1])
99 for (auto& x4 : *range[1])
100 for (auto& x1 : *range[1])
101 for (auto& x3 : *range[1])
102 if (t[0]->is_local(x0, x5, x2, x4, x1, x3))
103 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x0, x5, x2, x4, x1, x3}}, in, t[0], range));
104 }
105
Task5(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)106 Task5::Task5(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
107 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
108 out_ = t[0];
109 in_ = in;
110 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
111 for (auto& x0 : *range[1])
112 for (auto& x5 : *range[1])
113 for (auto& x3 : *range[1])
114 for (auto& x4 : *range[1])
115 for (auto& x1 : *range[1])
116 for (auto& x2 : *range[1])
117 if (t[0]->is_local(x0, x5, x3, x4, x1, x2))
118 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x0, x5, x3, x4, x1, x2}}, in, t[0], range));
119 }
120
Task6(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)121 Task6::Task6(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
122 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
123 out_ = t[0];
124 in_ = in;
125 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
126 for (auto& x7 : *range[1])
127 for (auto& x6 : *range[1])
128 for (auto& x0 : *range[1])
129 for (auto& x5 : *range[1])
130 for (auto& x1 : *range[1])
131 for (auto& x4 : *range[1])
132 for (auto& x3 : *range[1])
133 for (auto& x2 : *range[1])
134 if (t[0]->is_local(x7, x6, x0, x5, x1, x4, x3, x2))
135 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x0, x5, x1, x4, x3, x2}}, in, t[0], range));
136 }
137
Task7(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)138 Task7::Task7(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
139 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
140 out_ = t[0];
141 in_ = in;
142 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
143 for (auto& x7 : *range[1])
144 for (auto& x6 : *range[1])
145 for (auto& x0 : *range[1])
146 for (auto& x5 : *range[1])
147 for (auto& x4 : *range[1])
148 for (auto& x3 : *range[1])
149 for (auto& x1 : *range[1])
150 for (auto& x2 : *range[1])
151 if (t[0]->is_local(x7, x6, x0, x5, x4, x3, x1, x2))
152 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x0, x5, x4, x3, x1, x2}}, in, t[0], range));
153 }
154
Task8(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)155 Task8::Task8(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
156 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
157 out_ = t[0];
158 in_ = in;
159 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
160 for (auto& x5 : *range[1])
161 for (auto& x4 : *range[1])
162 for (auto& x1 : *range[1])
163 for (auto& x3 : *range[1])
164 for (auto& x0 : *range[1])
165 for (auto& x2 : *range[1])
166 if (t[0]->is_local(x5, x4, x1, x3, x0, x2))
167 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x1, x3, x0, x2}}, in, t[0], range));
168 }
169
Task9(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)170 Task9::Task9(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
171 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
172 out_ = t[0];
173 in_ = in;
174 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
175 for (auto& x1 : *range[1])
176 for (auto& x5 : *range[1])
177 for (auto& x0 : *range[1])
178 for (auto& x4 : *range[1])
179 for (auto& x3 : *range[1])
180 for (auto& x2 : *range[1])
181 if (t[0]->is_local(x1, x5, x0, x4, x3, x2))
182 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x1, x5, x0, x4, x3, x2}}, in, t[0], range));
183 }
184
Task10(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)185 Task10::Task10(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
186 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
187 out_ = t[0];
188 in_ = in;
189 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
190 for (auto& x1 : *range[1])
191 for (auto& x5 : *range[1])
192 for (auto& x4 : *range[1])
193 for (auto& x3 : *range[1])
194 for (auto& x0 : *range[1])
195 for (auto& x2 : *range[1])
196 if (t[0]->is_local(x1, x5, x4, x3, x0, x2))
197 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x1, x5, x4, x3, x0, x2}}, in, t[0], range));
198 }
199
Task11(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)200 Task11::Task11(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
201 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
202 out_ = t[0];
203 in_ = in;
204 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
205 for (auto& x2 : *range[1])
206 for (auto& x5 : *range[1])
207 for (auto& x3 : *range[1])
208 for (auto& x4 : *range[1])
209 for (auto& x1 : *range[1])
210 for (auto& x0 : *range[1])
211 if (t[0]->is_local(x2, x5, x3, x4, x1, x0))
212 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x2, x5, x3, x4, x1, x0}}, in, t[0], range));
213 }
214
Task12(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)215 Task12::Task12(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
216 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
217 out_ = t[0];
218 in_ = in;
219 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
220 for (auto& x5 : *range[1])
221 for (auto& x4 : *range[1])
222 for (auto& x2 : *range[1])
223 for (auto& x3 : *range[1])
224 for (auto& x1 : *range[1])
225 for (auto& x0 : *range[1])
226 if (t[0]->is_local(x5, x4, x2, x3, x1, x0))
227 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x2, x3, x1, x0}}, in, t[0], range));
228 }
229
Task13(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)230 Task13::Task13(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
231 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
232 out_ = t[0];
233 in_ = in;
234 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
235 for (auto& x2 : *range[1])
236 for (auto& x3 : *range[1])
237 for (auto& x1 : *range[1])
238 for (auto& x0 : *range[1])
239 if (t[0]->is_local(x2, x3, x1, x0))
240 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x2, x3, x1, x0}}, in, t[0], range));
241 }
242
Task14(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)243 Task14::Task14(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
244 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
245 out_ = t[0];
246 in_ = in;
247 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
248 for (auto& x2 : *range[1])
249 for (auto& x7 : *range[1])
250 for (auto& x5 : *range[1])
251 for (auto& x6 : *range[1])
252 for (auto& x4 : *range[1])
253 for (auto& x3 : *range[1])
254 for (auto& x1 : *range[1])
255 for (auto& x0 : *range[1])
256 if (t[0]->is_local(x2, x7, x5, x6, x4, x3, x1, x0))
257 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x2, x7, x5, x6, x4, x3, x1, x0}}, in, t[0], range));
258 }
259
Task15(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)260 Task15::Task15(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
261 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
262 out_ = t[0];
263 in_ = in;
264 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
265 for (auto& x2 : *range[1])
266 for (auto& x7 : *range[1])
267 for (auto& x3 : *range[1])
268 for (auto& x6 : *range[1])
269 for (auto& x5 : *range[1])
270 for (auto& x4 : *range[1])
271 for (auto& x1 : *range[1])
272 for (auto& x0 : *range[1])
273 if (t[0]->is_local(x2, x7, x3, x6, x5, x4, x1, x0))
274 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x2, x7, x3, x6, x5, x4, x1, x0}}, in, t[0], range));
275 }
276
Task16(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)277 Task16::Task16(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
278 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
279 out_ = t[0];
280 in_ = in;
281 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
282 for (auto& x7 : *range[1])
283 for (auto& x6 : *range[1])
284 for (auto& x2 : *range[1])
285 for (auto& x5 : *range[1])
286 for (auto& x4 : *range[1])
287 for (auto& x3 : *range[1])
288 for (auto& x1 : *range[1])
289 for (auto& x0 : *range[1])
290 if (t[0]->is_local(x7, x6, x2, x5, x4, x3, x1, x0))
291 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x2, x5, x4, x3, x1, x0}}, in, t[0], range));
292 }
293
Task17(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)294 Task17::Task17(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
295 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
296 out_ = t[0];
297 in_ = in;
298 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
299 for (auto& x7 : *range[1])
300 for (auto& x6 : *range[1])
301 for (auto& x3 : *range[1])
302 for (auto& x5 : *range[1])
303 for (auto& x2 : *range[1])
304 for (auto& x4 : *range[1])
305 for (auto& x1 : *range[1])
306 for (auto& x0 : *range[1])
307 if (t[0]->is_local(x7, x6, x3, x5, x2, x4, x1, x0))
308 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x3, x5, x2, x4, x1, x0}}, in, t[0], range));
309 }
310
Task18(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)311 Task18::Task18(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
312 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
313 out_ = t[0];
314 in_ = in;
315 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
316 for (auto& x7 : *range[1])
317 for (auto& x6 : *range[1])
318 for (auto& x4 : *range[1])
319 for (auto& x5 : *range[1])
320 for (auto& x2 : *range[1])
321 for (auto& x3 : *range[1])
322 for (auto& x1 : *range[1])
323 for (auto& x0 : *range[1])
324 if (t[0]->is_local(x7, x6, x4, x5, x2, x3, x1, x0))
325 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x4, x5, x2, x3, x1, x0}}, in, t[0], range));
326 }
327
Task19(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)328 Task19::Task19(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
329 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
330 out_ = t[0];
331 in_ = in;
332 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
333 for (auto& x2 : *range[1])
334 for (auto& x5 : *range[1])
335 for (auto& x4 : *range[1])
336 for (auto& x3 : *range[1])
337 for (auto& x1 : *range[1])
338 for (auto& x0 : *range[1])
339 if (t[0]->is_local(x2, x5, x4, x3, x1, x0))
340 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x2, x5, x4, x3, x1, x0}}, in, t[0], range));
341 }
342
Task20(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)343 Task20::Task20(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
344 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
345 out_ = t[0];
346 in_ = in;
347 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
348 for (auto& x3 : *range[1])
349 for (auto& x5 : *range[1])
350 for (auto& x2 : *range[1])
351 for (auto& x4 : *range[1])
352 for (auto& x1 : *range[1])
353 for (auto& x0 : *range[1])
354 if (t[0]->is_local(x3, x5, x2, x4, x1, x0))
355 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x3, x5, x2, x4, x1, x0}}, in, t[0], range));
356 }
357
Task21(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)358 Task21::Task21(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
359 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
360 out_ = t[0];
361 in_ = in;
362 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
363 for (auto& x4 : *range[1])
364 for (auto& x5 : *range[1])
365 for (auto& x2 : *range[1])
366 for (auto& x3 : *range[1])
367 for (auto& x1 : *range[1])
368 for (auto& x0 : *range[1])
369 if (t[0]->is_local(x4, x5, x2, x3, x1, x0))
370 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x4, x5, x2, x3, x1, x0}}, in, t[0], range));
371 }
372
Task22(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)373 Task22::Task22(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
374 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
375 out_ = t[0];
376 in_ = in;
377 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
378 for (auto& x7 : *range[1])
379 for (auto& x6 : *range[1])
380 for (auto& x5 : *range[1])
381 for (auto& x4 : *range[1])
382 for (auto& x2 : *range[1])
383 for (auto& x3 : *range[1])
384 for (auto& x1 : *range[1])
385 for (auto& x0 : *range[1])
386 if (t[0]->is_local(x7, x6, x5, x4, x2, x3, x1, x0))
387 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x5, x4, x2, x3, x1, x0}}, in, t[0], range));
388 }
389
Task23(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)390 Task23::Task23(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
391 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
392 out_ = t[0];
393 in_ = in;
394 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
395 for (auto& x7 : *range[1])
396 for (auto& x3 : *range[1])
397 for (auto& x6 : *range[1])
398 for (auto& x5 : *range[1])
399 for (auto& x2 : *range[1])
400 for (auto& x4 : *range[1])
401 for (auto& x1 : *range[1])
402 for (auto& x0 : *range[1])
403 if (t[0]->is_local(x7, x3, x6, x5, x2, x4, x1, x0))
404 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x3, x6, x5, x2, x4, x1, x0}}, in, t[0], range));
405 }
406
Task24(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)407 Task24::Task24(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
408 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
409 out_ = t[0];
410 in_ = in;
411 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
412 for (auto& x5 : *range[1])
413 for (auto& x3 : *range[1])
414 for (auto& x2 : *range[1])
415 for (auto& x4 : *range[1])
416 for (auto& x1 : *range[1])
417 for (auto& x0 : *range[1])
418 if (t[0]->is_local(x5, x3, x2, x4, x1, x0))
419 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x3, x2, x4, x1, x0}}, in, t[0], range));
420 }
421
Task25(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)422 Task25::Task25(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
423 array<shared_ptr<const Tensor>,5> in = {{t[1], t[2], t[3], t[4], t[5]}};
424 out_ = t[0];
425 in_ = in;
426 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
427 for (auto& x7 : *range[1])
428 for (auto& x6 : *range[1])
429 for (auto& x2 : *range[1])
430 for (auto& x5 : *range[1])
431 for (auto& x1 : *range[1])
432 for (auto& x0 : *range[1])
433 for (auto& x4 : *range[1])
434 for (auto& x3 : *range[1])
435 if (t[0]->is_local(x7, x6, x2, x5, x1, x0))
436 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x2, x5, x1, x0, x4, x3}}, in, t[0], range));
437 }
438
Task26(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)439 Task26::Task26(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
440 array<shared_ptr<const Tensor>,5> in = {{t[1], t[2], t[3], t[4], t[5]}};
441 out_ = t[0];
442 in_ = in;
443 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
444 for (auto& x9 : *range[1])
445 for (auto& x8 : *range[1])
446 for (auto& x2 : *range[1])
447 for (auto& x7 : *range[1])
448 for (auto& x1 : *range[1])
449 for (auto& x0 : *range[1])
450 for (auto& x6 : *range[1])
451 for (auto& x5 : *range[1])
452 for (auto& x4 : *range[1])
453 for (auto& x3 : *range[1])
454 if (t[0]->is_local(x9, x8, x2, x7, x1, x0))
455 subtasks_.push_back(make_shared<Task_local>(array<const Index,10>{{x9, x8, x2, x7, x1, x0, x6, x5, x4, x3}}, in, t[0], range));
456 }
457
Task27(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)458 Task27::Task27(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
459 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
460 out_ = t[0];
461 in_ = in;
462 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
463 for (auto& x3 : *range[1])
464 for (auto& x2 : *range[1])
465 for (auto& x0 : *range[1])
466 for (auto& x1 : *range[1])
467 if (t[0]->is_local(x3, x2, x0, x1))
468 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, x2, x0, x1}}, in, t[0], range));
469 }
470
Task28(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)471 Task28::Task28(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
472 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
473 out_ = t[0];
474 in_ = in;
475 subtasks_.reserve(range[1]->nblock()*range[1]->nblock());
476 for (auto& x0 : *range[1])
477 for (auto& x1 : *range[1])
478 if (t[0]->is_local(x0, x1))
479 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{x0, x1}}, in, t[0], range));
480 }
481
Task29(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)482 Task29::Task29(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
483 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
484 out_ = t[0];
485 in_ = in;
486 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
487 for (auto& x0 : *range[1])
488 for (auto& x3 : *range[1])
489 for (auto& x2 : *range[1])
490 for (auto& x1 : *range[1])
491 if (t[0]->is_local(x0, x3, x2, x1))
492 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x3, x2, x1}}, in, t[0], range));
493 }
494
Task30(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)495 Task30::Task30(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
496 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
497 out_ = t[0];
498 in_ = in;
499 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
500 for (auto& x3 : *range[1])
501 for (auto& x5 : *range[1])
502 for (auto& x0 : *range[1])
503 for (auto& x4 : *range[1])
504 for (auto& x2 : *range[1])
505 for (auto& x1 : *range[1])
506 if (t[0]->is_local(x3, x5, x0, x4, x2, x1))
507 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x3, x5, x0, x4, x2, x1}}, in, t[0], range));
508 }
509
Task31(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)510 Task31::Task31(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
511 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
512 out_ = t[0];
513 in_ = in;
514 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
515 for (auto& x5 : *range[1])
516 for (auto& x4 : *range[1])
517 for (auto& x0 : *range[1])
518 for (auto& x3 : *range[1])
519 for (auto& x2 : *range[1])
520 for (auto& x1 : *range[1])
521 if (t[0]->is_local(x5, x4, x0, x3, x2, x1))
522 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x0, x3, x2, x1}}, in, t[0], range));
523 }
524
Task32(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)525 Task32::Task32(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
526 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
527 out_ = t[0];
528 in_ = in;
529 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
530 for (auto& x5 : *range[1])
531 for (auto& x4 : *range[1])
532 for (auto& x2 : *range[1])
533 for (auto& x3 : *range[1])
534 for (auto& x0 : *range[1])
535 for (auto& x1 : *range[1])
536 if (t[0]->is_local(x5, x4, x2, x3, x0, x1))
537 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x2, x3, x0, x1}}, in, t[0], range));
538 }
539
Task33(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)540 Task33::Task33(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
541 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
542 out_ = t[0];
543 in_ = in;
544 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
545 for (auto& x2 : *range[1])
546 for (auto& x3 : *range[1])
547 for (auto& x0 : *range[1])
548 for (auto& x1 : *range[1])
549 if (t[0]->is_local(x2, x3, x0, x1))
550 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x2, x3, x0, x1}}, in, t[0], range));
551 }
552
Task34(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)553 Task34::Task34(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
554 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
555 out_ = t[0];
556 in_ = in;
557 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
558 for (auto& x5 : *range[1])
559 for (auto& x4 : *range[1])
560 for (auto& x3 : *range[1])
561 for (auto& x2 : *range[1])
562 for (auto& x0 : *range[1])
563 for (auto& x1 : *range[1])
564 if (t[0]->is_local(x5, x4, x3, x2, x0, x1))
565 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x3, x2, x0, x1}}, in, t[0], range));
566 }
567
Task35(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)568 Task35::Task35(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
569 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
570 out_ = t[0];
571 in_ = in;
572 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
573 for (auto& x5 : *range[1])
574 for (auto& x2 : *range[1])
575 for (auto& x4 : *range[1])
576 for (auto& x3 : *range[1])
577 for (auto& x0 : *range[1])
578 for (auto& x1 : *range[1])
579 if (t[0]->is_local(x5, x2, x4, x3, x0, x1))
580 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x2, x4, x3, x0, x1}}, in, t[0], range));
581 }
582
Task36(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)583 Task36::Task36(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
584 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
585 out_ = t[0];
586 in_ = in;
587 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
588 for (auto& x3 : *range[1])
589 for (auto& x1 : *range[1])
590 for (auto& x0 : *range[1])
591 for (auto& x2 : *range[1])
592 if (t[0]->is_local(x3, x1, x0, x2))
593 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, x1, x0, x2}}, in, t[0], range));
594 }
595
Task37(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)596 Task37::Task37(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
597 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
598 out_ = t[0];
599 in_ = in;
600 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
601 for (auto& x0 : *range[1])
602 for (auto& x3 : *range[1])
603 for (auto& x2 : *range[1])
604 for (auto& x1 : *range[1])
605 if (t[0]->is_local(x0, x3))
606 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x3, x2, x1}}, in, t[0], range));
607 }
608
Task38(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)609 Task38::Task38(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
610 array<shared_ptr<const Tensor>,5> in = {{t[1], t[2], t[3], t[4], t[5]}};
611 out_ = t[0];
612 in_ = in;
613 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
614 for (auto& x0 : *range[1])
615 for (auto& x5 : *range[1])
616 for (auto& x4 : *range[1])
617 for (auto& x3 : *range[1])
618 for (auto& x2 : *range[1])
619 for (auto& x1 : *range[1])
620 if (t[0]->is_local(x0, x5))
621 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x0, x5, x4, x3, x2, x1}}, in, t[0], range));
622 }
623
Task39(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)624 Task39::Task39(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
625 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
626 out_ = t[0];
627 in_ = in;
628 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
629 for (auto& x3 : *range[1])
630 for (auto& x2 : *range[1])
631 for (auto& x1 : *range[1])
632 for (auto& x0 : *range[1])
633 if (t[0]->is_local(x3, x2, x1, x0))
634 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, x2, x1, x0}}, in, t[0], range));
635 }
636
Task40(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)637 Task40::Task40(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
638 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
639 out_ = t[0];
640 in_ = in;
641 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
642 for (auto& x5 : *range[1])
643 for (auto& x2 : *range[1])
644 for (auto& x4 : *range[1])
645 for (auto& x3 : *range[1])
646 for (auto& x1 : *range[1])
647 for (auto& x0 : *range[1])
648 if (t[0]->is_local(x5, x2, x4, x3, x1, x0))
649 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x2, x4, x3, x1, x0}}, in, t[0], range));
650 }
651
Task41(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)652 Task41::Task41(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
653 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
654 out_ = t[0];
655 in_ = in;
656 subtasks_.reserve(range[1]->nblock()*range[1]->nblock());
657 for (auto& x1 : *range[1])
658 for (auto& x0 : *range[1])
659 if (t[0]->is_local(x1, x0))
660 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{x1, x0}}, in, t[0], range));
661 }
662
Task42(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)663 Task42::Task42(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
664 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
665 out_ = t[0];
666 in_ = in;
667 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
668 for (auto& x7 : *range[1])
669 for (auto& x6 : *range[1])
670 for (auto& x4 : *range[1])
671 for (auto& x5 : *range[1])
672 for (auto& x3 : *range[1])
673 for (auto& x2 : *range[1])
674 for (auto& x1 : *range[1])
675 for (auto& x0 : *range[1])
676 if (t[0]->is_local(x7, x6, x4, x5, x3, x2, x1, x0))
677 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x4, x5, x3, x2, x1, x0}}, in, t[0], range));
678 }
679
Task43(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)680 Task43::Task43(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
681 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
682 out_ = t[0];
683 in_ = in;
684 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
685 for (auto& x4 : *range[1])
686 for (auto& x5 : *range[1])
687 for (auto& x3 : *range[1])
688 for (auto& x2 : *range[1])
689 for (auto& x1 : *range[1])
690 for (auto& x0 : *range[1])
691 if (t[0]->is_local(x4, x5, x3, x2, x1, x0))
692 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x4, x5, x3, x2, x1, x0}}, in, t[0], range));
693 }
694
Task44(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)695 Task44::Task44(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
696 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
697 out_ = t[0];
698 in_ = in;
699 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
700 for (auto& x5 : *range[1])
701 for (auto& x4 : *range[1])
702 for (auto& x3 : *range[1])
703 for (auto& x2 : *range[1])
704 for (auto& x1 : *range[1])
705 for (auto& x0 : *range[1])
706 if (t[0]->is_local(x5, x4, x3, x2, x1, x0))
707 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x3, x2, x1, x0}}, in, t[0], range));
708 }
709
Task45(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)710 Task45::Task45(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
711 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
712 out_ = t[0];
713 in_ = in;
714 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
715 for (auto& x7 : *range[1])
716 for (auto& x4 : *range[1])
717 for (auto& x6 : *range[1])
718 for (auto& x5 : *range[1])
719 for (auto& x3 : *range[1])
720 for (auto& x2 : *range[1])
721 for (auto& x1 : *range[1])
722 for (auto& x0 : *range[1])
723 if (t[0]->is_local(x7, x4, x6, x5, x3, x2, x1, x0))
724 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x4, x6, x5, x3, x2, x1, x0}}, in, t[0], range));
725 }
726
Task46(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)727 Task46::Task46(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
728 array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
729 out_ = t[0];
730 in_ = in;
731 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
732 for (auto& x7 : *range[1])
733 for (auto& x2 : *range[1])
734 for (auto& x6 : *range[1])
735 for (auto& x5 : *range[1])
736 for (auto& x4 : *range[1])
737 for (auto& x3 : *range[1])
738 for (auto& x1 : *range[1])
739 for (auto& x0 : *range[1])
740 if (t[0]->is_local(x7, x2, x6, x5, x4, x3, x1, x0))
741 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x2, x6, x5, x4, x3, x1, x0}}, in, t[0], range));
742 }
743
Task47(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)744 Task47::Task47(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
745 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
746 out_ = t[0];
747 in_ = in;
748 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
749 for (auto& x5 : *range[1])
750 for (auto& x3 : *range[1])
751 for (auto& x4 : *range[1])
752 for (auto& x2 : *range[1])
753 for (auto& x1 : *range[1])
754 for (auto& x0 : *range[1])
755 if (t[0]->is_local(x5, x3, x4, x2, x1, x0))
756 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x3, x4, x2, x1, x0}}, in, t[0], range));
757 }
758
Task48(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)759 Task48::Task48(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
760 array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
761 out_ = t[0];
762 in_ = in;
763 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
764 for (auto& x5 : *range[1])
765 for (auto& x4 : *range[1])
766 for (auto& x1 : *range[1])
767 for (auto& x0 : *range[1])
768 for (auto& x3 : *range[1])
769 for (auto& x2 : *range[1])
770 if (t[0]->is_local(x5, x4, x1, x0))
771 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x1, x0, x3, x2}}, in, t[0], range));
772 }
773
Task49(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)774 Task49::Task49(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
775 array<shared_ptr<const Tensor>,5> in = {{t[1], t[2], t[3], t[4], t[5]}};
776 out_ = t[0];
777 in_ = in;
778 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
779 for (auto& x7 : *range[1])
780 for (auto& x6 : *range[1])
781 for (auto& x1 : *range[1])
782 for (auto& x0 : *range[1])
783 for (auto& x5 : *range[1])
784 for (auto& x4 : *range[1])
785 for (auto& x3 : *range[1])
786 for (auto& x2 : *range[1])
787 if (t[0]->is_local(x7, x6, x1, x0))
788 subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x1, x0, x5, x4, x3, x2}}, in, t[0], range));
789 }
790
791 #endif
792