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