1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: MRCI_gen20.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_tasks20.h>
29
30 using namespace std;
31 using namespace bagel;
32 using namespace bagel::SMITH;
33 using namespace bagel::SMITH::MRCI;
34
Task950(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)35 Task950::Task950(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[2]->nblock()*range[0]->nblock()*range[1]->nblock()*range[1]->nblock());
40 for (auto& a2 : *range[2])
41 for (auto& c1 : *range[0])
42 for (auto& x0 : *range[1])
43 for (auto& x1 : *range[1])
44 if (t[0]->is_local(x1, x0, c1, a2))
45 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, x0, c1, a2}}, in, t[0], range));
46 }
47
Task951(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)48 Task951::Task951(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
49 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
50 out_ = t[0];
51 in_ = in;
52 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
53 for (auto& a1 : *range[2])
54 for (auto& x0 : *range[1])
55 for (auto& x2 : *range[1])
56 for (auto& x1 : *range[1])
57 if (t[0]->is_local(x1, x2, x0, a1))
58 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, x2, x0, a1}}, in, t[0], range));
59 }
60
Task952(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)61 Task952::Task952(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[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
66 for (auto& a1 : *range[2])
67 for (auto& x1 : *range[1])
68 for (auto& x2 : *range[1])
69 for (auto& x0 : *range[1])
70 if (t[0]->is_local(x0, x2, x1, a1))
71 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x2, x1, a1}}, in, t[0], range));
72 }
73
Task953(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)74 Task953::Task953(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
75 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
76 out_ = t[0];
77 in_ = in;
78 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
79 for (auto& a1 : *range[2])
80 for (auto& x1 : *range[1])
81 for (auto& x2 : *range[1])
82 for (auto& x0 : *range[1])
83 if (t[0]->is_local(x0, x2, x1, a1))
84 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x2, x1, a1}}, in, t[0], range));
85 }
86
Task954(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)87 Task954::Task954(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[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
92 for (auto& a1 : *range[2])
93 for (auto& x1 : *range[1])
94 for (auto& x2 : *range[1])
95 for (auto& x0 : *range[1])
96 if (t[0]->is_local(x0, x2, x1, a1))
97 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x2, x1, a1}}, in, t[0], range));
98 }
99
Task955(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)100 Task955::Task955(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
101 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
102 out_ = t[0];
103 in_ = in;
104 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
105 for (auto& x0 : *range[1])
106 for (auto& c1 : *range[0])
107 for (auto& x1 : *range[1])
108 for (auto& c2 : *range[0])
109 if (t[0]->is_local(c2, x1, c1, x0))
110 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, x1, c1, x0}}, in, t[0], range));
111 }
112
Task956(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)113 Task956::Task956(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
114 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
115 out_ = t[0];
116 in_ = in;
117 subtasks_.reserve(range[0]->nblock()*range[0]->nblock()*range[1]->nblock()*range[1]->nblock());
118 for (auto& c2 : *range[0])
119 for (auto& c1 : *range[0])
120 for (auto& x1 : *range[1])
121 for (auto& x0 : *range[1])
122 if (t[0]->is_local(x0, x1, c1, c2))
123 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, c1, c2}}, in, t[0], range));
124 }
125
Task957(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)126 Task957::Task957(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
127 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
128 out_ = t[0];
129 in_ = in;
130 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
131 for (auto& a2 : *range[2])
132 for (auto& c1 : *range[0])
133 for (auto& x0 : *range[1])
134 for (auto& c3 : *range[0])
135 if (t[0]->is_local(c3, x0, c1, a2))
136 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, x0, c1, a2}}, in, t[0], range));
137 }
138
Task958(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)139 Task958::Task958(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[2]->nblock()*range[0]->nblock()*range[0]->nblock()*range[1]->nblock());
144 for (auto& a2 : *range[2])
145 for (auto& c1 : *range[0])
146 for (auto& c3 : *range[0])
147 for (auto& x0 : *range[1])
148 if (t[0]->is_local(x0, c3, c1, a2))
149 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c3, c1, a2}}, in, t[0], range));
150 }
151
Task959(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)152 Task959::Task959(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
153 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
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& a2 : *range[2])
158 for (auto& c1 : *range[0])
159 for (auto& c3 : *range[0])
160 for (auto& x0 : *range[1])
161 if (t[0]->is_local(x0, c3, c1, a2))
162 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c3, c1, a2}}, in, t[0], range));
163 }
164
Task960(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)165 Task960::Task960(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
166 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
167 out_ = t[0];
168 in_ = in;
169 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
170 for (auto& a2 : *range[2])
171 for (auto& c1 : *range[0])
172 for (auto& a4 : *range[2])
173 for (auto& c3 : *range[0])
174 if (t[0]->is_local(c3, a4, c1, a2))
175 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, c1, a2}}, in, t[0], range));
176 }
177
Task961(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)178 Task961::Task961(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
179 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
180 out_ = t[0];
181 in_ = in;
182 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
183 for (auto& a2 : *range[2])
184 for (auto& c3 : *range[0])
185 for (auto& a4 : *range[2])
186 for (auto& c1 : *range[0])
187 if (t[0]->is_local(c1, a4, c3, a2))
188 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range));
189 }
190
Task962(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)191 Task962::Task962(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
192 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
193 out_ = t[0];
194 in_ = in;
195 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
196 for (auto& a1 : *range[2])
197 for (auto& x0 : *range[1])
198 for (auto& a3 : *range[2])
199 for (auto& c2 : *range[0])
200 if (t[0]->is_local(c2, a3, x0, a1))
201 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, a3, x0, a1}}, in, t[0], range));
202 }
203
Task963(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)204 Task963::Task963(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[2]->nblock()*range[0]->nblock()*range[2]->nblock());
209 for (auto& x0 : *range[1])
210 for (auto& a1 : *range[2])
211 for (auto& c2 : *range[0])
212 for (auto& a3 : *range[2])
213 if (t[0]->is_local(a3, c2, a1, x0))
214 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, c2, a1, x0}}, in, t[0], range));
215 }
216
Task964(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)217 Task964::Task964(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[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
222 for (auto& x0 : *range[1])
223 for (auto& a1 : *range[2])
224 for (auto& c2 : *range[0])
225 for (auto& a3 : *range[2])
226 if (t[0]->is_local(a3, c2, a1, x0))
227 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, c2, a1, x0}}, in, t[0], range));
228 }
229
Task965(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)230 Task965::Task965(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
231 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
232 out_ = t[0];
233 in_ = in;
234 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[2]->nblock()*range[1]->nblock());
235 for (auto& a1 : *range[2])
236 for (auto& x0 : *range[1])
237 for (auto& a2 : *range[2])
238 for (auto& x1 : *range[1])
239 if (t[0]->is_local(x1, a2, x0, a1))
240 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a2, x0, a1}}, in, t[0], range));
241 }
242
Task966(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)243 Task966::Task966(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[2]->nblock()*range[1]->nblock()*range[1]->nblock());
248 for (auto& a2 : *range[2])
249 for (auto& a1 : *range[2])
250 for (auto& x1 : *range[1])
251 for (auto& x0 : *range[1])
252 if (t[0]->is_local(x0, x1, a1, a2))
253 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, a1, a2}}, in, t[0], range));
254 }
255
Task967(vector<shared_ptr<Tensor>> t,const bool reset)256 Task967::Task967(vector<shared_ptr<Tensor>> t, const bool reset) : reset_(reset) {
257 n_ = t[0];
258 }
259
Task968(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)260 Task968::Task968(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
261 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
262 out_ = t[0];
263 in_ = in;
264 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
265 for (auto& x0 : *range[1])
266 for (auto& c1 : *range[0])
267 for (auto& x1 : *range[1])
268 for (auto& c2 : *range[0])
269 if (t[0]->is_local(c2, x1, c1, x0))
270 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, x1, c1, x0}}, in, t[0], range));
271 }
272
Task969(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)273 Task969::Task969(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
274 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
275 out_ = t[0];
276 in_ = in;
277 subtasks_.reserve(range[0]->nblock()*range[0]->nblock()*range[1]->nblock()*range[1]->nblock());
278 for (auto& c2 : *range[0])
279 for (auto& c1 : *range[0])
280 for (auto& x1 : *range[1])
281 for (auto& x0 : *range[1])
282 if (t[0]->is_local(x0, x1, c1, c2))
283 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, c1, c2}}, in, t[0], range));
284 }
285
Task970(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)286 Task970::Task970(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
287 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
288 out_ = t[0];
289 in_ = in;
290 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
291 for (auto& x1 : *range[1])
292 for (auto& x0 : *range[1])
293 for (auto& x2 : *range[1])
294 for (auto& c1 : *range[0])
295 if (t[0]->is_local(c1, x2, x0, x1))
296 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, x2, x0, x1}}, in, t[0], range));
297 }
298
Task971(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)299 Task971::Task971(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
300 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
301 out_ = t[0];
302 in_ = in;
303 subtasks_.reserve(range[0]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
304 for (auto& c1 : *range[0])
305 for (auto& x0 : *range[1])
306 for (auto& x1 : *range[1])
307 for (auto& x2 : *range[1])
308 if (t[0]->is_local(x2, x1, x0, c1))
309 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x2, x1, x0, c1}}, in, t[0], range));
310 }
311
Task972(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)312 Task972::Task972(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
313 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
314 out_ = t[0];
315 in_ = in;
316 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
317 for (auto& a2 : *range[2])
318 for (auto& c1 : *range[0])
319 for (auto& x0 : *range[1])
320 for (auto& c3 : *range[0])
321 if (t[0]->is_local(c3, x0, c1, a2))
322 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, x0, c1, a2}}, in, t[0], range));
323 }
324
Task973(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)325 Task973::Task973(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
326 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
327 out_ = t[0];
328 in_ = in;
329 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[1]->nblock());
330 for (auto& c1 : *range[0])
331 for (auto& a2 : *range[2])
332 for (auto& c3 : *range[0])
333 for (auto& x0 : *range[1])
334 if (t[0]->is_local(x0, c3, a2, c1))
335 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c3, a2, c1}}, in, t[0], range));
336 }
337
Task974(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)338 Task974::Task974(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
339 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
340 out_ = t[0];
341 in_ = in;
342 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[0]->nblock()*range[1]->nblock());
343 for (auto& c1 : *range[0])
344 for (auto& a2 : *range[2])
345 for (auto& c3 : *range[0])
346 for (auto& x0 : *range[1])
347 if (t[0]->is_local(x0, c3, a2, c1))
348 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, c3, a2, c1}}, in, t[0], range));
349 }
350
Task975(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)351 Task975::Task975(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
352 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
353 out_ = t[0];
354 in_ = in;
355 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
356 for (auto& a1 : *range[2])
357 for (auto& x0 : *range[1])
358 for (auto& x1 : *range[1])
359 for (auto& c2 : *range[0])
360 if (t[0]->is_local(c2, x1, x0, a1))
361 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, x1, x0, a1}}, in, t[0], range));
362 }
363
Task976(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)364 Task976::Task976(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
365 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
366 out_ = t[0];
367 in_ = in;
368 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[1]->nblock()*range[1]->nblock());
369 for (auto& c2 : *range[0])
370 for (auto& a1 : *range[2])
371 for (auto& x1 : *range[1])
372 for (auto& x0 : *range[1])
373 if (t[0]->is_local(x0, x1, a1, c2))
374 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, a1, c2}}, in, t[0], range));
375 }
376
Task977(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)377 Task977::Task977(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
378 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
379 out_ = t[0];
380 in_ = in;
381 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[1]->nblock()*range[1]->nblock());
382 for (auto& c2 : *range[0])
383 for (auto& a1 : *range[2])
384 for (auto& x1 : *range[1])
385 for (auto& x0 : *range[1])
386 if (t[0]->is_local(x0, x1, a1, c2))
387 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, a1, c2}}, in, t[0], range));
388 }
389
Task978(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)390 Task978::Task978(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
391 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
392 out_ = t[0];
393 in_ = in;
394 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[1]->nblock()*range[1]->nblock());
395 for (auto& a2 : *range[2])
396 for (auto& c1 : *range[0])
397 for (auto& x1 : *range[1])
398 for (auto& x0 : *range[1])
399 if (t[0]->is_local(x0, x1, c1, a2))
400 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, c1, a2}}, in, t[0], range));
401 }
402
Task979(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)403 Task979::Task979(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
404 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
405 out_ = t[0];
406 in_ = in;
407 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[1]->nblock()*range[1]->nblock());
408 for (auto& c1 : *range[0])
409 for (auto& a2 : *range[2])
410 for (auto& x0 : *range[1])
411 for (auto& x1 : *range[1])
412 if (t[0]->is_local(x1, x0, a2, c1))
413 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, x0, a2, c1}}, in, t[0], range));
414 }
415
Task980(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)416 Task980::Task980(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
417 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
418 out_ = t[0];
419 in_ = in;
420 subtasks_.reserve(range[0]->nblock()*range[2]->nblock()*range[1]->nblock()*range[1]->nblock());
421 for (auto& c1 : *range[0])
422 for (auto& a2 : *range[2])
423 for (auto& x0 : *range[1])
424 for (auto& x1 : *range[1])
425 if (t[0]->is_local(x1, x0, a2, c1))
426 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, x0, a2, c1}}, in, t[0], range));
427 }
428
Task981(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)429 Task981::Task981(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
430 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
431 out_ = t[0];
432 in_ = in;
433 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
434 for (auto& a1 : *range[2])
435 for (auto& x0 : *range[1])
436 for (auto& x2 : *range[1])
437 for (auto& x1 : *range[1])
438 if (t[0]->is_local(x1, x2, x0, a1))
439 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, x2, x0, a1}}, in, t[0], range));
440 }
441
Task982(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)442 Task982::Task982(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
443 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
444 out_ = t[0];
445 in_ = in;
446 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[1]->nblock());
447 for (auto& a1 : *range[2])
448 for (auto& x1 : *range[1])
449 for (auto& x2 : *range[1])
450 for (auto& x0 : *range[1])
451 if (t[0]->is_local(x0, x2, x1, a1))
452 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x2, x1, a1}}, in, t[0], range));
453 }
454
Task983(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)455 Task983::Task983(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
456 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
457 out_ = t[0];
458 in_ = in;
459 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
460 for (auto& a2 : *range[2])
461 for (auto& c1 : *range[0])
462 for (auto& a4 : *range[2])
463 for (auto& c3 : *range[0])
464 if (t[0]->is_local(c3, a4, c1, a2))
465 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, c1, a2}}, in, t[0], range));
466 }
467
Task984(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)468 Task984::Task984(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
469 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
470 out_ = t[0];
471 in_ = in;
472 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
473 for (auto& a2 : *range[2])
474 for (auto& c3 : *range[0])
475 for (auto& a4 : *range[2])
476 for (auto& c1 : *range[0])
477 if (t[0]->is_local(c1, a4, c3, a2))
478 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range));
479 }
480
Task985(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)481 Task985::Task985(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
482 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
483 out_ = t[0];
484 in_ = in;
485 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
486 for (auto& a1 : *range[2])
487 for (auto& x0 : *range[1])
488 for (auto& a3 : *range[2])
489 for (auto& c2 : *range[0])
490 if (t[0]->is_local(c2, a3, x0, a1))
491 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, a3, x0, a1}}, in, t[0], range));
492 }
493
Task986(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)494 Task986::Task986(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
495 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
496 out_ = t[0];
497 in_ = in;
498 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
499 for (auto& a1 : *range[2])
500 for (auto& c2 : *range[0])
501 for (auto& a3 : *range[2])
502 for (auto& x0 : *range[1])
503 if (t[0]->is_local(x0, a3, c2, a1))
504 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, a3, c2, a1}}, in, t[0], range));
505 }
506
Task987(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)507 Task987::Task987(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
508 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
509 out_ = t[0];
510 in_ = in;
511 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
512 for (auto& a1 : *range[2])
513 for (auto& c2 : *range[0])
514 for (auto& a3 : *range[2])
515 for (auto& x0 : *range[1])
516 if (t[0]->is_local(x0, a3, c2, a1))
517 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, a3, c2, a1}}, in, t[0], range));
518 }
519
Task988(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)520 Task988::Task988(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
521 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
522 out_ = t[0];
523 in_ = in;
524 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[2]->nblock()*range[1]->nblock());
525 for (auto& a1 : *range[2])
526 for (auto& x0 : *range[1])
527 for (auto& a2 : *range[2])
528 for (auto& x1 : *range[1])
529 if (t[0]->is_local(x1, a2, x0, a1))
530 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a2, x0, a1}}, in, t[0], range));
531 }
532
Task989(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)533 Task989::Task989(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
534 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
535 out_ = t[0];
536 in_ = in;
537 subtasks_.reserve(range[2]->nblock()*range[2]->nblock()*range[1]->nblock()*range[1]->nblock());
538 for (auto& a2 : *range[2])
539 for (auto& a1 : *range[2])
540 for (auto& x1 : *range[1])
541 for (auto& x0 : *range[1])
542 if (t[0]->is_local(x0, x1, a1, a2))
543 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x0, x1, a1, a2}}, in, t[0], range));
544 }
545
546 #endif
547