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