1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: RelCASA_gen5.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/relcasa/RelCASA_tasks5.h>
29
30 using namespace std;
31 using namespace bagel;
32 using namespace bagel::SMITH;
33 using namespace bagel::SMITH::RelCASA;
34
Task200(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)35 Task200::Task200(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[1]->nblock()*range[0]->nblock()*range[2]->nblock());
40 for (auto& x1 : *range[1])
41 for (auto& x0 : *range[1])
42 for (auto& c2 : *range[0])
43 for (auto& a1 : *range[2])
44 if (t[0]->is_local(a1, c2, x0, x1))
45 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, c2, x0, x1}}, in, t[0], range));
46 }
47
Task201(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)48 Task201::Task201(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[0]->nblock()*range[2]->nblock());
53 for (auto& x1 : *range[1])
54 for (auto& x0 : *range[1])
55 for (auto& c2 : *range[0])
56 for (auto& a1 : *range[2])
57 if (t[0]->is_local(a1, c2, x0, x1))
58 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, c2, x0, x1}}, in, t[0], range));
59 }
60
Task202(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)61 Task202::Task202(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[0]->nblock()*range[1]->nblock()*range[2]->nblock()*range[2]->nblock());
66 for (auto& c2 : *range[0])
67 for (auto& x0 : *range[1])
68 for (auto& a1 : *range[2])
69 for (auto& a3 : *range[2])
70 if (t[0]->is_local(a3, a1, x0, c2))
71 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, a1, x0, c2}}, in, t[0], range));
72 }
73
Task203(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)74 Task203::Task203(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[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
79 for (auto& x0 : *range[1])
80 for (auto& a3 : *range[2])
81 for (auto& c2 : *range[0])
82 for (auto& a4 : *range[2])
83 if (t[0]->is_local(a4, c2, a3, x0))
84 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a4, c2, a3, x0}}, in, t[0], range));
85 }
86
Task204(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)87 Task204::Task204(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
88 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
89 out_ = t[0];
90 in_ = in;
91 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
92 for (auto& a3 : *range[2])
93 for (auto& c2 : *range[0])
94 for (auto& a4 : *range[2])
95 for (auto& x1 : *range[1])
96 if (t[0]->is_local(x1, a4, c2, a3))
97 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a4, c2, a3}}, in, t[0], range));
98 }
99
Task205(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)100 Task205::Task205(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[0]->nblock()*range[1]->nblock()*range[2]->nblock()*range[2]->nblock());
105 for (auto& c2 : *range[0])
106 for (auto& x0 : *range[1])
107 for (auto& a1 : *range[2])
108 for (auto& a3 : *range[2])
109 if (t[0]->is_local(a3, a1, x0, c2))
110 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, a1, x0, c2}}, in, t[0], range));
111 }
112
Task206(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)113 Task206::Task206(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[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[2]->nblock());
118 for (auto& x0 : *range[1])
119 for (auto& a1 : *range[2])
120 for (auto& c2 : *range[0])
121 for (auto& a4 : *range[2])
122 if (t[0]->is_local(a4, c2, a1, x0))
123 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a4, c2, a1, x0}}, in, t[0], range));
124 }
125
Task207(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)126 Task207::Task207(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[2]->nblock()*range[1]->nblock());
131 for (auto& a1 : *range[2])
132 for (auto& c2 : *range[0])
133 for (auto& a4 : *range[2])
134 for (auto& x1 : *range[1])
135 if (t[0]->is_local(x1, a4, c2, a1))
136 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a4, c2, a1}}, in, t[0], range));
137 }
138
Task208(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)139 Task208::Task208(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[0]->nblock()*range[1]->nblock()*range[2]->nblock()*range[2]->nblock());
144 for (auto& c2 : *range[0])
145 for (auto& x0 : *range[1])
146 for (auto& a1 : *range[2])
147 for (auto& a3 : *range[2])
148 if (t[0]->is_local(a3, a1, x0, c2))
149 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, a1, x0, c2}}, in, t[0], range));
150 }
151
Task209(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range,const double e)152 Task209::Task209(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range, const double e) {
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[2]->nblock()*range[1]->nblock());
157 for (auto& a1 : *range[2])
158 for (auto& c2 : *range[0])
159 for (auto& a3 : *range[2])
160 for (auto& x1 : *range[1])
161 if (t[0]->is_local(x1, a3, c2, a1))
162 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a3, c2, a1}}, in, t[0], range, e));
163 }
164
Task210(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)165 Task210::Task210(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[1]->nblock()*range[2]->nblock()*range[2]->nblock());
170 for (auto& c2 : *range[0])
171 for (auto& x0 : *range[1])
172 for (auto& a1 : *range[2])
173 for (auto& a3 : *range[2])
174 if (t[0]->is_local(a3, a1, x0, c2))
175 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, a1, x0, c2}}, in, t[0], range));
176 }
177
Task211(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)178 Task211::Task211(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[1]->nblock());
183 for (auto& a1 : *range[2])
184 for (auto& c2 : *range[0])
185 for (auto& a3 : *range[2])
186 for (auto& x3 : *range[1])
187 if (t[0]->is_local(x3, a3, c2, a1))
188 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, a3, c2, a1}}, in, t[0], range));
189 }
190
Task212(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)191 Task212::Task212(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[1]->nblock()*range[2]->nblock()*range[2]->nblock());
196 for (auto& c2 : *range[0])
197 for (auto& x0 : *range[1])
198 for (auto& a1 : *range[2])
199 for (auto& a3 : *range[2])
200 if (t[0]->is_local(a3, a1, x0, c2))
201 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a3, a1, x0, c2}}, in, t[0], range));
202 }
203
Task213(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)204 Task213::Task213(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
205 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
206 out_ = t[0];
207 in_ = in;
208 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[1]->nblock());
209 for (auto& a1 : *range[2])
210 for (auto& c2 : *range[0])
211 for (auto& a3 : *range[2])
212 for (auto& x5 : *range[1])
213 if (t[0]->is_local(x5, a3, c2, a1))
214 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x5, a3, c2, a1}}, in, t[0], range));
215 }
216
Task214(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)217 Task214::Task214(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
218 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
219 out_ = t[0];
220 in_ = in;
221 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[2]->nblock()*range[1]->nblock());
222 for (auto& a1 : *range[2])
223 for (auto& x0 : *range[1])
224 for (auto& a2 : *range[2])
225 for (auto& x1 : *range[1])
226 if (t[0]->is_local(x1, a2, x0, a1))
227 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a2, x0, a1}}, in, t[0], range));
228 }
229
Task215(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)230 Task215::Task215(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[2]->nblock());
235 for (auto& x1 : *range[1])
236 for (auto& x0 : *range[1])
237 for (auto& a2 : *range[2])
238 for (auto& a1 : *range[2])
239 if (t[0]->is_local(a1, a2, x0, x1))
240 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a2, x0, x1}}, in, t[0], range));
241 }
242
Task216(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)243 Task216::Task216(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[1]->nblock()*range[2]->nblock()*range[2]->nblock()*range[1]->nblock());
248 for (auto& x2 : *range[1])
249 for (auto& a2 : *range[2])
250 for (auto& a1 : *range[2])
251 for (auto& x3 : *range[1])
252 if (t[0]->is_local(x3, a1, a2, x2))
253 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x3, a1, a2, x2}}, in, t[0], range));
254 }
255
Task217(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)256 Task217::Task217(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[2]->nblock());
261 for (auto& x1 : *range[1])
262 for (auto& x0 : *range[1])
263 for (auto& a2 : *range[2])
264 for (auto& a1 : *range[2])
265 if (t[0]->is_local(a1, a2, x0, x1))
266 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a2, x0, x1}}, in, t[0], range));
267 }
268
Task218(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)269 Task218::Task218(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[1]->nblock()*range[2]->nblock());
274 for (auto& x1 : *range[1])
275 for (auto& x2 : *range[1])
276 for (auto& x0 : *range[1])
277 for (auto& a1 : *range[2])
278 if (t[0]->is_local(a1, x0, x2, x1))
279 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, x0, x2, x1}}, in, t[0], range));
280 }
281
Task219(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)282 Task219::Task219(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[1]->nblock()*range[2]->nblock()*range[2]->nblock());
287 for (auto& x1 : *range[1])
288 for (auto& x0 : *range[1])
289 for (auto& a2 : *range[2])
290 for (auto& a1 : *range[2])
291 if (t[0]->is_local(a1, a2, x0, x1))
292 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a2, x0, x1}}, in, t[0], range));
293 }
294
Task220(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)295 Task220::Task220(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[2]->nblock());
300 for (auto& x1 : *range[1])
301 for (auto& x0 : *range[1])
302 for (auto& a3 : *range[2])
303 for (auto& a1 : *range[2])
304 if (t[0]->is_local(a1, a3, x0, x1))
305 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a3, x0, x1}}, in, t[0], range));
306 }
307
Task221(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)308 Task221::Task221(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[0]->nblock()*range[1]->nblock()*range[0]->nblock());
313 for (auto& x0 : *range[1])
314 for (auto& c1 : *range[0])
315 for (auto& x1 : *range[1])
316 for (auto& c2 : *range[0])
317 if (t[0]->is_local(c2, x1, c1, x0))
318 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, x1, c1, x0}}, in, t[0], range));
319 }
320
Task222(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range,const double e)321 Task222::Task222(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range, const double e) {
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[0]->nblock()*range[0]->nblock());
326 for (auto& x1 : *range[1])
327 for (auto& x0 : *range[1])
328 for (auto& c2 : *range[0])
329 for (auto& c1 : *range[0])
330 if (t[0]->is_local(c1, c2, x0, x1))
331 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, c2, x0, x1}}, in, t[0], range, e));
332 }
333
Task223(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)334 Task223::Task223(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[1]->nblock()*range[0]->nblock()*range[0]->nblock());
339 for (auto& x1 : *range[1])
340 for (auto& x0 : *range[1])
341 for (auto& c2 : *range[0])
342 for (auto& c1 : *range[0])
343 if (t[0]->is_local(c1, c2, x0, x1))
344 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, c2, x0, x1}}, in, t[0], range));
345 }
346
Task224(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)347 Task224::Task224(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[1]->nblock()*range[0]->nblock()*range[0]->nblock());
352 for (auto& x1 : *range[1])
353 for (auto& x0 : *range[1])
354 for (auto& c2 : *range[0])
355 for (auto& c1 : *range[0])
356 if (t[0]->is_local(c1, c2, x0, x1))
357 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, c2, x0, x1}}, in, t[0], range));
358 }
359
Task225(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)360 Task225::Task225(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
361 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
362 out_ = t[0];
363 in_ = in;
364 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
365 for (auto& a2 : *range[2])
366 for (auto& c1 : *range[0])
367 for (auto& a4 : *range[2])
368 for (auto& c3 : *range[0])
369 if (t[0]->is_local(c3, a4, c1, a2))
370 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, a4, c1, a2}}, in, t[0], range));
371 }
372
Task226(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range,const double e)373 Task226::Task226(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range, const double e) {
374 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
375 out_ = t[0];
376 in_ = in;
377 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
378 for (auto& a2 : *range[2])
379 for (auto& c3 : *range[0])
380 for (auto& a4 : *range[2])
381 for (auto& c1 : *range[0])
382 if (t[0]->is_local(c1, a4, c3, a2))
383 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range, e));
384 }
385
Task227(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)386 Task227::Task227(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[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
391 for (auto& a2 : *range[2])
392 for (auto& c3 : *range[0])
393 for (auto& a4 : *range[2])
394 for (auto& c1 : *range[0])
395 if (t[0]->is_local(c1, a4, c3, a2))
396 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range));
397 }
398
Task228(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)399 Task228::Task228(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
400 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
401 out_ = t[0];
402 in_ = in;
403 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
404 for (auto& a2 : *range[2])
405 for (auto& c3 : *range[0])
406 for (auto& a4 : *range[2])
407 for (auto& c1 : *range[0])
408 if (t[0]->is_local(c1, a4, c3, a2))
409 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range));
410 }
411
Task229(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)412 Task229::Task229(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[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
417 for (auto& a2 : *range[2])
418 for (auto& c3 : *range[0])
419 for (auto& a4 : *range[2])
420 for (auto& c1 : *range[0])
421 if (t[0]->is_local(c1, a4, c3, a2))
422 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range));
423 }
424
Task230(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)425 Task230::Task230(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
426 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
427 out_ = t[0];
428 in_ = in;
429 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[2]->nblock()*range[0]->nblock());
430 for (auto& a2 : *range[2])
431 for (auto& c3 : *range[0])
432 for (auto& a4 : *range[2])
433 for (auto& c1 : *range[0])
434 if (t[0]->is_local(c1, a4, c3, a2))
435 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, a4, c3, a2}}, in, t[0], range));
436 }
437
Task231(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)438 Task231::Task231(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
439 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
440 out_ = t[0];
441 in_ = in;
442 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[2]->nblock()*range[1]->nblock());
443 for (auto& a1 : *range[2])
444 for (auto& x0 : *range[1])
445 for (auto& a2 : *range[2])
446 for (auto& x1 : *range[1])
447 if (t[0]->is_local(x1, a2, x0, a1))
448 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{x1, a2, x0, a1}}, in, t[0], range));
449 }
450
Task232(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range,const double e)451 Task232::Task232(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range, const double e) {
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[1]->nblock()*range[2]->nblock()*range[2]->nblock());
456 for (auto& x1 : *range[1])
457 for (auto& x0 : *range[1])
458 for (auto& a2 : *range[2])
459 for (auto& a1 : *range[2])
460 if (t[0]->is_local(a1, a2, x0, x1))
461 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a2, x0, x1}}, in, t[0], range, e));
462 }
463
Task233(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)464 Task233::Task233(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[1]->nblock()*range[2]->nblock()*range[2]->nblock());
469 for (auto& x1 : *range[1])
470 for (auto& x0 : *range[1])
471 for (auto& a2 : *range[2])
472 for (auto& a1 : *range[2])
473 if (t[0]->is_local(a1, a2, x0, x1))
474 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a2, x0, x1}}, in, t[0], range));
475 }
476
Task234(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)477 Task234::Task234(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
478 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
479 out_ = t[0];
480 in_ = in;
481 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[2]->nblock());
482 for (auto& x1 : *range[1])
483 for (auto& x0 : *range[1])
484 for (auto& a2 : *range[2])
485 for (auto& a1 : *range[2])
486 if (t[0]->is_local(a1, a2, x0, x1))
487 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{a1, a2, x0, x1}}, in, t[0], range));
488 }
489
Task235(vector<shared_ptr<Tensor>> t,const bool reset)490 Task235::Task235(vector<shared_ptr<Tensor>> t, const bool reset) : reset_(reset) {
491 s_ = t[0];
492 }
493
Task236(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)494 Task236::Task236(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
495 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
496 out_ = t[0];
497 in_ = in;
498 subtasks_.reserve(range[1]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
499 for (auto& x0 : *range[1])
500 for (auto& c1 : *range[0])
501 for (auto& x1 : *range[1])
502 for (auto& c2 : *range[0])
503 if (t[0]->is_local(c2, x1, c1, x0))
504 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, x1, c1, x0}}, in, t[0], range));
505 }
506
Task237(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)507 Task237::Task237(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[1]->nblock()*range[1]->nblock()*range[0]->nblock()*range[0]->nblock());
512 for (auto& x1 : *range[1])
513 for (auto& x0 : *range[1])
514 for (auto& c2 : *range[0])
515 for (auto& c1 : *range[0])
516 if (t[0]->is_local(c1, c2, x0, x1))
517 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, c2, x0, x1}}, in, t[0], range));
518 }
519
Task238(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)520 Task238::Task238(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[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
525 for (auto& x1 : *range[1])
526 for (auto& x0 : *range[1])
527 for (auto& x2 : *range[1])
528 for (auto& c1 : *range[0])
529 if (t[0]->is_local(c1, x2, x0, x1))
530 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, x2, x0, x1}}, in, t[0], range));
531 }
532
Task239(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)533 Task239::Task239(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[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
538 for (auto& x0 : *range[1])
539 for (auto& x1 : *range[1])
540 for (auto& x2 : *range[1])
541 for (auto& c1 : *range[0])
542 if (t[0]->is_local(c1, x2, x1, x0))
543 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, x2, x1, x0}}, in, t[0], range));
544 }
545
Task240(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)546 Task240::Task240(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
547 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
548 out_ = t[0];
549 in_ = in;
550 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
551 for (auto& x0 : *range[1])
552 for (auto& x1 : *range[1])
553 for (auto& x2 : *range[1])
554 for (auto& c1 : *range[0])
555 if (t[0]->is_local(c1, x2, x1, x0))
556 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, x2, x1, x0}}, in, t[0], range));
557 }
558
Task241(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)559 Task241::Task241(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
560 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
561 out_ = t[0];
562 in_ = in;
563 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
564 for (auto& x0 : *range[1])
565 for (auto& x1 : *range[1])
566 for (auto& x2 : *range[1])
567 for (auto& c1 : *range[0])
568 if (t[0]->is_local(c1, x2, x1, x0))
569 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c1, x2, x1, x0}}, in, t[0], range));
570 }
571
Task242(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)572 Task242::Task242(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
573 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
574 out_ = t[0];
575 in_ = in;
576 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
577 for (auto& a2 : *range[2])
578 for (auto& c1 : *range[0])
579 for (auto& x0 : *range[1])
580 for (auto& c3 : *range[0])
581 if (t[0]->is_local(c3, x0, c1, a2))
582 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, x0, c1, a2}}, in, t[0], range));
583 }
584
Task243(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)585 Task243::Task243(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
586 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
587 out_ = t[0];
588 in_ = in;
589 subtasks_.reserve(range[1]->nblock()*range[2]->nblock()*range[0]->nblock()*range[0]->nblock());
590 for (auto& x0 : *range[1])
591 for (auto& a2 : *range[2])
592 for (auto& c1 : *range[0])
593 for (auto& c3 : *range[0])
594 if (t[0]->is_local(c3, c1, a2, x0))
595 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, c1, a2, x0}}, in, t[0], range));
596 }
597
Task244(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)598 Task244::Task244(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
599 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
600 out_ = t[0];
601 in_ = in;
602 subtasks_.reserve(range[2]->nblock()*range[0]->nblock()*range[1]->nblock()*range[0]->nblock());
603 for (auto& a2 : *range[2])
604 for (auto& c1 : *range[0])
605 for (auto& x1 : *range[1])
606 for (auto& c3 : *range[0])
607 if (t[0]->is_local(c3, x1, c1, a2))
608 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c3, x1, c1, a2}}, in, t[0], range));
609 }
610
Task245(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)611 Task245::Task245(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
612 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
613 out_ = t[0];
614 in_ = in;
615 subtasks_.reserve(range[2]->nblock()*range[1]->nblock()*range[1]->nblock()*range[0]->nblock());
616 for (auto& a1 : *range[2])
617 for (auto& x0 : *range[1])
618 for (auto& x1 : *range[1])
619 for (auto& c2 : *range[0])
620 if (t[0]->is_local(c2, x1, x0, a1))
621 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, x1, x0, a1}}, in, t[0], range));
622 }
623
Task246(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)624 Task246::Task246(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
625 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
626 out_ = t[0];
627 in_ = in;
628 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
629 for (auto& x0 : *range[1])
630 for (auto& x1 : *range[1])
631 for (auto& a1 : *range[2])
632 for (auto& c2 : *range[0])
633 if (t[0]->is_local(c2, a1, x1, x0))
634 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, a1, x1, x0}}, in, t[0], range));
635 }
636
Task247(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)637 Task247::Task247(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
638 array<shared_ptr<const Tensor>,1> in = {{t[1]}};
639 out_ = t[0];
640 in_ = in;
641 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
642 for (auto& x2 : *range[1])
643 for (auto& x3 : *range[1])
644 for (auto& a1 : *range[2])
645 for (auto& c2 : *range[0])
646 if (t[0]->is_local(c2, a1, x3, x2))
647 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, a1, x3, x2}}, in, t[0], range));
648 }
649
Task248(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)650 Task248::Task248(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
651 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
652 out_ = t[0];
653 in_ = in;
654 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
655 for (auto& x0 : *range[1])
656 for (auto& x1 : *range[1])
657 for (auto& a1 : *range[2])
658 for (auto& c2 : *range[0])
659 if (t[0]->is_local(c2, a1, x1, x0))
660 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, a1, x1, x0}}, in, t[0], range));
661 }
662
Task249(vector<shared_ptr<Tensor>> t,array<shared_ptr<const IndexRange>,3> range)663 Task249::Task249(vector<shared_ptr<Tensor>> t, array<shared_ptr<const IndexRange>,3> range) {
664 array<shared_ptr<const Tensor>,2> in = {{t[1], t[2]}};
665 out_ = t[0];
666 in_ = in;
667 subtasks_.reserve(range[1]->nblock()*range[1]->nblock()*range[2]->nblock()*range[0]->nblock());
668 for (auto& x0 : *range[1])
669 for (auto& x1 : *range[1])
670 for (auto& a1 : *range[2])
671 for (auto& c2 : *range[0])
672 if (t[0]->is_local(c2, a1, x1, x0))
673 subtasks_.push_back(make_shared<Task_local>(array<const Index,4>{{c2, a1, x1, x0}}, in, t[0], range));
674 }
675
676 #endif
677