1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: MRCI_gen2.cc
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/mrci/MRCI_tasks2.h>
29 
30 using namespace std;
31 using namespace bagel;
32 using namespace bagel::SMITH;
33 using namespace bagel::SMITH::MRCI;
34 
Task50(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)35 Task50::Task50(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()*range[1]->nblock()*range[1]->nblock());
40   for (auto& x0 : *range[1])
41     for (auto& x3 : *range[1])
42       for (auto& x4 : *range[1])
43         for (auto& x2 : *range[1])
44           for (auto& x5 : *range[1])
45             for (auto& x1 : *range[1])
46               if (t[0]->is_local(x1, x5, x2, x4, x3, x0))
47                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x1, x5, x2, x4, x3, x0}}, in, t[0], range));
48 }
49 
Task51(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)50 Task51::Task51(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
51   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
52   out_ = t[0];
53   in_ = in;
54   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());
55   for (auto& x2 : *range[1])
56     for (auto& x3 : *range[1])
57       for (auto& x0 : *range[1])
58         for (auto& x4 : *range[1])
59           for (auto& x5 : *range[1])
60             for (auto& x1 : *range[1])
61               for (auto& x6 : *range[1])
62                 for (auto& x7 : *range[1])
63                   if (t[0]->is_local(x7, x6, x1, x5, x4, x0, x3, x2))
64                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x1, x5, x4, x0, x3, x2}}, in, t[0], range));
65 }
66 
Task52(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)67 Task52::Task52(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
68   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
69   out_ = t[0];
70   in_ = in;
71   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());
72   for (auto& x0 : *range[1])
73     for (auto& x2 : *range[1])
74       for (auto& x3 : *range[1])
75         for (auto& x4 : *range[1])
76           for (auto& x5 : *range[1])
77             for (auto& x1 : *range[1])
78               for (auto& x6 : *range[1])
79                 for (auto& x7 : *range[1])
80                   if (t[0]->is_local(x7, x6, x1, x5, x4, x3, x2, x0))
81                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x1, x5, x4, x3, x2, x0}}, in, t[0], range));
82 }
83 
Task53(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)84 Task53::Task53(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
85   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
86   out_ = t[0];
87   in_ = in;
88   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
89   for (auto& x2 : *range[1])
90     for (auto& x3 : *range[1])
91       for (auto& x0 : *range[1])
92         for (auto& x4 : *range[1])
93           for (auto& x5 : *range[1])
94             for (auto& x1 : *range[1])
95               if (t[0]->is_local(x1, x5, x4, x0, x3, x2))
96                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x1, x5, x4, x0, x3, x2}}, in, t[0], range));
97 }
98 
Task54(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)99 Task54::Task54(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
100   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
101   out_ = t[0];
102   in_ = in;
103   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
104   for (auto& x0 : *range[1])
105     for (auto& x2 : *range[1])
106       for (auto& x3 : *range[1])
107         for (auto& x4 : *range[1])
108           for (auto& x5 : *range[1])
109             for (auto& x1 : *range[1])
110               if (t[0]->is_local(x1, x5, x4, x3, x2, x0))
111                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x1, x5, x4, x3, x2, x0}}, in, t[0], range));
112 }
113 
Task55(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)114 Task55::Task55(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
115   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
116   out_ = t[0];
117   in_ = in;
118   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
119   for (auto& x0 : *range[1])
120     for (auto& x1 : *range[1])
121       for (auto& x2 : *range[1])
122         for (auto& x3 : *range[1])
123           for (auto& x5 : *range[1])
124             for (auto& x4 : *range[1])
125               if (t[0]->is_local(x4, x5, x3, x2, x1, x0))
126                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x4, x5, x3, x2, x1, x0}}, in, t[0], range));
127 }
128 
Task56(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)129 Task56::Task56(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
130   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
131   out_ = t[0];
132   in_ = in;
133   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
134   for (auto& x2 : *range[1])
135     for (auto& x3 : *range[1])
136       for (auto& x4 : *range[1])
137         for (auto& x1 : *range[1])
138           for (auto& x0 : *range[1])
139             for (auto& x5 : *range[1])
140               if (t[0]->is_local(x5, x0, x1, x4, x3, x2))
141                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x1, x4, x3, x2}}, in, t[0], range));
142 }
143 
Task57(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)144 Task57::Task57(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
145   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
146   out_ = t[0];
147   in_ = in;
148   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
149   for (auto& x3 : *range[1])
150     for (auto& x1 : *range[1])
151       for (auto& x4 : *range[1])
152         for (auto& x2 : *range[1])
153           for (auto& x0 : *range[1])
154             for (auto& x5 : *range[1])
155               if (t[0]->is_local(x5, x0, x2, x4, x1, x3))
156                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x2, x4, x1, x3}}, in, t[0], range));
157 }
158 
Task58(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)159 Task58::Task58(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
160   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
161   out_ = t[0];
162   in_ = in;
163   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
164   for (auto& x2 : *range[1])
165     for (auto& x1 : *range[1])
166       for (auto& x4 : *range[1])
167         for (auto& x3 : *range[1])
168           for (auto& x0 : *range[1])
169             for (auto& x5 : *range[1])
170               if (t[0]->is_local(x5, x0, x3, x4, x1, x2))
171                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x3, x4, x1, x2}}, in, t[0], range));
172 }
173 
Task59(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)174 Task59::Task59(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
175   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
176   out_ = t[0];
177   in_ = in;
178   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
179   for (auto& x0 : *range[1])
180     for (auto& x2 : *range[1])
181       for (auto& x4 : *range[1])
182         for (auto& x1 : *range[1])
183           for (auto& x3 : *range[1])
184             for (auto& x5 : *range[1])
185               if (t[0]->is_local(x5, x3, x1, x4, x2, x0))
186                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x3, x1, x4, x2, x0}}, in, t[0], range));
187 }
188 
Task60(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)189 Task60::Task60(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
190   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
191   out_ = t[0];
192   in_ = in;
193   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
194   for (auto& x0 : *range[1])
195     for (auto& x3 : *range[1])
196       for (auto& x4 : *range[1])
197         for (auto& x1 : *range[1])
198           for (auto& x2 : *range[1])
199             for (auto& x5 : *range[1])
200               if (t[0]->is_local(x5, x2, x1, x4, x3, x0))
201                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x2, x1, x4, x3, x0}}, in, t[0], range));
202 }
203 
Task61(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)204 Task61::Task61(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
205   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
206   out_ = t[0];
207   in_ = in;
208   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
209   for (auto& x0 : *range[1])
210     for (auto& x1 : *range[1])
211       for (auto& x2 : *range[1])
212         for (auto& x3 : *range[1])
213           for (auto& x4 : *range[1])
214             for (auto& x5 : *range[1])
215               if (t[0]->is_local(x5, x4, x3, x2, x1, x0))
216                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x3, x2, x1, x0}}, in, t[0], range));
217 }
218 
Task62(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)219 Task62::Task62(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
220   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
221   out_ = t[0];
222   in_ = in;
223   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
224   for (auto& x2 : *range[1])
225     for (auto& x1 : *range[1])
226       for (auto& x0 : *range[1])
227         for (auto& x3 : *range[1])
228           for (auto& x4 : *range[1])
229             for (auto& x5 : *range[1])
230               if (t[0]->is_local(x5, x4, x3, x0, x1, x2))
231                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x3, x0, x1, x2}}, in, t[0], range));
232 }
233 
Task63(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)234 Task63::Task63(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
235   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
236   out_ = t[0];
237   in_ = in;
238   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());
239   for (auto& x2 : *range[1])
240     for (auto& x3 : *range[1])
241       for (auto& x4 : *range[1])
242         for (auto& x1 : *range[1])
243           for (auto& x5 : *range[1])
244             for (auto& x6 : *range[1])
245               for (auto& x0 : *range[1])
246                 for (auto& x7 : *range[1])
247                   if (t[0]->is_local(x7, x0, x6, x5, x1, x4, x3, x2))
248                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x6, x5, x1, x4, x3, x2}}, in, t[0], range));
249 }
250 
Task64(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)251 Task64::Task64(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
252   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
253   out_ = t[0];
254   in_ = in;
255   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());
256   for (auto& x2 : *range[1])
257     for (auto& x1 : *range[1])
258       for (auto& x3 : *range[1])
259         for (auto& x4 : *range[1])
260           for (auto& x5 : *range[1])
261             for (auto& x6 : *range[1])
262               for (auto& x0 : *range[1])
263                 for (auto& x7 : *range[1])
264                   if (t[0]->is_local(x7, x0, x6, x5, x4, x3, x1, x2))
265                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x6, x5, x4, x3, x1, x2}}, in, t[0], range));
266 }
267 
Task65(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)268 Task65::Task65(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
269   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
270   out_ = t[0];
271   in_ = in;
272   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
273   for (auto& x0 : *range[1])
274     for (auto& x1 : *range[1])
275       for (auto& x3 : *range[1])
276         for (auto& x4 : *range[1])
277           for (auto& x2 : *range[1])
278             for (auto& x5 : *range[1])
279               if (t[0]->is_local(x5, x2, x4, x3, x1, x0))
280                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x2, x4, x3, x1, x0}}, in, t[0], range));
281 }
282 
Task66(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)283 Task66::Task66(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
284   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
285   out_ = t[0];
286   in_ = in;
287   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
288   for (auto& x3 : *range[1])
289     for (auto& x1 : *range[1])
290       for (auto& x2 : *range[1])
291         for (auto& x4 : *range[1])
292           for (auto& x0 : *range[1])
293             for (auto& x5 : *range[1])
294               if (t[0]->is_local(x5, x0, x4, x2, x1, x3))
295                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x4, x2, x1, x3}}, in, t[0], range));
296 }
297 
Task67(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)298 Task67::Task67(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
299   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
300   out_ = t[0];
301   in_ = in;
302   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
303   for (auto& x4 : *range[1])
304     for (auto& x1 : *range[1])
305       for (auto& x0 : *range[1])
306         for (auto& x5 : *range[1])
307           for (auto& x2 : *range[1])
308             for (auto& x3 : *range[1])
309               if (t[0]->is_local(x5, x0, x1, x4))
310                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x1, x4, x3, x2}}, in, t[0], range));
311 }
312 
Task68(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)313 Task68::Task68(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
314   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
315   out_ = t[0];
316   in_ = in;
317   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
318   for (auto& x0 : *range[1])
319     for (auto& x1 : *range[1])
320       for (auto& x4 : *range[1])
321         for (auto& x5 : *range[1])
322           for (auto& x2 : *range[1])
323             for (auto& x3 : *range[1])
324               if (t[0]->is_local(x5, x4, x1, x0))
325                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x1, x0, x3, x2}}, in, t[0], range));
326 }
327 
Task69(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)328 Task69::Task69(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
329   array<shared_ptr<const Tensor>,5> in = {{t[1], t[2], t[3], t[4], t[5]}};
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()*range[1]->nblock()*range[1]->nblock());
333   for (auto& x6 : *range[1])
334     for (auto& x1 : *range[1])
335       for (auto& x0 : *range[1])
336         for (auto& x7 : *range[1])
337           for (auto& x2 : *range[1])
338             for (auto& x3 : *range[1])
339               for (auto& x4 : *range[1])
340                 for (auto& x5 : *range[1])
341                   if (t[0]->is_local(x7, x0, x1, x6))
342                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x1, x6, x5, x4, x3, x2}}, in, t[0], range));
343 }
344 
Task70(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)345 Task70::Task70(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
346   array<shared_ptr<const Tensor>,5> in = {{t[1], t[2], t[3], t[4], t[5]}};
347   out_ = t[0];
348   in_ = in;
349   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());
350   for (auto& x0 : *range[1])
351     for (auto& x1 : *range[1])
352       for (auto& x6 : *range[1])
353         for (auto& x7 : *range[1])
354           for (auto& x2 : *range[1])
355             for (auto& x3 : *range[1])
356               for (auto& x4 : *range[1])
357                 for (auto& x5 : *range[1])
358                   if (t[0]->is_local(x7, x6, x1, x0))
359                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x1, x0, x5, x4, x3, x2}}, in, t[0], range));
360 }
361 
Task71(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)362 Task71::Task71(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
363   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
364   out_ = t[0];
365   in_ = in;
366   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());
367   for (auto& x0 : *range[1])
368     for (auto& x1 : *range[1])
369       for (auto& x2 : *range[1])
370         for (auto& x3 : *range[1])
371           for (auto& x5 : *range[1])
372             for (auto& x4 : *range[1])
373               for (auto& x6 : *range[1])
374                 for (auto& x7 : *range[1])
375                   if (t[0]->is_local(x7, x6, x4, x5, x3, x2, x1, x0))
376                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x4, x5, x3, x2, x1, x0}}, in, t[0], range));
377 }
378 
Task72(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)379 Task72::Task72(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
380   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
381   out_ = t[0];
382   in_ = in;
383   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
384   for (auto& x0 : *range[1])
385     for (auto& x1 : *range[1])
386       for (auto& x4 : *range[1])
387         for (auto& x3 : *range[1])
388           for (auto& x2 : *range[1])
389             for (auto& x5 : *range[1])
390               if (t[0]->is_local(x5, x2, x3, x4, x1, x0))
391                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x2, x3, x4, x1, x0}}, in, t[0], range));
392 }
393 
Task73(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)394 Task73::Task73(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
395   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
396   out_ = t[0];
397   in_ = in;
398   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());
399   for (auto& x0 : *range[1])
400     for (auto& x1 : *range[1])
401       for (auto& x2 : *range[1])
402         for (auto& x3 : *range[1])
403           for (auto& x5 : *range[1])
404             for (auto& x6 : *range[1])
405               for (auto& x4 : *range[1])
406                 for (auto& x7 : *range[1])
407                   if (t[0]->is_local(x7, x4, x6, x5, x3, x2, x1, x0))
408                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x4, x6, x5, x3, x2, x1, x0}}, in, t[0], range));
409 }
410 
Task74(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)411 Task74::Task74(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
412   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
413   out_ = t[0];
414   in_ = in;
415   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());
416   for (auto& x0 : *range[1])
417     for (auto& x1 : *range[1])
418       for (auto& x3 : *range[1])
419         for (auto& x4 : *range[1])
420           for (auto& x5 : *range[1])
421             for (auto& x6 : *range[1])
422               for (auto& x2 : *range[1])
423                 for (auto& x7 : *range[1])
424                   if (t[0]->is_local(x7, x2, x6, x5, x4, x3, x1, x0))
425                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x2, x6, x5, x4, x3, x1, x0}}, in, t[0], range));
426 }
427 
Task75(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)428 Task75::Task75(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
429   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
430   out_ = t[0];
431   in_ = in;
432   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
433   for (auto& x0 : *range[1])
434     for (auto& x1 : *range[1])
435       for (auto& x2 : *range[1])
436         for (auto& x4 : *range[1])
437           for (auto& x3 : *range[1])
438             for (auto& x5 : *range[1])
439               if (t[0]->is_local(x5, x3, x4, x2, x1, x0))
440                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x3, x4, x2, x1, x0}}, in, t[0], range));
441 }
442 
Task76(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)443 Task76::Task76(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
444   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
445   out_ = t[0];
446   in_ = in;
447   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
448   for (auto& x1 : *range[1])
449     for (auto& x2 : *range[1])
450       for (auto& x4 : *range[1])
451         for (auto& x3 : *range[1])
452           for (auto& x0 : *range[1])
453             for (auto& x5 : *range[1])
454               if (t[0]->is_local(x5, x0, x3, x4, x2, x1))
455                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x3, x4, x2, x1}}, in, t[0], range));
456 }
457 
Task77(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)458 Task77::Task77(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()*range[1]->nblock()*range[1]->nblock());
463   for (auto& x1 : *range[1])
464     for (auto& x2 : *range[1])
465       for (auto& x0 : *range[1])
466         for (auto& x3 : *range[1])
467           for (auto& x4 : *range[1])
468             for (auto& x5 : *range[1])
469               if (t[0]->is_local(x5, x4, x3, x0, x2, x1))
470                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x3, x0, x2, x1}}, in, t[0], range));
471 }
472 
Task78(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)473 Task78::Task78(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
474   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
475   out_ = t[0];
476   in_ = in;
477   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
478   for (auto& x1 : *range[1])
479     for (auto& x2 : *range[1])
480       for (auto& x3 : *range[1])
481         for (auto& x4 : *range[1])
482           for (auto& x0 : *range[1])
483             for (auto& x5 : *range[1])
484               if (t[0]->is_local(x5, x0, x4, x3, x2, x1))
485                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x4, x3, x2, x1}}, in, t[0], range));
486 }
487 
Task79(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)488 Task79::Task79(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
489   array<shared_ptr<const Tensor>,1> in = {{t[1]}};
490   out_ = t[0];
491   in_ = in;
492   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
493   for (auto& x1 : *range[1])
494     for (auto& x2 : *range[1])
495       for (auto& x0 : *range[1])
496         for (auto& x3 : *range[1])
497           if (t[0]->is_local(x3, x0, x2, x1))
498             subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, x0, x2, x1}}, in, t[0], range));
499 }
500 
Task80(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)501 Task80::Task80(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
502   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
503   out_ = t[0];
504   in_ = in;
505   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());
506   for (auto& x1 : *range[1])
507     for (auto& x2 : *range[1])
508       for (auto& x0 : *range[1])
509         for (auto& x4 : *range[1])
510           for (auto& x5 : *range[1])
511             for (auto& x3 : *range[1])
512               for (auto& x6 : *range[1])
513                 for (auto& x7 : *range[1])
514                   if (t[0]->is_local(x7, x6, x3, x5, x4, x0, x2, x1))
515                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x3, x5, x4, x0, x2, x1}}, in, t[0], range));
516 }
517 
Task81(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)518 Task81::Task81(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
519   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
520   out_ = t[0];
521   in_ = in;
522   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
523   for (auto& x1 : *range[1])
524     for (auto& x2 : *range[1])
525       for (auto& x0 : *range[1])
526         for (auto& x3 : *range[1])
527           for (auto& x5 : *range[1])
528             for (auto& x4 : *range[1])
529               if (t[0]->is_local(x4, x5, x3, x0, x2, x1))
530                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x4, x5, x3, x0, x2, x1}}, in, t[0], range));
531 }
532 
Task82(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)533 Task82::Task82(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
534   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
535   out_ = t[0];
536   in_ = in;
537   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());
538   for (auto& x1 : *range[1])
539     for (auto& x2 : *range[1])
540       for (auto& x3 : *range[1])
541         for (auto& x4 : *range[1])
542           for (auto& x6 : *range[1])
543             for (auto& x5 : *range[1])
544               for (auto& x0 : *range[1])
545                 for (auto& x7 : *range[1])
546                   if (t[0]->is_local(x7, x0, x5, x6, x4, x3, x2, x1))
547                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x5, x6, x4, x3, x2, x1}}, in, t[0], range));
548 }
549 
Task83(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)550 Task83::Task83(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
551   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
552   out_ = t[0];
553   in_ = in;
554   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());
555   for (auto& x1 : *range[1])
556     for (auto& x2 : *range[1])
557       for (auto& x4 : *range[1])
558         for (auto& x5 : *range[1])
559           for (auto& x6 : *range[1])
560             for (auto& x3 : *range[1])
561               for (auto& x0 : *range[1])
562                 for (auto& x7 : *range[1])
563                   if (t[0]->is_local(x7, x0, x3, x6, x5, x4, x2, x1))
564                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x3, x6, x5, x4, x2, x1}}, in, t[0], range));
565 }
566 
Task84(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)567 Task84::Task84(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
568   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
569   out_ = t[0];
570   in_ = in;
571   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());
572   for (auto& x1 : *range[1])
573     for (auto& x2 : *range[1])
574       for (auto& x3 : *range[1])
575         for (auto& x4 : *range[1])
576           for (auto& x0 : *range[1])
577             for (auto& x5 : *range[1])
578               for (auto& x6 : *range[1])
579                 for (auto& x7 : *range[1])
580                   if (t[0]->is_local(x7, x6, x5, x0, x4, x3, x2, x1))
581                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x5, x0, x4, x3, x2, x1}}, in, t[0], range));
582 }
583 
Task85(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)584 Task85::Task85(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
585   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
586   out_ = t[0];
587   in_ = in;
588   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());
589   for (auto& x1 : *range[1])
590     for (auto& x2 : *range[1])
591       for (auto& x0 : *range[1])
592         for (auto& x3 : *range[1])
593           for (auto& x4 : *range[1])
594             for (auto& x5 : *range[1])
595               for (auto& x6 : *range[1])
596                 for (auto& x7 : *range[1])
597                   if (t[0]->is_local(x7, x6, x5, x4, x3, x0, x2, x1))
598                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x6, x5, x4, x3, x0, x2, x1}}, in, t[0], range));
599 }
600 
Task86(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)601 Task86::Task86(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
602   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
603   out_ = t[0];
604   in_ = in;
605   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());
606   for (auto& x1 : *range[1])
607     for (auto& x2 : *range[1])
608       for (auto& x3 : *range[1])
609         for (auto& x4 : *range[1])
610           for (auto& x5 : *range[1])
611             for (auto& x6 : *range[1])
612               for (auto& x0 : *range[1])
613                 for (auto& x7 : *range[1])
614                   if (t[0]->is_local(x7, x0, x6, x5, x4, x3, x2, x1))
615                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x6, x5, x4, x3, x2, x1}}, in, t[0], range));
616 }
617 
Task87(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)618 Task87::Task87(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
619   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
620   out_ = t[0];
621   in_ = in;
622   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());
623   for (auto& x1 : *range[1])
624     for (auto& x2 : *range[1])
625       for (auto& x0 : *range[1])
626         for (auto& x3 : *range[1])
627           for (auto& x5 : *range[1])
628             for (auto& x6 : *range[1])
629               for (auto& x4 : *range[1])
630                 for (auto& x7 : *range[1])
631                   if (t[0]->is_local(x7, x4, x6, x5, x3, x0, x2, x1))
632                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x4, x6, x5, x3, x0, x2, x1}}, in, t[0], range));
633 }
634 
Task88(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)635 Task88::Task88(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
636   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
637   out_ = t[0];
638   in_ = in;
639   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());
640   for (auto& x1 : *range[1])
641     for (auto& x2 : *range[1])
642       for (auto& x0 : *range[1])
643         for (auto& x4 : *range[1])
644           for (auto& x5 : *range[1])
645             for (auto& x6 : *range[1])
646               for (auto& x3 : *range[1])
647                 for (auto& x7 : *range[1])
648                   if (t[0]->is_local(x7, x3, x6, x5, x4, x0, x2, x1))
649                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x3, x6, x5, x4, x0, x2, x1}}, in, t[0], range));
650 }
651 
Task89(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)652 Task89::Task89(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
653   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
654   out_ = t[0];
655   in_ = in;
656   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
657   for (auto& x1 : *range[1])
658     for (auto& x2 : *range[1])
659       for (auto& x0 : *range[1])
660         for (auto& x4 : *range[1])
661           for (auto& x3 : *range[1])
662             for (auto& x5 : *range[1])
663               if (t[0]->is_local(x5, x3, x4, x0, x2, x1))
664                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x3, x4, x0, x2, x1}}, in, t[0], range));
665 }
666 
Task90(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)667 Task90::Task90(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
668   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
669   out_ = t[0];
670   in_ = in;
671   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());
672   for (auto& x1 : *range[1])
673     for (auto& x2 : *range[1])
674       for (auto& x4 : *range[1])
675         for (auto& x5 : *range[1])
676           for (auto& x3 : *range[1])
677             for (auto& x6 : *range[1])
678               for (auto& x0 : *range[1])
679                 for (auto& x7 : *range[1])
680                   if (t[0]->is_local(x7, x0, x6, x3, x5, x4, x2, x1))
681                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x6, x3, x5, x4, x2, x1}}, in, t[0], range));
682 }
683 
Task91(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)684 Task91::Task91(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
685   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
686   out_ = t[0];
687   in_ = in;
688   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());
689   for (auto& x1 : *range[1])
690     for (auto& x2 : *range[1])
691       for (auto& x5 : *range[1])
692         for (auto& x6 : *range[1])
693           for (auto& x0 : *range[1])
694             for (auto& x7 : *range[1])
695               for (auto& x3 : *range[1])
696                 for (auto& x4 : *range[1])
697                   if (t[0]->is_local(x7, x0, x6, x5, x2, x1))
698                     subtasks_.push_back(make_shared<Task_local>(array<const Index,8>{{x7, x0, x6, x5, x2, x1, x4, x3}}, in, t[0], range));
699 }
700 
Task92(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)701 Task92::Task92(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
702   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
703   out_ = t[0];
704   in_ = in;
705   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());
706   for (auto& x1 : *range[1])
707     for (auto& x2 : *range[1])
708       for (auto& x7 : *range[1])
709         for (auto& x8 : *range[1])
710           for (auto& x0 : *range[1])
711             for (auto& x9 : *range[1])
712               for (auto& x3 : *range[1])
713                 for (auto& x4 : *range[1])
714                   for (auto& x5 : *range[1])
715                     for (auto& x6 : *range[1])
716                       if (t[0]->is_local(x9, x0, x8, x7, x2, x1))
717                         subtasks_.push_back(make_shared<Task_local>(array<const Index,10>{{x9, x0, x8, x7, x2, x1, x6, x5, x4, x3}}, in, t[0], range));
718 }
719 
Task93(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)720 Task93::Task93(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
721   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
722   out_ = t[0];
723   in_ = in;
724   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
725   for (auto& x0 : *range[1])
726     for (auto& x2 : *range[1])
727       for (auto& x3 : *range[1])
728         for (auto& x4 : *range[1])
729           for (auto& x1 : *range[1])
730             for (auto& x5 : *range[1])
731               if (t[0]->is_local(x5, x1, x4, x3, x2, x0))
732                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x1, x4, x3, x2, x0}}, in, t[0], range));
733 }
734 
Task94(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)735 Task94::Task94(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
736   array<shared_ptr<const Tensor>,1> in = {{t[1]}};
737   out_ = t[0];
738   in_ = in;
739   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
740   for (auto& x0 : *range[1])
741     for (auto& x2 : *range[1])
742       for (auto& x1 : *range[1])
743         for (auto& x3 : *range[1])
744           if (t[0]->is_local(x3, x1, x2, x0))
745             subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, x1, x2, x0}}, in, t[0], range));
746 }
747 
Task95(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)748 Task95::Task95(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
749   array<shared_ptr<const Tensor>,1> in = {{t[1]}};
750   out_ = t[0];
751   in_ = in;
752   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
753   for (auto& x2 : *range[1])
754     for (auto& x3 : *range[1])
755       for (auto& x1 : *range[1])
756         for (auto& x4 : *range[1])
757           for (auto& x0 : *range[1])
758             for (auto& x5 : *range[1])
759               if (t[0]->is_local(x5, x0, x4, x1, x3, x2))
760                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x4, x1, x3, x2}}, in, t[0], range));
761 }
762 
Task96(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)763 Task96::Task96(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
764   array<shared_ptr<const Tensor>,3> in = {{t[1], t[2], t[3]}};
765   out_ = t[0];
766   in_ = in;
767   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
768   for (auto& x0 : *range[1])
769     for (auto& x3 : *range[1])
770       for (auto& x1 : *range[1])
771         for (auto& x2 : *range[1])
772           if (t[0]->is_local(x3, x0))
773             subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, x0, x2, x1}}, in, t[0], range));
774 }
775 
Task97(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)776 Task97::Task97(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
777   array<shared_ptr<const Tensor>,4> in = {{t[1], t[2], t[3], t[4]}};
778   out_ = t[0];
779   in_ = in;
780   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
781   for (auto& x0 : *range[1])
782     for (auto& x5 : *range[1])
783       for (auto& x1 : *range[1])
784         for (auto& x2 : *range[1])
785           for (auto& x3 : *range[1])
786             for (auto& x4 : *range[1])
787               if (t[0]->is_local(x5, x0))
788                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x4, x3, x2, x1}}, in, t[0], range));
789 }
790 
Task98(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)791 Task98::Task98(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
792   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
793   out_ = t[0];
794   in_ = in;
795   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
796   for (auto& x1 : *range[1])
797     for (auto& x3 : *range[1])
798       for (auto& x4 : *range[1])
799         for (auto& x2 : *range[1])
800           for (auto& x0 : *range[1])
801             for (auto& x5 : *range[1])
802               if (t[0]->is_local(x5, x0, x2, x4, x3, x1))
803                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x0, x2, x4, x3, x1}}, in, t[0], range));
804 }
805 
Task99(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)806 Task99::Task99(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
807   array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
808   out_ = t[0];
809   in_ = in;
810   subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
811   for (auto& x0 : *range[1])
812     for (auto& x2 : *range[1])
813       for (auto& x1 : *range[1])
814         for (auto& x3 : *range[1])
815           for (auto& x4 : *range[1])
816             for (auto& x5 : *range[1])
817               if (t[0]->is_local(x5, x4, x3, x1, x2, x0))
818                 subtasks_.push_back(make_shared<Task_local>(array<const Index,6>{{x5, x4, x3, x1, x2, x0}}, in, t[0], range));
819 }
820 
821 #endif
822