1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: MRCI_gen14.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_tasks14.h>
29
30 using namespace std;
31 using namespace bagel;
32 using namespace bagel::SMITH;
33 using namespace bagel::SMITH::MRCI;
34
Task650(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)35 Task650::Task650(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
36 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
37 out_ = t[0];
38 in_ = in;
39 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[0]->nblock()*range[1]->nblock());
40 for (auto& a2 : *range[2])
41 for (auto& c3 : *range[0])
42 for (auto& c5 : *range[0])
43 for (auto& x0 : *range[1])
44 if (t[0]->is_local(x0, c5, c3, a2))
45 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c5, c3, a2}}, in, t[0], range));
46 }
47
Task651(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)48 Task651::Task651(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
49 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
50 out_ = t[0];
51 in_ = in;
52 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
53 for (auto& c3 : *range[0])
54 for (auto& a4 : *range[2])
55 for (auto& c1 : *range[0])
56 for (auto& a2 : *range[2])
57 if (t[0]->is_local(a2, c1, a4, c3))
58 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
59 }
60
Task652(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)61 Task652::Task652(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
62 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
63 out_ = t[0];
64 in_ = in;
65 subtasks_.reserve(range[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[0]->nblock());
66 for (auto& x1 : *range[1])
67 for (auto& a4 : *range[2])
68 for (auto& c3 : *range[0])
69 for (auto& c5 : *range[0])
70 if (t[0]->is_local(c5, c3, a4, x1))
71 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c5, c3, a4, x1}}, in, t[0], range));
72 }
73
Task653(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)74 Task653::Task653(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
75 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
76 out_ = t[0];
77 in_ = in;
78 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[0]->nblock()*range[1]->nblock());
79 for (auto& a4 : *range[2])
80 for (auto& c3 : *range[0])
81 for (auto& c5 : *range[0])
82 for (auto& x0 : *range[1])
83 if (t[0]->is_local(x0, c5, c3, a4))
84 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c5, c3, a4}}, in, t[0], range));
85 }
86
Task654(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)87 Task654::Task654(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
88 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
89 out_ = t[0];
90 in_ = in;
91 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
92 for (auto& c3 : *range[0])
93 for (auto& a4 : *range[2])
94 for (auto& c1 : *range[0])
95 for (auto& a2 : *range[2])
96 if (t[0]->is_local(a2, c1, a4, c3))
97 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
98 }
99
Task655(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)100 Task655::Task655(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
101 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
102 out_ = t[0];
103 in_ = in;
104 subtasks_.reserve(range[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[0]->nblock());
105 for (auto& x1 : *range[1])
106 for (auto& a2 : *range[2])
107 for (auto& c3 : *range[0])
108 for (auto& c5 : *range[0])
109 if (t[0]->is_local(c5, c3, a2, x1))
110 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c5, c3, a2, x1}}, in, t[0], range));
111 }
112
Task656(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)113 Task656::Task656(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
114 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
115 out_ = t[0];
116 in_ = in;
117 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[0]->nblock()*range[1]->nblock());
118 for (auto& a2 : *range[2])
119 for (auto& c3 : *range[0])
120 for (auto& c5 : *range[0])
121 for (auto& x0 : *range[1])
122 if (t[0]->is_local(x0, c5, c3, a2))
123 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c5, c3, a2}}, in, t[0], range));
124 }
125
Task657(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)126 Task657::Task657(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
127 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
128 out_ = t[0];
129 in_ = in;
130 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
131 for (auto& c3 : *range[0])
132 for (auto& a4 : *range[2])
133 for (auto& c1 : *range[0])
134 for (auto& a2 : *range[2])
135 if (t[0]->is_local(a2, c1, a4, c3))
136 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
137 }
138
Task658(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)139 Task658::Task658(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
140 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
141 out_ = t[0];
142 in_ = in;
143 subtasks_.reserve(range[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[0]->nblock());
144 for (auto& x1 : *range[1])
145 for (auto& a4 : *range[2])
146 for (auto& c3 : *range[0])
147 for (auto& c5 : *range[0])
148 if (t[0]->is_local(c5, c3, a4, x1))
149 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c5, c3, a4, x1}}, in, t[0], range));
150 }
151
Task659(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)152 Task659::Task659(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
153 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
154 out_ = t[0];
155 in_ = in;
156 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[0]->nblock()*range[1]->nblock());
157 for (auto& a4 : *range[2])
158 for (auto& c3 : *range[0])
159 for (auto& c5 : *range[0])
160 for (auto& x0 : *range[1])
161 if (t[0]->is_local(x0, c5, c3, a4))
162 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c5, c3, a4}}, in, t[0], range));
163 }
164
Task660(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)165 Task660::Task660(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
166 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
167 out_ = t[0];
168 in_ = in;
169 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
170 for (auto& c3 : *range[0])
171 for (auto& a4 : *range[2])
172 for (auto& c1 : *range[0])
173 for (auto& a2 : *range[2])
174 if (t[0]->is_local(a2, c1, a4, c3))
175 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
176 }
177
Task661(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)178 Task661::Task661(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
179 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
180 out_ = t[0];
181 in_ = in;
182 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
183 for (auto& x0 : *range[1])
184 for (auto& c3 : *range[0])
185 for (auto& a5 : *range[2])
186 for (auto& c1 : *range[0])
187 if (t[0]->is_local(c1, a5, c3, x0))
188 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a5, c3, x0}}, in, t[0], range));
189 }
190
Task662(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)191 Task662::Task662(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
192 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
193 out_ = t[0];
194 in_ = in;
195 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
196 for (auto& c3 : *range[0])
197 for (auto& a4 : *range[2])
198 for (auto& c1 : *range[0])
199 for (auto& a2 : *range[2])
200 if (t[0]->is_local(a2, c1, a4, c3))
201 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
202 }
203
Task663(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)204 Task663::Task663(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
205 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
206 out_ = t[0];
207 in_ = in;
208 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
209 for (auto& x0 : *range[1])
210 for (auto& c3 : *range[0])
211 for (auto& a5 : *range[2])
212 for (auto& c1 : *range[0])
213 if (t[0]->is_local(c1, a5, c3, x0))
214 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a5, c3, x0}}, in, t[0], range));
215 }
216
Task664(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)217 Task664::Task664(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
218 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
219 out_ = t[0];
220 in_ = in;
221 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
222 for (auto& c3 : *range[0])
223 for (auto& a4 : *range[2])
224 for (auto& c1 : *range[0])
225 for (auto& a2 : *range[2])
226 if (t[0]->is_local(a2, c1, a4, c3))
227 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
228 }
229
Task665(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)230 Task665::Task665(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[2]->nblock()*range[0]->nblock());
235 for (auto& x2 : *range[1])
236 for (auto& x3 : *range[1])
237 for (auto& a2 : *range[2])
238 for (auto& c3 : *range[0])
239 if (t[0]->is_local(c3, a2, x3, x2))
240 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x3, x2}}, in, t[0], range));
241 }
242
Task666(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)243 Task666::Task666(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
244 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
245 out_ = t[0];
246 in_ = in;
247 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
248 for (auto& x0 : *range[1])
249 for (auto& x1 : *range[1])
250 for (auto& a2 : *range[2])
251 for (auto& c3 : *range[0])
252 if (t[0]->is_local(c3, a2, x1, x0))
253 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x1, x0}}, in, t[0], range));
254 }
255
Task667(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)256 Task667::Task667(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
257 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
258 out_ = t[0];
259 in_ = in;
260 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
261 for (auto& x2 : *range[1])
262 for (auto& x3 : *range[1])
263 for (auto& a2 : *range[2])
264 for (auto& c3 : *range[0])
265 if (t[0]->is_local(c3, a2, x3, x2))
266 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x3, x2}}, in, t[0], range));
267 }
268
Task668(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)269 Task668::Task668(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
270 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
271 out_ = t[0];
272 in_ = in;
273 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
274 for (auto& x2 : *range[1])
275 for (auto& x3 : *range[1])
276 for (auto& a2 : *range[2])
277 for (auto& c3 : *range[0])
278 if (t[0]->is_local(c3, a2, x3, x2))
279 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x3, x2}}, in, t[0], range));
280 }
281
Task669(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)282 Task669::Task669(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
283 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
284 out_ = t[0];
285 in_ = in;
286 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
287 for (auto& c3 : *range[0])
288 for (auto& a4 : *range[2])
289 for (auto& c1 : *range[0])
290 for (auto& a2 : *range[2])
291 if (t[0]->is_local(a2, c1, a4, c3))
292 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
293 }
294
Task670(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)295 Task670::Task670(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
296 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
297 out_ = t[0];
298 in_ = in;
299 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
300 for (auto& x2 : *range[1])
301 for (auto& x3 : *range[1])
302 for (auto& a4 : *range[2])
303 for (auto& c3 : *range[0])
304 if (t[0]->is_local(c3, a4, x3, x2))
305 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, x3, x2}}, in, t[0], range));
306 }
307
Task671(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)308 Task671::Task671(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
309 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
310 out_ = t[0];
311 in_ = in;
312 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
313 for (auto& x0 : *range[1])
314 for (auto& x1 : *range[1])
315 for (auto& a4 : *range[2])
316 for (auto& c3 : *range[0])
317 if (t[0]->is_local(c3, a4, x1, x0))
318 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, x1, x0}}, in, t[0], range));
319 }
320
Task672(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)321 Task672::Task672(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
322 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
323 out_ = t[0];
324 in_ = in;
325 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
326 for (auto& x2 : *range[1])
327 for (auto& x3 : *range[1])
328 for (auto& a4 : *range[2])
329 for (auto& c3 : *range[0])
330 if (t[0]->is_local(c3, a4, x3, x2))
331 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, x3, x2}}, in, t[0], range));
332 }
333
Task673(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)334 Task673::Task673(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
335 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
336 out_ = t[0];
337 in_ = in;
338 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
339 for (auto& c3 : *range[0])
340 for (auto& a4 : *range[2])
341 for (auto& c1 : *range[0])
342 for (auto& a2 : *range[2])
343 if (t[0]->is_local(a2, c1, a4, c3))
344 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
345 }
346
Task674(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)347 Task674::Task674(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
348 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
349 out_ = t[0];
350 in_ = in;
351 subtasks_.reserve(range[0]->nblock()*range[2]->nblock());
352 for (auto& c5 : *range[0])
353 for (auto& a4 : *range[2])
354 if (t[0]->is_local(a4, c5))
355 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{a4, c5}}, in, t[0], range));
356 }
357
Task675(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)358 Task675::Task675(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
359 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
360 out_ = t[0];
361 in_ = in;
362 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
363 for (auto& x0 : *range[1])
364 for (auto& c5 : *range[0])
365 for (auto& a4 : *range[2])
366 for (auto& x1 : *range[1])
367 if (t[0]->is_local(x1, a4, c5, x0))
368 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a4, c5, x0}}, in, t[0], range));
369 }
370
Task676(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)371 Task676::Task676(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
372 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
373 out_ = t[0];
374 in_ = in;
375 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
376 for (auto& c3 : *range[0])
377 for (auto& a4 : *range[2])
378 for (auto& c1 : *range[0])
379 for (auto& a2 : *range[2])
380 if (t[0]->is_local(a2, c1, a4, c3))
381 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
382 }
383
Task677(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)384 Task677::Task677(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
385 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
386 out_ = t[0];
387 in_ = in;
388 subtasks_.reserve(range[0]->nblock()*range[2]->nblock());
389 for (auto& c5 : *range[0])
390 for (auto& a2 : *range[2])
391 if (t[0]->is_local(a2, c5))
392 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{a2, c5}}, in, t[0], range));
393 }
394
Task678(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)395 Task678::Task678(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
396 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
397 out_ = t[0];
398 in_ = in;
399 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
400 for (auto& x0 : *range[1])
401 for (auto& c5 : *range[0])
402 for (auto& a2 : *range[2])
403 for (auto& x1 : *range[1])
404 if (t[0]->is_local(x1, a2, c5, x0))
405 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a2, c5, x0}}, in, t[0], range));
406 }
407
Task679(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)408 Task679::Task679(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
409 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
410 out_ = t[0];
411 in_ = in;
412 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
413 for (auto& c3 : *range[0])
414 for (auto& a4 : *range[2])
415 for (auto& c1 : *range[0])
416 for (auto& a2 : *range[2])
417 if (t[0]->is_local(a2, c1, a4, c3))
418 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
419 }
420
Task680(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)421 Task680::Task680(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
422 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
423 out_ = t[0];
424 in_ = in;
425 subtasks_.reserve(range[0]->nblock()*range[2]->nblock());
426 for (auto& c1 : *range[0])
427 for (auto& a5 : *range[2])
428 if (t[0]->is_local(a5, c1))
429 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{a5, c1}}, in, t[0], range));
430 }
431
Task681(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)432 Task681::Task681(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
433 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
434 out_ = t[0];
435 in_ = in;
436 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
437 for (auto& x0 : *range[1])
438 for (auto& c1 : *range[0])
439 for (auto& a5 : *range[2])
440 for (auto& x1 : *range[1])
441 if (t[0]->is_local(x1, a5, c1, x0))
442 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a5, c1, x0}}, in, t[0], range));
443 }
444
Task682(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)445 Task682::Task682(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
446 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
447 out_ = t[0];
448 in_ = in;
449 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
450 for (auto& c3 : *range[0])
451 for (auto& a4 : *range[2])
452 for (auto& c1 : *range[0])
453 for (auto& a2 : *range[2])
454 if (t[0]->is_local(a2, c1, a4, c3))
455 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
456 }
457
Task683(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)458 Task683::Task683(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[0]->nblock()*range[2]->nblock());
463 for (auto& c1 : *range[0])
464 for (auto& a5 : *range[2])
465 if (t[0]->is_local(a5, c1))
466 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{a5, c1}}, in, t[0], range));
467 }
468
Task684(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)469 Task684::Task684(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
470 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
471 out_ = t[0];
472 in_ = in;
473 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
474 for (auto& x0 : *range[1])
475 for (auto& c1 : *range[0])
476 for (auto& a5 : *range[2])
477 for (auto& x1 : *range[1])
478 if (t[0]->is_local(x1, a5, c1, x0))
479 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a5, c1, x0}}, in, t[0], range));
480 }
481
Task685(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)482 Task685::Task685(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
483 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
484 out_ = t[0];
485 in_ = in;
486 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
487 for (auto& c3 : *range[0])
488 for (auto& a4 : *range[2])
489 for (auto& c1 : *range[0])
490 for (auto& a2 : *range[2])
491 if (t[0]->is_local(a2, c1, a4, c3))
492 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
493 }
494
Task686(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)495 Task686::Task686(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
496 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
497 out_ = t[0];
498 in_ = in;
499 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
500 for (auto& x2 : *range[1])
501 for (auto& x3 : *range[1])
502 for (auto& a2 : *range[2])
503 for (auto& c3 : *range[0])
504 if (t[0]->is_local(c3, a2, x3, x2))
505 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x3, x2}}, in, t[0], range));
506 }
507
Task687(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)508 Task687::Task687(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
509 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
510 out_ = t[0];
511 in_ = in;
512 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
513 for (auto& x0 : *range[1])
514 for (auto& x1 : *range[1])
515 for (auto& a2 : *range[2])
516 for (auto& c3 : *range[0])
517 if (t[0]->is_local(c3, a2, x1, x0))
518 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x1, x0}}, in, t[0], range));
519 }
520
Task688(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)521 Task688::Task688(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
522 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
523 out_ = t[0];
524 in_ = in;
525 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
526 for (auto& x2 : *range[1])
527 for (auto& x3 : *range[1])
528 for (auto& a2 : *range[2])
529 for (auto& c3 : *range[0])
530 if (t[0]->is_local(c3, a2, x3, x2))
531 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a2, x3, x2}}, in, t[0], range));
532 }
533
Task689(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)534 Task689::Task689(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
535 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
536 out_ = t[0];
537 in_ = in;
538 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
539 for (auto& c3 : *range[0])
540 for (auto& a4 : *range[2])
541 for (auto& c1 : *range[0])
542 for (auto& a2 : *range[2])
543 if (t[0]->is_local(a2, c1, a4, c3))
544 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
545 }
546
Task690(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)547 Task690::Task690(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
548 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
549 out_ = t[0];
550 in_ = in;
551 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
552 for (auto& x2 : *range[1])
553 for (auto& x3 : *range[1])
554 for (auto& a4 : *range[2])
555 for (auto& c3 : *range[0])
556 if (t[0]->is_local(c3, a4, x3, x2))
557 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, x3, x2}}, in, t[0], range));
558 }
559
Task691(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)560 Task691::Task691(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
561 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
562 out_ = t[0];
563 in_ = in;
564 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
565 for (auto& x0 : *range[1])
566 for (auto& x1 : *range[1])
567 for (auto& a4 : *range[2])
568 for (auto& c3 : *range[0])
569 if (t[0]->is_local(c3, a4, x1, x0))
570 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, x1, x0}}, in, t[0], range));
571 }
572
Task692(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)573 Task692::Task692(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
574 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
575 out_ = t[0];
576 in_ = in;
577 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
578 for (auto& x2 : *range[1])
579 for (auto& x3 : *range[1])
580 for (auto& a4 : *range[2])
581 for (auto& c3 : *range[0])
582 if (t[0]->is_local(c3, a4, x3, x2))
583 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, x3, x2}}, in, t[0], range));
584 }
585
Task693(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)586 Task693::Task693(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
587 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
588 out_ = t[0];
589 in_ = in;
590 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
591 for (auto& c3 : *range[0])
592 for (auto& a4 : *range[2])
593 for (auto& c1 : *range[0])
594 for (auto& a2 : *range[2])
595 if (t[0]->is_local(a2, c1, a4, c3))
596 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
597 }
598
Task694(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)599 Task694::Task694(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
600 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
601 out_ = t[0];
602 in_ = in;
603 subtasks_.reserve(range[1]->nblock()*range[2]->nblock());
604 for (auto& x0 : *range[1])
605 for (auto& a4 : *range[2])
606 if (t[0]->is_local(a4, x0))
607 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{a4, x0}}, in, t[0], range));
608 }
609
Task695(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)610 Task695::Task695(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
611 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
612 out_ = t[0];
613 in_ = in;
614 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
615 for (auto& c3 : *range[0])
616 for (auto& a4 : *range[2])
617 for (auto& c1 : *range[0])
618 for (auto& a2 : *range[2])
619 if (t[0]->is_local(a2, c1, a4, c3))
620 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
621 }
622
Task696(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)623 Task696::Task696(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
624 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
625 out_ = t[0];
626 in_ = in;
627 subtasks_.reserve(range[1]->nblock()*range[2]->nblock());
628 for (auto& x0 : *range[1])
629 for (auto& a2 : *range[2])
630 if (t[0]->is_local(a2, x0))
631 subtasks_.push_back(make_shared<Task_local>(array<const Index,2>{{a2, x0}}, in, t[0], range));
632 }
633
Task697(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)634 Task697::Task697(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
635 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
636 out_ = t[0];
637 in_ = in;
638 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
639 for (auto& c3 : *range[0])
640 for (auto& a4 : *range[2])
641 for (auto& c1 : *range[0])
642 for (auto& a2 : *range[2])
643 if (t[0]->is_local(a2, c1, a4, c3))
644 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
645 }
646
Task698(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)647 Task698::Task698(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
648 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
649 out_ = t[0];
650 in_ = in;
651 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
652 for (auto& c3 : *range[0])
653 for (auto& a4 : *range[2])
654 for (auto& c1 : *range[0])
655 for (auto& a2 : *range[2])
656 if (t[0]->is_local(a2, c1, a4, c3))
657 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
658 }
659
Task699(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)660 Task699::Task699(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
661 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
662 out_ = t[0];
663 in_ = in;
664 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
665 for (auto& c3 : *range[0])
666 for (auto& a4 : *range[2])
667 for (auto& c1 : *range[0])
668 for (auto& a2 : *range[2])
669 if (t[0]->is_local(a2, c1, a4, c3))
670 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a2, c1, a4, c3}}, in, t[0], range));
671 }
672
673 #endif
674