1 //
2 // BAGEL - Brilliantly Advanced General Electronic Structure Library
3 // Filename: CASA_tasks1.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/casa/CASA_tasks1.h>
29
30 using namespace std;
31 using namespace bagel;
32 using namespace bagel::SMITH;
33 using namespace bagel::SMITH::CASA;
34
compute()35 void Task0::Task_local::compute() {
36 const Index x0 = b(0);
37 const Index x3 = b(1);
38 const Index x1 = b(2);
39 const Index x2 = b(3);
40 // tensor label: Gamma0
41 std::unique_ptr<double[]> odata(new double[out()->get_size(x0, x3, x1, x2)]);
42 std::fill_n(odata.get(), out()->get_size(x0, x3, x1, x2), 0.0);
43 {
44 // rdm0 non-merged case
45 if (x0 == x2 && x1 == x3) {
46 std::unique_ptr<double[]> i0data = in(0)->get_block();
47 for (int i2 = 0; i2 != x2.size(); ++i2) {
48 for (int i3 = 0; i3 != x3.size(); ++i3) {
49 odata[i2+x0.size()*(i3+x3.size()*(i3+x1.size()*(i2)))] += -2.0 * i0data[0];
50 }
51 }
52 }
53 }
54 {
55 if (x0 == x2) {
56 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x3);
57 for (int i2 = 0; i2 != x2.size(); ++i2) {
58 for (int i1 = 0; i1 != x1.size(); ++i1) {
59 for (int i3 = 0; i3 != x3.size(); ++i3) {
60 odata[i2+x0.size()*(i3+x3.size()*(i1+x1.size()*(i2)))]
61 += (1.0) * i0data[i1+x1.size()*(i3)];
62 }
63 }
64 }
65 }
66 }
67 {
68 // rdm0 non-merged case
69 if (x0 == x3 && x1 == x2) {
70 std::unique_ptr<double[]> i0data = in(0)->get_block();
71 for (int i2 = 0; i2 != x2.size(); ++i2) {
72 for (int i3 = 0; i3 != x3.size(); ++i3) {
73 odata[i3+x0.size()*(i3+x3.size()*(i2+x1.size()*(i2)))] += 4.0 * i0data[0];
74 }
75 }
76 }
77 }
78 {
79 if (x0 == x3) {
80 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
81 for (int i2 = 0; i2 != x2.size(); ++i2) {
82 for (int i1 = 0; i1 != x1.size(); ++i1) {
83 for (int i3 = 0; i3 != x3.size(); ++i3) {
84 odata[i3+x0.size()*(i3+x3.size()*(i1+x1.size()*(i2)))]
85 += (-2.0) * i0data[i1+x1.size()*(i2)];
86 }
87 }
88 }
89 }
90 }
91 {
92 if (x1 == x2) {
93 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x3);
94 for (int i2 = 0; i2 != x2.size(); ++i2) {
95 for (int i3 = 0; i3 != x3.size(); ++i3) {
96 for (int i0 = 0; i0 != x0.size(); ++i0) {
97 odata[i0+x0.size()*(i3+x3.size()*(i2+x1.size()*(i2)))]
98 += (-2.0) * i0data[i0+x0.size()*(i3)];
99 }
100 }
101 }
102 }
103 }
104 {
105 if (x1 == x3) {
106 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
107 for (int i2 = 0; i2 != x2.size(); ++i2) {
108 for (int i3 = 0; i3 != x3.size(); ++i3) {
109 for (int i0 = 0; i0 != x0.size(); ++i0) {
110 odata[i0+x0.size()*(i3+x3.size()*(i3+x1.size()*(i2)))]
111 += (1.0) * i0data[i0+x0.size()*(i2)];
112 }
113 }
114 }
115 }
116 }
117 {
118 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x3, x1, x2);
119 sort_indices<0,1,2,3,1,1,1,1>(i0data, odata, x0.size(), x3.size(), x1.size(), x2.size());
120 }
121 out()->add_block(odata, x0, x3, x1, x2);
122 }
123
compute()124 void Task1::Task_local::compute() {
125 const Index x5 = b(0);
126 const Index x4 = b(1);
127 const Index x0 = b(2);
128 const Index x3 = b(3);
129 const Index x1 = b(4);
130 const Index x2 = b(5);
131 // tensor label: Gamma1
132 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x4, x0, x3, x1, x2)]);
133 std::fill_n(odata.get(), out()->get_size(x5, x4, x0, x3, x1, x2), 0.0);
134 {
135 if (x0 == x2 && x1 == x3) {
136 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x4);
137 for (int i2 = 0; i2 != x2.size(); ++i2) {
138 for (int i3 = 0; i3 != x3.size(); ++i3) {
139 for (int i4 = 0; i4 != x4.size(); ++i4) {
140 for (int i5 = 0; i5 != x5.size(); ++i5) {
141 odata[i5+x5.size()*(i4+x4.size()*(i2+x0.size()*(i3+x3.size()*(i3+x1.size()*(i2)))))]
142 += (-2.0) * i0data[i5+x5.size()*(i4)];
143 }
144 }
145 }
146 }
147 }
148 }
149 {
150 if (x1 == x4 && x0 == x2) {
151 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x3);
152 for (int i2 = 0; i2 != x2.size(); ++i2) {
153 for (int i3 = 0; i3 != x3.size(); ++i3) {
154 for (int i4 = 0; i4 != x4.size(); ++i4) {
155 for (int i5 = 0; i5 != x5.size(); ++i5) {
156 odata[i5+x5.size()*(i4+x4.size()*(i2+x0.size()*(i3+x3.size()*(i4+x1.size()*(i2)))))]
157 += (1.0) * i0data[i5+x5.size()*(i3)];
158 }
159 }
160 }
161 }
162 }
163 }
164 {
165 if (x0 == x2) {
166 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x1, x3);
167 for (int i2 = 0; i2 != x2.size(); ++i2) {
168 for (int i1 = 0; i1 != x1.size(); ++i1) {
169 for (int i3 = 0; i3 != x3.size(); ++i3) {
170 for (int i4 = 0; i4 != x4.size(); ++i4) {
171 for (int i5 = 0; i5 != x5.size(); ++i5) {
172 odata[i5+x5.size()*(i4+x4.size()*(i2+x0.size()*(i3+x3.size()*(i1+x1.size()*(i2)))))]
173 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i3)))];
174 }
175 }
176 }
177 }
178 }
179 }
180 }
181 {
182 if (x1 == x2 && x0 == x3) {
183 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x4);
184 for (int i2 = 0; i2 != x2.size(); ++i2) {
185 for (int i3 = 0; i3 != x3.size(); ++i3) {
186 for (int i4 = 0; i4 != x4.size(); ++i4) {
187 for (int i5 = 0; i5 != x5.size(); ++i5) {
188 odata[i5+x5.size()*(i4+x4.size()*(i3+x0.size()*(i3+x3.size()*(i2+x1.size()*(i2)))))]
189 += (4.0) * i0data[i5+x5.size()*(i4)];
190 }
191 }
192 }
193 }
194 }
195 }
196 {
197 if (x0 == x3 && x1 == x4) {
198 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x2);
199 for (int i2 = 0; i2 != x2.size(); ++i2) {
200 for (int i3 = 0; i3 != x3.size(); ++i3) {
201 for (int i4 = 0; i4 != x4.size(); ++i4) {
202 for (int i5 = 0; i5 != x5.size(); ++i5) {
203 odata[i5+x5.size()*(i4+x4.size()*(i3+x0.size()*(i3+x3.size()*(i4+x1.size()*(i2)))))]
204 += (-2.0) * i0data[i5+x5.size()*(i2)];
205 }
206 }
207 }
208 }
209 }
210 }
211 {
212 if (x0 == x3) {
213 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x1, x2);
214 for (int i2 = 0; i2 != x2.size(); ++i2) {
215 for (int i1 = 0; i1 != x1.size(); ++i1) {
216 for (int i3 = 0; i3 != x3.size(); ++i3) {
217 for (int i4 = 0; i4 != x4.size(); ++i4) {
218 for (int i5 = 0; i5 != x5.size(); ++i5) {
219 odata[i5+x5.size()*(i4+x4.size()*(i3+x0.size()*(i3+x3.size()*(i1+x1.size()*(i2)))))]
220 += (-2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i2)))];
221 }
222 }
223 }
224 }
225 }
226 }
227 }
228 {
229 if (x0 == x4 && x1 == x2) {
230 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x3);
231 for (int i2 = 0; i2 != x2.size(); ++i2) {
232 for (int i3 = 0; i3 != x3.size(); ++i3) {
233 for (int i4 = 0; i4 != x4.size(); ++i4) {
234 for (int i5 = 0; i5 != x5.size(); ++i5) {
235 odata[i5+x5.size()*(i4+x4.size()*(i4+x0.size()*(i3+x3.size()*(i2+x1.size()*(i2)))))]
236 += (-2.0) * i0data[i5+x5.size()*(i3)];
237 }
238 }
239 }
240 }
241 }
242 }
243 {
244 if (x1 == x3 && x0 == x4) {
245 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x2);
246 for (int i2 = 0; i2 != x2.size(); ++i2) {
247 for (int i3 = 0; i3 != x3.size(); ++i3) {
248 for (int i4 = 0; i4 != x4.size(); ++i4) {
249 for (int i5 = 0; i5 != x5.size(); ++i5) {
250 odata[i5+x5.size()*(i4+x4.size()*(i4+x0.size()*(i3+x3.size()*(i3+x1.size()*(i2)))))]
251 += (1.0) * i0data[i5+x5.size()*(i2)];
252 }
253 }
254 }
255 }
256 }
257 }
258 {
259 if (x0 == x4) {
260 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x3, x1, x2);
261 for (int i2 = 0; i2 != x2.size(); ++i2) {
262 for (int i1 = 0; i1 != x1.size(); ++i1) {
263 for (int i3 = 0; i3 != x3.size(); ++i3) {
264 for (int i4 = 0; i4 != x4.size(); ++i4) {
265 for (int i5 = 0; i5 != x5.size(); ++i5) {
266 odata[i5+x5.size()*(i4+x4.size()*(i4+x0.size()*(i3+x3.size()*(i1+x1.size()*(i2)))))]
267 += (1.0) * i0data[i5+x5.size()*(i3+x3.size()*(i1+x1.size()*(i2)))];
268 }
269 }
270 }
271 }
272 }
273 }
274 }
275 {
276 if (x1 == x2) {
277 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x0, x3);
278 for (int i2 = 0; i2 != x2.size(); ++i2) {
279 for (int i3 = 0; i3 != x3.size(); ++i3) {
280 for (int i0 = 0; i0 != x0.size(); ++i0) {
281 for (int i4 = 0; i4 != x4.size(); ++i4) {
282 for (int i5 = 0; i5 != x5.size(); ++i5) {
283 odata[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i3+x3.size()*(i2+x1.size()*(i2)))))]
284 += (-2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i3)))];
285 }
286 }
287 }
288 }
289 }
290 }
291 }
292 {
293 if (x1 == x3) {
294 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x0, x2);
295 for (int i2 = 0; i2 != x2.size(); ++i2) {
296 for (int i3 = 0; i3 != x3.size(); ++i3) {
297 for (int i0 = 0; i0 != x0.size(); ++i0) {
298 for (int i4 = 0; i4 != x4.size(); ++i4) {
299 for (int i5 = 0; i5 != x5.size(); ++i5) {
300 odata[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i3+x3.size()*(i3+x1.size()*(i2)))))]
301 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i2)))];
302 }
303 }
304 }
305 }
306 }
307 }
308 }
309 {
310 if (x1 == x4) {
311 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2, x0, x3);
312 for (int i2 = 0; i2 != x2.size(); ++i2) {
313 for (int i3 = 0; i3 != x3.size(); ++i3) {
314 for (int i0 = 0; i0 != x0.size(); ++i0) {
315 for (int i4 = 0; i4 != x4.size(); ++i4) {
316 for (int i5 = 0; i5 != x5.size(); ++i5) {
317 odata[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i3+x3.size()*(i4+x1.size()*(i2)))))]
318 += (1.0) * i0data[i5+x5.size()*(i2+x2.size()*(i0+x0.size()*(i3)))];
319 }
320 }
321 }
322 }
323 }
324 }
325 }
326 {
327 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x0, x3, x1, x2);
328 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x5.size(), x4.size(), x0.size(), x3.size(), x1.size(), x2.size());
329 }
330 out()->add_block(odata, x5, x4, x0, x3, x1, x2);
331 }
332
compute()333 void Task2::Task_local::compute() {
334 const Index x1 = b(0);
335 const Index x3 = b(1);
336 const Index x0 = b(2);
337 const Index x2 = b(3);
338 // tensor label: Gamma2
339 std::unique_ptr<double[]> odata(new double[out()->get_size(x1, x3, x0, x2)]);
340 std::fill_n(odata.get(), out()->get_size(x1, x3, x0, x2), 0.0);
341 {
342 // rdm0 non-merged case
343 if (x0 == x2 && x1 == x3) {
344 std::unique_ptr<double[]> i0data = in(0)->get_block();
345 for (int i2 = 0; i2 != x2.size(); ++i2) {
346 for (int i3 = 0; i3 != x3.size(); ++i3) {
347 odata[i3+x1.size()*(i3+x3.size()*(i2+x0.size()*(i2)))] += -4.0 * i0data[0];
348 }
349 }
350 }
351 }
352 {
353 if (x0 == x2) {
354 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x3);
355 for (int i2 = 0; i2 != x2.size(); ++i2) {
356 for (int i3 = 0; i3 != x3.size(); ++i3) {
357 for (int i1 = 0; i1 != x1.size(); ++i1) {
358 odata[i1+x1.size()*(i3+x3.size()*(i2+x0.size()*(i2)))]
359 += (2.0) * i0data[i1+x1.size()*(i3)];
360 }
361 }
362 }
363 }
364 }
365 {
366 // rdm0 non-merged case
367 if (x0 == x3 && x1 == x2) {
368 std::unique_ptr<double[]> i0data = in(0)->get_block();
369 for (int i2 = 0; i2 != x2.size(); ++i2) {
370 for (int i3 = 0; i3 != x3.size(); ++i3) {
371 odata[i2+x1.size()*(i3+x3.size()*(i3+x0.size()*(i2)))] += 2.0 * i0data[0];
372 }
373 }
374 }
375 }
376 {
377 if (x0 == x3) {
378 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
379 for (int i2 = 0; i2 != x2.size(); ++i2) {
380 for (int i3 = 0; i3 != x3.size(); ++i3) {
381 for (int i1 = 0; i1 != x1.size(); ++i1) {
382 odata[i1+x1.size()*(i3+x3.size()*(i3+x0.size()*(i2)))]
383 += (-1.0) * i0data[i1+x1.size()*(i2)];
384 }
385 }
386 }
387 }
388 }
389 {
390 if (x1 == x2) {
391 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x3);
392 for (int i2 = 0; i2 != x2.size(); ++i2) {
393 for (int i0 = 0; i0 != x0.size(); ++i0) {
394 for (int i3 = 0; i3 != x3.size(); ++i3) {
395 odata[i2+x1.size()*(i3+x3.size()*(i0+x0.size()*(i2)))]
396 += (-1.0) * i0data[i0+x0.size()*(i3)];
397 }
398 }
399 }
400 }
401 }
402 {
403 if (x1 == x3) {
404 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
405 for (int i2 = 0; i2 != x2.size(); ++i2) {
406 for (int i0 = 0; i0 != x0.size(); ++i0) {
407 for (int i3 = 0; i3 != x3.size(); ++i3) {
408 odata[i3+x1.size()*(i3+x3.size()*(i0+x0.size()*(i2)))]
409 += (2.0) * i0data[i0+x0.size()*(i2)];
410 }
411 }
412 }
413 }
414 }
415 {
416 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x3, x0, x2);
417 sort_indices<0,1,2,3,1,1,-1,1>(i0data, odata, x1.size(), x3.size(), x0.size(), x2.size());
418 }
419 out()->add_block(odata, x1, x3, x0, x2);
420 }
421
compute()422 void Task3::Task_local::compute() {
423 const Index x5 = b(0);
424 const Index x4 = b(1);
425 const Index x2 = b(2);
426 const Index x3 = b(3);
427 const Index x1 = b(4);
428 const Index x0 = b(5);
429 // tensor label: Gamma3
430 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x4, x2, x3, x1, x0)]);
431 std::fill_n(odata.get(), out()->get_size(x5, x4, x2, x3, x1, x0), 0.0);
432 {
433 if (x2 == x4 && x1 == x3) {
434 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
435 for (int i0 = 0; i0 != x0.size(); ++i0) {
436 for (int i3 = 0; i3 != x3.size(); ++i3) {
437 for (int i4 = 0; i4 != x4.size(); ++i4) {
438 for (int i5 = 0; i5 != x5.size(); ++i5) {
439 odata[i5+x5.size()*(i4+x4.size()*(i4+x2.size()*(i3+x3.size()*(i3+x1.size()*(i0)))))]
440 += (-1.0) * i0data[i5+x5.size()*(i0)];
441 }
442 }
443 }
444 }
445 }
446 }
447 {
448 if (x1 == x3) {
449 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x2, x0);
450 for (int i0 = 0; i0 != x0.size(); ++i0) {
451 for (int i3 = 0; i3 != x3.size(); ++i3) {
452 for (int i2 = 0; i2 != x2.size(); ++i2) {
453 for (int i4 = 0; i4 != x4.size(); ++i4) {
454 for (int i5 = 0; i5 != x5.size(); ++i5) {
455 odata[i5+x5.size()*(i4+x4.size()*(i2+x2.size()*(i3+x3.size()*(i3+x1.size()*(i0)))))]
456 += (-1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i2+x2.size()*(i0)))];
457 }
458 }
459 }
460 }
461 }
462 }
463 }
464 {
465 if (x2 == x3 && x1 == x4) {
466 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
467 for (int i0 = 0; i0 != x0.size(); ++i0) {
468 for (int i3 = 0; i3 != x3.size(); ++i3) {
469 for (int i4 = 0; i4 != x4.size(); ++i4) {
470 for (int i5 = 0; i5 != x5.size(); ++i5) {
471 odata[i5+x5.size()*(i4+x4.size()*(i3+x2.size()*(i3+x3.size()*(i4+x1.size()*(i0)))))]
472 += (2.0) * i0data[i5+x5.size()*(i0)];
473 }
474 }
475 }
476 }
477 }
478 }
479 {
480 if (x1 == x4) {
481 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x2, x3);
482 for (int i0 = 0; i0 != x0.size(); ++i0) {
483 for (int i3 = 0; i3 != x3.size(); ++i3) {
484 for (int i2 = 0; i2 != x2.size(); ++i2) {
485 for (int i4 = 0; i4 != x4.size(); ++i4) {
486 for (int i5 = 0; i5 != x5.size(); ++i5) {
487 odata[i5+x5.size()*(i4+x4.size()*(i2+x2.size()*(i3+x3.size()*(i4+x1.size()*(i0)))))]
488 += (-1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i2+x2.size()*(i3)))];
489 }
490 }
491 }
492 }
493 }
494 }
495 }
496 {
497 if (x2 == x3) {
498 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x1, x0);
499 for (int i0 = 0; i0 != x0.size(); ++i0) {
500 for (int i1 = 0; i1 != x1.size(); ++i1) {
501 for (int i3 = 0; i3 != x3.size(); ++i3) {
502 for (int i4 = 0; i4 != x4.size(); ++i4) {
503 for (int i5 = 0; i5 != x5.size(); ++i5) {
504 odata[i5+x5.size()*(i4+x4.size()*(i3+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))]
505 += (2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i0)))];
506 }
507 }
508 }
509 }
510 }
511 }
512 }
513 {
514 if (x2 == x4) {
515 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x3, x1, x0);
516 for (int i0 = 0; i0 != x0.size(); ++i0) {
517 for (int i1 = 0; i1 != x1.size(); ++i1) {
518 for (int i3 = 0; i3 != x3.size(); ++i3) {
519 for (int i4 = 0; i4 != x4.size(); ++i4) {
520 for (int i5 = 0; i5 != x5.size(); ++i5) {
521 odata[i5+x5.size()*(i4+x4.size()*(i4+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))]
522 += (-1.0) * i0data[i5+x5.size()*(i3+x3.size()*(i1+x1.size()*(i0)))];
523 }
524 }
525 }
526 }
527 }
528 }
529 }
530 {
531 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x2, x3, x1, x0);
532 sort_indices<0,1,2,3,4,5,1,1,-1,1>(i0data, odata, x5.size(), x4.size(), x2.size(), x3.size(), x1.size(), x0.size());
533 }
534 out()->add_block(odata, x5, x4, x2, x3, x1, x0);
535 }
536
compute()537 void Task4::Task_local::compute() {
538 const Index x2 = b(0);
539 const Index x5 = b(1);
540 const Index x3 = b(2);
541 const Index x4 = b(3);
542 const Index x1 = b(4);
543 const Index x0 = b(5);
544 // tensor label: Gamma4
545 std::unique_ptr<double[]> odata(new double[out()->get_size(x2, x5, x3, x4, x1, x0)]);
546 std::fill_n(odata.get(), out()->get_size(x2, x5, x3, x4, x1, x0), 0.0);
547 {
548 if (x2 == x5 && x1 == x4) {
549 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0);
550 for (int i0 = 0; i0 != x0.size(); ++i0) {
551 for (int i4 = 0; i4 != x4.size(); ++i4) {
552 for (int i3 = 0; i3 != x3.size(); ++i3) {
553 for (int i5 = 0; i5 != x5.size(); ++i5) {
554 odata[i5+x2.size()*(i5+x5.size()*(i3+x3.size()*(i4+x4.size()*(i4+x1.size()*(i0)))))]
555 += (-2.0) * i0data[i3+x3.size()*(i0)];
556 }
557 }
558 }
559 }
560 }
561 }
562 {
563 if (x2 == x4 && x1 == x5) {
564 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0);
565 for (int i0 = 0; i0 != x0.size(); ++i0) {
566 for (int i4 = 0; i4 != x4.size(); ++i4) {
567 for (int i3 = 0; i3 != x3.size(); ++i3) {
568 for (int i5 = 0; i5 != x5.size(); ++i5) {
569 odata[i4+x2.size()*(i5+x5.size()*(i3+x3.size()*(i4+x4.size()*(i5+x1.size()*(i0)))))]
570 += (1.0) * i0data[i3+x3.size()*(i0)];
571 }
572 }
573 }
574 }
575 }
576 }
577 {
578 if (x3 == x5 && x1 == x4) {
579 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x0);
580 for (int i0 = 0; i0 != x0.size(); ++i0) {
581 for (int i4 = 0; i4 != x4.size(); ++i4) {
582 for (int i5 = 0; i5 != x5.size(); ++i5) {
583 for (int i2 = 0; i2 != x2.size(); ++i2) {
584 odata[i2+x2.size()*(i5+x5.size()*(i5+x3.size()*(i4+x4.size()*(i4+x1.size()*(i0)))))]
585 += (1.0) * i0data[i2+x2.size()*(i0)];
586 }
587 }
588 }
589 }
590 }
591 }
592 {
593 if (x1 == x4) {
594 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x5, x3, x0);
595 for (int i0 = 0; i0 != x0.size(); ++i0) {
596 for (int i4 = 0; i4 != x4.size(); ++i4) {
597 for (int i3 = 0; i3 != x3.size(); ++i3) {
598 for (int i5 = 0; i5 != x5.size(); ++i5) {
599 for (int i2 = 0; i2 != x2.size(); ++i2) {
600 odata[i2+x2.size()*(i5+x5.size()*(i3+x3.size()*(i4+x4.size()*(i4+x1.size()*(i0)))))]
601 += (1.0) * i0data[i2+x2.size()*(i5+x5.size()*(i3+x3.size()*(i0)))];
602 }
603 }
604 }
605 }
606 }
607 }
608 }
609 {
610 if (x3 == x4 && x1 == x5) {
611 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x0);
612 for (int i0 = 0; i0 != x0.size(); ++i0) {
613 for (int i4 = 0; i4 != x4.size(); ++i4) {
614 for (int i5 = 0; i5 != x5.size(); ++i5) {
615 for (int i2 = 0; i2 != x2.size(); ++i2) {
616 odata[i2+x2.size()*(i5+x5.size()*(i4+x3.size()*(i4+x4.size()*(i5+x1.size()*(i0)))))]
617 += (-2.0) * i0data[i2+x2.size()*(i0)];
618 }
619 }
620 }
621 }
622 }
623 }
624 {
625 if (x1 == x5) {
626 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4, x2, x0);
627 for (int i0 = 0; i0 != x0.size(); ++i0) {
628 for (int i4 = 0; i4 != x4.size(); ++i4) {
629 for (int i3 = 0; i3 != x3.size(); ++i3) {
630 for (int i5 = 0; i5 != x5.size(); ++i5) {
631 for (int i2 = 0; i2 != x2.size(); ++i2) {
632 odata[i2+x2.size()*(i5+x5.size()*(i3+x3.size()*(i4+x4.size()*(i5+x1.size()*(i0)))))]
633 += (1.0) * i0data[i3+x3.size()*(i4+x4.size()*(i2+x2.size()*(i0)))];
634 }
635 }
636 }
637 }
638 }
639 }
640 }
641 {
642 if (x3 == x5 && x2 == x4) {
643 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x0);
644 for (int i0 = 0; i0 != x0.size(); ++i0) {
645 for (int i1 = 0; i1 != x1.size(); ++i1) {
646 for (int i4 = 0; i4 != x4.size(); ++i4) {
647 for (int i5 = 0; i5 != x5.size(); ++i5) {
648 odata[i4+x2.size()*(i5+x5.size()*(i5+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
649 += (-2.0) * i0data[i1+x1.size()*(i0)];
650 }
651 }
652 }
653 }
654 }
655 }
656 {
657 if (x2 == x4) {
658 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x5, x1, x0);
659 for (int i0 = 0; i0 != x0.size(); ++i0) {
660 for (int i1 = 0; i1 != x1.size(); ++i1) {
661 for (int i4 = 0; i4 != x4.size(); ++i4) {
662 for (int i3 = 0; i3 != x3.size(); ++i3) {
663 for (int i5 = 0; i5 != x5.size(); ++i5) {
664 odata[i4+x2.size()*(i5+x5.size()*(i3+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
665 += (1.0) * i0data[i3+x3.size()*(i5+x5.size()*(i1+x1.size()*(i0)))];
666 }
667 }
668 }
669 }
670 }
671 }
672 }
673 {
674 if (x3 == x4 && x2 == x5) {
675 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x0);
676 for (int i0 = 0; i0 != x0.size(); ++i0) {
677 for (int i1 = 0; i1 != x1.size(); ++i1) {
678 for (int i4 = 0; i4 != x4.size(); ++i4) {
679 for (int i5 = 0; i5 != x5.size(); ++i5) {
680 odata[i5+x2.size()*(i5+x5.size()*(i4+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
681 += (4.0) * i0data[i1+x1.size()*(i0)];
682 }
683 }
684 }
685 }
686 }
687 }
688 {
689 if (x2 == x5) {
690 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4, x1, x0);
691 for (int i0 = 0; i0 != x0.size(); ++i0) {
692 for (int i1 = 0; i1 != x1.size(); ++i1) {
693 for (int i4 = 0; i4 != x4.size(); ++i4) {
694 for (int i3 = 0; i3 != x3.size(); ++i3) {
695 for (int i5 = 0; i5 != x5.size(); ++i5) {
696 odata[i5+x2.size()*(i5+x5.size()*(i3+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
697 += (-2.0) * i0data[i3+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))];
698 }
699 }
700 }
701 }
702 }
703 }
704 }
705 {
706 if (x3 == x4) {
707 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x5, x1, x0);
708 for (int i0 = 0; i0 != x0.size(); ++i0) {
709 for (int i1 = 0; i1 != x1.size(); ++i1) {
710 for (int i4 = 0; i4 != x4.size(); ++i4) {
711 for (int i5 = 0; i5 != x5.size(); ++i5) {
712 for (int i2 = 0; i2 != x2.size(); ++i2) {
713 odata[i2+x2.size()*(i5+x5.size()*(i4+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
714 += (-2.0) * i0data[i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))];
715 }
716 }
717 }
718 }
719 }
720 }
721 }
722 {
723 if (x3 == x5) {
724 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x4, x1, x0);
725 for (int i0 = 0; i0 != x0.size(); ++i0) {
726 for (int i1 = 0; i1 != x1.size(); ++i1) {
727 for (int i4 = 0; i4 != x4.size(); ++i4) {
728 for (int i5 = 0; i5 != x5.size(); ++i5) {
729 for (int i2 = 0; i2 != x2.size(); ++i2) {
730 odata[i2+x2.size()*(i5+x5.size()*(i5+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
731 += (1.0) * i0data[i2+x2.size()*(i4+x4.size()*(i1+x1.size()*(i0)))];
732 }
733 }
734 }
735 }
736 }
737 }
738 }
739 {
740 std::unique_ptr<double[]> i0data = in(2)->get_block(x2, x5, x3, x4, x1, x0);
741 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x2.size(), x5.size(), x3.size(), x4.size(), x1.size(), x0.size());
742 }
743 out()->add_block(odata, x2, x5, x3, x4, x1, x0);
744 }
745
compute()746 void Task5::Task_local::compute() {
747 const Index x2 = b(0);
748 const Index x3 = b(1);
749 const Index x1 = b(2);
750 const Index x0 = b(3);
751 // tensor label: Gamma5
752 std::unique_ptr<double[]> odata(new double[out()->get_size(x2, x3, x1, x0)]);
753 std::fill_n(odata.get(), out()->get_size(x2, x3, x1, x0), 0.0);
754 {
755 if (x1 == x3) {
756 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x0);
757 for (int i0 = 0; i0 != x0.size(); ++i0) {
758 for (int i3 = 0; i3 != x3.size(); ++i3) {
759 for (int i2 = 0; i2 != x2.size(); ++i2) {
760 odata[i2+x2.size()*(i3+x3.size()*(i3+x1.size()*(i0)))]
761 += (-1.0) * i0data[i2+x2.size()*(i0)];
762 }
763 }
764 }
765 }
766 }
767 {
768 if (x2 == x3) {
769 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x0);
770 for (int i0 = 0; i0 != x0.size(); ++i0) {
771 for (int i1 = 0; i1 != x1.size(); ++i1) {
772 for (int i3 = 0; i3 != x3.size(); ++i3) {
773 odata[i3+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))]
774 += (2.0) * i0data[i1+x1.size()*(i0)];
775 }
776 }
777 }
778 }
779 }
780 {
781 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x3, x1, x0);
782 sort_indices<0,1,2,3,1,1,-1,1>(i0data, odata, x2.size(), x3.size(), x1.size(), x0.size());
783 }
784 out()->add_block(odata, x2, x3, x1, x0);
785 }
786
compute()787 void Task6::Task_local::compute() {
788 const Index x5 = b(0);
789 const Index x3 = b(1);
790 const Index x2 = b(2);
791 const Index x4 = b(3);
792 const Index x1 = b(4);
793 const Index x0 = b(5);
794 // tensor label: Gamma7
795 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x3, x2, x4, x1, x0)]);
796 std::fill_n(odata.get(), out()->get_size(x5, x3, x2, x4, x1, x0), 0.0);
797 {
798 if (x2 == x4 && x1 == x3) {
799 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
800 for (int i0 = 0; i0 != x0.size(); ++i0) {
801 for (int i4 = 0; i4 != x4.size(); ++i4) {
802 for (int i3 = 0; i3 != x3.size(); ++i3) {
803 for (int i5 = 0; i5 != x5.size(); ++i5) {
804 odata[i5+x5.size()*(i3+x3.size()*(i4+x2.size()*(i4+x4.size()*(i3+x1.size()*(i0)))))]
805 += (-2.0) * i0data[i5+x5.size()*(i0)];
806 }
807 }
808 }
809 }
810 }
811 }
812 {
813 if (x1 == x3) {
814 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x2, x4);
815 for (int i0 = 0; i0 != x0.size(); ++i0) {
816 for (int i4 = 0; i4 != x4.size(); ++i4) {
817 for (int i2 = 0; i2 != x2.size(); ++i2) {
818 for (int i3 = 0; i3 != x3.size(); ++i3) {
819 for (int i5 = 0; i5 != x5.size(); ++i5) {
820 odata[i5+x5.size()*(i3+x3.size()*(i2+x2.size()*(i4+x4.size()*(i3+x1.size()*(i0)))))]
821 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i2+x2.size()*(i4)))];
822 }
823 }
824 }
825 }
826 }
827 }
828 }
829 {
830 if (x2 == x3 && x1 == x4) {
831 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
832 for (int i0 = 0; i0 != x0.size(); ++i0) {
833 for (int i4 = 0; i4 != x4.size(); ++i4) {
834 for (int i3 = 0; i3 != x3.size(); ++i3) {
835 for (int i5 = 0; i5 != x5.size(); ++i5) {
836 odata[i5+x5.size()*(i3+x3.size()*(i3+x2.size()*(i4+x4.size()*(i4+x1.size()*(i0)))))]
837 += (1.0) * i0data[i5+x5.size()*(i0)];
838 }
839 }
840 }
841 }
842 }
843 }
844 {
845 if (x1 == x4) {
846 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x3, x2, x0);
847 for (int i0 = 0; i0 != x0.size(); ++i0) {
848 for (int i4 = 0; i4 != x4.size(); ++i4) {
849 for (int i2 = 0; i2 != x2.size(); ++i2) {
850 for (int i3 = 0; i3 != x3.size(); ++i3) {
851 for (int i5 = 0; i5 != x5.size(); ++i5) {
852 odata[i5+x5.size()*(i3+x3.size()*(i2+x2.size()*(i4+x4.size()*(i4+x1.size()*(i0)))))]
853 += (1.0) * i0data[i5+x5.size()*(i3+x3.size()*(i2+x2.size()*(i0)))];
854 }
855 }
856 }
857 }
858 }
859 }
860 }
861 {
862 if (x2 == x3) {
863 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x1, x0);
864 for (int i0 = 0; i0 != x0.size(); ++i0) {
865 for (int i1 = 0; i1 != x1.size(); ++i1) {
866 for (int i4 = 0; i4 != x4.size(); ++i4) {
867 for (int i3 = 0; i3 != x3.size(); ++i3) {
868 for (int i5 = 0; i5 != x5.size(); ++i5) {
869 odata[i5+x5.size()*(i3+x3.size()*(i3+x2.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
870 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i0)))];
871 }
872 }
873 }
874 }
875 }
876 }
877 }
878 {
879 if (x2 == x4) {
880 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x3, x1, x0);
881 for (int i0 = 0; i0 != x0.size(); ++i0) {
882 for (int i1 = 0; i1 != x1.size(); ++i1) {
883 for (int i4 = 0; i4 != x4.size(); ++i4) {
884 for (int i3 = 0; i3 != x3.size(); ++i3) {
885 for (int i5 = 0; i5 != x5.size(); ++i5) {
886 odata[i5+x5.size()*(i3+x3.size()*(i4+x2.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))]
887 += (-2.0) * i0data[i5+x5.size()*(i3+x3.size()*(i1+x1.size()*(i0)))];
888 }
889 }
890 }
891 }
892 }
893 }
894 }
895 {
896 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x3, x2, x4, x1, x0);
897 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x5.size(), x3.size(), x2.size(), x4.size(), x1.size(), x0.size());
898 }
899 out()->add_block(odata, x5, x3, x2, x4, x1, x0);
900 }
901
compute()902 void Task7::Task_local::compute() {
903 const Index x7 = b(0);
904 const Index x6 = b(1);
905 const Index x2 = b(2);
906 const Index x5 = b(3);
907 const Index x1 = b(4);
908 const Index x0 = b(5);
909 const Index x4 = b(6);
910 const Index x3 = b(7);
911 // tensor label: Gamma94
912 std::unique_ptr<double[]> odata(new double[out()->get_size(x7, x6, x2, x5, x1, x0)]);
913 std::fill_n(odata.get(), out()->get_size(x7, x6, x2, x5, x1, x0), 0.0);
914 // associated with merged
915 std::unique_ptr<double[]> fdata = in(4)->get_block(x4, x3);
916 if (x2 == x6 && x7 == x3 && x1 == x5) {
917 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x0);
918 for (int i0 = 0; i0 != x0.size(); ++i0) {
919 for (int i4 = 0; i4 != x4.size(); ++i4) {
920 for (int i6 = 0; i6 != x6.size(); ++i6) {
921 for (int i3 = 0; i3 != x3.size(); ++i3) {
922 for (int i5 = 0; i5 != x5.size(); ++i5) {
923 odata[i3+x7.size()*(i6+x6.size()*(i6+x2.size()*(i5+x5.size()*(i5+x1.size()*(i0)))))]
924 += (-1.0) * i0data[i4+x4.size()*(i0)] * fdata[i4+x4.size()*(i3)];
925 }
926 }
927 }
928 }
929 }
930 }
931 if (x7 == x3 && x1 == x5) {
932 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x6, x2, x0);
933 for (int i0 = 0; i0 != x0.size(); ++i0) {
934 for (int i2 = 0; i2 != x2.size(); ++i2) {
935 for (int i6 = 0; i6 != x6.size(); ++i6) {
936 for (int i4 = 0; i4 != x4.size(); ++i4) {
937 for (int i3 = 0; i3 != x3.size(); ++i3) {
938 for (int i5 = 0; i5 != x5.size(); ++i5) {
939 odata[i3+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i5+x1.size()*(i0)))))]
940 += (-1.0) * i0data[i4+x4.size()*(i6+x6.size()*(i2+x2.size()*(i0)))] * fdata[i4+x4.size()*(i3)];
941 }
942 }
943 }
944 }
945 }
946 }
947 }
948 if (x7 == x3 && x2 == x5 && x1 == x6) {
949 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x0);
950 for (int i0 = 0; i0 != x0.size(); ++i0) {
951 for (int i4 = 0; i4 != x4.size(); ++i4) {
952 for (int i3 = 0; i3 != x3.size(); ++i3) {
953 for (int i5 = 0; i5 != x5.size(); ++i5) {
954 for (int i6 = 0; i6 != x6.size(); ++i6) {
955 odata[i3+x7.size()*(i6+x6.size()*(i5+x2.size()*(i5+x5.size()*(i6+x1.size()*(i0)))))]
956 += (2.0) * i0data[i4+x4.size()*(i0)] * fdata[i4+x4.size()*(i3)];
957 }
958 }
959 }
960 }
961 }
962 }
963 if (x7 == x3 && x1 == x6) {
964 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x0, x2, x5);
965 for (int i5 = 0; i5 != x5.size(); ++i5) {
966 for (int i2 = 0; i2 != x2.size(); ++i2) {
967 for (int i0 = 0; i0 != x0.size(); ++i0) {
968 for (int i4 = 0; i4 != x4.size(); ++i4) {
969 for (int i3 = 0; i3 != x3.size(); ++i3) {
970 for (int i6 = 0; i6 != x6.size(); ++i6) {
971 odata[i3+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i6+x1.size()*(i0)))))]
972 += (-1.0) * i0data[i4+x4.size()*(i0+x0.size()*(i2+x2.size()*(i5)))] * fdata[i4+x4.size()*(i3)];
973 }
974 }
975 }
976 }
977 }
978 }
979 }
980 if (x7 == x3 && x2 == x5) {
981 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x6, x1, x0);
982 for (int i0 = 0; i0 != x0.size(); ++i0) {
983 for (int i1 = 0; i1 != x1.size(); ++i1) {
984 for (int i6 = 0; i6 != x6.size(); ++i6) {
985 for (int i4 = 0; i4 != x4.size(); ++i4) {
986 for (int i3 = 0; i3 != x3.size(); ++i3) {
987 for (int i5 = 0; i5 != x5.size(); ++i5) {
988 odata[i3+x7.size()*(i6+x6.size()*(i5+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
989 += (2.0) * i0data[i4+x4.size()*(i6+x6.size()*(i1+x1.size()*(i0)))] * fdata[i4+x4.size()*(i3)];
990 }
991 }
992 }
993 }
994 }
995 }
996 }
997 if (x7 == x3 && x2 == x6) {
998 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x5, x1, x0);
999 for (int i0 = 0; i0 != x0.size(); ++i0) {
1000 for (int i1 = 0; i1 != x1.size(); ++i1) {
1001 for (int i5 = 0; i5 != x5.size(); ++i5) {
1002 for (int i4 = 0; i4 != x4.size(); ++i4) {
1003 for (int i3 = 0; i3 != x3.size(); ++i3) {
1004 for (int i6 = 0; i6 != x6.size(); ++i6) {
1005 odata[i3+x7.size()*(i6+x6.size()*(i6+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1006 += (-1.0) * i0data[i4+x4.size()*(i5+x5.size()*(i1+x1.size()*(i0)))] * fdata[i4+x4.size()*(i3)];
1007 }
1008 }
1009 }
1010 }
1011 }
1012 }
1013 }
1014 if (x7 == x3) {
1015 std::unique_ptr<double[]> i0data = in(2)->get_block(x4, x6, x2, x5, x1, x0);
1016 for (int i0 = 0; i0 != x0.size(); ++i0) {
1017 for (int i1 = 0; i1 != x1.size(); ++i1) {
1018 for (int i5 = 0; i5 != x5.size(); ++i5) {
1019 for (int i2 = 0; i2 != x2.size(); ++i2) {
1020 for (int i6 = 0; i6 != x6.size(); ++i6) {
1021 for (int i4 = 0; i4 != x4.size(); ++i4) {
1022 for (int i3 = 0; i3 != x3.size(); ++i3) {
1023 odata[i3+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1024 += (-1.0) * i0data[i4+x4.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i4+x4.size()*(i3)];
1025 }
1026 }
1027 }
1028 }
1029 }
1030 }
1031 }
1032 }
1033 if (x2 == x5 && x1 == x3 && x4 == x6) {
1034 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0);
1035 for (int i0 = 0; i0 != x0.size(); ++i0) {
1036 for (int i7 = 0; i7 != x7.size(); ++i7) {
1037 for (int i5 = 0; i5 != x5.size(); ++i5) {
1038 for (int i3 = 0; i3 != x3.size(); ++i3) {
1039 for (int i6 = 0; i6 != x6.size(); ++i6) {
1040 odata[i7+x7.size()*(i6+x6.size()*(i5+x2.size()*(i5+x5.size()*(i3+x1.size()*(i0)))))]
1041 += (-2.0) * i0data[i7+x7.size()*(i0)] * fdata[i6+x4.size()*(i3)];
1042 }
1043 }
1044 }
1045 }
1046 }
1047 }
1048 if (x2 == x6 && x1 == x3 && x4 == x5) {
1049 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0);
1050 for (int i0 = 0; i0 != x0.size(); ++i0) {
1051 for (int i7 = 0; i7 != x7.size(); ++i7) {
1052 for (int i6 = 0; i6 != x6.size(); ++i6) {
1053 for (int i3 = 0; i3 != x3.size(); ++i3) {
1054 for (int i5 = 0; i5 != x5.size(); ++i5) {
1055 odata[i7+x7.size()*(i6+x6.size()*(i6+x2.size()*(i5+x5.size()*(i3+x1.size()*(i0)))))]
1056 += (1.0) * i0data[i7+x7.size()*(i0)] * fdata[i5+x4.size()*(i3)];
1057 }
1058 }
1059 }
1060 }
1061 }
1062 }
1063 if (x1 == x3 && x4 == x5) {
1064 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x6, x2, x0);
1065 for (int i0 = 0; i0 != x0.size(); ++i0) {
1066 for (int i2 = 0; i2 != x2.size(); ++i2) {
1067 for (int i6 = 0; i6 != x6.size(); ++i6) {
1068 for (int i7 = 0; i7 != x7.size(); ++i7) {
1069 for (int i3 = 0; i3 != x3.size(); ++i3) {
1070 for (int i5 = 0; i5 != x5.size(); ++i5) {
1071 odata[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i3+x1.size()*(i0)))))]
1072 += (1.0) * i0data[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i0)))] * fdata[i5+x4.size()*(i3)];
1073 }
1074 }
1075 }
1076 }
1077 }
1078 }
1079 }
1080 if (x1 == x3 && x4 == x6) {
1081 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x2, x5);
1082 for (int i5 = 0; i5 != x5.size(); ++i5) {
1083 for (int i2 = 0; i2 != x2.size(); ++i2) {
1084 for (int i0 = 0; i0 != x0.size(); ++i0) {
1085 for (int i7 = 0; i7 != x7.size(); ++i7) {
1086 for (int i3 = 0; i3 != x3.size(); ++i3) {
1087 for (int i6 = 0; i6 != x6.size(); ++i6) {
1088 odata[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i3+x1.size()*(i0)))))]
1089 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i2+x2.size()*(i5)))] * fdata[i6+x4.size()*(i3)];
1090 }
1091 }
1092 }
1093 }
1094 }
1095 }
1096 }
1097 if (x4 == x6 && x2 == x3 && x1 == x5) {
1098 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0);
1099 for (int i0 = 0; i0 != x0.size(); ++i0) {
1100 for (int i7 = 0; i7 != x7.size(); ++i7) {
1101 for (int i6 = 0; i6 != x6.size(); ++i6) {
1102 for (int i3 = 0; i3 != x3.size(); ++i3) {
1103 for (int i5 = 0; i5 != x5.size(); ++i5) {
1104 odata[i7+x7.size()*(i6+x6.size()*(i3+x2.size()*(i5+x5.size()*(i5+x1.size()*(i0)))))]
1105 += (1.0) * i0data[i7+x7.size()*(i0)] * fdata[i6+x4.size()*(i3)];
1106 }
1107 }
1108 }
1109 }
1110 }
1111 }
1112 if (x4 == x6 && x1 == x5) {
1113 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x3, x2, x0);
1114 for (int i0 = 0; i0 != x0.size(); ++i0) {
1115 for (int i2 = 0; i2 != x2.size(); ++i2) {
1116 for (int i3 = 0; i3 != x3.size(); ++i3) {
1117 for (int i7 = 0; i7 != x7.size(); ++i7) {
1118 for (int i6 = 0; i6 != x6.size(); ++i6) {
1119 for (int i5 = 0; i5 != x5.size(); ++i5) {
1120 odata[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i5+x1.size()*(i0)))))]
1121 += (1.0) * i0data[i7+x7.size()*(i3+x3.size()*(i2+x2.size()*(i0)))] * fdata[i6+x4.size()*(i3)];
1122 }
1123 }
1124 }
1125 }
1126 }
1127 }
1128 }
1129 if (x4 == x5 && x2 == x3 && x1 == x6) {
1130 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0);
1131 for (int i0 = 0; i0 != x0.size(); ++i0) {
1132 for (int i7 = 0; i7 != x7.size(); ++i7) {
1133 for (int i5 = 0; i5 != x5.size(); ++i5) {
1134 for (int i3 = 0; i3 != x3.size(); ++i3) {
1135 for (int i6 = 0; i6 != x6.size(); ++i6) {
1136 odata[i7+x7.size()*(i6+x6.size()*(i3+x2.size()*(i5+x5.size()*(i6+x1.size()*(i0)))))]
1137 += (-2.0) * i0data[i7+x7.size()*(i0)] * fdata[i5+x4.size()*(i3)];
1138 }
1139 }
1140 }
1141 }
1142 }
1143 }
1144 if (x4 == x5 && x1 == x6) {
1145 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x2, x3);
1146 for (int i3 = 0; i3 != x3.size(); ++i3) {
1147 for (int i2 = 0; i2 != x2.size(); ++i2) {
1148 for (int i0 = 0; i0 != x0.size(); ++i0) {
1149 for (int i7 = 0; i7 != x7.size(); ++i7) {
1150 for (int i5 = 0; i5 != x5.size(); ++i5) {
1151 for (int i6 = 0; i6 != x6.size(); ++i6) {
1152 odata[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i6+x1.size()*(i0)))))]
1153 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i2+x2.size()*(i3)))] * fdata[i5+x4.size()*(i3)];
1154 }
1155 }
1156 }
1157 }
1158 }
1159 }
1160 }
1161 if (x4 == x5 && x2 == x3) {
1162 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x6, x1, x0);
1163 for (int i0 = 0; i0 != x0.size(); ++i0) {
1164 for (int i1 = 0; i1 != x1.size(); ++i1) {
1165 for (int i6 = 0; i6 != x6.size(); ++i6) {
1166 for (int i7 = 0; i7 != x7.size(); ++i7) {
1167 for (int i5 = 0; i5 != x5.size(); ++i5) {
1168 for (int i3 = 0; i3 != x3.size(); ++i3) {
1169 odata[i7+x7.size()*(i6+x6.size()*(i3+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1170 += (-2.0) * i0data[i7+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))] * fdata[i5+x4.size()*(i3)];
1171 }
1172 }
1173 }
1174 }
1175 }
1176 }
1177 }
1178 if (x4 == x6 && x2 == x3) {
1179 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x5, x1, x0);
1180 for (int i0 = 0; i0 != x0.size(); ++i0) {
1181 for (int i1 = 0; i1 != x1.size(); ++i1) {
1182 for (int i5 = 0; i5 != x5.size(); ++i5) {
1183 for (int i7 = 0; i7 != x7.size(); ++i7) {
1184 for (int i6 = 0; i6 != x6.size(); ++i6) {
1185 for (int i3 = 0; i3 != x3.size(); ++i3) {
1186 odata[i7+x7.size()*(i6+x6.size()*(i3+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1187 += (1.0) * i0data[i7+x7.size()*(i5+x5.size()*(i1+x1.size()*(i0)))] * fdata[i6+x4.size()*(i3)];
1188 }
1189 }
1190 }
1191 }
1192 }
1193 }
1194 }
1195 if (x4 == x6 && x2 == x5) {
1196 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x3, x1, x0);
1197 for (int i0 = 0; i0 != x0.size(); ++i0) {
1198 for (int i1 = 0; i1 != x1.size(); ++i1) {
1199 for (int i3 = 0; i3 != x3.size(); ++i3) {
1200 for (int i7 = 0; i7 != x7.size(); ++i7) {
1201 for (int i6 = 0; i6 != x6.size(); ++i6) {
1202 for (int i5 = 0; i5 != x5.size(); ++i5) {
1203 odata[i7+x7.size()*(i6+x6.size()*(i5+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1204 += (-2.0) * i0data[i7+x7.size()*(i3+x3.size()*(i1+x1.size()*(i0)))] * fdata[i6+x4.size()*(i3)];
1205 }
1206 }
1207 }
1208 }
1209 }
1210 }
1211 }
1212 if (x4 == x5 && x2 == x6) {
1213 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x3, x1, x0);
1214 for (int i0 = 0; i0 != x0.size(); ++i0) {
1215 for (int i1 = 0; i1 != x1.size(); ++i1) {
1216 for (int i3 = 0; i3 != x3.size(); ++i3) {
1217 for (int i7 = 0; i7 != x7.size(); ++i7) {
1218 for (int i5 = 0; i5 != x5.size(); ++i5) {
1219 for (int i6 = 0; i6 != x6.size(); ++i6) {
1220 odata[i7+x7.size()*(i6+x6.size()*(i6+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1221 += (1.0) * i0data[i7+x7.size()*(i3+x3.size()*(i1+x1.size()*(i0)))] * fdata[i5+x4.size()*(i3)];
1222 }
1223 }
1224 }
1225 }
1226 }
1227 }
1228 }
1229 if (x4 == x5) {
1230 std::unique_ptr<double[]> i0data = in(2)->get_block(x7, x6, x2, x3, x1, x0);
1231 for (int i0 = 0; i0 != x0.size(); ++i0) {
1232 for (int i1 = 0; i1 != x1.size(); ++i1) {
1233 for (int i3 = 0; i3 != x3.size(); ++i3) {
1234 for (int i2 = 0; i2 != x2.size(); ++i2) {
1235 for (int i6 = 0; i6 != x6.size(); ++i6) {
1236 for (int i7 = 0; i7 != x7.size(); ++i7) {
1237 for (int i5 = 0; i5 != x5.size(); ++i5) {
1238 odata[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1239 += (1.0) * i0data[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i5+x4.size()*(i3)];
1240 }
1241 }
1242 }
1243 }
1244 }
1245 }
1246 }
1247 }
1248 if (x4 == x6) {
1249 std::unique_ptr<double[]> i0data = in(2)->get_block(x7, x3, x2, x5, x1, x0);
1250 for (int i0 = 0; i0 != x0.size(); ++i0) {
1251 for (int i1 = 0; i1 != x1.size(); ++i1) {
1252 for (int i5 = 0; i5 != x5.size(); ++i5) {
1253 for (int i2 = 0; i2 != x2.size(); ++i2) {
1254 for (int i3 = 0; i3 != x3.size(); ++i3) {
1255 for (int i7 = 0; i7 != x7.size(); ++i7) {
1256 for (int i6 = 0; i6 != x6.size(); ++i6) {
1257 odata[i7+x7.size()*(i6+x6.size()*(i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))]
1258 += (1.0) * i0data[i7+x7.size()*(i3+x3.size()*(i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x4.size()*(i3)];
1259 }
1260 }
1261 }
1262 }
1263 }
1264 }
1265 }
1266 }
1267 out()->add_block(odata, x7, x6, x2, x5, x1, x0);
1268 }
1269
compute()1270 void Task8::Task_local::compute() {
1271 const Index x9 = b(0);
1272 const Index x8 = b(1);
1273 const Index x2 = b(2);
1274 const Index x7 = b(3);
1275 const Index x1 = b(4);
1276 const Index x0 = b(5);
1277 const Index x6 = b(6);
1278 const Index x5 = b(7);
1279 const Index x4 = b(8);
1280 const Index x3 = b(9);
1281 // tensor label: Gamma95
1282 std::unique_ptr<double[]> odata(new double[out()->get_size(x9, x8, x2, x7, x1, x0)]);
1283 std::fill_n(odata.get(), out()->get_size(x9, x8, x2, x7, x1, x0), 0.0);
1284 // associated with merged
1285 std::unique_ptr<double[]> fdata = in(4)->get_block(x6, x5, x4, x3);
1286 if (x2 == x8 && x9 == x5 && x1 == x7) {
1287 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x3);
1288 for (int i3 = 0; i3 != x3.size(); ++i3) {
1289 for (int i4 = 0; i4 != x4.size(); ++i4) {
1290 for (int i0 = 0; i0 != x0.size(); ++i0) {
1291 for (int i6 = 0; i6 != x6.size(); ++i6) {
1292 for (int i8 = 0; i8 != x8.size(); ++i8) {
1293 for (int i5 = 0; i5 != x5.size(); ++i5) {
1294 for (int i7 = 0; i7 != x7.size(); ++i7) {
1295 odata[i5+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1296 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i3)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1297 }
1298 }
1299 }
1300 }
1301 }
1302 }
1303 }
1304 }
1305 if (x9 == x5 && x2 == x3 && x1 == x7) {
1306 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x8, x4, x0);
1307 for (int i0 = 0; i0 != x0.size(); ++i0) {
1308 for (int i4 = 0; i4 != x4.size(); ++i4) {
1309 for (int i8 = 0; i8 != x8.size(); ++i8) {
1310 for (int i6 = 0; i6 != x6.size(); ++i6) {
1311 for (int i5 = 0; i5 != x5.size(); ++i5) {
1312 for (int i3 = 0; i3 != x3.size(); ++i3) {
1313 for (int i7 = 0; i7 != x7.size(); ++i7) {
1314 odata[i5+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1315 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1316 }
1317 }
1318 }
1319 }
1320 }
1321 }
1322 }
1323 }
1324 if (x9 == x3 && x2 == x5 && x1 == x7) {
1325 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x8);
1326 for (int i8 = 0; i8 != x8.size(); ++i8) {
1327 for (int i4 = 0; i4 != x4.size(); ++i4) {
1328 for (int i0 = 0; i0 != x0.size(); ++i0) {
1329 for (int i6 = 0; i6 != x6.size(); ++i6) {
1330 for (int i3 = 0; i3 != x3.size(); ++i3) {
1331 for (int i5 = 0; i5 != x5.size(); ++i5) {
1332 for (int i7 = 0; i7 != x7.size(); ++i7) {
1333 odata[i3+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1334 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i8)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1335 }
1336 }
1337 }
1338 }
1339 }
1340 }
1341 }
1342 }
1343 if (x9 == x5 && x1 == x7) {
1344 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x8, x4, x3, x2, x0);
1345 for (int i0 = 0; i0 != x0.size(); ++i0) {
1346 for (int i2 = 0; i2 != x2.size(); ++i2) {
1347 for (int i3 = 0; i3 != x3.size(); ++i3) {
1348 for (int i4 = 0; i4 != x4.size(); ++i4) {
1349 for (int i8 = 0; i8 != x8.size(); ++i8) {
1350 for (int i6 = 0; i6 != x6.size(); ++i6) {
1351 for (int i5 = 0; i5 != x5.size(); ++i5) {
1352 for (int i7 = 0; i7 != x7.size(); ++i7) {
1353 odata[i5+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1354 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1355 }
1356 }
1357 }
1358 }
1359 }
1360 }
1361 }
1362 }
1363 }
1364 if (x9 == x5 && x2 == x7 && x1 == x8) {
1365 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x3);
1366 for (int i3 = 0; i3 != x3.size(); ++i3) {
1367 for (int i4 = 0; i4 != x4.size(); ++i4) {
1368 for (int i0 = 0; i0 != x0.size(); ++i0) {
1369 for (int i6 = 0; i6 != x6.size(); ++i6) {
1370 for (int i5 = 0; i5 != x5.size(); ++i5) {
1371 for (int i7 = 0; i7 != x7.size(); ++i7) {
1372 for (int i8 = 0; i8 != x8.size(); ++i8) {
1373 odata[i5+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1374 += (2.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i3)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1375 }
1376 }
1377 }
1378 }
1379 }
1380 }
1381 }
1382 }
1383 if (x9 == x5 && x2 == x3 && x1 == x8) {
1384 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x7);
1385 for (int i7 = 0; i7 != x7.size(); ++i7) {
1386 for (int i4 = 0; i4 != x4.size(); ++i4) {
1387 for (int i0 = 0; i0 != x0.size(); ++i0) {
1388 for (int i6 = 0; i6 != x6.size(); ++i6) {
1389 for (int i5 = 0; i5 != x5.size(); ++i5) {
1390 for (int i3 = 0; i3 != x3.size(); ++i3) {
1391 for (int i8 = 0; i8 != x8.size(); ++i8) {
1392 odata[i5+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1393 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i7)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1394 }
1395 }
1396 }
1397 }
1398 }
1399 }
1400 }
1401 }
1402 if (x9 == x3 && x2 == x5 && x1 == x8) {
1403 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x7, x4, x0);
1404 for (int i0 = 0; i0 != x0.size(); ++i0) {
1405 for (int i4 = 0; i4 != x4.size(); ++i4) {
1406 for (int i7 = 0; i7 != x7.size(); ++i7) {
1407 for (int i6 = 0; i6 != x6.size(); ++i6) {
1408 for (int i3 = 0; i3 != x3.size(); ++i3) {
1409 for (int i5 = 0; i5 != x5.size(); ++i5) {
1410 for (int i8 = 0; i8 != x8.size(); ++i8) {
1411 odata[i3+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1412 += (-1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1413 }
1414 }
1415 }
1416 }
1417 }
1418 }
1419 }
1420 }
1421 if (x9 == x5 && x1 == x8) {
1422 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x0, x4, x3, x2, x7);
1423 for (int i7 = 0; i7 != x7.size(); ++i7) {
1424 for (int i2 = 0; i2 != x2.size(); ++i2) {
1425 for (int i3 = 0; i3 != x3.size(); ++i3) {
1426 for (int i4 = 0; i4 != x4.size(); ++i4) {
1427 for (int i0 = 0; i0 != x0.size(); ++i0) {
1428 for (int i6 = 0; i6 != x6.size(); ++i6) {
1429 for (int i5 = 0; i5 != x5.size(); ++i5) {
1430 for (int i8 = 0; i8 != x8.size(); ++i8) {
1431 odata[i5+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1432 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i7)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1433 }
1434 }
1435 }
1436 }
1437 }
1438 }
1439 }
1440 }
1441 }
1442 if (x9 == x5 && x2 == x7 && x1 == x3) {
1443 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x8, x4, x0);
1444 for (int i0 = 0; i0 != x0.size(); ++i0) {
1445 for (int i4 = 0; i4 != x4.size(); ++i4) {
1446 for (int i8 = 0; i8 != x8.size(); ++i8) {
1447 for (int i6 = 0; i6 != x6.size(); ++i6) {
1448 for (int i5 = 0; i5 != x5.size(); ++i5) {
1449 for (int i7 = 0; i7 != x7.size(); ++i7) {
1450 for (int i3 = 0; i3 != x3.size(); ++i3) {
1451 odata[i5+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
1452 += (2.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1453 }
1454 }
1455 }
1456 }
1457 }
1458 }
1459 }
1460 }
1461 if (x9 == x5 && x2 == x8 && x1 == x3) {
1462 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x7, x4, x0);
1463 for (int i0 = 0; i0 != x0.size(); ++i0) {
1464 for (int i4 = 0; i4 != x4.size(); ++i4) {
1465 for (int i7 = 0; i7 != x7.size(); ++i7) {
1466 for (int i6 = 0; i6 != x6.size(); ++i6) {
1467 for (int i5 = 0; i5 != x5.size(); ++i5) {
1468 for (int i8 = 0; i8 != x8.size(); ++i8) {
1469 for (int i3 = 0; i3 != x3.size(); ++i3) {
1470 odata[i5+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
1471 += (-1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1472 }
1473 }
1474 }
1475 }
1476 }
1477 }
1478 }
1479 }
1480 if (x9 == x5 && x1 == x3) {
1481 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x8, x4, x0, x2, x7);
1482 for (int i7 = 0; i7 != x7.size(); ++i7) {
1483 for (int i2 = 0; i2 != x2.size(); ++i2) {
1484 for (int i0 = 0; i0 != x0.size(); ++i0) {
1485 for (int i4 = 0; i4 != x4.size(); ++i4) {
1486 for (int i8 = 0; i8 != x8.size(); ++i8) {
1487 for (int i6 = 0; i6 != x6.size(); ++i6) {
1488 for (int i5 = 0; i5 != x5.size(); ++i5) {
1489 for (int i3 = 0; i3 != x3.size(); ++i3) {
1490 odata[i5+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
1491 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i0+x0.size()*(i2+x2.size()*(i7)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1492 }
1493 }
1494 }
1495 }
1496 }
1497 }
1498 }
1499 }
1500 }
1501 if (x9 == x3 && x2 == x7 && x1 == x5) {
1502 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x8);
1503 for (int i8 = 0; i8 != x8.size(); ++i8) {
1504 for (int i4 = 0; i4 != x4.size(); ++i4) {
1505 for (int i0 = 0; i0 != x0.size(); ++i0) {
1506 for (int i6 = 0; i6 != x6.size(); ++i6) {
1507 for (int i3 = 0; i3 != x3.size(); ++i3) {
1508 for (int i7 = 0; i7 != x7.size(); ++i7) {
1509 for (int i5 = 0; i5 != x5.size(); ++i5) {
1510 odata[i3+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
1511 += (2.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i8)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1512 }
1513 }
1514 }
1515 }
1516 }
1517 }
1518 }
1519 }
1520 if (x9 == x3 && x2 == x8 && x1 == x5) {
1521 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x7);
1522 for (int i7 = 0; i7 != x7.size(); ++i7) {
1523 for (int i4 = 0; i4 != x4.size(); ++i4) {
1524 for (int i0 = 0; i0 != x0.size(); ++i0) {
1525 for (int i6 = 0; i6 != x6.size(); ++i6) {
1526 for (int i3 = 0; i3 != x3.size(); ++i3) {
1527 for (int i8 = 0; i8 != x8.size(); ++i8) {
1528 for (int i5 = 0; i5 != x5.size(); ++i5) {
1529 odata[i3+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
1530 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i7)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1531 }
1532 }
1533 }
1534 }
1535 }
1536 }
1537 }
1538 }
1539 if (x9 == x3 && x1 == x5) {
1540 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x0, x4, x8, x2, x7);
1541 for (int i7 = 0; i7 != x7.size(); ++i7) {
1542 for (int i2 = 0; i2 != x2.size(); ++i2) {
1543 for (int i8 = 0; i8 != x8.size(); ++i8) {
1544 for (int i4 = 0; i4 != x4.size(); ++i4) {
1545 for (int i0 = 0; i0 != x0.size(); ++i0) {
1546 for (int i6 = 0; i6 != x6.size(); ++i6) {
1547 for (int i3 = 0; i3 != x3.size(); ++i3) {
1548 for (int i5 = 0; i5 != x5.size(); ++i5) {
1549 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
1550 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i8+x8.size()*(i2+x2.size()*(i7)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1551 }
1552 }
1553 }
1554 }
1555 }
1556 }
1557 }
1558 }
1559 }
1560 if (x9 == x5 && x2 == x7) {
1561 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x8, x4, x3, x1, x0);
1562 for (int i0 = 0; i0 != x0.size(); ++i0) {
1563 for (int i1 = 0; i1 != x1.size(); ++i1) {
1564 for (int i3 = 0; i3 != x3.size(); ++i3) {
1565 for (int i4 = 0; i4 != x4.size(); ++i4) {
1566 for (int i8 = 0; i8 != x8.size(); ++i8) {
1567 for (int i6 = 0; i6 != x6.size(); ++i6) {
1568 for (int i5 = 0; i5 != x5.size(); ++i5) {
1569 for (int i7 = 0; i7 != x7.size(); ++i7) {
1570 odata[i5+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1571 += (2.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1572 }
1573 }
1574 }
1575 }
1576 }
1577 }
1578 }
1579 }
1580 }
1581 if (x9 == x5 && x2 == x8) {
1582 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x7, x4, x3, x1, x0);
1583 for (int i0 = 0; i0 != x0.size(); ++i0) {
1584 for (int i1 = 0; i1 != x1.size(); ++i1) {
1585 for (int i3 = 0; i3 != x3.size(); ++i3) {
1586 for (int i4 = 0; i4 != x4.size(); ++i4) {
1587 for (int i7 = 0; i7 != x7.size(); ++i7) {
1588 for (int i6 = 0; i6 != x6.size(); ++i6) {
1589 for (int i5 = 0; i5 != x5.size(); ++i5) {
1590 for (int i8 = 0; i8 != x8.size(); ++i8) {
1591 odata[i5+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1592 += (-1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1593 }
1594 }
1595 }
1596 }
1597 }
1598 }
1599 }
1600 }
1601 }
1602 if (x9 == x5 && x2 == x3) {
1603 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x8, x4, x7, x1, x0);
1604 for (int i0 = 0; i0 != x0.size(); ++i0) {
1605 for (int i1 = 0; i1 != x1.size(); ++i1) {
1606 for (int i7 = 0; i7 != x7.size(); ++i7) {
1607 for (int i4 = 0; i4 != x4.size(); ++i4) {
1608 for (int i8 = 0; i8 != x8.size(); ++i8) {
1609 for (int i6 = 0; i6 != x6.size(); ++i6) {
1610 for (int i5 = 0; i5 != x5.size(); ++i5) {
1611 for (int i3 = 0; i3 != x3.size(); ++i3) {
1612 odata[i5+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1613 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1614 }
1615 }
1616 }
1617 }
1618 }
1619 }
1620 }
1621 }
1622 }
1623 if (x9 == x3 && x2 == x5) {
1624 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x7, x4, x8, x1, x0);
1625 for (int i0 = 0; i0 != x0.size(); ++i0) {
1626 for (int i1 = 0; i1 != x1.size(); ++i1) {
1627 for (int i8 = 0; i8 != x8.size(); ++i8) {
1628 for (int i4 = 0; i4 != x4.size(); ++i4) {
1629 for (int i7 = 0; i7 != x7.size(); ++i7) {
1630 for (int i6 = 0; i6 != x6.size(); ++i6) {
1631 for (int i3 = 0; i3 != x3.size(); ++i3) {
1632 for (int i5 = 0; i5 != x5.size(); ++i5) {
1633 odata[i3+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1634 += (-1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i8+x8.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1635 }
1636 }
1637 }
1638 }
1639 }
1640 }
1641 }
1642 }
1643 }
1644 if (x9 == x5) {
1645 std::unique_ptr<double[]> i0data = in(3)->get_block(x6, x8, x4, x3, x2, x7, x1, x0);
1646 for (int i0 = 0; i0 != x0.size(); ++i0) {
1647 for (int i1 = 0; i1 != x1.size(); ++i1) {
1648 for (int i7 = 0; i7 != x7.size(); ++i7) {
1649 for (int i2 = 0; i2 != x2.size(); ++i2) {
1650 for (int i3 = 0; i3 != x3.size(); ++i3) {
1651 for (int i4 = 0; i4 != x4.size(); ++i4) {
1652 for (int i8 = 0; i8 != x8.size(); ++i8) {
1653 for (int i6 = 0; i6 != x6.size(); ++i6) {
1654 for (int i5 = 0; i5 != x5.size(); ++i5) {
1655 odata[i5+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1656 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1657 }
1658 }
1659 }
1660 }
1661 }
1662 }
1663 }
1664 }
1665 }
1666 }
1667 if (x9 == x3 && x2 == x8 && x1 == x7 && x4 == x5) {
1668 std::unique_ptr<double[]> i0data = in(0)->get_block(x6, x0);
1669 for (int i0 = 0; i0 != x0.size(); ++i0) {
1670 for (int i6 = 0; i6 != x6.size(); ++i6) {
1671 for (int i3 = 0; i3 != x3.size(); ++i3) {
1672 for (int i8 = 0; i8 != x8.size(); ++i8) {
1673 for (int i7 = 0; i7 != x7.size(); ++i7) {
1674 for (int i5 = 0; i5 != x5.size(); ++i5) {
1675 odata[i3+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1676 += (-1.0) * i0data[i6+x6.size()*(i0)] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1677 }
1678 }
1679 }
1680 }
1681 }
1682 }
1683 }
1684 if (x1 == x7 && x2 == x8 && x9 == x3) {
1685 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x5, x4, x0);
1686 for (int i0 = 0; i0 != x0.size(); ++i0) {
1687 for (int i4 = 0; i4 != x4.size(); ++i4) {
1688 for (int i5 = 0; i5 != x5.size(); ++i5) {
1689 for (int i6 = 0; i6 != x6.size(); ++i6) {
1690 for (int i7 = 0; i7 != x7.size(); ++i7) {
1691 for (int i8 = 0; i8 != x8.size(); ++i8) {
1692 for (int i3 = 0; i3 != x3.size(); ++i3) {
1693 odata[i3+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1694 += (-1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1695 }
1696 }
1697 }
1698 }
1699 }
1700 }
1701 }
1702 }
1703 if (x4 == x5 && x9 == x3 && x1 == x7) {
1704 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x8, x2, x0);
1705 for (int i0 = 0; i0 != x0.size(); ++i0) {
1706 for (int i2 = 0; i2 != x2.size(); ++i2) {
1707 for (int i8 = 0; i8 != x8.size(); ++i8) {
1708 for (int i6 = 0; i6 != x6.size(); ++i6) {
1709 for (int i5 = 0; i5 != x5.size(); ++i5) {
1710 for (int i3 = 0; i3 != x3.size(); ++i3) {
1711 for (int i7 = 0; i7 != x7.size(); ++i7) {
1712 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1713 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i2+x2.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1714 }
1715 }
1716 }
1717 }
1718 }
1719 }
1720 }
1721 }
1722 if (x9 == x3 && x1 == x7) {
1723 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x5, x4, x8, x2, x0);
1724 for (int i0 = 0; i0 != x0.size(); ++i0) {
1725 for (int i2 = 0; i2 != x2.size(); ++i2) {
1726 for (int i8 = 0; i8 != x8.size(); ++i8) {
1727 for (int i4 = 0; i4 != x4.size(); ++i4) {
1728 for (int i5 = 0; i5 != x5.size(); ++i5) {
1729 for (int i6 = 0; i6 != x6.size(); ++i6) {
1730 for (int i3 = 0; i3 != x3.size(); ++i3) {
1731 for (int i7 = 0; i7 != x7.size(); ++i7) {
1732 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
1733 += (-1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i8+x8.size()*(i2+x2.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1734 }
1735 }
1736 }
1737 }
1738 }
1739 }
1740 }
1741 }
1742 }
1743 if (x4 == x5 && x9 == x3 && x2 == x7 && x1 == x8) {
1744 std::unique_ptr<double[]> i0data = in(0)->get_block(x6, x0);
1745 for (int i0 = 0; i0 != x0.size(); ++i0) {
1746 for (int i6 = 0; i6 != x6.size(); ++i6) {
1747 for (int i5 = 0; i5 != x5.size(); ++i5) {
1748 for (int i3 = 0; i3 != x3.size(); ++i3) {
1749 for (int i7 = 0; i7 != x7.size(); ++i7) {
1750 for (int i8 = 0; i8 != x8.size(); ++i8) {
1751 odata[i3+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1752 += (2.0) * i0data[i6+x6.size()*(i0)] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1753 }
1754 }
1755 }
1756 }
1757 }
1758 }
1759 }
1760 if (x9 == x3 && x2 == x7 && x1 == x8) {
1761 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x5, x4, x0);
1762 for (int i0 = 0; i0 != x0.size(); ++i0) {
1763 for (int i4 = 0; i4 != x4.size(); ++i4) {
1764 for (int i5 = 0; i5 != x5.size(); ++i5) {
1765 for (int i6 = 0; i6 != x6.size(); ++i6) {
1766 for (int i3 = 0; i3 != x3.size(); ++i3) {
1767 for (int i7 = 0; i7 != x7.size(); ++i7) {
1768 for (int i8 = 0; i8 != x8.size(); ++i8) {
1769 odata[i3+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1770 += (2.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1771 }
1772 }
1773 }
1774 }
1775 }
1776 }
1777 }
1778 }
1779 if (x4 == x5 && x9 == x3 && x1 == x8) {
1780 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x2, x7);
1781 for (int i7 = 0; i7 != x7.size(); ++i7) {
1782 for (int i2 = 0; i2 != x2.size(); ++i2) {
1783 for (int i0 = 0; i0 != x0.size(); ++i0) {
1784 for (int i6 = 0; i6 != x6.size(); ++i6) {
1785 for (int i5 = 0; i5 != x5.size(); ++i5) {
1786 for (int i3 = 0; i3 != x3.size(); ++i3) {
1787 for (int i8 = 0; i8 != x8.size(); ++i8) {
1788 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1789 += (-1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i2+x2.size()*(i7)))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1790 }
1791 }
1792 }
1793 }
1794 }
1795 }
1796 }
1797 }
1798 if (x9 == x3 && x1 == x8) {
1799 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x5, x4, x0, x2, x7);
1800 for (int i7 = 0; i7 != x7.size(); ++i7) {
1801 for (int i2 = 0; i2 != x2.size(); ++i2) {
1802 for (int i0 = 0; i0 != x0.size(); ++i0) {
1803 for (int i4 = 0; i4 != x4.size(); ++i4) {
1804 for (int i5 = 0; i5 != x5.size(); ++i5) {
1805 for (int i6 = 0; i6 != x6.size(); ++i6) {
1806 for (int i3 = 0; i3 != x3.size(); ++i3) {
1807 for (int i8 = 0; i8 != x8.size(); ++i8) {
1808 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
1809 += (-1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i2+x2.size()*(i7)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1810 }
1811 }
1812 }
1813 }
1814 }
1815 }
1816 }
1817 }
1818 }
1819 if (x4 == x5 && x9 == x3 && x2 == x7) {
1820 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x8, x1, x0);
1821 for (int i0 = 0; i0 != x0.size(); ++i0) {
1822 for (int i1 = 0; i1 != x1.size(); ++i1) {
1823 for (int i8 = 0; i8 != x8.size(); ++i8) {
1824 for (int i6 = 0; i6 != x6.size(); ++i6) {
1825 for (int i5 = 0; i5 != x5.size(); ++i5) {
1826 for (int i3 = 0; i3 != x3.size(); ++i3) {
1827 for (int i7 = 0; i7 != x7.size(); ++i7) {
1828 odata[i3+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1829 += (2.0) * i0data[i6+x6.size()*(i8+x8.size()*(i1+x1.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1830 }
1831 }
1832 }
1833 }
1834 }
1835 }
1836 }
1837 }
1838 if (x9 == x3 && x2 == x7) {
1839 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x5, x4, x8, x1, x0);
1840 for (int i0 = 0; i0 != x0.size(); ++i0) {
1841 for (int i1 = 0; i1 != x1.size(); ++i1) {
1842 for (int i8 = 0; i8 != x8.size(); ++i8) {
1843 for (int i4 = 0; i4 != x4.size(); ++i4) {
1844 for (int i5 = 0; i5 != x5.size(); ++i5) {
1845 for (int i6 = 0; i6 != x6.size(); ++i6) {
1846 for (int i3 = 0; i3 != x3.size(); ++i3) {
1847 for (int i7 = 0; i7 != x7.size(); ++i7) {
1848 odata[i3+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1849 += (2.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i8+x8.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1850 }
1851 }
1852 }
1853 }
1854 }
1855 }
1856 }
1857 }
1858 }
1859 if (x4 == x5 && x9 == x3 && x2 == x8) {
1860 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x7, x1, x0);
1861 for (int i0 = 0; i0 != x0.size(); ++i0) {
1862 for (int i1 = 0; i1 != x1.size(); ++i1) {
1863 for (int i7 = 0; i7 != x7.size(); ++i7) {
1864 for (int i6 = 0; i6 != x6.size(); ++i6) {
1865 for (int i5 = 0; i5 != x5.size(); ++i5) {
1866 for (int i3 = 0; i3 != x3.size(); ++i3) {
1867 for (int i8 = 0; i8 != x8.size(); ++i8) {
1868 odata[i3+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1869 += (-1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i1+x1.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1870 }
1871 }
1872 }
1873 }
1874 }
1875 }
1876 }
1877 }
1878 if (x9 == x3 && x2 == x8) {
1879 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x5, x4, x7, x1, x0);
1880 for (int i0 = 0; i0 != x0.size(); ++i0) {
1881 for (int i1 = 0; i1 != x1.size(); ++i1) {
1882 for (int i7 = 0; i7 != x7.size(); ++i7) {
1883 for (int i4 = 0; i4 != x4.size(); ++i4) {
1884 for (int i5 = 0; i5 != x5.size(); ++i5) {
1885 for (int i6 = 0; i6 != x6.size(); ++i6) {
1886 for (int i3 = 0; i3 != x3.size(); ++i3) {
1887 for (int i8 = 0; i8 != x8.size(); ++i8) {
1888 odata[i3+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1889 += (-1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1890 }
1891 }
1892 }
1893 }
1894 }
1895 }
1896 }
1897 }
1898 }
1899 if (x4 == x5 && x9 == x3) {
1900 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x8, x2, x7, x1, x0);
1901 for (int i0 = 0; i0 != x0.size(); ++i0) {
1902 for (int i1 = 0; i1 != x1.size(); ++i1) {
1903 for (int i7 = 0; i7 != x7.size(); ++i7) {
1904 for (int i2 = 0; i2 != x2.size(); ++i2) {
1905 for (int i8 = 0; i8 != x8.size(); ++i8) {
1906 for (int i6 = 0; i6 != x6.size(); ++i6) {
1907 for (int i5 = 0; i5 != x5.size(); ++i5) {
1908 for (int i3 = 0; i3 != x3.size(); ++i3) {
1909 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1910 += (-1.0) * i0data[i6+x6.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
1911 }
1912 }
1913 }
1914 }
1915 }
1916 }
1917 }
1918 }
1919 }
1920 if (x9 == x3) {
1921 std::unique_ptr<double[]> i0data = in(3)->get_block(x6, x5, x4, x8, x2, x7, x1, x0);
1922 for (int i0 = 0; i0 != x0.size(); ++i0) {
1923 for (int i1 = 0; i1 != x1.size(); ++i1) {
1924 for (int i7 = 0; i7 != x7.size(); ++i7) {
1925 for (int i2 = 0; i2 != x2.size(); ++i2) {
1926 for (int i8 = 0; i8 != x8.size(); ++i8) {
1927 for (int i4 = 0; i4 != x4.size(); ++i4) {
1928 for (int i5 = 0; i5 != x5.size(); ++i5) {
1929 for (int i6 = 0; i6 != x6.size(); ++i6) {
1930 for (int i3 = 0; i3 != x3.size(); ++i3) {
1931 odata[i3+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
1932 += (-1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
1933 }
1934 }
1935 }
1936 }
1937 }
1938 }
1939 }
1940 }
1941 }
1942 }
1943 if (x1 == x3 && x2 == x7 && x4 == x8) {
1944 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x6, x5);
1945 for (int i5 = 0; i5 != x5.size(); ++i5) {
1946 for (int i6 = 0; i6 != x6.size(); ++i6) {
1947 for (int i0 = 0; i0 != x0.size(); ++i0) {
1948 for (int i9 = 0; i9 != x9.size(); ++i9) {
1949 for (int i3 = 0; i3 != x3.size(); ++i3) {
1950 for (int i7 = 0; i7 != x7.size(); ++i7) {
1951 for (int i8 = 0; i8 != x8.size(); ++i8) {
1952 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
1953 += (-2.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i5)))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
1954 }
1955 }
1956 }
1957 }
1958 }
1959 }
1960 }
1961 }
1962 if (x1 == x3 && x2 == x8 && x4 == x7) {
1963 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x6, x5);
1964 for (int i5 = 0; i5 != x5.size(); ++i5) {
1965 for (int i6 = 0; i6 != x6.size(); ++i6) {
1966 for (int i0 = 0; i0 != x0.size(); ++i0) {
1967 for (int i9 = 0; i9 != x9.size(); ++i9) {
1968 for (int i3 = 0; i3 != x3.size(); ++i3) {
1969 for (int i8 = 0; i8 != x8.size(); ++i8) {
1970 for (int i7 = 0; i7 != x7.size(); ++i7) {
1971 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
1972 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i5)))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
1973 }
1974 }
1975 }
1976 }
1977 }
1978 }
1979 }
1980 }
1981 if (x2 == x7 && x4 == x8 && x1 == x5) {
1982 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x6, x0);
1983 for (int i0 = 0; i0 != x0.size(); ++i0) {
1984 for (int i6 = 0; i6 != x6.size(); ++i6) {
1985 for (int i3 = 0; i3 != x3.size(); ++i3) {
1986 for (int i9 = 0; i9 != x9.size(); ++i9) {
1987 for (int i7 = 0; i7 != x7.size(); ++i7) {
1988 for (int i8 = 0; i8 != x8.size(); ++i8) {
1989 for (int i5 = 0; i5 != x5.size(); ++i5) {
1990 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
1991 += (-2.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
1992 }
1993 }
1994 }
1995 }
1996 }
1997 }
1998 }
1999 }
2000 if (x2 == x8 && x4 == x7 && x1 == x5) {
2001 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x6, x0);
2002 for (int i0 = 0; i0 != x0.size(); ++i0) {
2003 for (int i6 = 0; i6 != x6.size(); ++i6) {
2004 for (int i3 = 0; i3 != x3.size(); ++i3) {
2005 for (int i9 = 0; i9 != x9.size(); ++i9) {
2006 for (int i8 = 0; i8 != x8.size(); ++i8) {
2007 for (int i7 = 0; i7 != x7.size(); ++i7) {
2008 for (int i5 = 0; i5 != x5.size(); ++i5) {
2009 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2010 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2011 }
2012 }
2013 }
2014 }
2015 }
2016 }
2017 }
2018 }
2019 if (x1 == x7 && x4 == x8 && x2 == x3) {
2020 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x6, x5);
2021 for (int i5 = 0; i5 != x5.size(); ++i5) {
2022 for (int i6 = 0; i6 != x6.size(); ++i6) {
2023 for (int i0 = 0; i0 != x0.size(); ++i0) {
2024 for (int i9 = 0; i9 != x9.size(); ++i9) {
2025 for (int i7 = 0; i7 != x7.size(); ++i7) {
2026 for (int i8 = 0; i8 != x8.size(); ++i8) {
2027 for (int i3 = 0; i3 != x3.size(); ++i3) {
2028 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2029 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i5)))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2030 }
2031 }
2032 }
2033 }
2034 }
2035 }
2036 }
2037 }
2038 if (x1 == x7 && x2 == x5 && x4 == x8) {
2039 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x6, x0);
2040 for (int i0 = 0; i0 != x0.size(); ++i0) {
2041 for (int i6 = 0; i6 != x6.size(); ++i6) {
2042 for (int i3 = 0; i3 != x3.size(); ++i3) {
2043 for (int i9 = 0; i9 != x9.size(); ++i9) {
2044 for (int i7 = 0; i7 != x7.size(); ++i7) {
2045 for (int i5 = 0; i5 != x5.size(); ++i5) {
2046 for (int i8 = 0; i8 != x8.size(); ++i8) {
2047 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2048 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2049 }
2050 }
2051 }
2052 }
2053 }
2054 }
2055 }
2056 }
2057 if (x1 == x7 && x4 == x8) {
2058 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x6, x5, x2, x0);
2059 for (int i0 = 0; i0 != x0.size(); ++i0) {
2060 for (int i2 = 0; i2 != x2.size(); ++i2) {
2061 for (int i5 = 0; i5 != x5.size(); ++i5) {
2062 for (int i6 = 0; i6 != x6.size(); ++i6) {
2063 for (int i3 = 0; i3 != x3.size(); ++i3) {
2064 for (int i9 = 0; i9 != x9.size(); ++i9) {
2065 for (int i7 = 0; i7 != x7.size(); ++i7) {
2066 for (int i8 = 0; i8 != x8.size(); ++i8) {
2067 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2068 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2069 }
2070 }
2071 }
2072 }
2073 }
2074 }
2075 }
2076 }
2077 }
2078 if (x1 == x8 && x2 == x3 && x4 == x7) {
2079 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x6, x5);
2080 for (int i5 = 0; i5 != x5.size(); ++i5) {
2081 for (int i6 = 0; i6 != x6.size(); ++i6) {
2082 for (int i0 = 0; i0 != x0.size(); ++i0) {
2083 for (int i9 = 0; i9 != x9.size(); ++i9) {
2084 for (int i8 = 0; i8 != x8.size(); ++i8) {
2085 for (int i3 = 0; i3 != x3.size(); ++i3) {
2086 for (int i7 = 0; i7 != x7.size(); ++i7) {
2087 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2088 += (-2.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i5)))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2089 }
2090 }
2091 }
2092 }
2093 }
2094 }
2095 }
2096 }
2097 if (x4 == x7 && x2 == x5 && x1 == x8) {
2098 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x6, x3);
2099 for (int i3 = 0; i3 != x3.size(); ++i3) {
2100 for (int i6 = 0; i6 != x6.size(); ++i6) {
2101 for (int i0 = 0; i0 != x0.size(); ++i0) {
2102 for (int i9 = 0; i9 != x9.size(); ++i9) {
2103 for (int i7 = 0; i7 != x7.size(); ++i7) {
2104 for (int i5 = 0; i5 != x5.size(); ++i5) {
2105 for (int i8 = 0; i8 != x8.size(); ++i8) {
2106 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2107 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i3)))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2108 }
2109 }
2110 }
2111 }
2112 }
2113 }
2114 }
2115 }
2116 if (x4 == x7 && x1 == x8) {
2117 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x0, x6, x5, x2, x3);
2118 for (int i3 = 0; i3 != x3.size(); ++i3) {
2119 for (int i2 = 0; i2 != x2.size(); ++i2) {
2120 for (int i5 = 0; i5 != x5.size(); ++i5) {
2121 for (int i6 = 0; i6 != x6.size(); ++i6) {
2122 for (int i0 = 0; i0 != x0.size(); ++i0) {
2123 for (int i9 = 0; i9 != x9.size(); ++i9) {
2124 for (int i7 = 0; i7 != x7.size(); ++i7) {
2125 for (int i8 = 0; i8 != x8.size(); ++i8) {
2126 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2127 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i3)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2128 }
2129 }
2130 }
2131 }
2132 }
2133 }
2134 }
2135 }
2136 }
2137 if (x4 == x8 && x2 == x7) {
2138 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x6, x5, x1, x0);
2139 for (int i0 = 0; i0 != x0.size(); ++i0) {
2140 for (int i1 = 0; i1 != x1.size(); ++i1) {
2141 for (int i5 = 0; i5 != x5.size(); ++i5) {
2142 for (int i6 = 0; i6 != x6.size(); ++i6) {
2143 for (int i3 = 0; i3 != x3.size(); ++i3) {
2144 for (int i9 = 0; i9 != x9.size(); ++i9) {
2145 for (int i8 = 0; i8 != x8.size(); ++i8) {
2146 for (int i7 = 0; i7 != x7.size(); ++i7) {
2147 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
2148 += (-2.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2149 }
2150 }
2151 }
2152 }
2153 }
2154 }
2155 }
2156 }
2157 }
2158 if (x4 == x7 && x2 == x8) {
2159 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x6, x5, x1, x0);
2160 for (int i0 = 0; i0 != x0.size(); ++i0) {
2161 for (int i1 = 0; i1 != x1.size(); ++i1) {
2162 for (int i5 = 0; i5 != x5.size(); ++i5) {
2163 for (int i6 = 0; i6 != x6.size(); ++i6) {
2164 for (int i3 = 0; i3 != x3.size(); ++i3) {
2165 for (int i9 = 0; i9 != x9.size(); ++i9) {
2166 for (int i7 = 0; i7 != x7.size(); ++i7) {
2167 for (int i8 = 0; i8 != x8.size(); ++i8) {
2168 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
2169 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2170 }
2171 }
2172 }
2173 }
2174 }
2175 }
2176 }
2177 }
2178 }
2179 if (x6 == x8 && x2 == x5 && x4 == x7 && x1 == x3) {
2180 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2181 for (int i0 = 0; i0 != x0.size(); ++i0) {
2182 for (int i9 = 0; i9 != x9.size(); ++i9) {
2183 for (int i8 = 0; i8 != x8.size(); ++i8) {
2184 for (int i5 = 0; i5 != x5.size(); ++i5) {
2185 for (int i7 = 0; i7 != x7.size(); ++i7) {
2186 for (int i3 = 0; i3 != x3.size(); ++i3) {
2187 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2188 += (1.0) * i0data[i9+x9.size()*(i0)] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2189 }
2190 }
2191 }
2192 }
2193 }
2194 }
2195 }
2196 if (x4 == x7 && x2 == x5 && x1 == x3) {
2197 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x8, x6, x0);
2198 for (int i0 = 0; i0 != x0.size(); ++i0) {
2199 for (int i6 = 0; i6 != x6.size(); ++i6) {
2200 for (int i8 = 0; i8 != x8.size(); ++i8) {
2201 for (int i9 = 0; i9 != x9.size(); ++i9) {
2202 for (int i7 = 0; i7 != x7.size(); ++i7) {
2203 for (int i5 = 0; i5 != x5.size(); ++i5) {
2204 for (int i3 = 0; i3 != x3.size(); ++i3) {
2205 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2206 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2207 }
2208 }
2209 }
2210 }
2211 }
2212 }
2213 }
2214 }
2215 if (x2 == x5 && x1 == x3 && x6 == x7 && x4 == x8) {
2216 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2217 for (int i0 = 0; i0 != x0.size(); ++i0) {
2218 for (int i9 = 0; i9 != x9.size(); ++i9) {
2219 for (int i5 = 0; i5 != x5.size(); ++i5) {
2220 for (int i3 = 0; i3 != x3.size(); ++i3) {
2221 for (int i7 = 0; i7 != x7.size(); ++i7) {
2222 for (int i8 = 0; i8 != x8.size(); ++i8) {
2223 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2224 += (-2.0) * i0data[i9+x9.size()*(i0)] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2225 }
2226 }
2227 }
2228 }
2229 }
2230 }
2231 }
2232 if (x1 == x3 && x2 == x5 && x4 == x8) {
2233 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x6, x7);
2234 for (int i7 = 0; i7 != x7.size(); ++i7) {
2235 for (int i6 = 0; i6 != x6.size(); ++i6) {
2236 for (int i0 = 0; i0 != x0.size(); ++i0) {
2237 for (int i9 = 0; i9 != x9.size(); ++i9) {
2238 for (int i3 = 0; i3 != x3.size(); ++i3) {
2239 for (int i5 = 0; i5 != x5.size(); ++i5) {
2240 for (int i8 = 0; i8 != x8.size(); ++i8) {
2241 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2242 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i6+x6.size()*(i7)))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2243 }
2244 }
2245 }
2246 }
2247 }
2248 }
2249 }
2250 }
2251 if (x1 == x3 && x2 == x5 && x6 == x7) {
2252 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x8, x4, x0);
2253 for (int i0 = 0; i0 != x0.size(); ++i0) {
2254 for (int i4 = 0; i4 != x4.size(); ++i4) {
2255 for (int i8 = 0; i8 != x8.size(); ++i8) {
2256 for (int i9 = 0; i9 != x9.size(); ++i9) {
2257 for (int i3 = 0; i3 != x3.size(); ++i3) {
2258 for (int i5 = 0; i5 != x5.size(); ++i5) {
2259 for (int i7 = 0; i7 != x7.size(); ++i7) {
2260 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2261 += (-2.0) * i0data[i9+x9.size()*(i8+x8.size()*(i4+x4.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2262 }
2263 }
2264 }
2265 }
2266 }
2267 }
2268 }
2269 }
2270 if (x6 == x8 && x2 == x5 && x1 == x3) {
2271 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x7, x4, x0);
2272 for (int i0 = 0; i0 != x0.size(); ++i0) {
2273 for (int i4 = 0; i4 != x4.size(); ++i4) {
2274 for (int i7 = 0; i7 != x7.size(); ++i7) {
2275 for (int i9 = 0; i9 != x9.size(); ++i9) {
2276 for (int i8 = 0; i8 != x8.size(); ++i8) {
2277 for (int i5 = 0; i5 != x5.size(); ++i5) {
2278 for (int i3 = 0; i3 != x3.size(); ++i3) {
2279 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2280 += (1.0) * i0data[i9+x9.size()*(i7+x7.size()*(i4+x4.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2281 }
2282 }
2283 }
2284 }
2285 }
2286 }
2287 }
2288 }
2289 if (x4 == x5 && x6 == x8 && x2 == x7 && x1 == x3) {
2290 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2291 for (int i0 = 0; i0 != x0.size(); ++i0) {
2292 for (int i9 = 0; i9 != x9.size(); ++i9) {
2293 for (int i5 = 0; i5 != x5.size(); ++i5) {
2294 for (int i8 = 0; i8 != x8.size(); ++i8) {
2295 for (int i7 = 0; i7 != x7.size(); ++i7) {
2296 for (int i3 = 0; i3 != x3.size(); ++i3) {
2297 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2298 += (-2.0) * i0data[i9+x9.size()*(i0)] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2299 }
2300 }
2301 }
2302 }
2303 }
2304 }
2305 }
2306 if (x1 == x3 && x6 == x8 && x2 == x7) {
2307 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x5, x4, x0);
2308 for (int i0 = 0; i0 != x0.size(); ++i0) {
2309 for (int i4 = 0; i4 != x4.size(); ++i4) {
2310 for (int i5 = 0; i5 != x5.size(); ++i5) {
2311 for (int i9 = 0; i9 != x9.size(); ++i9) {
2312 for (int i3 = 0; i3 != x3.size(); ++i3) {
2313 for (int i8 = 0; i8 != x8.size(); ++i8) {
2314 for (int i7 = 0; i7 != x7.size(); ++i7) {
2315 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2316 += (-2.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2317 }
2318 }
2319 }
2320 }
2321 }
2322 }
2323 }
2324 }
2325 if (x2 == x8 && x1 == x3 && x6 == x7 && x4 == x5) {
2326 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2327 for (int i0 = 0; i0 != x0.size(); ++i0) {
2328 for (int i9 = 0; i9 != x9.size(); ++i9) {
2329 for (int i8 = 0; i8 != x8.size(); ++i8) {
2330 for (int i3 = 0; i3 != x3.size(); ++i3) {
2331 for (int i7 = 0; i7 != x7.size(); ++i7) {
2332 for (int i5 = 0; i5 != x5.size(); ++i5) {
2333 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2334 += (1.0) * i0data[i9+x9.size()*(i0)] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2335 }
2336 }
2337 }
2338 }
2339 }
2340 }
2341 }
2342 if (x6 == x7 && x2 == x8 && x1 == x3) {
2343 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x5, x4, x0);
2344 for (int i0 = 0; i0 != x0.size(); ++i0) {
2345 for (int i4 = 0; i4 != x4.size(); ++i4) {
2346 for (int i5 = 0; i5 != x5.size(); ++i5) {
2347 for (int i9 = 0; i9 != x9.size(); ++i9) {
2348 for (int i7 = 0; i7 != x7.size(); ++i7) {
2349 for (int i8 = 0; i8 != x8.size(); ++i8) {
2350 for (int i3 = 0; i3 != x3.size(); ++i3) {
2351 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2352 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2353 }
2354 }
2355 }
2356 }
2357 }
2358 }
2359 }
2360 }
2361 if (x6 == x7 && x4 == x5 && x1 == x3) {
2362 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x8, x2, x0);
2363 for (int i0 = 0; i0 != x0.size(); ++i0) {
2364 for (int i2 = 0; i2 != x2.size(); ++i2) {
2365 for (int i8 = 0; i8 != x8.size(); ++i8) {
2366 for (int i9 = 0; i9 != x9.size(); ++i9) {
2367 for (int i7 = 0; i7 != x7.size(); ++i7) {
2368 for (int i5 = 0; i5 != x5.size(); ++i5) {
2369 for (int i3 = 0; i3 != x3.size(); ++i3) {
2370 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2371 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2372 }
2373 }
2374 }
2375 }
2376 }
2377 }
2378 }
2379 }
2380 if (x6 == x8 && x4 == x5 && x1 == x3) {
2381 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x2, x7);
2382 for (int i7 = 0; i7 != x7.size(); ++i7) {
2383 for (int i2 = 0; i2 != x2.size(); ++i2) {
2384 for (int i0 = 0; i0 != x0.size(); ++i0) {
2385 for (int i9 = 0; i9 != x9.size(); ++i9) {
2386 for (int i8 = 0; i8 != x8.size(); ++i8) {
2387 for (int i5 = 0; i5 != x5.size(); ++i5) {
2388 for (int i3 = 0; i3 != x3.size(); ++i3) {
2389 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2390 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i7)))] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2391 }
2392 }
2393 }
2394 }
2395 }
2396 }
2397 }
2398 }
2399 if (x6 == x8 && x4 == x7 && x1 == x3) {
2400 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x5, x2, x0);
2401 for (int i0 = 0; i0 != x0.size(); ++i0) {
2402 for (int i2 = 0; i2 != x2.size(); ++i2) {
2403 for (int i5 = 0; i5 != x5.size(); ++i5) {
2404 for (int i9 = 0; i9 != x9.size(); ++i9) {
2405 for (int i8 = 0; i8 != x8.size(); ++i8) {
2406 for (int i7 = 0; i7 != x7.size(); ++i7) {
2407 for (int i3 = 0; i3 != x3.size(); ++i3) {
2408 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2409 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i2+x2.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2410 }
2411 }
2412 }
2413 }
2414 }
2415 }
2416 }
2417 }
2418 if (x4 == x7 && x1 == x3) {
2419 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x6, x5, x2, x0);
2420 for (int i0 = 0; i0 != x0.size(); ++i0) {
2421 for (int i2 = 0; i2 != x2.size(); ++i2) {
2422 for (int i5 = 0; i5 != x5.size(); ++i5) {
2423 for (int i6 = 0; i6 != x6.size(); ++i6) {
2424 for (int i8 = 0; i8 != x8.size(); ++i8) {
2425 for (int i9 = 0; i9 != x9.size(); ++i9) {
2426 for (int i7 = 0; i7 != x7.size(); ++i7) {
2427 for (int i3 = 0; i3 != x3.size(); ++i3) {
2428 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2429 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2430 }
2431 }
2432 }
2433 }
2434 }
2435 }
2436 }
2437 }
2438 }
2439 if (x6 == x7 && x4 == x8 && x1 == x3) {
2440 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x2, x5);
2441 for (int i5 = 0; i5 != x5.size(); ++i5) {
2442 for (int i2 = 0; i2 != x2.size(); ++i2) {
2443 for (int i0 = 0; i0 != x0.size(); ++i0) {
2444 for (int i9 = 0; i9 != x9.size(); ++i9) {
2445 for (int i7 = 0; i7 != x7.size(); ++i7) {
2446 for (int i8 = 0; i8 != x8.size(); ++i8) {
2447 for (int i3 = 0; i3 != x3.size(); ++i3) {
2448 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2449 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i5)))] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2450 }
2451 }
2452 }
2453 }
2454 }
2455 }
2456 }
2457 }
2458 if (x4 == x8 && x1 == x3) {
2459 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x0, x2, x7, x6, x5);
2460 for (int i5 = 0; i5 != x5.size(); ++i5) {
2461 for (int i6 = 0; i6 != x6.size(); ++i6) {
2462 for (int i7 = 0; i7 != x7.size(); ++i7) {
2463 for (int i2 = 0; i2 != x2.size(); ++i2) {
2464 for (int i0 = 0; i0 != x0.size(); ++i0) {
2465 for (int i9 = 0; i9 != x9.size(); ++i9) {
2466 for (int i8 = 0; i8 != x8.size(); ++i8) {
2467 for (int i3 = 0; i3 != x3.size(); ++i3) {
2468 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2469 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i7+x7.size()*(i6+x6.size()*(i5)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2470 }
2471 }
2472 }
2473 }
2474 }
2475 }
2476 }
2477 }
2478 }
2479 if (x6 == x7 && x1 == x3) {
2480 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x2, x5, x4, x0);
2481 for (int i0 = 0; i0 != x0.size(); ++i0) {
2482 for (int i4 = 0; i4 != x4.size(); ++i4) {
2483 for (int i5 = 0; i5 != x5.size(); ++i5) {
2484 for (int i2 = 0; i2 != x2.size(); ++i2) {
2485 for (int i8 = 0; i8 != x8.size(); ++i8) {
2486 for (int i9 = 0; i9 != x9.size(); ++i9) {
2487 for (int i7 = 0; i7 != x7.size(); ++i7) {
2488 for (int i3 = 0; i3 != x3.size(); ++i3) {
2489 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2490 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2491 }
2492 }
2493 }
2494 }
2495 }
2496 }
2497 }
2498 }
2499 }
2500 if (x6 == x8 && x1 == x3) {
2501 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x5, x2, x7, x4, x0);
2502 for (int i0 = 0; i0 != x0.size(); ++i0) {
2503 for (int i4 = 0; i4 != x4.size(); ++i4) {
2504 for (int i7 = 0; i7 != x7.size(); ++i7) {
2505 for (int i2 = 0; i2 != x2.size(); ++i2) {
2506 for (int i5 = 0; i5 != x5.size(); ++i5) {
2507 for (int i9 = 0; i9 != x9.size(); ++i9) {
2508 for (int i8 = 0; i8 != x8.size(); ++i8) {
2509 for (int i3 = 0; i3 != x3.size(); ++i3) {
2510 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i3+x1.size()*(i0)))))]
2511 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i2+x2.size()*(i7+x7.size()*(i4+x4.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2512 }
2513 }
2514 }
2515 }
2516 }
2517 }
2518 }
2519 }
2520 }
2521 if (x6 == x8 && x4 == x7 && x2 == x3 && x1 == x5) {
2522 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2523 for (int i0 = 0; i0 != x0.size(); ++i0) {
2524 for (int i9 = 0; i9 != x9.size(); ++i9) {
2525 for (int i8 = 0; i8 != x8.size(); ++i8) {
2526 for (int i7 = 0; i7 != x7.size(); ++i7) {
2527 for (int i3 = 0; i3 != x3.size(); ++i3) {
2528 for (int i5 = 0; i5 != x5.size(); ++i5) {
2529 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2530 += (-2.0) * i0data[i9+x9.size()*(i0)] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2531 }
2532 }
2533 }
2534 }
2535 }
2536 }
2537 }
2538 if (x4 == x7 && x2 == x3 && x1 == x5) {
2539 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x8, x6, x0);
2540 for (int i0 = 0; i0 != x0.size(); ++i0) {
2541 for (int i6 = 0; i6 != x6.size(); ++i6) {
2542 for (int i8 = 0; i8 != x8.size(); ++i8) {
2543 for (int i9 = 0; i9 != x9.size(); ++i9) {
2544 for (int i7 = 0; i7 != x7.size(); ++i7) {
2545 for (int i3 = 0; i3 != x3.size(); ++i3) {
2546 for (int i5 = 0; i5 != x5.size(); ++i5) {
2547 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2548 += (-2.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2549 }
2550 }
2551 }
2552 }
2553 }
2554 }
2555 }
2556 }
2557 if (x6 == x7 && x4 == x8 && x2 == x3 && x1 == x5) {
2558 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2559 for (int i0 = 0; i0 != x0.size(); ++i0) {
2560 for (int i9 = 0; i9 != x9.size(); ++i9) {
2561 for (int i7 = 0; i7 != x7.size(); ++i7) {
2562 for (int i8 = 0; i8 != x8.size(); ++i8) {
2563 for (int i3 = 0; i3 != x3.size(); ++i3) {
2564 for (int i5 = 0; i5 != x5.size(); ++i5) {
2565 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2566 += (1.0) * i0data[i9+x9.size()*(i0)] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2567 }
2568 }
2569 }
2570 }
2571 }
2572 }
2573 }
2574 if (x4 == x8 && x2 == x3 && x1 == x5) {
2575 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x7, x6, x0);
2576 for (int i0 = 0; i0 != x0.size(); ++i0) {
2577 for (int i6 = 0; i6 != x6.size(); ++i6) {
2578 for (int i7 = 0; i7 != x7.size(); ++i7) {
2579 for (int i9 = 0; i9 != x9.size(); ++i9) {
2580 for (int i8 = 0; i8 != x8.size(); ++i8) {
2581 for (int i3 = 0; i3 != x3.size(); ++i3) {
2582 for (int i5 = 0; i5 != x5.size(); ++i5) {
2583 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2584 += (1.0) * i0data[i9+x9.size()*(i7+x7.size()*(i6+x6.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2585 }
2586 }
2587 }
2588 }
2589 }
2590 }
2591 }
2592 }
2593 if (x6 == x7 && x2 == x3 && x1 == x5) {
2594 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x8, x4, x0);
2595 for (int i0 = 0; i0 != x0.size(); ++i0) {
2596 for (int i4 = 0; i4 != x4.size(); ++i4) {
2597 for (int i8 = 0; i8 != x8.size(); ++i8) {
2598 for (int i9 = 0; i9 != x9.size(); ++i9) {
2599 for (int i7 = 0; i7 != x7.size(); ++i7) {
2600 for (int i3 = 0; i3 != x3.size(); ++i3) {
2601 for (int i5 = 0; i5 != x5.size(); ++i5) {
2602 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2603 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i4+x4.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2604 }
2605 }
2606 }
2607 }
2608 }
2609 }
2610 }
2611 }
2612 if (x6 == x8 && x2 == x3 && x1 == x5) {
2613 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x4, x7);
2614 for (int i7 = 0; i7 != x7.size(); ++i7) {
2615 for (int i4 = 0; i4 != x4.size(); ++i4) {
2616 for (int i0 = 0; i0 != x0.size(); ++i0) {
2617 for (int i9 = 0; i9 != x9.size(); ++i9) {
2618 for (int i8 = 0; i8 != x8.size(); ++i8) {
2619 for (int i3 = 0; i3 != x3.size(); ++i3) {
2620 for (int i5 = 0; i5 != x5.size(); ++i5) {
2621 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2622 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i4+x4.size()*(i7)))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2623 }
2624 }
2625 }
2626 }
2627 }
2628 }
2629 }
2630 }
2631 if (x6 == x8 && x2 == x7 && x1 == x5) {
2632 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x4, x3);
2633 for (int i3 = 0; i3 != x3.size(); ++i3) {
2634 for (int i4 = 0; i4 != x4.size(); ++i4) {
2635 for (int i0 = 0; i0 != x0.size(); ++i0) {
2636 for (int i9 = 0; i9 != x9.size(); ++i9) {
2637 for (int i8 = 0; i8 != x8.size(); ++i8) {
2638 for (int i7 = 0; i7 != x7.size(); ++i7) {
2639 for (int i5 = 0; i5 != x5.size(); ++i5) {
2640 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2641 += (-2.0) * i0data[i9+x9.size()*(i0+x0.size()*(i4+x4.size()*(i3)))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2642 }
2643 }
2644 }
2645 }
2646 }
2647 }
2648 }
2649 }
2650 if (x6 == x7 && x2 == x8 && x1 == x5) {
2651 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x4, x3);
2652 for (int i3 = 0; i3 != x3.size(); ++i3) {
2653 for (int i4 = 0; i4 != x4.size(); ++i4) {
2654 for (int i0 = 0; i0 != x0.size(); ++i0) {
2655 for (int i9 = 0; i9 != x9.size(); ++i9) {
2656 for (int i7 = 0; i7 != x7.size(); ++i7) {
2657 for (int i8 = 0; i8 != x8.size(); ++i8) {
2658 for (int i5 = 0; i5 != x5.size(); ++i5) {
2659 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2660 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i4+x4.size()*(i3)))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2661 }
2662 }
2663 }
2664 }
2665 }
2666 }
2667 }
2668 }
2669 if (x6 == x8 && x4 == x7 && x1 == x5) {
2670 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x2, x3);
2671 for (int i3 = 0; i3 != x3.size(); ++i3) {
2672 for (int i2 = 0; i2 != x2.size(); ++i2) {
2673 for (int i0 = 0; i0 != x0.size(); ++i0) {
2674 for (int i9 = 0; i9 != x9.size(); ++i9) {
2675 for (int i8 = 0; i8 != x8.size(); ++i8) {
2676 for (int i7 = 0; i7 != x7.size(); ++i7) {
2677 for (int i5 = 0; i5 != x5.size(); ++i5) {
2678 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2679 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i3)))] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2680 }
2681 }
2682 }
2683 }
2684 }
2685 }
2686 }
2687 }
2688 if (x4 == x7 && x1 == x5) {
2689 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x6, x0, x2, x3);
2690 for (int i3 = 0; i3 != x3.size(); ++i3) {
2691 for (int i2 = 0; i2 != x2.size(); ++i2) {
2692 for (int i0 = 0; i0 != x0.size(); ++i0) {
2693 for (int i6 = 0; i6 != x6.size(); ++i6) {
2694 for (int i8 = 0; i8 != x8.size(); ++i8) {
2695 for (int i9 = 0; i9 != x9.size(); ++i9) {
2696 for (int i7 = 0; i7 != x7.size(); ++i7) {
2697 for (int i5 = 0; i5 != x5.size(); ++i5) {
2698 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2699 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i0+x0.size()*(i2+x2.size()*(i3)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
2700 }
2701 }
2702 }
2703 }
2704 }
2705 }
2706 }
2707 }
2708 }
2709 if (x6 == x7 && x4 == x8 && x1 == x5) {
2710 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x2, x0);
2711 for (int i0 = 0; i0 != x0.size(); ++i0) {
2712 for (int i2 = 0; i2 != x2.size(); ++i2) {
2713 for (int i3 = 0; i3 != x3.size(); ++i3) {
2714 for (int i9 = 0; i9 != x9.size(); ++i9) {
2715 for (int i7 = 0; i7 != x7.size(); ++i7) {
2716 for (int i8 = 0; i8 != x8.size(); ++i8) {
2717 for (int i5 = 0; i5 != x5.size(); ++i5) {
2718 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2719 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i2+x2.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2720 }
2721 }
2722 }
2723 }
2724 }
2725 }
2726 }
2727 }
2728 if (x4 == x8 && x1 == x5) {
2729 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x2, x7, x6, x0);
2730 for (int i0 = 0; i0 != x0.size(); ++i0) {
2731 for (int i6 = 0; i6 != x6.size(); ++i6) {
2732 for (int i7 = 0; i7 != x7.size(); ++i7) {
2733 for (int i2 = 0; i2 != x2.size(); ++i2) {
2734 for (int i3 = 0; i3 != x3.size(); ++i3) {
2735 for (int i9 = 0; i9 != x9.size(); ++i9) {
2736 for (int i8 = 0; i8 != x8.size(); ++i8) {
2737 for (int i5 = 0; i5 != x5.size(); ++i5) {
2738 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2739 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i2+x2.size()*(i7+x7.size()*(i6+x6.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
2740 }
2741 }
2742 }
2743 }
2744 }
2745 }
2746 }
2747 }
2748 }
2749 if (x6 == x7 && x1 == x5) {
2750 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x4, x3, x2, x0);
2751 for (int i0 = 0; i0 != x0.size(); ++i0) {
2752 for (int i2 = 0; i2 != x2.size(); ++i2) {
2753 for (int i3 = 0; i3 != x3.size(); ++i3) {
2754 for (int i4 = 0; i4 != x4.size(); ++i4) {
2755 for (int i8 = 0; i8 != x8.size(); ++i8) {
2756 for (int i9 = 0; i9 != x9.size(); ++i9) {
2757 for (int i7 = 0; i7 != x7.size(); ++i7) {
2758 for (int i5 = 0; i5 != x5.size(); ++i5) {
2759 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2760 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2761 }
2762 }
2763 }
2764 }
2765 }
2766 }
2767 }
2768 }
2769 }
2770 if (x6 == x8 && x1 == x5) {
2771 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x0, x2, x7, x4, x3);
2772 for (int i3 = 0; i3 != x3.size(); ++i3) {
2773 for (int i4 = 0; i4 != x4.size(); ++i4) {
2774 for (int i7 = 0; i7 != x7.size(); ++i7) {
2775 for (int i2 = 0; i2 != x2.size(); ++i2) {
2776 for (int i0 = 0; i0 != x0.size(); ++i0) {
2777 for (int i9 = 0; i9 != x9.size(); ++i9) {
2778 for (int i8 = 0; i8 != x8.size(); ++i8) {
2779 for (int i5 = 0; i5 != x5.size(); ++i5) {
2780 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i5+x1.size()*(i0)))))]
2781 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i7+x7.size()*(i4+x4.size()*(i3)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2782 }
2783 }
2784 }
2785 }
2786 }
2787 }
2788 }
2789 }
2790 }
2791 if (x6 == x8 && x4 == x5 && x2 == x3 && x1 == x7) {
2792 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2793 for (int i0 = 0; i0 != x0.size(); ++i0) {
2794 for (int i9 = 0; i9 != x9.size(); ++i9) {
2795 for (int i8 = 0; i8 != x8.size(); ++i8) {
2796 for (int i5 = 0; i5 != x5.size(); ++i5) {
2797 for (int i3 = 0; i3 != x3.size(); ++i3) {
2798 for (int i7 = 0; i7 != x7.size(); ++i7) {
2799 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2800 += (1.0) * i0data[i9+x9.size()*(i0)] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2801 }
2802 }
2803 }
2804 }
2805 }
2806 }
2807 }
2808 if (x6 == x8 && x2 == x3 && x1 == x7) {
2809 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x5, x4, x0);
2810 for (int i0 = 0; i0 != x0.size(); ++i0) {
2811 for (int i4 = 0; i4 != x4.size(); ++i4) {
2812 for (int i5 = 0; i5 != x5.size(); ++i5) {
2813 for (int i9 = 0; i9 != x9.size(); ++i9) {
2814 for (int i8 = 0; i8 != x8.size(); ++i8) {
2815 for (int i3 = 0; i3 != x3.size(); ++i3) {
2816 for (int i7 = 0; i7 != x7.size(); ++i7) {
2817 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2818 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2819 }
2820 }
2821 }
2822 }
2823 }
2824 }
2825 }
2826 }
2827 if (x6 == x8 && x2 == x5 && x1 == x7) {
2828 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x4, x3);
2829 for (int i3 = 0; i3 != x3.size(); ++i3) {
2830 for (int i4 = 0; i4 != x4.size(); ++i4) {
2831 for (int i0 = 0; i0 != x0.size(); ++i0) {
2832 for (int i9 = 0; i9 != x9.size(); ++i9) {
2833 for (int i8 = 0; i8 != x8.size(); ++i8) {
2834 for (int i5 = 0; i5 != x5.size(); ++i5) {
2835 for (int i7 = 0; i7 != x7.size(); ++i7) {
2836 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2837 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i4+x4.size()*(i3)))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2838 }
2839 }
2840 }
2841 }
2842 }
2843 }
2844 }
2845 }
2846 if (x6 == x8 && x4 == x5 && x1 == x7) {
2847 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x2, x0);
2848 for (int i0 = 0; i0 != x0.size(); ++i0) {
2849 for (int i2 = 0; i2 != x2.size(); ++i2) {
2850 for (int i3 = 0; i3 != x3.size(); ++i3) {
2851 for (int i9 = 0; i9 != x9.size(); ++i9) {
2852 for (int i8 = 0; i8 != x8.size(); ++i8) {
2853 for (int i5 = 0; i5 != x5.size(); ++i5) {
2854 for (int i7 = 0; i7 != x7.size(); ++i7) {
2855 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2856 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i2+x2.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2857 }
2858 }
2859 }
2860 }
2861 }
2862 }
2863 }
2864 }
2865 if (x6 == x8 && x1 == x7) {
2866 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x5, x4, x3, x2, x0);
2867 for (int i0 = 0; i0 != x0.size(); ++i0) {
2868 for (int i2 = 0; i2 != x2.size(); ++i2) {
2869 for (int i3 = 0; i3 != x3.size(); ++i3) {
2870 for (int i4 = 0; i4 != x4.size(); ++i4) {
2871 for (int i5 = 0; i5 != x5.size(); ++i5) {
2872 for (int i9 = 0; i9 != x9.size(); ++i9) {
2873 for (int i8 = 0; i8 != x8.size(); ++i8) {
2874 for (int i7 = 0; i7 != x7.size(); ++i7) {
2875 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i7+x1.size()*(i0)))))]
2876 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2877 }
2878 }
2879 }
2880 }
2881 }
2882 }
2883 }
2884 }
2885 }
2886 if (x6 == x7 && x4 == x5 && x2 == x3 && x1 == x8) {
2887 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0);
2888 for (int i0 = 0; i0 != x0.size(); ++i0) {
2889 for (int i9 = 0; i9 != x9.size(); ++i9) {
2890 for (int i7 = 0; i7 != x7.size(); ++i7) {
2891 for (int i5 = 0; i5 != x5.size(); ++i5) {
2892 for (int i3 = 0; i3 != x3.size(); ++i3) {
2893 for (int i8 = 0; i8 != x8.size(); ++i8) {
2894 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2895 += (-2.0) * i0data[i9+x9.size()*(i0)] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2896 }
2897 }
2898 }
2899 }
2900 }
2901 }
2902 }
2903 if (x6 == x7 && x2 == x3 && x1 == x8) {
2904 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x4, x5);
2905 for (int i5 = 0; i5 != x5.size(); ++i5) {
2906 for (int i4 = 0; i4 != x4.size(); ++i4) {
2907 for (int i0 = 0; i0 != x0.size(); ++i0) {
2908 for (int i9 = 0; i9 != x9.size(); ++i9) {
2909 for (int i7 = 0; i7 != x7.size(); ++i7) {
2910 for (int i3 = 0; i3 != x3.size(); ++i3) {
2911 for (int i8 = 0; i8 != x8.size(); ++i8) {
2912 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2913 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i4+x4.size()*(i5)))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2914 }
2915 }
2916 }
2917 }
2918 }
2919 }
2920 }
2921 }
2922 if (x6 == x7 && x2 == x5 && x1 == x8) {
2923 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x4, x3);
2924 for (int i3 = 0; i3 != x3.size(); ++i3) {
2925 for (int i4 = 0; i4 != x4.size(); ++i4) {
2926 for (int i0 = 0; i0 != x0.size(); ++i0) {
2927 for (int i9 = 0; i9 != x9.size(); ++i9) {
2928 for (int i7 = 0; i7 != x7.size(); ++i7) {
2929 for (int i5 = 0; i5 != x5.size(); ++i5) {
2930 for (int i8 = 0; i8 != x8.size(); ++i8) {
2931 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2932 += (-2.0) * i0data[i9+x9.size()*(i0+x0.size()*(i4+x4.size()*(i3)))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2933 }
2934 }
2935 }
2936 }
2937 }
2938 }
2939 }
2940 }
2941 if (x6 == x7 && x4 == x5 && x1 == x8) {
2942 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x2, x3);
2943 for (int i3 = 0; i3 != x3.size(); ++i3) {
2944 for (int i2 = 0; i2 != x2.size(); ++i2) {
2945 for (int i0 = 0; i0 != x0.size(); ++i0) {
2946 for (int i9 = 0; i9 != x9.size(); ++i9) {
2947 for (int i7 = 0; i7 != x7.size(); ++i7) {
2948 for (int i5 = 0; i5 != x5.size(); ++i5) {
2949 for (int i8 = 0; i8 != x8.size(); ++i8) {
2950 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2951 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i3)))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2952 }
2953 }
2954 }
2955 }
2956 }
2957 }
2958 }
2959 }
2960 if (x6 == x7 && x1 == x8) {
2961 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x0, x2, x5, x4, x3);
2962 for (int i3 = 0; i3 != x3.size(); ++i3) {
2963 for (int i4 = 0; i4 != x4.size(); ++i4) {
2964 for (int i5 = 0; i5 != x5.size(); ++i5) {
2965 for (int i2 = 0; i2 != x2.size(); ++i2) {
2966 for (int i0 = 0; i0 != x0.size(); ++i0) {
2967 for (int i9 = 0; i9 != x9.size(); ++i9) {
2968 for (int i7 = 0; i7 != x7.size(); ++i7) {
2969 for (int i8 = 0; i8 != x8.size(); ++i8) {
2970 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i8+x1.size()*(i0)))))]
2971 += (1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
2972 }
2973 }
2974 }
2975 }
2976 }
2977 }
2978 }
2979 }
2980 }
2981 if (x6 == x7 && x4 == x5 && x2 == x3) {
2982 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x8, x1, x0);
2983 for (int i0 = 0; i0 != x0.size(); ++i0) {
2984 for (int i1 = 0; i1 != x1.size(); ++i1) {
2985 for (int i8 = 0; i8 != x8.size(); ++i8) {
2986 for (int i9 = 0; i9 != x9.size(); ++i9) {
2987 for (int i7 = 0; i7 != x7.size(); ++i7) {
2988 for (int i5 = 0; i5 != x5.size(); ++i5) {
2989 for (int i3 = 0; i3 != x3.size(); ++i3) {
2990 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
2991 += (-2.0) * i0data[i9+x9.size()*(i8+x8.size()*(i1+x1.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
2992 }
2993 }
2994 }
2995 }
2996 }
2997 }
2998 }
2999 }
3000 if (x6 == x8 && x4 == x5 && x2 == x3) {
3001 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x7, x1, x0);
3002 for (int i0 = 0; i0 != x0.size(); ++i0) {
3003 for (int i1 = 0; i1 != x1.size(); ++i1) {
3004 for (int i7 = 0; i7 != x7.size(); ++i7) {
3005 for (int i9 = 0; i9 != x9.size(); ++i9) {
3006 for (int i8 = 0; i8 != x8.size(); ++i8) {
3007 for (int i5 = 0; i5 != x5.size(); ++i5) {
3008 for (int i3 = 0; i3 != x3.size(); ++i3) {
3009 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3010 += (1.0) * i0data[i9+x9.size()*(i7+x7.size()*(i1+x1.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
3011 }
3012 }
3013 }
3014 }
3015 }
3016 }
3017 }
3018 }
3019 if (x6 == x8 && x4 == x7 && x2 == x3) {
3020 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x5, x1, x0);
3021 for (int i0 = 0; i0 != x0.size(); ++i0) {
3022 for (int i1 = 0; i1 != x1.size(); ++i1) {
3023 for (int i5 = 0; i5 != x5.size(); ++i5) {
3024 for (int i9 = 0; i9 != x9.size(); ++i9) {
3025 for (int i8 = 0; i8 != x8.size(); ++i8) {
3026 for (int i7 = 0; i7 != x7.size(); ++i7) {
3027 for (int i3 = 0; i3 != x3.size(); ++i3) {
3028 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3029 += (-2.0) * i0data[i9+x9.size()*(i5+x5.size()*(i1+x1.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
3030 }
3031 }
3032 }
3033 }
3034 }
3035 }
3036 }
3037 }
3038 if (x4 == x7 && x2 == x3) {
3039 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x6, x5, x1, x0);
3040 for (int i0 = 0; i0 != x0.size(); ++i0) {
3041 for (int i1 = 0; i1 != x1.size(); ++i1) {
3042 for (int i5 = 0; i5 != x5.size(); ++i5) {
3043 for (int i6 = 0; i6 != x6.size(); ++i6) {
3044 for (int i8 = 0; i8 != x8.size(); ++i8) {
3045 for (int i9 = 0; i9 != x9.size(); ++i9) {
3046 for (int i7 = 0; i7 != x7.size(); ++i7) {
3047 for (int i3 = 0; i3 != x3.size(); ++i3) {
3048 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3049 += (-2.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
3050 }
3051 }
3052 }
3053 }
3054 }
3055 }
3056 }
3057 }
3058 }
3059 if (x6 == x7 && x4 == x8 && x2 == x3) {
3060 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x5, x1, x0);
3061 for (int i0 = 0; i0 != x0.size(); ++i0) {
3062 for (int i1 = 0; i1 != x1.size(); ++i1) {
3063 for (int i5 = 0; i5 != x5.size(); ++i5) {
3064 for (int i9 = 0; i9 != x9.size(); ++i9) {
3065 for (int i7 = 0; i7 != x7.size(); ++i7) {
3066 for (int i8 = 0; i8 != x8.size(); ++i8) {
3067 for (int i3 = 0; i3 != x3.size(); ++i3) {
3068 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3069 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i1+x1.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
3070 }
3071 }
3072 }
3073 }
3074 }
3075 }
3076 }
3077 }
3078 if (x4 == x8 && x2 == x3) {
3079 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x7, x6, x5, x1, x0);
3080 for (int i0 = 0; i0 != x0.size(); ++i0) {
3081 for (int i1 = 0; i1 != x1.size(); ++i1) {
3082 for (int i5 = 0; i5 != x5.size(); ++i5) {
3083 for (int i6 = 0; i6 != x6.size(); ++i6) {
3084 for (int i7 = 0; i7 != x7.size(); ++i7) {
3085 for (int i9 = 0; i9 != x9.size(); ++i9) {
3086 for (int i8 = 0; i8 != x8.size(); ++i8) {
3087 for (int i3 = 0; i3 != x3.size(); ++i3) {
3088 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3089 += (1.0) * i0data[i9+x9.size()*(i7+x7.size()*(i6+x6.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
3090 }
3091 }
3092 }
3093 }
3094 }
3095 }
3096 }
3097 }
3098 }
3099 if (x6 == x7 && x2 == x3) {
3100 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x4, x5, x1, x0);
3101 for (int i0 = 0; i0 != x0.size(); ++i0) {
3102 for (int i1 = 0; i1 != x1.size(); ++i1) {
3103 for (int i5 = 0; i5 != x5.size(); ++i5) {
3104 for (int i4 = 0; i4 != x4.size(); ++i4) {
3105 for (int i8 = 0; i8 != x8.size(); ++i8) {
3106 for (int i9 = 0; i9 != x9.size(); ++i9) {
3107 for (int i7 = 0; i7 != x7.size(); ++i7) {
3108 for (int i3 = 0; i3 != x3.size(); ++i3) {
3109 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3110 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i4+x4.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3111 }
3112 }
3113 }
3114 }
3115 }
3116 }
3117 }
3118 }
3119 }
3120 if (x6 == x8 && x2 == x3) {
3121 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x5, x4, x7, x1, x0);
3122 for (int i0 = 0; i0 != x0.size(); ++i0) {
3123 for (int i1 = 0; i1 != x1.size(); ++i1) {
3124 for (int i7 = 0; i7 != x7.size(); ++i7) {
3125 for (int i4 = 0; i4 != x4.size(); ++i4) {
3126 for (int i5 = 0; i5 != x5.size(); ++i5) {
3127 for (int i9 = 0; i9 != x9.size(); ++i9) {
3128 for (int i8 = 0; i8 != x8.size(); ++i8) {
3129 for (int i3 = 0; i3 != x3.size(); ++i3) {
3130 odata[i9+x9.size()*(i8+x8.size()*(i3+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3131 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3132 }
3133 }
3134 }
3135 }
3136 }
3137 }
3138 }
3139 }
3140 }
3141 if (x6 == x8 && x4 == x7 && x2 == x5) {
3142 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x1, x0);
3143 for (int i0 = 0; i0 != x0.size(); ++i0) {
3144 for (int i1 = 0; i1 != x1.size(); ++i1) {
3145 for (int i3 = 0; i3 != x3.size(); ++i3) {
3146 for (int i9 = 0; i9 != x9.size(); ++i9) {
3147 for (int i8 = 0; i8 != x8.size(); ++i8) {
3148 for (int i7 = 0; i7 != x7.size(); ++i7) {
3149 for (int i5 = 0; i5 != x5.size(); ++i5) {
3150 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3151 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i1+x1.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
3152 }
3153 }
3154 }
3155 }
3156 }
3157 }
3158 }
3159 }
3160 if (x4 == x7 && x2 == x5) {
3161 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x6, x3, x1, x0);
3162 for (int i0 = 0; i0 != x0.size(); ++i0) {
3163 for (int i1 = 0; i1 != x1.size(); ++i1) {
3164 for (int i3 = 0; i3 != x3.size(); ++i3) {
3165 for (int i6 = 0; i6 != x6.size(); ++i6) {
3166 for (int i8 = 0; i8 != x8.size(); ++i8) {
3167 for (int i9 = 0; i9 != x9.size(); ++i9) {
3168 for (int i7 = 0; i7 != x7.size(); ++i7) {
3169 for (int i5 = 0; i5 != x5.size(); ++i5) {
3170 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3171 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
3172 }
3173 }
3174 }
3175 }
3176 }
3177 }
3178 }
3179 }
3180 }
3181 if (x6 == x7 && x4 == x8 && x2 == x5) {
3182 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x1, x0);
3183 for (int i0 = 0; i0 != x0.size(); ++i0) {
3184 for (int i1 = 0; i1 != x1.size(); ++i1) {
3185 for (int i3 = 0; i3 != x3.size(); ++i3) {
3186 for (int i9 = 0; i9 != x9.size(); ++i9) {
3187 for (int i7 = 0; i7 != x7.size(); ++i7) {
3188 for (int i8 = 0; i8 != x8.size(); ++i8) {
3189 for (int i5 = 0; i5 != x5.size(); ++i5) {
3190 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3191 += (-2.0) * i0data[i9+x9.size()*(i3+x3.size()*(i1+x1.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
3192 }
3193 }
3194 }
3195 }
3196 }
3197 }
3198 }
3199 }
3200 if (x4 == x8 && x2 == x5) {
3201 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x6, x7, x1, x0);
3202 for (int i0 = 0; i0 != x0.size(); ++i0) {
3203 for (int i1 = 0; i1 != x1.size(); ++i1) {
3204 for (int i7 = 0; i7 != x7.size(); ++i7) {
3205 for (int i6 = 0; i6 != x6.size(); ++i6) {
3206 for (int i3 = 0; i3 != x3.size(); ++i3) {
3207 for (int i9 = 0; i9 != x9.size(); ++i9) {
3208 for (int i8 = 0; i8 != x8.size(); ++i8) {
3209 for (int i5 = 0; i5 != x5.size(); ++i5) {
3210 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3211 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i6+x6.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
3212 }
3213 }
3214 }
3215 }
3216 }
3217 }
3218 }
3219 }
3220 }
3221 if (x6 == x7 && x2 == x5) {
3222 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x4, x3, x1, x0);
3223 for (int i0 = 0; i0 != x0.size(); ++i0) {
3224 for (int i1 = 0; i1 != x1.size(); ++i1) {
3225 for (int i3 = 0; i3 != x3.size(); ++i3) {
3226 for (int i4 = 0; i4 != x4.size(); ++i4) {
3227 for (int i8 = 0; i8 != x8.size(); ++i8) {
3228 for (int i9 = 0; i9 != x9.size(); ++i9) {
3229 for (int i7 = 0; i7 != x7.size(); ++i7) {
3230 for (int i5 = 0; i5 != x5.size(); ++i5) {
3231 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3232 += (-2.0) * i0data[i9+x9.size()*(i8+x8.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3233 }
3234 }
3235 }
3236 }
3237 }
3238 }
3239 }
3240 }
3241 }
3242 if (x6 == x8 && x2 == x5) {
3243 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x7, x4, x3, x1, x0);
3244 for (int i0 = 0; i0 != x0.size(); ++i0) {
3245 for (int i1 = 0; i1 != x1.size(); ++i1) {
3246 for (int i3 = 0; i3 != x3.size(); ++i3) {
3247 for (int i4 = 0; i4 != x4.size(); ++i4) {
3248 for (int i7 = 0; i7 != x7.size(); ++i7) {
3249 for (int i9 = 0; i9 != x9.size(); ++i9) {
3250 for (int i8 = 0; i8 != x8.size(); ++i8) {
3251 for (int i5 = 0; i5 != x5.size(); ++i5) {
3252 odata[i9+x9.size()*(i8+x8.size()*(i5+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3253 += (1.0) * i0data[i9+x9.size()*(i7+x7.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3254 }
3255 }
3256 }
3257 }
3258 }
3259 }
3260 }
3261 }
3262 }
3263 if (x6 == x8 && x4 == x5 && x2 == x7) {
3264 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x1, x0);
3265 for (int i0 = 0; i0 != x0.size(); ++i0) {
3266 for (int i1 = 0; i1 != x1.size(); ++i1) {
3267 for (int i3 = 0; i3 != x3.size(); ++i3) {
3268 for (int i9 = 0; i9 != x9.size(); ++i9) {
3269 for (int i8 = 0; i8 != x8.size(); ++i8) {
3270 for (int i5 = 0; i5 != x5.size(); ++i5) {
3271 for (int i7 = 0; i7 != x7.size(); ++i7) {
3272 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3273 += (-2.0) * i0data[i9+x9.size()*(i3+x3.size()*(i1+x1.size()*(i0)))] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
3274 }
3275 }
3276 }
3277 }
3278 }
3279 }
3280 }
3281 }
3282 if (x6 == x8 && x2 == x7) {
3283 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x5, x4, x3, x1, x0);
3284 for (int i0 = 0; i0 != x0.size(); ++i0) {
3285 for (int i1 = 0; i1 != x1.size(); ++i1) {
3286 for (int i3 = 0; i3 != x3.size(); ++i3) {
3287 for (int i4 = 0; i4 != x4.size(); ++i4) {
3288 for (int i5 = 0; i5 != x5.size(); ++i5) {
3289 for (int i9 = 0; i9 != x9.size(); ++i9) {
3290 for (int i8 = 0; i8 != x8.size(); ++i8) {
3291 for (int i7 = 0; i7 != x7.size(); ++i7) {
3292 odata[i9+x9.size()*(i8+x8.size()*(i7+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3293 += (-2.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3294 }
3295 }
3296 }
3297 }
3298 }
3299 }
3300 }
3301 }
3302 }
3303 if (x6 == x7 && x4 == x5 && x2 == x8) {
3304 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x3, x1, x0);
3305 for (int i0 = 0; i0 != x0.size(); ++i0) {
3306 for (int i1 = 0; i1 != x1.size(); ++i1) {
3307 for (int i3 = 0; i3 != x3.size(); ++i3) {
3308 for (int i9 = 0; i9 != x9.size(); ++i9) {
3309 for (int i7 = 0; i7 != x7.size(); ++i7) {
3310 for (int i5 = 0; i5 != x5.size(); ++i5) {
3311 for (int i8 = 0; i8 != x8.size(); ++i8) {
3312 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3313 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i1+x1.size()*(i0)))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
3314 }
3315 }
3316 }
3317 }
3318 }
3319 }
3320 }
3321 }
3322 if (x6 == x7 && x2 == x8) {
3323 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x5, x4, x3, x1, x0);
3324 for (int i0 = 0; i0 != x0.size(); ++i0) {
3325 for (int i1 = 0; i1 != x1.size(); ++i1) {
3326 for (int i3 = 0; i3 != x3.size(); ++i3) {
3327 for (int i4 = 0; i4 != x4.size(); ++i4) {
3328 for (int i5 = 0; i5 != x5.size(); ++i5) {
3329 for (int i9 = 0; i9 != x9.size(); ++i9) {
3330 for (int i7 = 0; i7 != x7.size(); ++i7) {
3331 for (int i8 = 0; i8 != x8.size(); ++i8) {
3332 odata[i9+x9.size()*(i8+x8.size()*(i8+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3333 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3334 }
3335 }
3336 }
3337 }
3338 }
3339 }
3340 }
3341 }
3342 }
3343 if (x6 == x7 && x4 == x5) {
3344 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x8, x2, x3, x1, x0);
3345 for (int i0 = 0; i0 != x0.size(); ++i0) {
3346 for (int i1 = 0; i1 != x1.size(); ++i1) {
3347 for (int i3 = 0; i3 != x3.size(); ++i3) {
3348 for (int i2 = 0; i2 != x2.size(); ++i2) {
3349 for (int i8 = 0; i8 != x8.size(); ++i8) {
3350 for (int i9 = 0; i9 != x9.size(); ++i9) {
3351 for (int i7 = 0; i7 != x7.size(); ++i7) {
3352 for (int i5 = 0; i5 != x5.size(); ++i5) {
3353 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3354 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
3355 }
3356 }
3357 }
3358 }
3359 }
3360 }
3361 }
3362 }
3363 }
3364 if (x6 == x8 && x4 == x5) {
3365 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x2, x7, x1, x0);
3366 for (int i0 = 0; i0 != x0.size(); ++i0) {
3367 for (int i1 = 0; i1 != x1.size(); ++i1) {
3368 for (int i7 = 0; i7 != x7.size(); ++i7) {
3369 for (int i2 = 0; i2 != x2.size(); ++i2) {
3370 for (int i3 = 0; i3 != x3.size(); ++i3) {
3371 for (int i9 = 0; i9 != x9.size(); ++i9) {
3372 for (int i8 = 0; i8 != x8.size(); ++i8) {
3373 for (int i5 = 0; i5 != x5.size(); ++i5) {
3374 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3375 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
3376 }
3377 }
3378 }
3379 }
3380 }
3381 }
3382 }
3383 }
3384 }
3385 if (x6 == x8 && x4 == x7) {
3386 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x5, x2, x3, x1, x0);
3387 for (int i0 = 0; i0 != x0.size(); ++i0) {
3388 for (int i1 = 0; i1 != x1.size(); ++i1) {
3389 for (int i3 = 0; i3 != x3.size(); ++i3) {
3390 for (int i2 = 0; i2 != x2.size(); ++i2) {
3391 for (int i5 = 0; i5 != x5.size(); ++i5) {
3392 for (int i9 = 0; i9 != x9.size(); ++i9) {
3393 for (int i8 = 0; i8 != x8.size(); ++i8) {
3394 for (int i7 = 0; i7 != x7.size(); ++i7) {
3395 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3396 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i2+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))] * fdata[i8+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
3397 }
3398 }
3399 }
3400 }
3401 }
3402 }
3403 }
3404 }
3405 }
3406 if (x4 == x7) {
3407 std::unique_ptr<double[]> i0data = in(3)->get_block(x9, x8, x6, x5, x2, x3, x1, x0);
3408 for (int i0 = 0; i0 != x0.size(); ++i0) {
3409 for (int i1 = 0; i1 != x1.size(); ++i1) {
3410 for (int i3 = 0; i3 != x3.size(); ++i3) {
3411 for (int i2 = 0; i2 != x2.size(); ++i2) {
3412 for (int i5 = 0; i5 != x5.size(); ++i5) {
3413 for (int i6 = 0; i6 != x6.size(); ++i6) {
3414 for (int i8 = 0; i8 != x8.size(); ++i8) {
3415 for (int i9 = 0; i9 != x9.size(); ++i9) {
3416 for (int i7 = 0; i7 != x7.size(); ++i7) {
3417 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3418 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
3419 }
3420 }
3421 }
3422 }
3423 }
3424 }
3425 }
3426 }
3427 }
3428 }
3429 if (x6 == x7 && x4 == x8) {
3430 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x3, x2, x5, x1, x0);
3431 for (int i0 = 0; i0 != x0.size(); ++i0) {
3432 for (int i1 = 0; i1 != x1.size(); ++i1) {
3433 for (int i5 = 0; i5 != x5.size(); ++i5) {
3434 for (int i2 = 0; i2 != x2.size(); ++i2) {
3435 for (int i3 = 0; i3 != x3.size(); ++i3) {
3436 for (int i9 = 0; i9 != x9.size(); ++i9) {
3437 for (int i7 = 0; i7 != x7.size(); ++i7) {
3438 for (int i8 = 0; i8 != x8.size(); ++i8) {
3439 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3440 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i2+x2.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
3441 }
3442 }
3443 }
3444 }
3445 }
3446 }
3447 }
3448 }
3449 }
3450 if (x4 == x8) {
3451 std::unique_ptr<double[]> i0data = in(3)->get_block(x9, x3, x2, x7, x6, x5, x1, x0);
3452 for (int i0 = 0; i0 != x0.size(); ++i0) {
3453 for (int i1 = 0; i1 != x1.size(); ++i1) {
3454 for (int i5 = 0; i5 != x5.size(); ++i5) {
3455 for (int i6 = 0; i6 != x6.size(); ++i6) {
3456 for (int i7 = 0; i7 != x7.size(); ++i7) {
3457 for (int i2 = 0; i2 != x2.size(); ++i2) {
3458 for (int i3 = 0; i3 != x3.size(); ++i3) {
3459 for (int i9 = 0; i9 != x9.size(); ++i9) {
3460 for (int i8 = 0; i8 != x8.size(); ++i8) {
3461 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3462 += (1.0) * i0data[i9+x9.size()*(i3+x3.size()*(i2+x2.size()*(i7+x7.size()*(i6+x6.size()*(i5+x5.size()*(i1+x1.size()*(i0)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i8+x4.size()*(i3)))];
3463 }
3464 }
3465 }
3466 }
3467 }
3468 }
3469 }
3470 }
3471 }
3472 }
3473 if (x6 == x7) {
3474 std::unique_ptr<double[]> i0data = in(3)->get_block(x9, x8, x2, x5, x4, x3, x1, x0);
3475 for (int i0 = 0; i0 != x0.size(); ++i0) {
3476 for (int i1 = 0; i1 != x1.size(); ++i1) {
3477 for (int i3 = 0; i3 != x3.size(); ++i3) {
3478 for (int i4 = 0; i4 != x4.size(); ++i4) {
3479 for (int i5 = 0; i5 != x5.size(); ++i5) {
3480 for (int i2 = 0; i2 != x2.size(); ++i2) {
3481 for (int i8 = 0; i8 != x8.size(); ++i8) {
3482 for (int i9 = 0; i9 != x9.size(); ++i9) {
3483 for (int i7 = 0; i7 != x7.size(); ++i7) {
3484 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3485 += (1.0) * i0data[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3486 }
3487 }
3488 }
3489 }
3490 }
3491 }
3492 }
3493 }
3494 }
3495 }
3496 if (x6 == x8) {
3497 std::unique_ptr<double[]> i0data = in(3)->get_block(x9, x5, x2, x7, x4, x3, x1, x0);
3498 for (int i0 = 0; i0 != x0.size(); ++i0) {
3499 for (int i1 = 0; i1 != x1.size(); ++i1) {
3500 for (int i3 = 0; i3 != x3.size(); ++i3) {
3501 for (int i4 = 0; i4 != x4.size(); ++i4) {
3502 for (int i7 = 0; i7 != x7.size(); ++i7) {
3503 for (int i2 = 0; i2 != x2.size(); ++i2) {
3504 for (int i5 = 0; i5 != x5.size(); ++i5) {
3505 for (int i9 = 0; i9 != x9.size(); ++i9) {
3506 for (int i8 = 0; i8 != x8.size(); ++i8) {
3507 odata[i9+x9.size()*(i8+x8.size()*(i2+x2.size()*(i7+x7.size()*(i1+x1.size()*(i0)))))]
3508 += (1.0) * i0data[i9+x9.size()*(i5+x5.size()*(i2+x2.size()*(i7+x7.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))))] * fdata[i8+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
3509 }
3510 }
3511 }
3512 }
3513 }
3514 }
3515 }
3516 }
3517 }
3518 }
3519 out()->add_block(odata, x9, x8, x2, x7, x1, x0);
3520 }
3521
compute()3522 void Task9::Task_local::compute() {
3523 const Index x0 = b(0);
3524 const Index x1 = b(1);
3525 // tensor label: Gamma9
3526 std::unique_ptr<double[]> odata(new double[out()->get_size(x0, x1)]);
3527 std::fill_n(odata.get(), out()->get_size(x0, x1), 0.0);
3528 {
3529 // rdm0 non-merged case
3530 if (x0 == x1) {
3531 std::unique_ptr<double[]> i0data = in(0)->get_block();
3532 for (int i1 = 0; i1 != x1.size(); ++i1) {
3533 odata[i1+x0.size()*(i1)] += 2.0 * i0data[0];
3534 }
3535 }
3536 }
3537 {
3538 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x1);
3539 sort_indices<0,1,1,1,-1,1>(i0data, odata, x0.size(), x1.size());
3540 }
3541 out()->add_block(odata, x0, x1);
3542 }
3543
compute()3544 void Task10::Task_local::compute() {
3545 const Index x3 = b(0);
3546 const Index x1 = b(1);
3547 const Index x0 = b(2);
3548 const Index x2 = b(3);
3549 // tensor label: Gamma13
3550 std::unique_ptr<double[]> odata(new double[out()->get_size(x3, x1, x0, x2)]);
3551 std::fill_n(odata.get(), out()->get_size(x3, x1, x0, x2), 0.0);
3552 {
3553 if (x0 == x1) {
3554 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x2);
3555 for (int i2 = 0; i2 != x2.size(); ++i2) {
3556 for (int i1 = 0; i1 != x1.size(); ++i1) {
3557 for (int i3 = 0; i3 != x3.size(); ++i3) {
3558 odata[i3+x3.size()*(i1+x1.size()*(i1+x0.size()*(i2)))]
3559 += (1.0) * i0data[i3+x3.size()*(i2)];
3560 }
3561 }
3562 }
3563 }
3564 }
3565 {
3566 if (x0 == x2) {
3567 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x1);
3568 for (int i2 = 0; i2 != x2.size(); ++i2) {
3569 for (int i1 = 0; i1 != x1.size(); ++i1) {
3570 for (int i3 = 0; i3 != x3.size(); ++i3) {
3571 odata[i3+x3.size()*(i1+x1.size()*(i2+x0.size()*(i2)))]
3572 += (-2.0) * i0data[i3+x3.size()*(i1)];
3573 }
3574 }
3575 }
3576 }
3577 }
3578 {
3579 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x1, x0, x2);
3580 sort_indices<0,1,2,3,1,1,1,1>(i0data, odata, x3.size(), x1.size(), x0.size(), x2.size());
3581 }
3582 out()->add_block(odata, x3, x1, x0, x2);
3583 }
3584
compute()3585 void Task11::Task_local::compute() {
3586 const Index x3 = b(0);
3587 const Index x2 = b(1);
3588 const Index x0 = b(2);
3589 const Index x1 = b(3);
3590 // tensor label: Gamma15
3591 std::unique_ptr<double[]> odata(new double[out()->get_size(x3, x2, x0, x1)]);
3592 std::fill_n(odata.get(), out()->get_size(x3, x2, x0, x1), 0.0);
3593 {
3594 if (x0 == x1) {
3595 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x2);
3596 for (int i1 = 0; i1 != x1.size(); ++i1) {
3597 for (int i2 = 0; i2 != x2.size(); ++i2) {
3598 for (int i3 = 0; i3 != x3.size(); ++i3) {
3599 odata[i3+x3.size()*(i2+x2.size()*(i1+x0.size()*(i1)))]
3600 += (2.0) * i0data[i3+x3.size()*(i2)];
3601 }
3602 }
3603 }
3604 }
3605 }
3606 {
3607 if (x0 == x2) {
3608 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x1);
3609 for (int i1 = 0; i1 != x1.size(); ++i1) {
3610 for (int i2 = 0; i2 != x2.size(); ++i2) {
3611 for (int i3 = 0; i3 != x3.size(); ++i3) {
3612 odata[i3+x3.size()*(i2+x2.size()*(i2+x0.size()*(i1)))]
3613 += (-1.0) * i0data[i3+x3.size()*(i1)];
3614 }
3615 }
3616 }
3617 }
3618 }
3619 {
3620 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x2, x0, x1);
3621 sort_indices<0,1,2,3,1,1,-1,1>(i0data, odata, x3.size(), x2.size(), x0.size(), x1.size());
3622 }
3623 out()->add_block(odata, x3, x2, x0, x1);
3624 }
3625
compute()3626 void Task12::Task_local::compute() {
3627 const Index x0 = b(0);
3628 const Index x3 = b(1);
3629 const Index x2 = b(2);
3630 const Index x1 = b(3);
3631 // tensor label: Gamma96
3632 std::unique_ptr<double[]> odata(new double[out()->get_size(x0, x3)]);
3633 std::fill_n(odata.get(), out()->get_size(x0, x3), 0.0);
3634 // associated with merged
3635 std::unique_ptr<double[]> fdata = in(3)->get_block(x2, x1);
3636 // rdm0 merged case
3637 if (x0 == x1 && x2 == x3) {
3638 std::unique_ptr<double[]> i0data = in(0)->get_block();
3639 for (int i1 = 0; i1 != x1.size(); ++i1) {
3640 for (int i3 = 0; i3 != x3.size(); ++i3) {
3641 odata[i1+x0.size()*(i3)] += -2.0 * i0data[0] * fdata[i3+x2.size()*(i1)];
3642 }
3643 }
3644 }
3645 if (x2 == x3) {
3646 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x1);
3647 for (int i1 = 0; i1 != x1.size(); ++i1) {
3648 for (int i0 = 0; i0 != x0.size(); ++i0) {
3649 for (int i3 = 0; i3 != x3.size(); ++i3) {
3650 odata[i0+x0.size()*(i3)]
3651 += (1.0) * i0data[i0+x0.size()*(i1)] * fdata[i3+x2.size()*(i1)];
3652 }
3653 }
3654 }
3655 }
3656 out()->add_block(odata, x0, x3);
3657 }
3658
compute()3659 void Task13::Task_local::compute() {
3660 const Index x0 = b(0);
3661 const Index x5 = b(1);
3662 const Index x4 = b(2);
3663 const Index x3 = b(3);
3664 const Index x2 = b(4);
3665 const Index x1 = b(5);
3666 // tensor label: Gamma98
3667 std::unique_ptr<double[]> odata(new double[out()->get_size(x0, x5)]);
3668 std::fill_n(odata.get(), out()->get_size(x0, x5), 0.0);
3669 // associated with merged
3670 std::unique_ptr<double[]> fdata = in(4)->get_block(x4, x3, x2, x1);
3671 if (x2 == x5 && x0 == x1) {
3672 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x3);
3673 for (int i3 = 0; i3 != x3.size(); ++i3) {
3674 for (int i4 = 0; i4 != x4.size(); ++i4) {
3675 for (int i5 = 0; i5 != x5.size(); ++i5) {
3676 for (int i1 = 0; i1 != x1.size(); ++i1) {
3677 odata[i1+x0.size()*(i5)]
3678 += (-2.0) * i0data[i4+x4.size()*(i3)] * fdata[i4+x4.size()*(i3+x3.size()*(i5+x2.size()*(i1)))];
3679 }
3680 }
3681 }
3682 }
3683 }
3684 if (x2 == x5 && x0 == x3) {
3685 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x1);
3686 for (int i1 = 0; i1 != x1.size(); ++i1) {
3687 for (int i4 = 0; i4 != x4.size(); ++i4) {
3688 for (int i5 = 0; i5 != x5.size(); ++i5) {
3689 for (int i3 = 0; i3 != x3.size(); ++i3) {
3690 odata[i3+x0.size()*(i5)]
3691 += (1.0) * i0data[i4+x4.size()*(i1)] * fdata[i4+x4.size()*(i3+x3.size()*(i5+x2.size()*(i1)))];
3692 }
3693 }
3694 }
3695 }
3696 }
3697 if (x2 == x5) {
3698 std::unique_ptr<double[]> i0data = in(2)->get_block(x4, x3, x0, x1);
3699 for (int i1 = 0; i1 != x1.size(); ++i1) {
3700 for (int i0 = 0; i0 != x0.size(); ++i0) {
3701 for (int i3 = 0; i3 != x3.size(); ++i3) {
3702 for (int i4 = 0; i4 != x4.size(); ++i4) {
3703 for (int i5 = 0; i5 != x5.size(); ++i5) {
3704 odata[i0+x0.size()*(i5)]
3705 += (1.0) * i0data[i4+x4.size()*(i3+x3.size()*(i0+x0.size()*(i1)))] * fdata[i4+x4.size()*(i3+x3.size()*(i5+x2.size()*(i1)))];
3706 }
3707 }
3708 }
3709 }
3710 }
3711 }
3712 // rdm0 merged case
3713 if (x2 == x3 && x4 == x5 && x0 == x1) {
3714 std::unique_ptr<double[]> i0data = in(0)->get_block();
3715 for (int i3 = 0; i3 != x3.size(); ++i3) {
3716 for (int i5 = 0; i5 != x5.size(); ++i5) {
3717 for (int i1 = 0; i1 != x1.size(); ++i1) {
3718 odata[i1+x0.size()*(i5)] += -2.0 * i0data[0] * fdata[i5+x4.size()*(i3+x3.size()*(i3+x2.size()*(i1)))];
3719 }
3720 }
3721 }
3722 }
3723 if (x0 == x1 && x4 == x5) {
3724 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x3);
3725 for (int i3 = 0; i3 != x3.size(); ++i3) {
3726 for (int i2 = 0; i2 != x2.size(); ++i2) {
3727 for (int i1 = 0; i1 != x1.size(); ++i1) {
3728 for (int i5 = 0; i5 != x5.size(); ++i5) {
3729 odata[i1+x0.size()*(i5)]
3730 += (1.0) * i0data[i2+x2.size()*(i3)] * fdata[i5+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1)))];
3731 }
3732 }
3733 }
3734 }
3735 }
3736 if (x4 == x5 && x0 == x3) {
3737 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x1);
3738 for (int i1 = 0; i1 != x1.size(); ++i1) {
3739 for (int i2 = 0; i2 != x2.size(); ++i2) {
3740 for (int i5 = 0; i5 != x5.size(); ++i5) {
3741 for (int i3 = 0; i3 != x3.size(); ++i3) {
3742 odata[i3+x0.size()*(i5)]
3743 += (-2.0) * i0data[i2+x2.size()*(i1)] * fdata[i5+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1)))];
3744 }
3745 }
3746 }
3747 }
3748 }
3749 if (x2 == x3 && x4 == x5) {
3750 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x1);
3751 for (int i1 = 0; i1 != x1.size(); ++i1) {
3752 for (int i0 = 0; i0 != x0.size(); ++i0) {
3753 for (int i3 = 0; i3 != x3.size(); ++i3) {
3754 for (int i5 = 0; i5 != x5.size(); ++i5) {
3755 odata[i0+x0.size()*(i5)]
3756 += (1.0) * i0data[i0+x0.size()*(i1)] * fdata[i5+x4.size()*(i3+x3.size()*(i3+x2.size()*(i1)))];
3757 }
3758 }
3759 }
3760 }
3761 }
3762 if (x4 == x5) {
3763 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x3, x2, x1);
3764 for (int i1 = 0; i1 != x1.size(); ++i1) {
3765 for (int i2 = 0; i2 != x2.size(); ++i2) {
3766 for (int i3 = 0; i3 != x3.size(); ++i3) {
3767 for (int i0 = 0; i0 != x0.size(); ++i0) {
3768 for (int i5 = 0; i5 != x5.size(); ++i5) {
3769 odata[i0+x0.size()*(i5)]
3770 += (1.0) * i0data[i0+x0.size()*(i3+x3.size()*(i2+x2.size()*(i1)))] * fdata[i5+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1)))];
3771 }
3772 }
3773 }
3774 }
3775 }
3776 }
3777 out()->add_block(odata, x0, x5);
3778 }
3779
compute()3780 void Task14::Task_local::compute() {
3781 const Index x3 = b(0);
3782 const Index x0 = b(1);
3783 const Index x1 = b(2);
3784 const Index x2 = b(3);
3785 // tensor label: Gamma24
3786 std::unique_ptr<double[]> odata(new double[out()->get_size(x3, x0, x1, x2)]);
3787 std::fill_n(odata.get(), out()->get_size(x3, x0, x1, x2), 0.0);
3788 {
3789 if (x1 == x2) {
3790 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0);
3791 for (int i2 = 0; i2 != x2.size(); ++i2) {
3792 for (int i0 = 0; i0 != x0.size(); ++i0) {
3793 for (int i3 = 0; i3 != x3.size(); ++i3) {
3794 odata[i3+x3.size()*(i0+x0.size()*(i2+x1.size()*(i2)))]
3795 += (2.0) * i0data[i3+x3.size()*(i0)];
3796 }
3797 }
3798 }
3799 }
3800 }
3801 {
3802 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x0, x1, x2);
3803 sort_indices<0,1,2,3,1,1,-1,1>(i0data, odata, x3.size(), x0.size(), x1.size(), x2.size());
3804 }
3805 out()->add_block(odata, x3, x0, x1, x2);
3806 }
3807
compute()3808 void Task15::Task_local::compute() {
3809 const Index x3 = b(0);
3810 const Index x2 = b(1);
3811 const Index x1 = b(2);
3812 const Index x0 = b(3);
3813 // tensor label: Gamma25
3814 std::unique_ptr<double[]> odata(new double[out()->get_size(x3, x2, x1, x0)]);
3815 std::fill_n(odata.get(), out()->get_size(x3, x2, x1, x0), 0.0);
3816 {
3817 if (x1 == x2) {
3818 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0);
3819 for (int i0 = 0; i0 != x0.size(); ++i0) {
3820 for (int i2 = 0; i2 != x2.size(); ++i2) {
3821 for (int i3 = 0; i3 != x3.size(); ++i3) {
3822 odata[i3+x3.size()*(i2+x2.size()*(i2+x1.size()*(i0)))]
3823 += (1.0) * i0data[i3+x3.size()*(i0)];
3824 }
3825 }
3826 }
3827 }
3828 }
3829 {
3830 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x2, x1, x0);
3831 sort_indices<0,1,2,3,1,1,1,1>(i0data, odata, x3.size(), x2.size(), x1.size(), x0.size());
3832 }
3833 out()->add_block(odata, x3, x2, x1, x0);
3834 }
3835
compute()3836 void Task16::Task_local::compute() {
3837 const Index x1 = b(0);
3838 const Index x3 = b(1);
3839 const Index x2 = b(2);
3840 const Index x0 = b(3);
3841 // tensor label: Gamma26
3842 std::unique_ptr<double[]> odata(new double[out()->get_size(x1, x3, x2, x0)]);
3843 std::fill_n(odata.get(), out()->get_size(x1, x3, x2, x0), 0.0);
3844 {
3845 if (x1 == x3) {
3846 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x0);
3847 for (int i0 = 0; i0 != x0.size(); ++i0) {
3848 for (int i2 = 0; i2 != x2.size(); ++i2) {
3849 for (int i3 = 0; i3 != x3.size(); ++i3) {
3850 odata[i3+x1.size()*(i3+x3.size()*(i2+x2.size()*(i0)))]
3851 += (-2.0) * i0data[i2+x2.size()*(i0)];
3852 }
3853 }
3854 }
3855 }
3856 }
3857 {
3858 if (x2 == x3) {
3859 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x0);
3860 for (int i0 = 0; i0 != x0.size(); ++i0) {
3861 for (int i3 = 0; i3 != x3.size(); ++i3) {
3862 for (int i1 = 0; i1 != x1.size(); ++i1) {
3863 odata[i1+x1.size()*(i3+x3.size()*(i3+x2.size()*(i0)))]
3864 += (1.0) * i0data[i1+x1.size()*(i0)];
3865 }
3866 }
3867 }
3868 }
3869 }
3870 {
3871 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x3, x2, x0);
3872 sort_indices<0,1,2,3,1,1,1,1>(i0data, odata, x1.size(), x3.size(), x2.size(), x0.size());
3873 }
3874 out()->add_block(odata, x1, x3, x2, x0);
3875 }
3876
compute()3877 void Task17::Task_local::compute() {
3878 const Index x5 = b(0);
3879 const Index x0 = b(1);
3880 const Index x4 = b(2);
3881 const Index x3 = b(3);
3882 const Index x1 = b(4);
3883 const Index x2 = b(5);
3884 // tensor label: Gamma28
3885 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x0, x4, x3, x1, x2)]);
3886 std::fill_n(odata.get(), out()->get_size(x5, x0, x4, x3, x1, x2), 0.0);
3887 {
3888 if (x1 == x2) {
3889 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x4, x3);
3890 for (int i2 = 0; i2 != x2.size(); ++i2) {
3891 for (int i3 = 0; i3 != x3.size(); ++i3) {
3892 for (int i4 = 0; i4 != x4.size(); ++i4) {
3893 for (int i0 = 0; i0 != x0.size(); ++i0) {
3894 for (int i5 = 0; i5 != x5.size(); ++i5) {
3895 odata[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i2+x1.size()*(i2)))))]
3896 += (2.0) * i0data[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i3)))];
3897 }
3898 }
3899 }
3900 }
3901 }
3902 }
3903 }
3904 {
3905 if (x1 == x3) {
3906 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x4, x2);
3907 for (int i2 = 0; i2 != x2.size(); ++i2) {
3908 for (int i3 = 0; i3 != x3.size(); ++i3) {
3909 for (int i4 = 0; i4 != x4.size(); ++i4) {
3910 for (int i0 = 0; i0 != x0.size(); ++i0) {
3911 for (int i5 = 0; i5 != x5.size(); ++i5) {
3912 odata[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i3+x1.size()*(i2)))))]
3913 += (-1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i2)))];
3914 }
3915 }
3916 }
3917 }
3918 }
3919 }
3920 }
3921 {
3922 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x4, x3, x1, x2);
3923 sort_indices<0,1,2,3,4,5,1,1,-1,1>(i0data, odata, x5.size(), x0.size(), x4.size(), x3.size(), x1.size(), x2.size());
3924 }
3925 out()->add_block(odata, x5, x0, x4, x3, x1, x2);
3926 }
3927
compute()3928 void Task18::Task_local::compute() {
3929 const Index x1 = b(0);
3930 const Index x0 = b(1);
3931 // tensor label: Gamma29
3932 std::unique_ptr<double[]> odata(new double[out()->get_size(x1, x0)]);
3933 std::fill_n(odata.get(), out()->get_size(x1, x0), 0.0);
3934 {
3935 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x0);
3936 sort_indices<0,1,1,1,1,1>(i0data, odata, x1.size(), x0.size());
3937 }
3938 out()->add_block(odata, x1, x0);
3939 }
3940
compute()3941 void Task19::Task_local::compute() {
3942 const Index x5 = b(0);
3943 const Index x4 = b(1);
3944 const Index x1 = b(2);
3945 const Index x3 = b(3);
3946 const Index x2 = b(4);
3947 const Index x0 = b(5);
3948 // tensor label: Gamma33
3949 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x4, x1, x3, x2, x0)]);
3950 std::fill_n(odata.get(), out()->get_size(x5, x4, x1, x3, x2, x0), 0.0);
3951 {
3952 if (x2 == x4 && x1 == x3) {
3953 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
3954 for (int i0 = 0; i0 != x0.size(); ++i0) {
3955 for (int i3 = 0; i3 != x3.size(); ++i3) {
3956 for (int i4 = 0; i4 != x4.size(); ++i4) {
3957 for (int i5 = 0; i5 != x5.size(); ++i5) {
3958 odata[i5+x5.size()*(i4+x4.size()*(i3+x1.size()*(i3+x3.size()*(i4+x2.size()*(i0)))))]
3959 += (-2.0) * i0data[i5+x5.size()*(i0)];
3960 }
3961 }
3962 }
3963 }
3964 }
3965 }
3966 {
3967 if (x1 == x3) {
3968 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x2, x0);
3969 for (int i0 = 0; i0 != x0.size(); ++i0) {
3970 for (int i2 = 0; i2 != x2.size(); ++i2) {
3971 for (int i3 = 0; i3 != x3.size(); ++i3) {
3972 for (int i4 = 0; i4 != x4.size(); ++i4) {
3973 for (int i5 = 0; i5 != x5.size(); ++i5) {
3974 odata[i5+x5.size()*(i4+x4.size()*(i3+x1.size()*(i3+x3.size()*(i2+x2.size()*(i0)))))]
3975 += (-2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i2+x2.size()*(i0)))];
3976 }
3977 }
3978 }
3979 }
3980 }
3981 }
3982 }
3983 {
3984 if (x2 == x3 && x1 == x4) {
3985 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
3986 for (int i0 = 0; i0 != x0.size(); ++i0) {
3987 for (int i3 = 0; i3 != x3.size(); ++i3) {
3988 for (int i4 = 0; i4 != x4.size(); ++i4) {
3989 for (int i5 = 0; i5 != x5.size(); ++i5) {
3990 odata[i5+x5.size()*(i4+x4.size()*(i4+x1.size()*(i3+x3.size()*(i3+x2.size()*(i0)))))]
3991 += (1.0) * i0data[i5+x5.size()*(i0)];
3992 }
3993 }
3994 }
3995 }
3996 }
3997 }
3998 {
3999 if (x1 == x4) {
4000 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x3, x2, x0);
4001 for (int i0 = 0; i0 != x0.size(); ++i0) {
4002 for (int i2 = 0; i2 != x2.size(); ++i2) {
4003 for (int i3 = 0; i3 != x3.size(); ++i3) {
4004 for (int i4 = 0; i4 != x4.size(); ++i4) {
4005 for (int i5 = 0; i5 != x5.size(); ++i5) {
4006 odata[i5+x5.size()*(i4+x4.size()*(i4+x1.size()*(i3+x3.size()*(i2+x2.size()*(i0)))))]
4007 += (1.0) * i0data[i5+x5.size()*(i3+x3.size()*(i2+x2.size()*(i0)))];
4008 }
4009 }
4010 }
4011 }
4012 }
4013 }
4014 }
4015 {
4016 if (x2 == x3) {
4017 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x1, x0);
4018 for (int i0 = 0; i0 != x0.size(); ++i0) {
4019 for (int i3 = 0; i3 != x3.size(); ++i3) {
4020 for (int i1 = 0; i1 != x1.size(); ++i1) {
4021 for (int i4 = 0; i4 != x4.size(); ++i4) {
4022 for (int i5 = 0; i5 != x5.size(); ++i5) {
4023 odata[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i3+x3.size()*(i3+x2.size()*(i0)))))]
4024 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i0)))];
4025 }
4026 }
4027 }
4028 }
4029 }
4030 }
4031 }
4032 {
4033 if (x2 == x4) {
4034 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x1, x3);
4035 for (int i0 = 0; i0 != x0.size(); ++i0) {
4036 for (int i3 = 0; i3 != x3.size(); ++i3) {
4037 for (int i1 = 0; i1 != x1.size(); ++i1) {
4038 for (int i4 = 0; i4 != x4.size(); ++i4) {
4039 for (int i5 = 0; i5 != x5.size(); ++i5) {
4040 odata[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i3+x3.size()*(i4+x2.size()*(i0)))))]
4041 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i1+x1.size()*(i3)))];
4042 }
4043 }
4044 }
4045 }
4046 }
4047 }
4048 }
4049 {
4050 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x1, x3, x2, x0);
4051 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x5.size(), x4.size(), x1.size(), x3.size(), x2.size(), x0.size());
4052 }
4053 out()->add_block(odata, x5, x4, x1, x3, x2, x0);
4054 }
4055
compute()4056 void Task20::Task_local::compute() {
4057 const Index x5 = b(0);
4058 const Index x0 = b(1);
4059 const Index x1 = b(2);
4060 const Index x4 = b(3);
4061 const Index x3 = b(4);
4062 const Index x2 = b(5);
4063 // tensor label: Gamma112
4064 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x0, x1, x4)]);
4065 std::fill_n(odata.get(), out()->get_size(x5, x0, x1, x4), 0.0);
4066 // associated with merged
4067 std::unique_ptr<double[]> fdata = in(3)->get_block(x3, x2);
4068 if (x5 == x2 && x1 == x4) {
4069 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0);
4070 for (int i0 = 0; i0 != x0.size(); ++i0) {
4071 for (int i3 = 0; i3 != x3.size(); ++i3) {
4072 for (int i2 = 0; i2 != x2.size(); ++i2) {
4073 for (int i4 = 0; i4 != x4.size(); ++i4) {
4074 odata[i2+x5.size()*(i0+x0.size()*(i4+x1.size()*(i4)))]
4075 += (2.0) * i0data[i3+x3.size()*(i0)] * fdata[i3+x3.size()*(i2)];
4076 }
4077 }
4078 }
4079 }
4080 }
4081 if (x5 == x2) {
4082 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x0, x1, x4);
4083 for (int i4 = 0; i4 != x4.size(); ++i4) {
4084 for (int i1 = 0; i1 != x1.size(); ++i1) {
4085 for (int i0 = 0; i0 != x0.size(); ++i0) {
4086 for (int i3 = 0; i3 != x3.size(); ++i3) {
4087 for (int i2 = 0; i2 != x2.size(); ++i2) {
4088 odata[i2+x5.size()*(i0+x0.size()*(i1+x1.size()*(i4)))]
4089 += (-1.0) * i0data[i3+x3.size()*(i0+x0.size()*(i1+x1.size()*(i4)))] * fdata[i3+x3.size()*(i2)];
4090 }
4091 }
4092 }
4093 }
4094 }
4095 }
4096 if (x3 == x4 && x1 == x2) {
4097 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
4098 for (int i0 = 0; i0 != x0.size(); ++i0) {
4099 for (int i5 = 0; i5 != x5.size(); ++i5) {
4100 for (int i4 = 0; i4 != x4.size(); ++i4) {
4101 for (int i2 = 0; i2 != x2.size(); ++i2) {
4102 odata[i5+x5.size()*(i0+x0.size()*(i2+x1.size()*(i4)))]
4103 += (-2.0) * i0data[i5+x5.size()*(i0)] * fdata[i4+x3.size()*(i2)];
4104 }
4105 }
4106 }
4107 }
4108 }
4109 if (x3 == x4) {
4110 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x1, x2);
4111 for (int i2 = 0; i2 != x2.size(); ++i2) {
4112 for (int i1 = 0; i1 != x1.size(); ++i1) {
4113 for (int i0 = 0; i0 != x0.size(); ++i0) {
4114 for (int i5 = 0; i5 != x5.size(); ++i5) {
4115 for (int i4 = 0; i4 != x4.size(); ++i4) {
4116 odata[i5+x5.size()*(i0+x0.size()*(i1+x1.size()*(i4)))]
4117 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i1+x1.size()*(i2)))] * fdata[i4+x3.size()*(i2)];
4118 }
4119 }
4120 }
4121 }
4122 }
4123 }
4124 out()->add_block(odata, x5, x0, x1, x4);
4125 }
4126
compute()4127 void Task21::Task_local::compute() {
4128 const Index x5 = b(0);
4129 const Index x4 = b(1);
4130 const Index x1 = b(2);
4131 const Index x0 = b(3);
4132 const Index x3 = b(4);
4133 const Index x2 = b(5);
4134 // tensor label: Gamma113
4135 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x4, x1, x0)]);
4136 std::fill_n(odata.get(), out()->get_size(x5, x4, x1, x0), 0.0);
4137 // associated with merged
4138 std::unique_ptr<double[]> fdata = in(3)->get_block(x3, x2);
4139 if (x5 == x2 && x1 == x4) {
4140 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0);
4141 for (int i0 = 0; i0 != x0.size(); ++i0) {
4142 for (int i3 = 0; i3 != x3.size(); ++i3) {
4143 for (int i2 = 0; i2 != x2.size(); ++i2) {
4144 for (int i4 = 0; i4 != x4.size(); ++i4) {
4145 odata[i2+x5.size()*(i4+x4.size()*(i4+x1.size()*(i0)))]
4146 += (1.0) * i0data[i3+x3.size()*(i0)] * fdata[i3+x3.size()*(i2)];
4147 }
4148 }
4149 }
4150 }
4151 }
4152 if (x5 == x2) {
4153 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4, x1, x0);
4154 for (int i0 = 0; i0 != x0.size(); ++i0) {
4155 for (int i1 = 0; i1 != x1.size(); ++i1) {
4156 for (int i4 = 0; i4 != x4.size(); ++i4) {
4157 for (int i3 = 0; i3 != x3.size(); ++i3) {
4158 for (int i2 = 0; i2 != x2.size(); ++i2) {
4159 odata[i2+x5.size()*(i4+x4.size()*(i1+x1.size()*(i0)))]
4160 += (1.0) * i0data[i3+x3.size()*(i4+x4.size()*(i1+x1.size()*(i0)))] * fdata[i3+x3.size()*(i2)];
4161 }
4162 }
4163 }
4164 }
4165 }
4166 }
4167 if (x3 == x4 && x1 == x2) {
4168 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
4169 for (int i0 = 0; i0 != x0.size(); ++i0) {
4170 for (int i5 = 0; i5 != x5.size(); ++i5) {
4171 for (int i4 = 0; i4 != x4.size(); ++i4) {
4172 for (int i2 = 0; i2 != x2.size(); ++i2) {
4173 odata[i5+x5.size()*(i4+x4.size()*(i2+x1.size()*(i0)))]
4174 += (-1.0) * i0data[i5+x5.size()*(i0)] * fdata[i4+x3.size()*(i2)];
4175 }
4176 }
4177 }
4178 }
4179 }
4180 if (x3 == x4) {
4181 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2, x1, x0);
4182 for (int i0 = 0; i0 != x0.size(); ++i0) {
4183 for (int i1 = 0; i1 != x1.size(); ++i1) {
4184 for (int i2 = 0; i2 != x2.size(); ++i2) {
4185 for (int i5 = 0; i5 != x5.size(); ++i5) {
4186 for (int i4 = 0; i4 != x4.size(); ++i4) {
4187 odata[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i0)))]
4188 += (-1.0) * i0data[i5+x5.size()*(i2+x2.size()*(i1+x1.size()*(i0)))] * fdata[i4+x3.size()*(i2)];
4189 }
4190 }
4191 }
4192 }
4193 }
4194 }
4195 out()->add_block(odata, x5, x4, x1, x0);
4196 }
4197
compute()4198 void Task22::Task_local::compute() {
4199 const Index x7 = b(0);
4200 const Index x0 = b(1);
4201 const Index x1 = b(2);
4202 const Index x6 = b(3);
4203 const Index x5 = b(4);
4204 const Index x4 = b(5);
4205 const Index x3 = b(6);
4206 const Index x2 = b(7);
4207 // tensor label: Gamma116
4208 std::unique_ptr<double[]> odata(new double[out()->get_size(x7, x0, x1, x6)]);
4209 std::fill_n(odata.get(), out()->get_size(x7, x0, x1, x6), 0.0);
4210 // associated with merged
4211 std::unique_ptr<double[]> fdata = in(4)->get_block(x5, x4, x3, x2);
4212 if (x7 == x4 && x1 == x6) {
4213 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x3, x2);
4214 for (int i2 = 0; i2 != x2.size(); ++i2) {
4215 for (int i3 = 0; i3 != x3.size(); ++i3) {
4216 for (int i0 = 0; i0 != x0.size(); ++i0) {
4217 for (int i5 = 0; i5 != x5.size(); ++i5) {
4218 for (int i4 = 0; i4 != x4.size(); ++i4) {
4219 for (int i6 = 0; i6 != x6.size(); ++i6) {
4220 odata[i4+x7.size()*(i0+x0.size()*(i6+x1.size()*(i6)))]
4221 += (2.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4222 }
4223 }
4224 }
4225 }
4226 }
4227 }
4228 }
4229 if (x7 == x4 && x1 == x2) {
4230 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x3, x6);
4231 for (int i6 = 0; i6 != x6.size(); ++i6) {
4232 for (int i3 = 0; i3 != x3.size(); ++i3) {
4233 for (int i0 = 0; i0 != x0.size(); ++i0) {
4234 for (int i5 = 0; i5 != x5.size(); ++i5) {
4235 for (int i4 = 0; i4 != x4.size(); ++i4) {
4236 for (int i2 = 0; i2 != x2.size(); ++i2) {
4237 odata[i4+x7.size()*(i0+x0.size()*(i2+x1.size()*(i6)))]
4238 += (-1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i6)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4239 }
4240 }
4241 }
4242 }
4243 }
4244 }
4245 }
4246 if (x7 == x2 && x1 == x4) {
4247 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x6, x3, x0);
4248 for (int i0 = 0; i0 != x0.size(); ++i0) {
4249 for (int i3 = 0; i3 != x3.size(); ++i3) {
4250 for (int i6 = 0; i6 != x6.size(); ++i6) {
4251 for (int i5 = 0; i5 != x5.size(); ++i5) {
4252 for (int i2 = 0; i2 != x2.size(); ++i2) {
4253 for (int i4 = 0; i4 != x4.size(); ++i4) {
4254 odata[i2+x7.size()*(i0+x0.size()*(i4+x1.size()*(i6)))]
4255 += (-1.0) * i0data[i5+x5.size()*(i6+x6.size()*(i3+x3.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4256 }
4257 }
4258 }
4259 }
4260 }
4261 }
4262 }
4263 if (x7 == x4) {
4264 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x0, x3, x2, x1, x6);
4265 for (int i6 = 0; i6 != x6.size(); ++i6) {
4266 for (int i1 = 0; i1 != x1.size(); ++i1) {
4267 for (int i2 = 0; i2 != x2.size(); ++i2) {
4268 for (int i3 = 0; i3 != x3.size(); ++i3) {
4269 for (int i0 = 0; i0 != x0.size(); ++i0) {
4270 for (int i5 = 0; i5 != x5.size(); ++i5) {
4271 for (int i4 = 0; i4 != x4.size(); ++i4) {
4272 odata[i4+x7.size()*(i0+x0.size()*(i1+x1.size()*(i6)))]
4273 += (-1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i2+x2.size()*(i1+x1.size()*(i6)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4274 }
4275 }
4276 }
4277 }
4278 }
4279 }
4280 }
4281 }
4282 if (x3 == x4 && x7 == x2 && x1 == x6) {
4283 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
4284 for (int i0 = 0; i0 != x0.size(); ++i0) {
4285 for (int i5 = 0; i5 != x5.size(); ++i5) {
4286 for (int i4 = 0; i4 != x4.size(); ++i4) {
4287 for (int i2 = 0; i2 != x2.size(); ++i2) {
4288 for (int i6 = 0; i6 != x6.size(); ++i6) {
4289 odata[i2+x7.size()*(i0+x0.size()*(i6+x1.size()*(i6)))]
4290 += (2.0) * i0data[i5+x5.size()*(i0)] * fdata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4291 }
4292 }
4293 }
4294 }
4295 }
4296 }
4297 if (x7 == x2 && x1 == x6) {
4298 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x3, x0);
4299 for (int i0 = 0; i0 != x0.size(); ++i0) {
4300 for (int i3 = 0; i3 != x3.size(); ++i3) {
4301 for (int i4 = 0; i4 != x4.size(); ++i4) {
4302 for (int i5 = 0; i5 != x5.size(); ++i5) {
4303 for (int i2 = 0; i2 != x2.size(); ++i2) {
4304 for (int i6 = 0; i6 != x6.size(); ++i6) {
4305 odata[i2+x7.size()*(i0+x0.size()*(i6+x1.size()*(i6)))]
4306 += (2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4307 }
4308 }
4309 }
4310 }
4311 }
4312 }
4313 }
4314 if (x3 == x4 && x7 == x2) {
4315 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x1, x6);
4316 for (int i6 = 0; i6 != x6.size(); ++i6) {
4317 for (int i1 = 0; i1 != x1.size(); ++i1) {
4318 for (int i0 = 0; i0 != x0.size(); ++i0) {
4319 for (int i5 = 0; i5 != x5.size(); ++i5) {
4320 for (int i4 = 0; i4 != x4.size(); ++i4) {
4321 for (int i2 = 0; i2 != x2.size(); ++i2) {
4322 odata[i2+x7.size()*(i0+x0.size()*(i1+x1.size()*(i6)))]
4323 += (-1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i1+x1.size()*(i6)))] * fdata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4324 }
4325 }
4326 }
4327 }
4328 }
4329 }
4330 }
4331 if (x7 == x2) {
4332 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x3, x0, x1, x6);
4333 for (int i6 = 0; i6 != x6.size(); ++i6) {
4334 for (int i1 = 0; i1 != x1.size(); ++i1) {
4335 for (int i0 = 0; i0 != x0.size(); ++i0) {
4336 for (int i3 = 0; i3 != x3.size(); ++i3) {
4337 for (int i4 = 0; i4 != x4.size(); ++i4) {
4338 for (int i5 = 0; i5 != x5.size(); ++i5) {
4339 for (int i2 = 0; i2 != x2.size(); ++i2) {
4340 odata[i2+x7.size()*(i0+x0.size()*(i1+x1.size()*(i6)))]
4341 += (-1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i0+x0.size()*(i1+x1.size()*(i6)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4342 }
4343 }
4344 }
4345 }
4346 }
4347 }
4348 }
4349 }
4350 if (x3 == x6 && x1 == x2) {
4351 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x5, x4);
4352 for (int i4 = 0; i4 != x4.size(); ++i4) {
4353 for (int i5 = 0; i5 != x5.size(); ++i5) {
4354 for (int i0 = 0; i0 != x0.size(); ++i0) {
4355 for (int i7 = 0; i7 != x7.size(); ++i7) {
4356 for (int i6 = 0; i6 != x6.size(); ++i6) {
4357 for (int i2 = 0; i2 != x2.size(); ++i2) {
4358 odata[i7+x7.size()*(i0+x0.size()*(i2+x1.size()*(i6)))]
4359 += (-2.0) * i0data[i7+x7.size()*(i0+x0.size()*(i5+x5.size()*(i4)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
4360 }
4361 }
4362 }
4363 }
4364 }
4365 }
4366 }
4367 if (x3 == x6 && x1 == x4) {
4368 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x5, x2);
4369 for (int i2 = 0; i2 != x2.size(); ++i2) {
4370 for (int i5 = 0; i5 != x5.size(); ++i5) {
4371 for (int i0 = 0; i0 != x0.size(); ++i0) {
4372 for (int i7 = 0; i7 != x7.size(); ++i7) {
4373 for (int i6 = 0; i6 != x6.size(); ++i6) {
4374 for (int i4 = 0; i4 != x4.size(); ++i4) {
4375 odata[i7+x7.size()*(i0+x0.size()*(i4+x1.size()*(i6)))]
4376 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i5+x5.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
4377 }
4378 }
4379 }
4380 }
4381 }
4382 }
4383 }
4384 if (x3 == x6) {
4385 std::unique_ptr<double[]> i0data = in(2)->get_block(x7, x0, x5, x4, x1, x2);
4386 for (int i2 = 0; i2 != x2.size(); ++i2) {
4387 for (int i1 = 0; i1 != x1.size(); ++i1) {
4388 for (int i4 = 0; i4 != x4.size(); ++i4) {
4389 for (int i5 = 0; i5 != x5.size(); ++i5) {
4390 for (int i0 = 0; i0 != x0.size(); ++i0) {
4391 for (int i7 = 0; i7 != x7.size(); ++i7) {
4392 for (int i6 = 0; i6 != x6.size(); ++i6) {
4393 odata[i7+x7.size()*(i0+x0.size()*(i1+x1.size()*(i6)))]
4394 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i2)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
4395 }
4396 }
4397 }
4398 }
4399 }
4400 }
4401 }
4402 }
4403 if (x1 == x2 && x3 == x4 && x5 == x6) {
4404 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0);
4405 for (int i0 = 0; i0 != x0.size(); ++i0) {
4406 for (int i7 = 0; i7 != x7.size(); ++i7) {
4407 for (int i2 = 0; i2 != x2.size(); ++i2) {
4408 for (int i4 = 0; i4 != x4.size(); ++i4) {
4409 for (int i6 = 0; i6 != x6.size(); ++i6) {
4410 odata[i7+x7.size()*(i0+x0.size()*(i2+x1.size()*(i6)))]
4411 += (-2.0) * i0data[i7+x7.size()*(i0)] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4412 }
4413 }
4414 }
4415 }
4416 }
4417 }
4418 if (x1 == x2 && x5 == x6) {
4419 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x3, x4);
4420 for (int i4 = 0; i4 != x4.size(); ++i4) {
4421 for (int i3 = 0; i3 != x3.size(); ++i3) {
4422 for (int i0 = 0; i0 != x0.size(); ++i0) {
4423 for (int i7 = 0; i7 != x7.size(); ++i7) {
4424 for (int i2 = 0; i2 != x2.size(); ++i2) {
4425 for (int i6 = 0; i6 != x6.size(); ++i6) {
4426 odata[i7+x7.size()*(i0+x0.size()*(i2+x1.size()*(i6)))]
4427 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i3+x3.size()*(i4)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4428 }
4429 }
4430 }
4431 }
4432 }
4433 }
4434 }
4435 if (x5 == x6 && x1 == x4) {
4436 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x3, x2);
4437 for (int i2 = 0; i2 != x2.size(); ++i2) {
4438 for (int i3 = 0; i3 != x3.size(); ++i3) {
4439 for (int i0 = 0; i0 != x0.size(); ++i0) {
4440 for (int i7 = 0; i7 != x7.size(); ++i7) {
4441 for (int i6 = 0; i6 != x6.size(); ++i6) {
4442 for (int i4 = 0; i4 != x4.size(); ++i4) {
4443 odata[i7+x7.size()*(i0+x0.size()*(i4+x1.size()*(i6)))]
4444 += (-2.0) * i0data[i7+x7.size()*(i0+x0.size()*(i3+x3.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4445 }
4446 }
4447 }
4448 }
4449 }
4450 }
4451 }
4452 if (x3 == x4 && x5 == x6) {
4453 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x1, x2);
4454 for (int i2 = 0; i2 != x2.size(); ++i2) {
4455 for (int i1 = 0; i1 != x1.size(); ++i1) {
4456 for (int i0 = 0; i0 != x0.size(); ++i0) {
4457 for (int i7 = 0; i7 != x7.size(); ++i7) {
4458 for (int i4 = 0; i4 != x4.size(); ++i4) {
4459 for (int i6 = 0; i6 != x6.size(); ++i6) {
4460 odata[i7+x7.size()*(i0+x0.size()*(i1+x1.size()*(i6)))]
4461 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i1+x1.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4462 }
4463 }
4464 }
4465 }
4466 }
4467 }
4468 }
4469 if (x5 == x6) {
4470 std::unique_ptr<double[]> i0data = in(2)->get_block(x7, x0, x1, x4, x3, x2);
4471 for (int i2 = 0; i2 != x2.size(); ++i2) {
4472 for (int i3 = 0; i3 != x3.size(); ++i3) {
4473 for (int i4 = 0; i4 != x4.size(); ++i4) {
4474 for (int i1 = 0; i1 != x1.size(); ++i1) {
4475 for (int i0 = 0; i0 != x0.size(); ++i0) {
4476 for (int i7 = 0; i7 != x7.size(); ++i7) {
4477 for (int i6 = 0; i6 != x6.size(); ++i6) {
4478 odata[i7+x7.size()*(i0+x0.size()*(i1+x1.size()*(i6)))]
4479 += (1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i1+x1.size()*(i4+x4.size()*(i3+x3.size()*(i2)))))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4480 }
4481 }
4482 }
4483 }
4484 }
4485 }
4486 }
4487 }
4488 out()->add_block(odata, x7, x0, x1, x6);
4489 }
4490
compute()4491 void Task23::Task_local::compute() {
4492 const Index x7 = b(0);
4493 const Index x6 = b(1);
4494 const Index x1 = b(2);
4495 const Index x0 = b(3);
4496 const Index x5 = b(4);
4497 const Index x4 = b(5);
4498 const Index x3 = b(6);
4499 const Index x2 = b(7);
4500 // tensor label: Gamma117
4501 std::unique_ptr<double[]> odata(new double[out()->get_size(x7, x6, x1, x0)]);
4502 std::fill_n(odata.get(), out()->get_size(x7, x6, x1, x0), 0.0);
4503 // associated with merged
4504 std::unique_ptr<double[]> fdata = in(4)->get_block(x5, x4, x3, x2);
4505 if (x7 == x4 && x1 == x6) {
4506 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x3, x2);
4507 for (int i2 = 0; i2 != x2.size(); ++i2) {
4508 for (int i3 = 0; i3 != x3.size(); ++i3) {
4509 for (int i0 = 0; i0 != x0.size(); ++i0) {
4510 for (int i5 = 0; i5 != x5.size(); ++i5) {
4511 for (int i4 = 0; i4 != x4.size(); ++i4) {
4512 for (int i6 = 0; i6 != x6.size(); ++i6) {
4513 odata[i4+x7.size()*(i6+x6.size()*(i6+x1.size()*(i0)))]
4514 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4515 }
4516 }
4517 }
4518 }
4519 }
4520 }
4521 }
4522 if (x7 == x4 && x1 == x2) {
4523 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x6, x3, x0);
4524 for (int i0 = 0; i0 != x0.size(); ++i0) {
4525 for (int i3 = 0; i3 != x3.size(); ++i3) {
4526 for (int i6 = 0; i6 != x6.size(); ++i6) {
4527 for (int i5 = 0; i5 != x5.size(); ++i5) {
4528 for (int i4 = 0; i4 != x4.size(); ++i4) {
4529 for (int i2 = 0; i2 != x2.size(); ++i2) {
4530 odata[i4+x7.size()*(i6+x6.size()*(i2+x1.size()*(i0)))]
4531 += (1.0) * i0data[i5+x5.size()*(i6+x6.size()*(i3+x3.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4532 }
4533 }
4534 }
4535 }
4536 }
4537 }
4538 }
4539 if (x7 == x2 && x1 == x4) {
4540 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x3, x6);
4541 for (int i6 = 0; i6 != x6.size(); ++i6) {
4542 for (int i3 = 0; i3 != x3.size(); ++i3) {
4543 for (int i0 = 0; i0 != x0.size(); ++i0) {
4544 for (int i5 = 0; i5 != x5.size(); ++i5) {
4545 for (int i2 = 0; i2 != x2.size(); ++i2) {
4546 for (int i4 = 0; i4 != x4.size(); ++i4) {
4547 odata[i2+x7.size()*(i6+x6.size()*(i4+x1.size()*(i0)))]
4548 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i6)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4549 }
4550 }
4551 }
4552 }
4553 }
4554 }
4555 }
4556 if (x7 == x4) {
4557 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x6, x3, x2, x1, x0);
4558 for (int i0 = 0; i0 != x0.size(); ++i0) {
4559 for (int i1 = 0; i1 != x1.size(); ++i1) {
4560 for (int i2 = 0; i2 != x2.size(); ++i2) {
4561 for (int i3 = 0; i3 != x3.size(); ++i3) {
4562 for (int i6 = 0; i6 != x6.size(); ++i6) {
4563 for (int i5 = 0; i5 != x5.size(); ++i5) {
4564 for (int i4 = 0; i4 != x4.size(); ++i4) {
4565 odata[i4+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))]
4566 += (1.0) * i0data[i5+x5.size()*(i6+x6.size()*(i3+x3.size()*(i2+x2.size()*(i1+x1.size()*(i0)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4567 }
4568 }
4569 }
4570 }
4571 }
4572 }
4573 }
4574 }
4575 if (x3 == x4 && x7 == x2 && x1 == x6) {
4576 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0);
4577 for (int i0 = 0; i0 != x0.size(); ++i0) {
4578 for (int i5 = 0; i5 != x5.size(); ++i5) {
4579 for (int i4 = 0; i4 != x4.size(); ++i4) {
4580 for (int i2 = 0; i2 != x2.size(); ++i2) {
4581 for (int i6 = 0; i6 != x6.size(); ++i6) {
4582 odata[i2+x7.size()*(i6+x6.size()*(i6+x1.size()*(i0)))]
4583 += (1.0) * i0data[i5+x5.size()*(i0)] * fdata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4584 }
4585 }
4586 }
4587 }
4588 }
4589 }
4590 if (x7 == x2 && x1 == x6) {
4591 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x3, x0);
4592 for (int i0 = 0; i0 != x0.size(); ++i0) {
4593 for (int i3 = 0; i3 != x3.size(); ++i3) {
4594 for (int i4 = 0; i4 != x4.size(); ++i4) {
4595 for (int i5 = 0; i5 != x5.size(); ++i5) {
4596 for (int i2 = 0; i2 != x2.size(); ++i2) {
4597 for (int i6 = 0; i6 != x6.size(); ++i6) {
4598 odata[i2+x7.size()*(i6+x6.size()*(i6+x1.size()*(i0)))]
4599 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4600 }
4601 }
4602 }
4603 }
4604 }
4605 }
4606 }
4607 if (x3 == x4 && x7 == x2) {
4608 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x6, x1, x0);
4609 for (int i0 = 0; i0 != x0.size(); ++i0) {
4610 for (int i1 = 0; i1 != x1.size(); ++i1) {
4611 for (int i6 = 0; i6 != x6.size(); ++i6) {
4612 for (int i5 = 0; i5 != x5.size(); ++i5) {
4613 for (int i4 = 0; i4 != x4.size(); ++i4) {
4614 for (int i2 = 0; i2 != x2.size(); ++i2) {
4615 odata[i2+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))]
4616 += (1.0) * i0data[i5+x5.size()*(i6+x6.size()*(i1+x1.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4617 }
4618 }
4619 }
4620 }
4621 }
4622 }
4623 }
4624 if (x7 == x2) {
4625 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x3, x6, x1, x0);
4626 for (int i0 = 0; i0 != x0.size(); ++i0) {
4627 for (int i1 = 0; i1 != x1.size(); ++i1) {
4628 for (int i6 = 0; i6 != x6.size(); ++i6) {
4629 for (int i3 = 0; i3 != x3.size(); ++i3) {
4630 for (int i4 = 0; i4 != x4.size(); ++i4) {
4631 for (int i5 = 0; i5 != x5.size(); ++i5) {
4632 for (int i2 = 0; i2 != x2.size(); ++i2) {
4633 odata[i2+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))]
4634 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i6+x6.size()*(i1+x1.size()*(i0)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4635 }
4636 }
4637 }
4638 }
4639 }
4640 }
4641 }
4642 }
4643 if (x3 == x6 && x1 == x2) {
4644 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x5, x4);
4645 for (int i4 = 0; i4 != x4.size(); ++i4) {
4646 for (int i5 = 0; i5 != x5.size(); ++i5) {
4647 for (int i0 = 0; i0 != x0.size(); ++i0) {
4648 for (int i7 = 0; i7 != x7.size(); ++i7) {
4649 for (int i6 = 0; i6 != x6.size(); ++i6) {
4650 for (int i2 = 0; i2 != x2.size(); ++i2) {
4651 odata[i7+x7.size()*(i6+x6.size()*(i2+x1.size()*(i0)))]
4652 += (-1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i5+x5.size()*(i4)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
4653 }
4654 }
4655 }
4656 }
4657 }
4658 }
4659 }
4660 if (x3 == x6 && x1 == x4) {
4661 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x2, x5, x0);
4662 for (int i0 = 0; i0 != x0.size(); ++i0) {
4663 for (int i5 = 0; i5 != x5.size(); ++i5) {
4664 for (int i2 = 0; i2 != x2.size(); ++i2) {
4665 for (int i7 = 0; i7 != x7.size(); ++i7) {
4666 for (int i6 = 0; i6 != x6.size(); ++i6) {
4667 for (int i4 = 0; i4 != x4.size(); ++i4) {
4668 odata[i7+x7.size()*(i6+x6.size()*(i4+x1.size()*(i0)))]
4669 += (-1.0) * i0data[i7+x7.size()*(i2+x2.size()*(i5+x5.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
4670 }
4671 }
4672 }
4673 }
4674 }
4675 }
4676 }
4677 if (x3 == x6) {
4678 std::unique_ptr<double[]> i0data = in(2)->get_block(x7, x2, x5, x4, x1, x0);
4679 for (int i0 = 0; i0 != x0.size(); ++i0) {
4680 for (int i1 = 0; i1 != x1.size(); ++i1) {
4681 for (int i4 = 0; i4 != x4.size(); ++i4) {
4682 for (int i5 = 0; i5 != x5.size(); ++i5) {
4683 for (int i2 = 0; i2 != x2.size(); ++i2) {
4684 for (int i7 = 0; i7 != x7.size(); ++i7) {
4685 for (int i6 = 0; i6 != x6.size(); ++i6) {
4686 odata[i7+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))]
4687 += (-1.0) * i0data[i7+x7.size()*(i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i0)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
4688 }
4689 }
4690 }
4691 }
4692 }
4693 }
4694 }
4695 }
4696 if (x5 == x6 && x3 == x4 && x1 == x2) {
4697 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0);
4698 for (int i0 = 0; i0 != x0.size(); ++i0) {
4699 for (int i7 = 0; i7 != x7.size(); ++i7) {
4700 for (int i6 = 0; i6 != x6.size(); ++i6) {
4701 for (int i4 = 0; i4 != x4.size(); ++i4) {
4702 for (int i2 = 0; i2 != x2.size(); ++i2) {
4703 odata[i7+x7.size()*(i6+x6.size()*(i2+x1.size()*(i0)))]
4704 += (-1.0) * i0data[i7+x7.size()*(i0)] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4705 }
4706 }
4707 }
4708 }
4709 }
4710 }
4711 if (x1 == x2 && x5 == x6) {
4712 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x4, x3, x0);
4713 for (int i0 = 0; i0 != x0.size(); ++i0) {
4714 for (int i3 = 0; i3 != x3.size(); ++i3) {
4715 for (int i4 = 0; i4 != x4.size(); ++i4) {
4716 for (int i7 = 0; i7 != x7.size(); ++i7) {
4717 for (int i2 = 0; i2 != x2.size(); ++i2) {
4718 for (int i6 = 0; i6 != x6.size(); ++i6) {
4719 odata[i7+x7.size()*(i6+x6.size()*(i2+x1.size()*(i0)))]
4720 += (-1.0) * i0data[i7+x7.size()*(i4+x4.size()*(i3+x3.size()*(i0)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4721 }
4722 }
4723 }
4724 }
4725 }
4726 }
4727 }
4728 if (x1 == x4 && x5 == x6) {
4729 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x3, x2);
4730 for (int i2 = 0; i2 != x2.size(); ++i2) {
4731 for (int i3 = 0; i3 != x3.size(); ++i3) {
4732 for (int i0 = 0; i0 != x0.size(); ++i0) {
4733 for (int i7 = 0; i7 != x7.size(); ++i7) {
4734 for (int i4 = 0; i4 != x4.size(); ++i4) {
4735 for (int i6 = 0; i6 != x6.size(); ++i6) {
4736 odata[i7+x7.size()*(i6+x6.size()*(i4+x1.size()*(i0)))]
4737 += (-1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i3+x3.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4738 }
4739 }
4740 }
4741 }
4742 }
4743 }
4744 }
4745 if (x5 == x6 && x3 == x4) {
4746 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x2, x1, x0);
4747 for (int i0 = 0; i0 != x0.size(); ++i0) {
4748 for (int i1 = 0; i1 != x1.size(); ++i1) {
4749 for (int i2 = 0; i2 != x2.size(); ++i2) {
4750 for (int i7 = 0; i7 != x7.size(); ++i7) {
4751 for (int i6 = 0; i6 != x6.size(); ++i6) {
4752 for (int i4 = 0; i4 != x4.size(); ++i4) {
4753 odata[i7+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))]
4754 += (-1.0) * i0data[i7+x7.size()*(i2+x2.size()*(i1+x1.size()*(i0)))] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
4755 }
4756 }
4757 }
4758 }
4759 }
4760 }
4761 }
4762 if (x5 == x6) {
4763 std::unique_ptr<double[]> i0data = in(2)->get_block(x7, x4, x3, x2, x1, x0);
4764 for (int i0 = 0; i0 != x0.size(); ++i0) {
4765 for (int i1 = 0; i1 != x1.size(); ++i1) {
4766 for (int i2 = 0; i2 != x2.size(); ++i2) {
4767 for (int i3 = 0; i3 != x3.size(); ++i3) {
4768 for (int i4 = 0; i4 != x4.size(); ++i4) {
4769 for (int i7 = 0; i7 != x7.size(); ++i7) {
4770 for (int i6 = 0; i6 != x6.size(); ++i6) {
4771 odata[i7+x7.size()*(i6+x6.size()*(i1+x1.size()*(i0)))]
4772 += (-1.0) * i0data[i7+x7.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1+x1.size()*(i0)))))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
4773 }
4774 }
4775 }
4776 }
4777 }
4778 }
4779 }
4780 }
4781 out()->add_block(odata, x7, x6, x1, x0);
4782 }
4783
compute()4784 void Task24::Task_local::compute() {
4785 const Index x5 = b(0);
4786 const Index x2 = b(1);
4787 const Index x4 = b(2);
4788 const Index x3 = b(3);
4789 const Index x1 = b(4);
4790 const Index x0 = b(5);
4791 // tensor label: Gamma40
4792 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x2, x4, x3, x1, x0)]);
4793 std::fill_n(odata.get(), out()->get_size(x5, x2, x4, x3, x1, x0), 0.0);
4794 {
4795 if (x1 == x2) {
4796 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x4, x3);
4797 for (int i0 = 0; i0 != x0.size(); ++i0) {
4798 for (int i3 = 0; i3 != x3.size(); ++i3) {
4799 for (int i4 = 0; i4 != x4.size(); ++i4) {
4800 for (int i2 = 0; i2 != x2.size(); ++i2) {
4801 for (int i5 = 0; i5 != x5.size(); ++i5) {
4802 odata[i5+x5.size()*(i2+x2.size()*(i4+x4.size()*(i3+x3.size()*(i2+x1.size()*(i0)))))]
4803 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i3)))];
4804 }
4805 }
4806 }
4807 }
4808 }
4809 }
4810 }
4811 {
4812 if (x1 == x3) {
4813 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x2, x4, x0);
4814 for (int i0 = 0; i0 != x0.size(); ++i0) {
4815 for (int i3 = 0; i3 != x3.size(); ++i3) {
4816 for (int i4 = 0; i4 != x4.size(); ++i4) {
4817 for (int i2 = 0; i2 != x2.size(); ++i2) {
4818 for (int i5 = 0; i5 != x5.size(); ++i5) {
4819 odata[i5+x5.size()*(i2+x2.size()*(i4+x4.size()*(i3+x3.size()*(i3+x1.size()*(i0)))))]
4820 += (1.0) * i0data[i5+x5.size()*(i2+x2.size()*(i4+x4.size()*(i0)))];
4821 }
4822 }
4823 }
4824 }
4825 }
4826 }
4827 }
4828 {
4829 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2, x4, x3, x1, x0);
4830 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x5.size(), x2.size(), x4.size(), x3.size(), x1.size(), x0.size());
4831 }
4832 out()->add_block(odata, x5, x2, x4, x3, x1, x0);
4833 }
4834
compute()4835 void Task25::Task_local::compute() {
4836 const Index x5 = b(0);
4837 const Index x0 = b(1);
4838 const Index x3 = b(2);
4839 const Index x4 = b(3);
4840 const Index x2 = b(4);
4841 const Index x1 = b(5);
4842 // tensor label: Gamma48
4843 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x0, x3, x4, x2, x1)]);
4844 std::fill_n(odata.get(), out()->get_size(x5, x0, x3, x4, x2, x1), 0.0);
4845 {
4846 if (x2 == x4) {
4847 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x3, x1);
4848 for (int i1 = 0; i1 != x1.size(); ++i1) {
4849 for (int i4 = 0; i4 != x4.size(); ++i4) {
4850 for (int i3 = 0; i3 != x3.size(); ++i3) {
4851 for (int i0 = 0; i0 != x0.size(); ++i0) {
4852 for (int i5 = 0; i5 != x5.size(); ++i5) {
4853 odata[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i4+x4.size()*(i4+x2.size()*(i1)))))]
4854 += (-1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i1)))];
4855 }
4856 }
4857 }
4858 }
4859 }
4860 }
4861 }
4862 {
4863 if (x3 == x4) {
4864 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x2, x1);
4865 for (int i1 = 0; i1 != x1.size(); ++i1) {
4866 for (int i2 = 0; i2 != x2.size(); ++i2) {
4867 for (int i4 = 0; i4 != x4.size(); ++i4) {
4868 for (int i0 = 0; i0 != x0.size(); ++i0) {
4869 for (int i5 = 0; i5 != x5.size(); ++i5) {
4870 odata[i5+x5.size()*(i0+x0.size()*(i4+x3.size()*(i4+x4.size()*(i2+x2.size()*(i1)))))]
4871 += (2.0) * i0data[i5+x5.size()*(i0+x0.size()*(i2+x2.size()*(i1)))];
4872 }
4873 }
4874 }
4875 }
4876 }
4877 }
4878 }
4879 {
4880 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x3, x4, x2, x1);
4881 sort_indices<0,1,2,3,4,5,1,1,-1,1>(i0data, odata, x5.size(), x0.size(), x3.size(), x4.size(), x2.size(), x1.size());
4882 }
4883 out()->add_block(odata, x5, x0, x3, x4, x2, x1);
4884 }
4885
compute()4886 void Task26::Task_local::compute() {
4887 const Index x5 = b(0);
4888 const Index x4 = b(1);
4889 const Index x3 = b(2);
4890 const Index x0 = b(3);
4891 const Index x2 = b(4);
4892 const Index x1 = b(5);
4893 // tensor label: Gamma49
4894 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x4, x3, x0, x2, x1)]);
4895 std::fill_n(odata.get(), out()->get_size(x5, x4, x3, x0, x2, x1), 0.0);
4896 {
4897 if (x2 == x4) {
4898 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x1, x3, x0);
4899 for (int i1 = 0; i1 != x1.size(); ++i1) {
4900 for (int i0 = 0; i0 != x0.size(); ++i0) {
4901 for (int i3 = 0; i3 != x3.size(); ++i3) {
4902 for (int i4 = 0; i4 != x4.size(); ++i4) {
4903 for (int i5 = 0; i5 != x5.size(); ++i5) {
4904 odata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i0+x0.size()*(i4+x2.size()*(i1)))))]
4905 += (1.0) * i0data[i5+x5.size()*(i1+x1.size()*(i3+x3.size()*(i0)))];
4906 }
4907 }
4908 }
4909 }
4910 }
4911 }
4912 }
4913 {
4914 if (x3 == x4) {
4915 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x2, x1);
4916 for (int i1 = 0; i1 != x1.size(); ++i1) {
4917 for (int i2 = 0; i2 != x2.size(); ++i2) {
4918 for (int i0 = 0; i0 != x0.size(); ++i0) {
4919 for (int i4 = 0; i4 != x4.size(); ++i4) {
4920 for (int i5 = 0; i5 != x5.size(); ++i5) {
4921 odata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i0+x0.size()*(i2+x2.size()*(i1)))))]
4922 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i2+x2.size()*(i1)))];
4923 }
4924 }
4925 }
4926 }
4927 }
4928 }
4929 }
4930 {
4931 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x3, x0, x2, x1);
4932 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x5.size(), x4.size(), x3.size(), x0.size(), x2.size(), x1.size());
4933 }
4934 out()->add_block(odata, x5, x4, x3, x0, x2, x1);
4935 }
4936
compute()4937 void Task27::Task_local::compute() {
4938 const Index x3 = b(0);
4939 const Index x0 = b(1);
4940 const Index x2 = b(2);
4941 const Index x1 = b(3);
4942 // tensor label: Gamma50
4943 std::unique_ptr<double[]> odata(new double[out()->get_size(x3, x0, x2, x1)]);
4944 std::fill_n(odata.get(), out()->get_size(x3, x0, x2, x1), 0.0);
4945 {
4946 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0, x2, x1);
4947 sort_indices<0,1,2,3,1,1,1,1>(i0data, odata, x3.size(), x0.size(), x2.size(), x1.size());
4948 }
4949 out()->add_block(odata, x3, x0, x2, x1);
4950 }
4951
compute()4952 void Task28::Task_local::compute() {
4953 const Index x5 = b(0);
4954 const Index x0 = b(1);
4955 const Index x4 = b(2);
4956 const Index x3 = b(3);
4957 const Index x2 = b(4);
4958 const Index x1 = b(5);
4959 // tensor label: Gamma52
4960 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x0, x4, x3, x2, x1)]);
4961 std::fill_n(odata.get(), out()->get_size(x5, x0, x4, x3, x2, x1), 0.0);
4962 {
4963 if (x2 == x3) {
4964 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x4, x1);
4965 for (int i1 = 0; i1 != x1.size(); ++i1) {
4966 for (int i3 = 0; i3 != x3.size(); ++i3) {
4967 for (int i4 = 0; i4 != x4.size(); ++i4) {
4968 for (int i0 = 0; i0 != x0.size(); ++i0) {
4969 for (int i5 = 0; i5 != x5.size(); ++i5) {
4970 odata[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i3+x2.size()*(i1)))))]
4971 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i4+x4.size()*(i1)))];
4972 }
4973 }
4974 }
4975 }
4976 }
4977 }
4978 }
4979 {
4980 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x4, x3, x2, x1);
4981 sort_indices<0,1,2,3,4,5,1,1,1,1>(i0data, odata, x5.size(), x0.size(), x4.size(), x3.size(), x2.size(), x1.size());
4982 }
4983 out()->add_block(odata, x5, x0, x4, x3, x2, x1);
4984 }
4985
compute()4986 void Task29::Task_local::compute() {
4987 const Index x7 = b(0);
4988 const Index x0 = b(1);
4989 const Index x6 = b(2);
4990 const Index x5 = b(3);
4991 const Index x2 = b(4);
4992 const Index x1 = b(5);
4993 const Index x4 = b(6);
4994 const Index x3 = b(7);
4995 // tensor label: Gamma100
4996 std::unique_ptr<double[]> odata(new double[out()->get_size(x7, x0, x6, x5, x2, x1)]);
4997 std::fill_n(odata.get(), out()->get_size(x7, x0, x6, x5, x2, x1), 0.0);
4998 // associated with merged
4999 std::unique_ptr<double[]> fdata = in(3)->get_block(x4, x3);
5000 if (x6 == x3 && x2 == x5) {
5001 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x1, x7, x0);
5002 for (int i0 = 0; i0 != x0.size(); ++i0) {
5003 for (int i7 = 0; i7 != x7.size(); ++i7) {
5004 for (int i1 = 0; i1 != x1.size(); ++i1) {
5005 for (int i4 = 0; i4 != x4.size(); ++i4) {
5006 for (int i3 = 0; i3 != x3.size(); ++i3) {
5007 for (int i5 = 0; i5 != x5.size(); ++i5) {
5008 odata[i7+x7.size()*(i0+x0.size()*(i3+x6.size()*(i5+x5.size()*(i5+x2.size()*(i1)))))]
5009 += (1.0) * i0data[i4+x4.size()*(i1+x1.size()*(i7+x7.size()*(i0)))] * fdata[i4+x4.size()*(i3)];
5010 }
5011 }
5012 }
5013 }
5014 }
5015 }
5016 }
5017 if (x6 == x3) {
5018 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x5, x7, x0, x2, x1);
5019 for (int i1 = 0; i1 != x1.size(); ++i1) {
5020 for (int i2 = 0; i2 != x2.size(); ++i2) {
5021 for (int i0 = 0; i0 != x0.size(); ++i0) {
5022 for (int i7 = 0; i7 != x7.size(); ++i7) {
5023 for (int i5 = 0; i5 != x5.size(); ++i5) {
5024 for (int i4 = 0; i4 != x4.size(); ++i4) {
5025 for (int i3 = 0; i3 != x3.size(); ++i3) {
5026 odata[i7+x7.size()*(i0+x0.size()*(i3+x6.size()*(i5+x5.size()*(i2+x2.size()*(i1)))))]
5027 += (1.0) * i0data[i4+x4.size()*(i5+x5.size()*(i7+x7.size()*(i0+x0.size()*(i2+x2.size()*(i1)))))] * fdata[i4+x4.size()*(i3)];
5028 }
5029 }
5030 }
5031 }
5032 }
5033 }
5034 }
5035 }
5036 if (x7 == x3 && x2 == x5) {
5037 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x0, x6, x1);
5038 for (int i1 = 0; i1 != x1.size(); ++i1) {
5039 for (int i6 = 0; i6 != x6.size(); ++i6) {
5040 for (int i0 = 0; i0 != x0.size(); ++i0) {
5041 for (int i4 = 0; i4 != x4.size(); ++i4) {
5042 for (int i3 = 0; i3 != x3.size(); ++i3) {
5043 for (int i5 = 0; i5 != x5.size(); ++i5) {
5044 odata[i3+x7.size()*(i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i5+x2.size()*(i1)))))]
5045 += (1.0) * i0data[i4+x4.size()*(i0+x0.size()*(i6+x6.size()*(i1)))] * fdata[i4+x4.size()*(i3)];
5046 }
5047 }
5048 }
5049 }
5050 }
5051 }
5052 }
5053 if (x7 == x3) {
5054 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x0, x6, x5, x2, x1);
5055 for (int i1 = 0; i1 != x1.size(); ++i1) {
5056 for (int i2 = 0; i2 != x2.size(); ++i2) {
5057 for (int i5 = 0; i5 != x5.size(); ++i5) {
5058 for (int i6 = 0; i6 != x6.size(); ++i6) {
5059 for (int i0 = 0; i0 != x0.size(); ++i0) {
5060 for (int i4 = 0; i4 != x4.size(); ++i4) {
5061 for (int i3 = 0; i3 != x3.size(); ++i3) {
5062 odata[i3+x7.size()*(i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i1)))))]
5063 += (1.0) * i0data[i4+x4.size()*(i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i1)))))] * fdata[i4+x4.size()*(i3)];
5064 }
5065 }
5066 }
5067 }
5068 }
5069 }
5070 }
5071 }
5072 if (x4 == x5 && x2 == x3) {
5073 std::unique_ptr<double[]> i0data = in(0)->get_block(x7, x0, x6, x1);
5074 for (int i1 = 0; i1 != x1.size(); ++i1) {
5075 for (int i6 = 0; i6 != x6.size(); ++i6) {
5076 for (int i0 = 0; i0 != x0.size(); ++i0) {
5077 for (int i7 = 0; i7 != x7.size(); ++i7) {
5078 for (int i5 = 0; i5 != x5.size(); ++i5) {
5079 for (int i3 = 0; i3 != x3.size(); ++i3) {
5080 odata[i7+x7.size()*(i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i3+x2.size()*(i1)))))]
5081 += (-1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i6+x6.size()*(i1)))] * fdata[i5+x4.size()*(i3)];
5082 }
5083 }
5084 }
5085 }
5086 }
5087 }
5088 }
5089 if (x4 == x5) {
5090 std::unique_ptr<double[]> i0data = in(1)->get_block(x7, x0, x6, x3, x2, x1);
5091 for (int i1 = 0; i1 != x1.size(); ++i1) {
5092 for (int i2 = 0; i2 != x2.size(); ++i2) {
5093 for (int i3 = 0; i3 != x3.size(); ++i3) {
5094 for (int i6 = 0; i6 != x6.size(); ++i6) {
5095 for (int i0 = 0; i0 != x0.size(); ++i0) {
5096 for (int i7 = 0; i7 != x7.size(); ++i7) {
5097 for (int i5 = 0; i5 != x5.size(); ++i5) {
5098 odata[i7+x7.size()*(i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i1)))))]
5099 += (-1.0) * i0data[i7+x7.size()*(i0+x0.size()*(i6+x6.size()*(i3+x3.size()*(i2+x2.size()*(i1)))))] * fdata[i5+x4.size()*(i3)];
5100 }
5101 }
5102 }
5103 }
5104 }
5105 }
5106 }
5107 }
5108 out()->add_block(odata, x7, x0, x6, x5, x2, x1);
5109 }
5110
compute()5111 void Task30::Task_local::compute() {
5112 const Index x9 = b(0);
5113 const Index x0 = b(1);
5114 const Index x8 = b(2);
5115 const Index x7 = b(3);
5116 const Index x2 = b(4);
5117 const Index x1 = b(5);
5118 const Index x6 = b(6);
5119 const Index x5 = b(7);
5120 const Index x4 = b(8);
5121 const Index x3 = b(9);
5122 // tensor label: Gamma101
5123 std::unique_ptr<double[]> odata(new double[out()->get_size(x9, x0, x8, x7, x2, x1)]);
5124 std::fill_n(odata.get(), out()->get_size(x9, x0, x8, x7, x2, x1), 0.0);
5125 // associated with merged
5126 std::unique_ptr<double[]> fdata = in(3)->get_block(x6, x5, x4, x3);
5127 if (x8 == x5 && x2 == x3) {
5128 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x7, x4, x1, x9, x0);
5129 for (int i0 = 0; i0 != x0.size(); ++i0) {
5130 for (int i9 = 0; i9 != x9.size(); ++i9) {
5131 for (int i1 = 0; i1 != x1.size(); ++i1) {
5132 for (int i4 = 0; i4 != x4.size(); ++i4) {
5133 for (int i7 = 0; i7 != x7.size(); ++i7) {
5134 for (int i6 = 0; i6 != x6.size(); ++i6) {
5135 for (int i5 = 0; i5 != x5.size(); ++i5) {
5136 for (int i3 = 0; i3 != x3.size(); ++i3) {
5137 odata[i9+x9.size()*(i0+x0.size()*(i5+x8.size()*(i7+x7.size()*(i3+x2.size()*(i1)))))]
5138 += (1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i1+x1.size()*(i9+x9.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5139 }
5140 }
5141 }
5142 }
5143 }
5144 }
5145 }
5146 }
5147 }
5148 if (x8 == x3 && x2 == x5) {
5149 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x1, x4, x7, x9, x0);
5150 for (int i0 = 0; i0 != x0.size(); ++i0) {
5151 for (int i9 = 0; i9 != x9.size(); ++i9) {
5152 for (int i7 = 0; i7 != x7.size(); ++i7) {
5153 for (int i4 = 0; i4 != x4.size(); ++i4) {
5154 for (int i1 = 0; i1 != x1.size(); ++i1) {
5155 for (int i6 = 0; i6 != x6.size(); ++i6) {
5156 for (int i3 = 0; i3 != x3.size(); ++i3) {
5157 for (int i5 = 0; i5 != x5.size(); ++i5) {
5158 odata[i9+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i5+x2.size()*(i1)))))]
5159 += (1.0) * i0data[i6+x6.size()*(i1+x1.size()*(i4+x4.size()*(i7+x7.size()*(i9+x9.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5160 }
5161 }
5162 }
5163 }
5164 }
5165 }
5166 }
5167 }
5168 }
5169 if (x8 == x3 && x9 == x5 && x2 == x7) {
5170 std::unique_ptr<double[]> i0data = in(0)->get_block(x6, x0, x4, x1);
5171 for (int i1 = 0; i1 != x1.size(); ++i1) {
5172 for (int i4 = 0; i4 != x4.size(); ++i4) {
5173 for (int i0 = 0; i0 != x0.size(); ++i0) {
5174 for (int i6 = 0; i6 != x6.size(); ++i6) {
5175 for (int i3 = 0; i3 != x3.size(); ++i3) {
5176 for (int i5 = 0; i5 != x5.size(); ++i5) {
5177 for (int i7 = 0; i7 != x7.size(); ++i7) {
5178 odata[i5+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5179 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i1)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5180 }
5181 }
5182 }
5183 }
5184 }
5185 }
5186 }
5187 }
5188 if (x9 == x3 && x8 == x5 && x2 == x7) {
5189 std::unique_ptr<double[]> i0data = in(0)->get_block(x6, x1, x4, x0);
5190 for (int i0 = 0; i0 != x0.size(); ++i0) {
5191 for (int i4 = 0; i4 != x4.size(); ++i4) {
5192 for (int i1 = 0; i1 != x1.size(); ++i1) {
5193 for (int i6 = 0; i6 != x6.size(); ++i6) {
5194 for (int i3 = 0; i3 != x3.size(); ++i3) {
5195 for (int i5 = 0; i5 != x5.size(); ++i5) {
5196 for (int i7 = 0; i7 != x7.size(); ++i7) {
5197 odata[i3+x9.size()*(i0+x0.size()*(i5+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5198 += (1.0) * i0data[i6+x6.size()*(i1+x1.size()*(i4+x4.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5199 }
5200 }
5201 }
5202 }
5203 }
5204 }
5205 }
5206 }
5207 if (x8 == x5 && x2 == x7) {
5208 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x1, x4, x3, x9, x0);
5209 for (int i0 = 0; i0 != x0.size(); ++i0) {
5210 for (int i9 = 0; i9 != x9.size(); ++i9) {
5211 for (int i3 = 0; i3 != x3.size(); ++i3) {
5212 for (int i4 = 0; i4 != x4.size(); ++i4) {
5213 for (int i1 = 0; i1 != x1.size(); ++i1) {
5214 for (int i6 = 0; i6 != x6.size(); ++i6) {
5215 for (int i5 = 0; i5 != x5.size(); ++i5) {
5216 for (int i7 = 0; i7 != x7.size(); ++i7) {
5217 odata[i9+x9.size()*(i0+x0.size()*(i5+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5218 += (1.0) * i0data[i6+x6.size()*(i1+x1.size()*(i4+x4.size()*(i3+x3.size()*(i9+x9.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5219 }
5220 }
5221 }
5222 }
5223 }
5224 }
5225 }
5226 }
5227 }
5228 if (x9 == x5 && x2 == x7) {
5229 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x3, x8, x1);
5230 for (int i1 = 0; i1 != x1.size(); ++i1) {
5231 for (int i8 = 0; i8 != x8.size(); ++i8) {
5232 for (int i3 = 0; i3 != x3.size(); ++i3) {
5233 for (int i4 = 0; i4 != x4.size(); ++i4) {
5234 for (int i0 = 0; i0 != x0.size(); ++i0) {
5235 for (int i6 = 0; i6 != x6.size(); ++i6) {
5236 for (int i5 = 0; i5 != x5.size(); ++i5) {
5237 for (int i7 = 0; i7 != x7.size(); ++i7) {
5238 odata[i5+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5239 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i8+x8.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5240 }
5241 }
5242 }
5243 }
5244 }
5245 }
5246 }
5247 }
5248 }
5249 if (x9 == x5 && x2 == x3) {
5250 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x1, x8, x7);
5251 for (int i7 = 0; i7 != x7.size(); ++i7) {
5252 for (int i8 = 0; i8 != x8.size(); ++i8) {
5253 for (int i1 = 0; i1 != x1.size(); ++i1) {
5254 for (int i4 = 0; i4 != x4.size(); ++i4) {
5255 for (int i0 = 0; i0 != x0.size(); ++i0) {
5256 for (int i6 = 0; i6 != x6.size(); ++i6) {
5257 for (int i5 = 0; i5 != x5.size(); ++i5) {
5258 for (int i3 = 0; i3 != x3.size(); ++i3) {
5259 odata[i5+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i3+x2.size()*(i1)))))]
5260 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i1+x1.size()*(i8+x8.size()*(i7)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5261 }
5262 }
5263 }
5264 }
5265 }
5266 }
5267 }
5268 }
5269 }
5270 if (x9 == x3 && x2 == x5) {
5271 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x1, x4, x0, x8, x7);
5272 for (int i7 = 0; i7 != x7.size(); ++i7) {
5273 for (int i8 = 0; i8 != x8.size(); ++i8) {
5274 for (int i0 = 0; i0 != x0.size(); ++i0) {
5275 for (int i4 = 0; i4 != x4.size(); ++i4) {
5276 for (int i1 = 0; i1 != x1.size(); ++i1) {
5277 for (int i6 = 0; i6 != x6.size(); ++i6) {
5278 for (int i3 = 0; i3 != x3.size(); ++i3) {
5279 for (int i5 = 0; i5 != x5.size(); ++i5) {
5280 odata[i3+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i5+x2.size()*(i1)))))]
5281 += (1.0) * i0data[i6+x6.size()*(i1+x1.size()*(i4+x4.size()*(i0+x0.size()*(i8+x8.size()*(i7)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5282 }
5283 }
5284 }
5285 }
5286 }
5287 }
5288 }
5289 }
5290 }
5291 if (x9 == x5 && x8 == x3) {
5292 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x4, x7, x2, x1);
5293 for (int i1 = 0; i1 != x1.size(); ++i1) {
5294 for (int i2 = 0; i2 != x2.size(); ++i2) {
5295 for (int i7 = 0; i7 != x7.size(); ++i7) {
5296 for (int i4 = 0; i4 != x4.size(); ++i4) {
5297 for (int i0 = 0; i0 != x0.size(); ++i0) {
5298 for (int i6 = 0; i6 != x6.size(); ++i6) {
5299 for (int i5 = 0; i5 != x5.size(); ++i5) {
5300 for (int i3 = 0; i3 != x3.size(); ++i3) {
5301 odata[i5+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5302 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5303 }
5304 }
5305 }
5306 }
5307 }
5308 }
5309 }
5310 }
5311 }
5312 if (x9 == x3 && x8 == x5) {
5313 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x7, x4, x0, x2, x1);
5314 for (int i1 = 0; i1 != x1.size(); ++i1) {
5315 for (int i2 = 0; i2 != x2.size(); ++i2) {
5316 for (int i0 = 0; i0 != x0.size(); ++i0) {
5317 for (int i4 = 0; i4 != x4.size(); ++i4) {
5318 for (int i7 = 0; i7 != x7.size(); ++i7) {
5319 for (int i6 = 0; i6 != x6.size(); ++i6) {
5320 for (int i3 = 0; i3 != x3.size(); ++i3) {
5321 for (int i5 = 0; i5 != x5.size(); ++i5) {
5322 odata[i3+x9.size()*(i0+x0.size()*(i5+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5323 += (1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i0+x0.size()*(i2+x2.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5324 }
5325 }
5326 }
5327 }
5328 }
5329 }
5330 }
5331 }
5332 }
5333 if (x8 == x5) {
5334 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x7, x4, x3, x9, x0, x2, x1);
5335 for (int i1 = 0; i1 != x1.size(); ++i1) {
5336 for (int i2 = 0; i2 != x2.size(); ++i2) {
5337 for (int i0 = 0; i0 != x0.size(); ++i0) {
5338 for (int i9 = 0; i9 != x9.size(); ++i9) {
5339 for (int i3 = 0; i3 != x3.size(); ++i3) {
5340 for (int i4 = 0; i4 != x4.size(); ++i4) {
5341 for (int i7 = 0; i7 != x7.size(); ++i7) {
5342 for (int i6 = 0; i6 != x6.size(); ++i6) {
5343 for (int i5 = 0; i5 != x5.size(); ++i5) {
5344 odata[i9+x9.size()*(i0+x0.size()*(i5+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5345 += (1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i4+x4.size()*(i3+x3.size()*(i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i1)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5346 }
5347 }
5348 }
5349 }
5350 }
5351 }
5352 }
5353 }
5354 }
5355 }
5356 if (x9 == x5) {
5357 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x0, x4, x3, x8, x7, x2, x1);
5358 for (int i1 = 0; i1 != x1.size(); ++i1) {
5359 for (int i2 = 0; i2 != x2.size(); ++i2) {
5360 for (int i7 = 0; i7 != x7.size(); ++i7) {
5361 for (int i8 = 0; i8 != x8.size(); ++i8) {
5362 for (int i3 = 0; i3 != x3.size(); ++i3) {
5363 for (int i4 = 0; i4 != x4.size(); ++i4) {
5364 for (int i0 = 0; i0 != x0.size(); ++i0) {
5365 for (int i6 = 0; i6 != x6.size(); ++i6) {
5366 for (int i5 = 0; i5 != x5.size(); ++i5) {
5367 odata[i5+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5368 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5369 }
5370 }
5371 }
5372 }
5373 }
5374 }
5375 }
5376 }
5377 }
5378 }
5379 if (x8 == x3 && x4 == x5 && x2 == x7) {
5380 std::unique_ptr<double[]> i0data = in(0)->get_block(x6, x1, x9, x0);
5381 for (int i0 = 0; i0 != x0.size(); ++i0) {
5382 for (int i9 = 0; i9 != x9.size(); ++i9) {
5383 for (int i1 = 0; i1 != x1.size(); ++i1) {
5384 for (int i6 = 0; i6 != x6.size(); ++i6) {
5385 for (int i3 = 0; i3 != x3.size(); ++i3) {
5386 for (int i5 = 0; i5 != x5.size(); ++i5) {
5387 for (int i7 = 0; i7 != x7.size(); ++i7) {
5388 odata[i9+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5389 += (1.0) * i0data[i6+x6.size()*(i1+x1.size()*(i9+x9.size()*(i0)))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
5390 }
5391 }
5392 }
5393 }
5394 }
5395 }
5396 }
5397 }
5398 if (x8 == x3 && x2 == x7) {
5399 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x5, x4, x1, x9, x0);
5400 for (int i0 = 0; i0 != x0.size(); ++i0) {
5401 for (int i9 = 0; i9 != x9.size(); ++i9) {
5402 for (int i1 = 0; i1 != x1.size(); ++i1) {
5403 for (int i4 = 0; i4 != x4.size(); ++i4) {
5404 for (int i5 = 0; i5 != x5.size(); ++i5) {
5405 for (int i6 = 0; i6 != x6.size(); ++i6) {
5406 for (int i3 = 0; i3 != x3.size(); ++i3) {
5407 for (int i7 = 0; i7 != x7.size(); ++i7) {
5408 odata[i9+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5409 += (1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i9+x9.size()*(i0)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5410 }
5411 }
5412 }
5413 }
5414 }
5415 }
5416 }
5417 }
5418 }
5419 if (x4 == x5 && x9 == x3 && x2 == x7) {
5420 std::unique_ptr<double[]> i0data = in(0)->get_block(x6, x0, x8, x1);
5421 for (int i1 = 0; i1 != x1.size(); ++i1) {
5422 for (int i8 = 0; i8 != x8.size(); ++i8) {
5423 for (int i0 = 0; i0 != x0.size(); ++i0) {
5424 for (int i6 = 0; i6 != x6.size(); ++i6) {
5425 for (int i5 = 0; i5 != x5.size(); ++i5) {
5426 for (int i3 = 0; i3 != x3.size(); ++i3) {
5427 for (int i7 = 0; i7 != x7.size(); ++i7) {
5428 odata[i3+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5429 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i8+x8.size()*(i1)))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
5430 }
5431 }
5432 }
5433 }
5434 }
5435 }
5436 }
5437 }
5438 if (x9 == x3 && x2 == x7) {
5439 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x5, x4, x0, x8, x1);
5440 for (int i1 = 0; i1 != x1.size(); ++i1) {
5441 for (int i8 = 0; i8 != x8.size(); ++i8) {
5442 for (int i0 = 0; i0 != x0.size(); ++i0) {
5443 for (int i4 = 0; i4 != x4.size(); ++i4) {
5444 for (int i5 = 0; i5 != x5.size(); ++i5) {
5445 for (int i6 = 0; i6 != x6.size(); ++i6) {
5446 for (int i3 = 0; i3 != x3.size(); ++i3) {
5447 for (int i7 = 0; i7 != x7.size(); ++i7) {
5448 odata[i3+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i7+x2.size()*(i1)))))]
5449 += (1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i8+x8.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5450 }
5451 }
5452 }
5453 }
5454 }
5455 }
5456 }
5457 }
5458 }
5459 if (x4 == x5 && x8 == x3) {
5460 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x7, x9, x0, x2, x1);
5461 for (int i1 = 0; i1 != x1.size(); ++i1) {
5462 for (int i2 = 0; i2 != x2.size(); ++i2) {
5463 for (int i0 = 0; i0 != x0.size(); ++i0) {
5464 for (int i9 = 0; i9 != x9.size(); ++i9) {
5465 for (int i7 = 0; i7 != x7.size(); ++i7) {
5466 for (int i6 = 0; i6 != x6.size(); ++i6) {
5467 for (int i5 = 0; i5 != x5.size(); ++i5) {
5468 for (int i3 = 0; i3 != x3.size(); ++i3) {
5469 odata[i9+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5470 += (1.0) * i0data[i6+x6.size()*(i7+x7.size()*(i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
5471 }
5472 }
5473 }
5474 }
5475 }
5476 }
5477 }
5478 }
5479 }
5480 if (x8 == x3) {
5481 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x5, x4, x7, x9, x0, x2, x1);
5482 for (int i1 = 0; i1 != x1.size(); ++i1) {
5483 for (int i2 = 0; i2 != x2.size(); ++i2) {
5484 for (int i0 = 0; i0 != x0.size(); ++i0) {
5485 for (int i9 = 0; i9 != x9.size(); ++i9) {
5486 for (int i7 = 0; i7 != x7.size(); ++i7) {
5487 for (int i4 = 0; i4 != x4.size(); ++i4) {
5488 for (int i5 = 0; i5 != x5.size(); ++i5) {
5489 for (int i6 = 0; i6 != x6.size(); ++i6) {
5490 for (int i3 = 0; i3 != x3.size(); ++i3) {
5491 odata[i9+x9.size()*(i0+x0.size()*(i3+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5492 += (1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i7+x7.size()*(i9+x9.size()*(i0+x0.size()*(i2+x2.size()*(i1)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5493 }
5494 }
5495 }
5496 }
5497 }
5498 }
5499 }
5500 }
5501 }
5502 }
5503 if (x4 == x5 && x9 == x3) {
5504 std::unique_ptr<double[]> i0data = in(1)->get_block(x6, x0, x8, x7, x2, x1);
5505 for (int i1 = 0; i1 != x1.size(); ++i1) {
5506 for (int i2 = 0; i2 != x2.size(); ++i2) {
5507 for (int i7 = 0; i7 != x7.size(); ++i7) {
5508 for (int i8 = 0; i8 != x8.size(); ++i8) {
5509 for (int i0 = 0; i0 != x0.size(); ++i0) {
5510 for (int i6 = 0; i6 != x6.size(); ++i6) {
5511 for (int i5 = 0; i5 != x5.size(); ++i5) {
5512 for (int i3 = 0; i3 != x3.size(); ++i3) {
5513 odata[i3+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5514 += (1.0) * i0data[i6+x6.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
5515 }
5516 }
5517 }
5518 }
5519 }
5520 }
5521 }
5522 }
5523 }
5524 if (x9 == x3) {
5525 std::unique_ptr<double[]> i0data = in(2)->get_block(x6, x5, x4, x0, x8, x7, x2, x1);
5526 for (int i1 = 0; i1 != x1.size(); ++i1) {
5527 for (int i2 = 0; i2 != x2.size(); ++i2) {
5528 for (int i7 = 0; i7 != x7.size(); ++i7) {
5529 for (int i8 = 0; i8 != x8.size(); ++i8) {
5530 for (int i0 = 0; i0 != x0.size(); ++i0) {
5531 for (int i4 = 0; i4 != x4.size(); ++i4) {
5532 for (int i5 = 0; i5 != x5.size(); ++i5) {
5533 for (int i6 = 0; i6 != x6.size(); ++i6) {
5534 for (int i3 = 0; i3 != x3.size(); ++i3) {
5535 odata[i3+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5536 += (1.0) * i0data[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5537 }
5538 }
5539 }
5540 }
5541 }
5542 }
5543 }
5544 }
5545 }
5546 }
5547 if (x2 == x3 && x4 == x7) {
5548 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x8, x1, x6, x5);
5549 for (int i5 = 0; i5 != x5.size(); ++i5) {
5550 for (int i6 = 0; i6 != x6.size(); ++i6) {
5551 for (int i1 = 0; i1 != x1.size(); ++i1) {
5552 for (int i8 = 0; i8 != x8.size(); ++i8) {
5553 for (int i0 = 0; i0 != x0.size(); ++i0) {
5554 for (int i9 = 0; i9 != x9.size(); ++i9) {
5555 for (int i3 = 0; i3 != x3.size(); ++i3) {
5556 for (int i7 = 0; i7 != x7.size(); ++i7) {
5557 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i3+x2.size()*(i1)))))]
5558 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i1+x1.size()*(i6+x6.size()*(i5)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
5559 }
5560 }
5561 }
5562 }
5563 }
5564 }
5565 }
5566 }
5567 }
5568 if (x2 == x5 && x4 == x7) {
5569 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x8, x3, x6, x1);
5570 for (int i1 = 0; i1 != x1.size(); ++i1) {
5571 for (int i6 = 0; i6 != x6.size(); ++i6) {
5572 for (int i3 = 0; i3 != x3.size(); ++i3) {
5573 for (int i8 = 0; i8 != x8.size(); ++i8) {
5574 for (int i0 = 0; i0 != x0.size(); ++i0) {
5575 for (int i9 = 0; i9 != x9.size(); ++i9) {
5576 for (int i5 = 0; i5 != x5.size(); ++i5) {
5577 for (int i7 = 0; i7 != x7.size(); ++i7) {
5578 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i5+x2.size()*(i1)))))]
5579 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i3+x3.size()*(i6+x6.size()*(i1)))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
5580 }
5581 }
5582 }
5583 }
5584 }
5585 }
5586 }
5587 }
5588 }
5589 if (x4 == x7) {
5590 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x0, x8, x3, x6, x5, x2, x1);
5591 for (int i1 = 0; i1 != x1.size(); ++i1) {
5592 for (int i2 = 0; i2 != x2.size(); ++i2) {
5593 for (int i5 = 0; i5 != x5.size(); ++i5) {
5594 for (int i6 = 0; i6 != x6.size(); ++i6) {
5595 for (int i3 = 0; i3 != x3.size(); ++i3) {
5596 for (int i8 = 0; i8 != x8.size(); ++i8) {
5597 for (int i0 = 0; i0 != x0.size(); ++i0) {
5598 for (int i9 = 0; i9 != x9.size(); ++i9) {
5599 for (int i7 = 0; i7 != x7.size(); ++i7) {
5600 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5601 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i3+x3.size()*(i6+x6.size()*(i5+x5.size()*(i2+x2.size()*(i1)))))))] * fdata[i6+x6.size()*(i5+x5.size()*(i7+x4.size()*(i3)))];
5602 }
5603 }
5604 }
5605 }
5606 }
5607 }
5608 }
5609 }
5610 }
5611 }
5612 if (x6 == x7 && x4 == x5 && x2 == x3) {
5613 std::unique_ptr<double[]> i0data = in(0)->get_block(x9, x0, x8, x1);
5614 for (int i1 = 0; i1 != x1.size(); ++i1) {
5615 for (int i8 = 0; i8 != x8.size(); ++i8) {
5616 for (int i0 = 0; i0 != x0.size(); ++i0) {
5617 for (int i9 = 0; i9 != x9.size(); ++i9) {
5618 for (int i7 = 0; i7 != x7.size(); ++i7) {
5619 for (int i5 = 0; i5 != x5.size(); ++i5) {
5620 for (int i3 = 0; i3 != x3.size(); ++i3) {
5621 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i3+x2.size()*(i1)))))]
5622 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i1)))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
5623 }
5624 }
5625 }
5626 }
5627 }
5628 }
5629 }
5630 }
5631 if (x6 == x7 && x2 == x3) {
5632 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x8, x5, x4, x1);
5633 for (int i1 = 0; i1 != x1.size(); ++i1) {
5634 for (int i4 = 0; i4 != x4.size(); ++i4) {
5635 for (int i5 = 0; i5 != x5.size(); ++i5) {
5636 for (int i8 = 0; i8 != x8.size(); ++i8) {
5637 for (int i0 = 0; i0 != x0.size(); ++i0) {
5638 for (int i9 = 0; i9 != x9.size(); ++i9) {
5639 for (int i7 = 0; i7 != x7.size(); ++i7) {
5640 for (int i3 = 0; i3 != x3.size(); ++i3) {
5641 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i3+x2.size()*(i1)))))]
5642 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i5+x5.size()*(i4+x4.size()*(i1)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5643 }
5644 }
5645 }
5646 }
5647 }
5648 }
5649 }
5650 }
5651 }
5652 if (x6 == x7 && x2 == x5) {
5653 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x8, x1, x4, x3);
5654 for (int i3 = 0; i3 != x3.size(); ++i3) {
5655 for (int i4 = 0; i4 != x4.size(); ++i4) {
5656 for (int i1 = 0; i1 != x1.size(); ++i1) {
5657 for (int i8 = 0; i8 != x8.size(); ++i8) {
5658 for (int i0 = 0; i0 != x0.size(); ++i0) {
5659 for (int i9 = 0; i9 != x9.size(); ++i9) {
5660 for (int i7 = 0; i7 != x7.size(); ++i7) {
5661 for (int i5 = 0; i5 != x5.size(); ++i5) {
5662 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i5+x2.size()*(i1)))))]
5663 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i1+x1.size()*(i4+x4.size()*(i3)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5664 }
5665 }
5666 }
5667 }
5668 }
5669 }
5670 }
5671 }
5672 }
5673 if (x6 == x7 && x4 == x5) {
5674 std::unique_ptr<double[]> i0data = in(1)->get_block(x9, x0, x8, x3, x2, x1);
5675 for (int i1 = 0; i1 != x1.size(); ++i1) {
5676 for (int i2 = 0; i2 != x2.size(); ++i2) {
5677 for (int i3 = 0; i3 != x3.size(); ++i3) {
5678 for (int i8 = 0; i8 != x8.size(); ++i8) {
5679 for (int i0 = 0; i0 != x0.size(); ++i0) {
5680 for (int i9 = 0; i9 != x9.size(); ++i9) {
5681 for (int i7 = 0; i7 != x7.size(); ++i7) {
5682 for (int i5 = 0; i5 != x5.size(); ++i5) {
5683 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5684 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i3+x3.size()*(i2+x2.size()*(i1)))))] * fdata[i7+x6.size()*(i5+x5.size()*(i5+x4.size()*(i3)))];
5685 }
5686 }
5687 }
5688 }
5689 }
5690 }
5691 }
5692 }
5693 }
5694 if (x6 == x7) {
5695 std::unique_ptr<double[]> i0data = in(2)->get_block(x9, x0, x8, x5, x4, x3, x2, x1);
5696 for (int i1 = 0; i1 != x1.size(); ++i1) {
5697 for (int i2 = 0; i2 != x2.size(); ++i2) {
5698 for (int i3 = 0; i3 != x3.size(); ++i3) {
5699 for (int i4 = 0; i4 != x4.size(); ++i4) {
5700 for (int i5 = 0; i5 != x5.size(); ++i5) {
5701 for (int i8 = 0; i8 != x8.size(); ++i8) {
5702 for (int i0 = 0; i0 != x0.size(); ++i0) {
5703 for (int i9 = 0; i9 != x9.size(); ++i9) {
5704 for (int i7 = 0; i7 != x7.size(); ++i7) {
5705 odata[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i7+x7.size()*(i2+x2.size()*(i1)))))]
5706 += (-1.0) * i0data[i9+x9.size()*(i0+x0.size()*(i8+x8.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1)))))))] * fdata[i7+x6.size()*(i5+x5.size()*(i4+x4.size()*(i3)))];
5707 }
5708 }
5709 }
5710 }
5711 }
5712 }
5713 }
5714 }
5715 }
5716 }
5717 out()->add_block(odata, x9, x0, x8, x7, x2, x1);
5718 }
5719
compute()5720 void Task31::Task_local::compute() {
5721 const Index x3 = b(0);
5722 const Index x0 = b(1);
5723 const Index x2 = b(2);
5724 const Index x1 = b(3);
5725 // tensor label: Gamma106
5726 std::unique_ptr<double[]> odata(new double[out()->get_size(x3, x0)]);
5727 std::fill_n(odata.get(), out()->get_size(x3, x0), 0.0);
5728 // associated with merged
5729 std::unique_ptr<double[]> fdata = in(2)->get_block(x2, x1);
5730 if (x3 == x1) {
5731 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x0);
5732 for (int i0 = 0; i0 != x0.size(); ++i0) {
5733 for (int i2 = 0; i2 != x2.size(); ++i2) {
5734 for (int i1 = 0; i1 != x1.size(); ++i1) {
5735 odata[i1+x3.size()*(i0)]
5736 += (1.0) * i0data[i2+x2.size()*(i0)] * fdata[i2+x2.size()*(i1)];
5737 }
5738 }
5739 }
5740 }
5741 out()->add_block(odata, x3, x0);
5742 }
5743
compute()5744 void Task32::Task_local::compute() {
5745 const Index x5 = b(0);
5746 const Index x0 = b(1);
5747 const Index x4 = b(2);
5748 const Index x3 = b(3);
5749 const Index x2 = b(4);
5750 const Index x1 = b(5);
5751 // tensor label: Gamma108
5752 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x0)]);
5753 std::fill_n(odata.get(), out()->get_size(x5, x0), 0.0);
5754 // associated with merged
5755 std::unique_ptr<double[]> fdata = in(3)->get_block(x4, x3, x2, x1);
5756 if (x5 == x3) {
5757 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x0, x2, x1);
5758 for (int i1 = 0; i1 != x1.size(); ++i1) {
5759 for (int i2 = 0; i2 != x2.size(); ++i2) {
5760 for (int i0 = 0; i0 != x0.size(); ++i0) {
5761 for (int i4 = 0; i4 != x4.size(); ++i4) {
5762 for (int i3 = 0; i3 != x3.size(); ++i3) {
5763 odata[i3+x5.size()*(i0)]
5764 += (1.0) * i0data[i4+x4.size()*(i0+x0.size()*(i2+x2.size()*(i1)))] * fdata[i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1)))];
5765 }
5766 }
5767 }
5768 }
5769 }
5770 }
5771 if (x2 == x3 && x5 == x1) {
5772 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x0);
5773 for (int i0 = 0; i0 != x0.size(); ++i0) {
5774 for (int i4 = 0; i4 != x4.size(); ++i4) {
5775 for (int i3 = 0; i3 != x3.size(); ++i3) {
5776 for (int i1 = 0; i1 != x1.size(); ++i1) {
5777 odata[i1+x5.size()*(i0)]
5778 += (1.0) * i0data[i4+x4.size()*(i0)] * fdata[i4+x4.size()*(i3+x3.size()*(i3+x2.size()*(i1)))];
5779 }
5780 }
5781 }
5782 }
5783 }
5784 if (x5 == x1) {
5785 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x3, x2, x0);
5786 for (int i0 = 0; i0 != x0.size(); ++i0) {
5787 for (int i2 = 0; i2 != x2.size(); ++i2) {
5788 for (int i3 = 0; i3 != x3.size(); ++i3) {
5789 for (int i4 = 0; i4 != x4.size(); ++i4) {
5790 for (int i1 = 0; i1 != x1.size(); ++i1) {
5791 odata[i1+x5.size()*(i0)]
5792 += (1.0) * i0data[i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i0)))] * fdata[i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i1)))];
5793 }
5794 }
5795 }
5796 }
5797 }
5798 }
5799 out()->add_block(odata, x5, x0);
5800 }
5801
compute()5802 void Task33::Task_local::compute() {
5803 const Index x0 = b(0);
5804 const Index x5 = b(1);
5805 const Index x1 = b(2);
5806 const Index x4 = b(3);
5807 const Index x3 = b(4);
5808 const Index x2 = b(5);
5809 // tensor label: Gamma92
5810 std::unique_ptr<double[]> odata(new double[out()->get_size(x0, x5, x1, x4)]);
5811 std::fill_n(odata.get(), out()->get_size(x0, x5, x1, x4), 0.0);
5812 // associated with merged
5813 std::unique_ptr<double[]> fdata = in(4)->get_block(x3, x2);
5814 // rdm0 merged case
5815 if (x0 == x2 && x1 == x4 && x3 == x5) {
5816 std::unique_ptr<double[]> i0data = in(0)->get_block();
5817 for (int i2 = 0; i2 != x2.size(); ++i2) {
5818 for (int i4 = 0; i4 != x4.size(); ++i4) {
5819 for (int i5 = 0; i5 != x5.size(); ++i5) {
5820 odata[i2+x0.size()*(i5+x5.size()*(i4+x1.size()*(i4)))] += -4.0 * i0data[0] * fdata[i5+x3.size()*(i2)];
5821 }
5822 }
5823 }
5824 }
5825 // rdm0 merged case
5826 if (x1 == x5 && x3 == x4 && x0 == x2) {
5827 std::unique_ptr<double[]> i0data = in(0)->get_block();
5828 for (int i5 = 0; i5 != x5.size(); ++i5) {
5829 for (int i4 = 0; i4 != x4.size(); ++i4) {
5830 for (int i2 = 0; i2 != x2.size(); ++i2) {
5831 odata[i2+x0.size()*(i5+x5.size()*(i5+x1.size()*(i4)))] += 2.0 * i0data[0] * fdata[i4+x3.size()*(i2)];
5832 }
5833 }
5834 }
5835 }
5836 if (x3 == x4 && x0 == x2) {
5837 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x5);
5838 for (int i5 = 0; i5 != x5.size(); ++i5) {
5839 for (int i1 = 0; i1 != x1.size(); ++i1) {
5840 for (int i4 = 0; i4 != x4.size(); ++i4) {
5841 for (int i2 = 0; i2 != x2.size(); ++i2) {
5842 odata[i2+x0.size()*(i5+x5.size()*(i1+x1.size()*(i4)))]
5843 += (-1.0) * i0data[i1+x1.size()*(i5)] * fdata[i4+x3.size()*(i2)];
5844 }
5845 }
5846 }
5847 }
5848 }
5849 if (x3 == x5 && x0 == x2) {
5850 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x4);
5851 for (int i4 = 0; i4 != x4.size(); ++i4) {
5852 for (int i1 = 0; i1 != x1.size(); ++i1) {
5853 for (int i5 = 0; i5 != x5.size(); ++i5) {
5854 for (int i2 = 0; i2 != x2.size(); ++i2) {
5855 odata[i2+x0.size()*(i5+x5.size()*(i1+x1.size()*(i4)))]
5856 += (2.0) * i0data[i1+x1.size()*(i4)] * fdata[i5+x3.size()*(i2)];
5857 }
5858 }
5859 }
5860 }
5861 }
5862 // rdm0 merged case
5863 if (x3 == x5 && x1 == x2 && x0 == x4) {
5864 std::unique_ptr<double[]> i0data = in(0)->get_block();
5865 for (int i5 = 0; i5 != x5.size(); ++i5) {
5866 for (int i2 = 0; i2 != x2.size(); ++i2) {
5867 for (int i4 = 0; i4 != x4.size(); ++i4) {
5868 odata[i4+x0.size()*(i5+x5.size()*(i2+x1.size()*(i4)))] += 2.0 * i0data[0] * fdata[i5+x3.size()*(i2)];
5869 }
5870 }
5871 }
5872 }
5873 if (x3 == x5 && x0 == x4) {
5874 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
5875 for (int i2 = 0; i2 != x2.size(); ++i2) {
5876 for (int i1 = 0; i1 != x1.size(); ++i1) {
5877 for (int i5 = 0; i5 != x5.size(); ++i5) {
5878 for (int i4 = 0; i4 != x4.size(); ++i4) {
5879 odata[i4+x0.size()*(i5+x5.size()*(i1+x1.size()*(i4)))]
5880 += (-1.0) * i0data[i1+x1.size()*(i2)] * fdata[i5+x3.size()*(i2)];
5881 }
5882 }
5883 }
5884 }
5885 }
5886 // rdm0 merged case
5887 if (x3 == x4 && x1 == x2 && x0 == x5) {
5888 std::unique_ptr<double[]> i0data = in(0)->get_block();
5889 for (int i4 = 0; i4 != x4.size(); ++i4) {
5890 for (int i2 = 0; i2 != x2.size(); ++i2) {
5891 for (int i5 = 0; i5 != x5.size(); ++i5) {
5892 odata[i5+x0.size()*(i5+x5.size()*(i2+x1.size()*(i4)))] += -4.0 * i0data[0] * fdata[i4+x3.size()*(i2)];
5893 }
5894 }
5895 }
5896 }
5897 if (x3 == x4 && x0 == x5) {
5898 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
5899 for (int i2 = 0; i2 != x2.size(); ++i2) {
5900 for (int i1 = 0; i1 != x1.size(); ++i1) {
5901 for (int i4 = 0; i4 != x4.size(); ++i4) {
5902 for (int i5 = 0; i5 != x5.size(); ++i5) {
5903 odata[i5+x0.size()*(i5+x5.size()*(i1+x1.size()*(i4)))]
5904 += (2.0) * i0data[i1+x1.size()*(i2)] * fdata[i4+x3.size()*(i2)];
5905 }
5906 }
5907 }
5908 }
5909 }
5910 if (x3 == x4 && x1 == x2) {
5911 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x5);
5912 for (int i5 = 0; i5 != x5.size(); ++i5) {
5913 for (int i0 = 0; i0 != x0.size(); ++i0) {
5914 for (int i4 = 0; i4 != x4.size(); ++i4) {
5915 for (int i2 = 0; i2 != x2.size(); ++i2) {
5916 odata[i0+x0.size()*(i5+x5.size()*(i2+x1.size()*(i4)))]
5917 += (2.0) * i0data[i0+x0.size()*(i5)] * fdata[i4+x3.size()*(i2)];
5918 }
5919 }
5920 }
5921 }
5922 }
5923 if (x3 == x5 && x1 == x2) {
5924 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x4);
5925 for (int i4 = 0; i4 != x4.size(); ++i4) {
5926 for (int i0 = 0; i0 != x0.size(); ++i0) {
5927 for (int i5 = 0; i5 != x5.size(); ++i5) {
5928 for (int i2 = 0; i2 != x2.size(); ++i2) {
5929 odata[i0+x0.size()*(i5+x5.size()*(i2+x1.size()*(i4)))]
5930 += (-1.0) * i0data[i0+x0.size()*(i4)] * fdata[i5+x3.size()*(i2)];
5931 }
5932 }
5933 }
5934 }
5935 }
5936 if (x3 == x5 && x1 == x4) {
5937 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
5938 for (int i2 = 0; i2 != x2.size(); ++i2) {
5939 for (int i0 = 0; i0 != x0.size(); ++i0) {
5940 for (int i5 = 0; i5 != x5.size(); ++i5) {
5941 for (int i4 = 0; i4 != x4.size(); ++i4) {
5942 odata[i0+x0.size()*(i5+x5.size()*(i4+x1.size()*(i4)))]
5943 += (2.0) * i0data[i0+x0.size()*(i2)] * fdata[i5+x3.size()*(i2)];
5944 }
5945 }
5946 }
5947 }
5948 }
5949 if (x3 == x4 && x1 == x5) {
5950 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
5951 for (int i2 = 0; i2 != x2.size(); ++i2) {
5952 for (int i0 = 0; i0 != x0.size(); ++i0) {
5953 for (int i4 = 0; i4 != x4.size(); ++i4) {
5954 for (int i5 = 0; i5 != x5.size(); ++i5) {
5955 odata[i0+x0.size()*(i5+x5.size()*(i5+x1.size()*(i4)))]
5956 += (-1.0) * i0data[i0+x0.size()*(i2)] * fdata[i4+x3.size()*(i2)];
5957 }
5958 }
5959 }
5960 }
5961 }
5962 if (x3 == x4) {
5963 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x5, x1, x2);
5964 for (int i2 = 0; i2 != x2.size(); ++i2) {
5965 for (int i1 = 0; i1 != x1.size(); ++i1) {
5966 for (int i5 = 0; i5 != x5.size(); ++i5) {
5967 for (int i0 = 0; i0 != x0.size(); ++i0) {
5968 for (int i4 = 0; i4 != x4.size(); ++i4) {
5969 odata[i0+x0.size()*(i5+x5.size()*(i1+x1.size()*(i4)))]
5970 += (-1.0) * i0data[i0+x0.size()*(i5+x5.size()*(i1+x1.size()*(i2)))] * fdata[i4+x3.size()*(i2)];
5971 }
5972 }
5973 }
5974 }
5975 }
5976 }
5977 if (x3 == x5) {
5978 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x4, x0, x2);
5979 for (int i2 = 0; i2 != x2.size(); ++i2) {
5980 for (int i0 = 0; i0 != x0.size(); ++i0) {
5981 for (int i4 = 0; i4 != x4.size(); ++i4) {
5982 for (int i1 = 0; i1 != x1.size(); ++i1) {
5983 for (int i5 = 0; i5 != x5.size(); ++i5) {
5984 odata[i0+x0.size()*(i5+x5.size()*(i1+x1.size()*(i4)))]
5985 += (-1.0) * i0data[i1+x1.size()*(i4+x4.size()*(i0+x0.size()*(i2)))] * fdata[i5+x3.size()*(i2)];
5986 }
5987 }
5988 }
5989 }
5990 }
5991 }
5992 out()->add_block(odata, x0, x5, x1, x4);
5993 }
5994
compute()5995 void Task34::Task_local::compute() {
5996 const Index x0 = b(0);
5997 const Index x7 = b(1);
5998 const Index x1 = b(2);
5999 const Index x6 = b(3);
6000 const Index x5 = b(4);
6001 const Index x4 = b(5);
6002 const Index x3 = b(6);
6003 const Index x2 = b(7);
6004 // tensor label: Gamma93
6005 std::unique_ptr<double[]> odata(new double[out()->get_size(x0, x7, x1, x6)]);
6006 std::fill_n(odata.get(), out()->get_size(x0, x7, x1, x6), 0.0);
6007 // associated with merged
6008 std::unique_ptr<double[]> fdata = in(5)->get_block(x5, x4, x3, x2);
6009 if (x0 == x2 && x3 == x7 && x1 == x6) {
6010 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4);
6011 for (int i4 = 0; i4 != x4.size(); ++i4) {
6012 for (int i5 = 0; i5 != x5.size(); ++i5) {
6013 for (int i2 = 0; i2 != x2.size(); ++i2) {
6014 for (int i7 = 0; i7 != x7.size(); ++i7) {
6015 for (int i6 = 0; i6 != x6.size(); ++i6) {
6016 odata[i2+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
6017 += (-4.0) * i0data[i5+x5.size()*(i4)] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6018 }
6019 }
6020 }
6021 }
6022 }
6023 }
6024 if (x1 == x7 && x0 == x2 && x3 == x6) {
6025 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4);
6026 for (int i4 = 0; i4 != x4.size(); ++i4) {
6027 for (int i5 = 0; i5 != x5.size(); ++i5) {
6028 for (int i7 = 0; i7 != x7.size(); ++i7) {
6029 for (int i2 = 0; i2 != x2.size(); ++i2) {
6030 for (int i6 = 0; i6 != x6.size(); ++i6) {
6031 odata[i2+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
6032 += (2.0) * i0data[i5+x5.size()*(i4)] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6033 }
6034 }
6035 }
6036 }
6037 }
6038 }
6039 if (x3 == x7 && x0 == x4 && x1 == x6) {
6040 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2);
6041 for (int i2 = 0; i2 != x2.size(); ++i2) {
6042 for (int i5 = 0; i5 != x5.size(); ++i5) {
6043 for (int i7 = 0; i7 != x7.size(); ++i7) {
6044 for (int i4 = 0; i4 != x4.size(); ++i4) {
6045 for (int i6 = 0; i6 != x6.size(); ++i6) {
6046 odata[i4+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
6047 += (2.0) * i0data[i5+x5.size()*(i2)] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6048 }
6049 }
6050 }
6051 }
6052 }
6053 }
6054 if (x3 == x6 && x1 == x7 && x0 == x4) {
6055 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2);
6056 for (int i2 = 0; i2 != x2.size(); ++i2) {
6057 for (int i5 = 0; i5 != x5.size(); ++i5) {
6058 for (int i6 = 0; i6 != x6.size(); ++i6) {
6059 for (int i7 = 0; i7 != x7.size(); ++i7) {
6060 for (int i4 = 0; i4 != x4.size(); ++i4) {
6061 odata[i4+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
6062 += (-1.0) * i0data[i5+x5.size()*(i2)] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6063 }
6064 }
6065 }
6066 }
6067 }
6068 }
6069 if (x3 == x7 && x1 == x2 && x0 == x6) {
6070 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4);
6071 for (int i4 = 0; i4 != x4.size(); ++i4) {
6072 for (int i5 = 0; i5 != x5.size(); ++i5) {
6073 for (int i7 = 0; i7 != x7.size(); ++i7) {
6074 for (int i2 = 0; i2 != x2.size(); ++i2) {
6075 for (int i6 = 0; i6 != x6.size(); ++i6) {
6076 odata[i6+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6077 += (2.0) * i0data[i5+x5.size()*(i4)] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6078 }
6079 }
6080 }
6081 }
6082 }
6083 }
6084 if (x3 == x7 && x1 == x4 && x0 == x6) {
6085 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2);
6086 for (int i2 = 0; i2 != x2.size(); ++i2) {
6087 for (int i5 = 0; i5 != x5.size(); ++i5) {
6088 for (int i7 = 0; i7 != x7.size(); ++i7) {
6089 for (int i4 = 0; i4 != x4.size(); ++i4) {
6090 for (int i6 = 0; i6 != x6.size(); ++i6) {
6091 odata[i6+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6092 += (-1.0) * i0data[i5+x5.size()*(i2)] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6093 }
6094 }
6095 }
6096 }
6097 }
6098 }
6099 if (x3 == x7 && x0 == x6) {
6100 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x1, x2);
6101 for (int i2 = 0; i2 != x2.size(); ++i2) {
6102 for (int i1 = 0; i1 != x1.size(); ++i1) {
6103 for (int i4 = 0; i4 != x4.size(); ++i4) {
6104 for (int i5 = 0; i5 != x5.size(); ++i5) {
6105 for (int i7 = 0; i7 != x7.size(); ++i7) {
6106 for (int i6 = 0; i6 != x6.size(); ++i6) {
6107 odata[i6+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6108 += (-1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6109 }
6110 }
6111 }
6112 }
6113 }
6114 }
6115 }
6116 if (x3 == x6 && x1 == x2 && x0 == x7) {
6117 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4);
6118 for (int i4 = 0; i4 != x4.size(); ++i4) {
6119 for (int i5 = 0; i5 != x5.size(); ++i5) {
6120 for (int i6 = 0; i6 != x6.size(); ++i6) {
6121 for (int i2 = 0; i2 != x2.size(); ++i2) {
6122 for (int i7 = 0; i7 != x7.size(); ++i7) {
6123 odata[i7+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6124 += (-4.0) * i0data[i5+x5.size()*(i4)] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6125 }
6126 }
6127 }
6128 }
6129 }
6130 }
6131 if (x3 == x6 && x1 == x4 && x0 == x7) {
6132 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x2);
6133 for (int i2 = 0; i2 != x2.size(); ++i2) {
6134 for (int i5 = 0; i5 != x5.size(); ++i5) {
6135 for (int i6 = 0; i6 != x6.size(); ++i6) {
6136 for (int i4 = 0; i4 != x4.size(); ++i4) {
6137 for (int i7 = 0; i7 != x7.size(); ++i7) {
6138 odata[i7+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6139 += (2.0) * i0data[i5+x5.size()*(i2)] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6140 }
6141 }
6142 }
6143 }
6144 }
6145 }
6146 if (x3 == x6 && x0 == x7) {
6147 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x1, x2);
6148 for (int i2 = 0; i2 != x2.size(); ++i2) {
6149 for (int i1 = 0; i1 != x1.size(); ++i1) {
6150 for (int i4 = 0; i4 != x4.size(); ++i4) {
6151 for (int i5 = 0; i5 != x5.size(); ++i5) {
6152 for (int i6 = 0; i6 != x6.size(); ++i6) {
6153 for (int i7 = 0; i7 != x7.size(); ++i7) {
6154 odata[i7+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6155 += (2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6156 }
6157 }
6158 }
6159 }
6160 }
6161 }
6162 }
6163 if (x3 == x7 && x1 == x6) {
6164 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x0, x2);
6165 for (int i2 = 0; i2 != x2.size(); ++i2) {
6166 for (int i0 = 0; i0 != x0.size(); ++i0) {
6167 for (int i4 = 0; i4 != x4.size(); ++i4) {
6168 for (int i5 = 0; i5 != x5.size(); ++i5) {
6169 for (int i7 = 0; i7 != x7.size(); ++i7) {
6170 for (int i6 = 0; i6 != x6.size(); ++i6) {
6171 odata[i0+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
6172 += (2.0) * i0data[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6173 }
6174 }
6175 }
6176 }
6177 }
6178 }
6179 }
6180 if (x3 == x6 && x1 == x7) {
6181 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x4, x0, x2);
6182 for (int i2 = 0; i2 != x2.size(); ++i2) {
6183 for (int i0 = 0; i0 != x0.size(); ++i0) {
6184 for (int i4 = 0; i4 != x4.size(); ++i4) {
6185 for (int i5 = 0; i5 != x5.size(); ++i5) {
6186 for (int i6 = 0; i6 != x6.size(); ++i6) {
6187 for (int i7 = 0; i7 != x7.size(); ++i7) {
6188 odata[i0+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
6189 += (-1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6190 }
6191 }
6192 }
6193 }
6194 }
6195 }
6196 }
6197 // rdm0 merged case
6198 if (x3 == x6 && x1 == x4 && x0 == x2 && x5 == x7) {
6199 std::unique_ptr<double[]> i0data = in(0)->get_block();
6200 for (int i6 = 0; i6 != x6.size(); ++i6) {
6201 for (int i4 = 0; i4 != x4.size(); ++i4) {
6202 for (int i2 = 0; i2 != x2.size(); ++i2) {
6203 for (int i7 = 0; i7 != x7.size(); ++i7) {
6204 odata[i2+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))] += 2.0 * i0data[0] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6205 }
6206 }
6207 }
6208 }
6209 }
6210 if (x0 == x2 && x1 == x4 && x3 == x6) {
6211 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x7);
6212 for (int i7 = 0; i7 != x7.size(); ++i7) {
6213 for (int i5 = 0; i5 != x5.size(); ++i5) {
6214 for (int i2 = 0; i2 != x2.size(); ++i2) {
6215 for (int i4 = 0; i4 != x4.size(); ++i4) {
6216 for (int i6 = 0; i6 != x6.size(); ++i6) {
6217 odata[i2+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6218 += (-1.0) * i0data[i5+x5.size()*(i7)] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6219 }
6220 }
6221 }
6222 }
6223 }
6224 }
6225 // rdm0 merged case
6226 if (x3 == x7 && x1 == x4 && x0 == x2 && x5 == x6) {
6227 std::unique_ptr<double[]> i0data = in(0)->get_block();
6228 for (int i7 = 0; i7 != x7.size(); ++i7) {
6229 for (int i4 = 0; i4 != x4.size(); ++i4) {
6230 for (int i2 = 0; i2 != x2.size(); ++i2) {
6231 for (int i6 = 0; i6 != x6.size(); ++i6) {
6232 odata[i2+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))] += -4.0 * i0data[0] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6233 }
6234 }
6235 }
6236 }
6237 }
6238 if (x0 == x2 && x1 == x4 && x3 == x7) {
6239 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x6);
6240 for (int i6 = 0; i6 != x6.size(); ++i6) {
6241 for (int i5 = 0; i5 != x5.size(); ++i5) {
6242 for (int i2 = 0; i2 != x2.size(); ++i2) {
6243 for (int i4 = 0; i4 != x4.size(); ++i4) {
6244 for (int i7 = 0; i7 != x7.size(); ++i7) {
6245 odata[i2+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6246 += (2.0) * i0data[i5+x5.size()*(i6)] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6247 }
6248 }
6249 }
6250 }
6251 }
6252 }
6253 if (x0 == x2 && x1 == x4 && x5 == x6) {
6254 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x7);
6255 for (int i7 = 0; i7 != x7.size(); ++i7) {
6256 for (int i3 = 0; i3 != x3.size(); ++i3) {
6257 for (int i2 = 0; i2 != x2.size(); ++i2) {
6258 for (int i4 = 0; i4 != x4.size(); ++i4) {
6259 for (int i6 = 0; i6 != x6.size(); ++i6) {
6260 odata[i2+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6261 += (2.0) * i0data[i3+x3.size()*(i7)] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6262 }
6263 }
6264 }
6265 }
6266 }
6267 }
6268 if (x0 == x2 && x1 == x4 && x5 == x7) {
6269 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x6);
6270 for (int i6 = 0; i6 != x6.size(); ++i6) {
6271 for (int i3 = 0; i3 != x3.size(); ++i3) {
6272 for (int i2 = 0; i2 != x2.size(); ++i2) {
6273 for (int i4 = 0; i4 != x4.size(); ++i4) {
6274 for (int i7 = 0; i7 != x7.size(); ++i7) {
6275 odata[i2+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6276 += (-1.0) * i0data[i3+x3.size()*(i6)] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6277 }
6278 }
6279 }
6280 }
6281 }
6282 }
6283 // rdm0 merged case
6284 if (x0 == x2 && x1 == x6 && x3 == x4 && x5 == x7) {
6285 std::unique_ptr<double[]> i0data = in(0)->get_block();
6286 for (int i2 = 0; i2 != x2.size(); ++i2) {
6287 for (int i6 = 0; i6 != x6.size(); ++i6) {
6288 for (int i4 = 0; i4 != x4.size(); ++i4) {
6289 for (int i7 = 0; i7 != x7.size(); ++i7) {
6290 odata[i2+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))] += -4.0 * i0data[0] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6291 }
6292 }
6293 }
6294 }
6295 }
6296 if (x5 == x7 && x1 == x6 && x0 == x2) {
6297 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4);
6298 for (int i4 = 0; i4 != x4.size(); ++i4) {
6299 for (int i3 = 0; i3 != x3.size(); ++i3) {
6300 for (int i7 = 0; i7 != x7.size(); ++i7) {
6301 for (int i6 = 0; i6 != x6.size(); ++i6) {
6302 for (int i2 = 0; i2 != x2.size(); ++i2) {
6303 odata[i2+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
6304 += (2.0) * i0data[i3+x3.size()*(i4)] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6305 }
6306 }
6307 }
6308 }
6309 }
6310 }
6311 // rdm0 merged case
6312 if (x5 == x6 && x3 == x4 && x1 == x7 && x0 == x2) {
6313 std::unique_ptr<double[]> i0data = in(0)->get_block();
6314 for (int i6 = 0; i6 != x6.size(); ++i6) {
6315 for (int i4 = 0; i4 != x4.size(); ++i4) {
6316 for (int i7 = 0; i7 != x7.size(); ++i7) {
6317 for (int i2 = 0; i2 != x2.size(); ++i2) {
6318 odata[i2+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))] += 2.0 * i0data[0] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6319 }
6320 }
6321 }
6322 }
6323 }
6324 if (x5 == x6 && x1 == x7 && x0 == x2) {
6325 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4);
6326 for (int i4 = 0; i4 != x4.size(); ++i4) {
6327 for (int i3 = 0; i3 != x3.size(); ++i3) {
6328 for (int i6 = 0; i6 != x6.size(); ++i6) {
6329 for (int i7 = 0; i7 != x7.size(); ++i7) {
6330 for (int i2 = 0; i2 != x2.size(); ++i2) {
6331 odata[i2+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
6332 += (-1.0) * i0data[i3+x3.size()*(i4)] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6333 }
6334 }
6335 }
6336 }
6337 }
6338 }
6339 if (x5 == x6 && x3 == x4 && x0 == x2) {
6340 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x7);
6341 for (int i7 = 0; i7 != x7.size(); ++i7) {
6342 for (int i1 = 0; i1 != x1.size(); ++i1) {
6343 for (int i6 = 0; i6 != x6.size(); ++i6) {
6344 for (int i4 = 0; i4 != x4.size(); ++i4) {
6345 for (int i2 = 0; i2 != x2.size(); ++i2) {
6346 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6347 += (-1.0) * i0data[i1+x1.size()*(i7)] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6348 }
6349 }
6350 }
6351 }
6352 }
6353 }
6354 if (x5 == x7 && x3 == x4 && x0 == x2) {
6355 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x6);
6356 for (int i6 = 0; i6 != x6.size(); ++i6) {
6357 for (int i1 = 0; i1 != x1.size(); ++i1) {
6358 for (int i7 = 0; i7 != x7.size(); ++i7) {
6359 for (int i4 = 0; i4 != x4.size(); ++i4) {
6360 for (int i2 = 0; i2 != x2.size(); ++i2) {
6361 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6362 += (2.0) * i0data[i1+x1.size()*(i6)] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6363 }
6364 }
6365 }
6366 }
6367 }
6368 }
6369 if (x5 == x7 && x3 == x6 && x0 == x2) {
6370 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x4);
6371 for (int i4 = 0; i4 != x4.size(); ++i4) {
6372 for (int i1 = 0; i1 != x1.size(); ++i1) {
6373 for (int i7 = 0; i7 != x7.size(); ++i7) {
6374 for (int i6 = 0; i6 != x6.size(); ++i6) {
6375 for (int i2 = 0; i2 != x2.size(); ++i2) {
6376 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6377 += (-1.0) * i0data[i1+x1.size()*(i4)] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6378 }
6379 }
6380 }
6381 }
6382 }
6383 }
6384 if (x3 == x6 && x0 == x2) {
6385 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x7, x5, x4);
6386 for (int i4 = 0; i4 != x4.size(); ++i4) {
6387 for (int i5 = 0; i5 != x5.size(); ++i5) {
6388 for (int i7 = 0; i7 != x7.size(); ++i7) {
6389 for (int i1 = 0; i1 != x1.size(); ++i1) {
6390 for (int i6 = 0; i6 != x6.size(); ++i6) {
6391 for (int i2 = 0; i2 != x2.size(); ++i2) {
6392 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6393 += (-1.0) * i0data[i1+x1.size()*(i7+x7.size()*(i5+x5.size()*(i4)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6394 }
6395 }
6396 }
6397 }
6398 }
6399 }
6400 }
6401 if (x5 == x6 && x3 == x7 && x0 == x2) {
6402 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x4);
6403 for (int i4 = 0; i4 != x4.size(); ++i4) {
6404 for (int i1 = 0; i1 != x1.size(); ++i1) {
6405 for (int i6 = 0; i6 != x6.size(); ++i6) {
6406 for (int i7 = 0; i7 != x7.size(); ++i7) {
6407 for (int i2 = 0; i2 != x2.size(); ++i2) {
6408 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6409 += (2.0) * i0data[i1+x1.size()*(i4)] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6410 }
6411 }
6412 }
6413 }
6414 }
6415 }
6416 if (x3 == x7 && x0 == x2) {
6417 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x6, x5, x4);
6418 for (int i4 = 0; i4 != x4.size(); ++i4) {
6419 for (int i5 = 0; i5 != x5.size(); ++i5) {
6420 for (int i6 = 0; i6 != x6.size(); ++i6) {
6421 for (int i1 = 0; i1 != x1.size(); ++i1) {
6422 for (int i7 = 0; i7 != x7.size(); ++i7) {
6423 for (int i2 = 0; i2 != x2.size(); ++i2) {
6424 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6425 += (2.0) * i0data[i1+x1.size()*(i6+x6.size()*(i5+x5.size()*(i4)))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6426 }
6427 }
6428 }
6429 }
6430 }
6431 }
6432 }
6433 if (x5 == x6 && x0 == x2) {
6434 std::unique_ptr<double[]> i0data = in(2)->get_block(x3, x7, x1, x4);
6435 for (int i4 = 0; i4 != x4.size(); ++i4) {
6436 for (int i1 = 0; i1 != x1.size(); ++i1) {
6437 for (int i7 = 0; i7 != x7.size(); ++i7) {
6438 for (int i3 = 0; i3 != x3.size(); ++i3) {
6439 for (int i6 = 0; i6 != x6.size(); ++i6) {
6440 for (int i2 = 0; i2 != x2.size(); ++i2) {
6441 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6442 += (-1.0) * i0data[i3+x3.size()*(i7+x7.size()*(i1+x1.size()*(i4)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6443 }
6444 }
6445 }
6446 }
6447 }
6448 }
6449 }
6450 if (x5 == x7 && x0 == x2) {
6451 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x6, x3, x4);
6452 for (int i4 = 0; i4 != x4.size(); ++i4) {
6453 for (int i3 = 0; i3 != x3.size(); ++i3) {
6454 for (int i6 = 0; i6 != x6.size(); ++i6) {
6455 for (int i1 = 0; i1 != x1.size(); ++i1) {
6456 for (int i7 = 0; i7 != x7.size(); ++i7) {
6457 for (int i2 = 0; i2 != x2.size(); ++i2) {
6458 odata[i2+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6459 += (-1.0) * i0data[i1+x1.size()*(i6+x6.size()*(i3+x3.size()*(i4)))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6460 }
6461 }
6462 }
6463 }
6464 }
6465 }
6466 }
6467 // rdm0 merged case
6468 if (x5 == x7 && x3 == x6 && x1 == x2 && x0 == x4) {
6469 std::unique_ptr<double[]> i0data = in(0)->get_block();
6470 for (int i7 = 0; i7 != x7.size(); ++i7) {
6471 for (int i6 = 0; i6 != x6.size(); ++i6) {
6472 for (int i2 = 0; i2 != x2.size(); ++i2) {
6473 for (int i4 = 0; i4 != x4.size(); ++i4) {
6474 odata[i4+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))] += -4.0 * i0data[0] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6475 }
6476 }
6477 }
6478 }
6479 }
6480 if (x3 == x6 && x1 == x2 && x0 == x4) {
6481 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x7);
6482 for (int i7 = 0; i7 != x7.size(); ++i7) {
6483 for (int i5 = 0; i5 != x5.size(); ++i5) {
6484 for (int i6 = 0; i6 != x6.size(); ++i6) {
6485 for (int i2 = 0; i2 != x2.size(); ++i2) {
6486 for (int i4 = 0; i4 != x4.size(); ++i4) {
6487 odata[i4+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6488 += (2.0) * i0data[i5+x5.size()*(i7)] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6489 }
6490 }
6491 }
6492 }
6493 }
6494 }
6495 // rdm0 merged case
6496 if (x5 == x6 && x3 == x7 && x1 == x2 && x0 == x4) {
6497 std::unique_ptr<double[]> i0data = in(0)->get_block();
6498 for (int i6 = 0; i6 != x6.size(); ++i6) {
6499 for (int i7 = 0; i7 != x7.size(); ++i7) {
6500 for (int i2 = 0; i2 != x2.size(); ++i2) {
6501 for (int i4 = 0; i4 != x4.size(); ++i4) {
6502 odata[i4+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))] += 2.0 * i0data[0] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6503 }
6504 }
6505 }
6506 }
6507 }
6508 if (x3 == x7 && x1 == x2 && x0 == x4) {
6509 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x6);
6510 for (int i6 = 0; i6 != x6.size(); ++i6) {
6511 for (int i5 = 0; i5 != x5.size(); ++i5) {
6512 for (int i7 = 0; i7 != x7.size(); ++i7) {
6513 for (int i2 = 0; i2 != x2.size(); ++i2) {
6514 for (int i4 = 0; i4 != x4.size(); ++i4) {
6515 odata[i4+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6516 += (-1.0) * i0data[i5+x5.size()*(i6)] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6517 }
6518 }
6519 }
6520 }
6521 }
6522 }
6523 if (x5 == x6 && x1 == x2 && x0 == x4) {
6524 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x7);
6525 for (int i7 = 0; i7 != x7.size(); ++i7) {
6526 for (int i3 = 0; i3 != x3.size(); ++i3) {
6527 for (int i6 = 0; i6 != x6.size(); ++i6) {
6528 for (int i2 = 0; i2 != x2.size(); ++i2) {
6529 for (int i4 = 0; i4 != x4.size(); ++i4) {
6530 odata[i4+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6531 += (-1.0) * i0data[i3+x3.size()*(i7)] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6532 }
6533 }
6534 }
6535 }
6536 }
6537 }
6538 if (x5 == x7 && x1 == x2 && x0 == x4) {
6539 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x6);
6540 for (int i6 = 0; i6 != x6.size(); ++i6) {
6541 for (int i3 = 0; i3 != x3.size(); ++i3) {
6542 for (int i7 = 0; i7 != x7.size(); ++i7) {
6543 for (int i2 = 0; i2 != x2.size(); ++i2) {
6544 for (int i4 = 0; i4 != x4.size(); ++i4) {
6545 odata[i4+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6546 += (2.0) * i0data[i3+x3.size()*(i6)] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6547 }
6548 }
6549 }
6550 }
6551 }
6552 }
6553 if (x5 == x7 && x1 == x6 && x0 == x4) {
6554 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x2);
6555 for (int i2 = 0; i2 != x2.size(); ++i2) {
6556 for (int i3 = 0; i3 != x3.size(); ++i3) {
6557 for (int i7 = 0; i7 != x7.size(); ++i7) {
6558 for (int i6 = 0; i6 != x6.size(); ++i6) {
6559 for (int i4 = 0; i4 != x4.size(); ++i4) {
6560 odata[i4+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
6561 += (-4.0) * i0data[i3+x3.size()*(i2)] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6562 }
6563 }
6564 }
6565 }
6566 }
6567 }
6568 if (x5 == x6 && x1 == x7 && x0 == x4) {
6569 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x2);
6570 for (int i2 = 0; i2 != x2.size(); ++i2) {
6571 for (int i3 = 0; i3 != x3.size(); ++i3) {
6572 for (int i6 = 0; i6 != x6.size(); ++i6) {
6573 for (int i7 = 0; i7 != x7.size(); ++i7) {
6574 for (int i4 = 0; i4 != x4.size(); ++i4) {
6575 odata[i4+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
6576 += (2.0) * i0data[i3+x3.size()*(i2)] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6577 }
6578 }
6579 }
6580 }
6581 }
6582 }
6583 if (x5 == x7 && x3 == x6 && x0 == x4) {
6584 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
6585 for (int i2 = 0; i2 != x2.size(); ++i2) {
6586 for (int i1 = 0; i1 != x1.size(); ++i1) {
6587 for (int i7 = 0; i7 != x7.size(); ++i7) {
6588 for (int i6 = 0; i6 != x6.size(); ++i6) {
6589 for (int i4 = 0; i4 != x4.size(); ++i4) {
6590 odata[i4+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6591 += (2.0) * i0data[i1+x1.size()*(i2)] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6592 }
6593 }
6594 }
6595 }
6596 }
6597 }
6598 if (x3 == x6 && x0 == x4) {
6599 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x7, x1, x2);
6600 for (int i2 = 0; i2 != x2.size(); ++i2) {
6601 for (int i1 = 0; i1 != x1.size(); ++i1) {
6602 for (int i7 = 0; i7 != x7.size(); ++i7) {
6603 for (int i5 = 0; i5 != x5.size(); ++i5) {
6604 for (int i6 = 0; i6 != x6.size(); ++i6) {
6605 for (int i4 = 0; i4 != x4.size(); ++i4) {
6606 odata[i4+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6607 += (-1.0) * i0data[i5+x5.size()*(i7+x7.size()*(i1+x1.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6608 }
6609 }
6610 }
6611 }
6612 }
6613 }
6614 }
6615 if (x5 == x6 && x3 == x7 && x0 == x4) {
6616 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
6617 for (int i2 = 0; i2 != x2.size(); ++i2) {
6618 for (int i1 = 0; i1 != x1.size(); ++i1) {
6619 for (int i6 = 0; i6 != x6.size(); ++i6) {
6620 for (int i7 = 0; i7 != x7.size(); ++i7) {
6621 for (int i4 = 0; i4 != x4.size(); ++i4) {
6622 odata[i4+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6623 += (-1.0) * i0data[i1+x1.size()*(i2)] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6624 }
6625 }
6626 }
6627 }
6628 }
6629 }
6630 if (x3 == x7 && x0 == x4) {
6631 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x6, x5, x2);
6632 for (int i2 = 0; i2 != x2.size(); ++i2) {
6633 for (int i5 = 0; i5 != x5.size(); ++i5) {
6634 for (int i6 = 0; i6 != x6.size(); ++i6) {
6635 for (int i1 = 0; i1 != x1.size(); ++i1) {
6636 for (int i7 = 0; i7 != x7.size(); ++i7) {
6637 for (int i4 = 0; i4 != x4.size(); ++i4) {
6638 odata[i4+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6639 += (-1.0) * i0data[i1+x1.size()*(i6+x6.size()*(i5+x5.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6640 }
6641 }
6642 }
6643 }
6644 }
6645 }
6646 }
6647 if (x5 == x6 && x0 == x4) {
6648 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x7, x3, x2);
6649 for (int i2 = 0; i2 != x2.size(); ++i2) {
6650 for (int i3 = 0; i3 != x3.size(); ++i3) {
6651 for (int i7 = 0; i7 != x7.size(); ++i7) {
6652 for (int i1 = 0; i1 != x1.size(); ++i1) {
6653 for (int i6 = 0; i6 != x6.size(); ++i6) {
6654 for (int i4 = 0; i4 != x4.size(); ++i4) {
6655 odata[i4+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6656 += (-1.0) * i0data[i1+x1.size()*(i7+x7.size()*(i3+x3.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6657 }
6658 }
6659 }
6660 }
6661 }
6662 }
6663 }
6664 if (x5 == x7 && x0 == x4) {
6665 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x6, x3, x2);
6666 for (int i2 = 0; i2 != x2.size(); ++i2) {
6667 for (int i3 = 0; i3 != x3.size(); ++i3) {
6668 for (int i6 = 0; i6 != x6.size(); ++i6) {
6669 for (int i1 = 0; i1 != x1.size(); ++i1) {
6670 for (int i7 = 0; i7 != x7.size(); ++i7) {
6671 for (int i4 = 0; i4 != x4.size(); ++i4) {
6672 odata[i4+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6673 += (2.0) * i0data[i1+x1.size()*(i6+x6.size()*(i3+x3.size()*(i2)))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6674 }
6675 }
6676 }
6677 }
6678 }
6679 }
6680 }
6681 // rdm0 merged case
6682 if (x5 == x7 && x3 == x4 && x1 == x2 && x0 == x6) {
6683 std::unique_ptr<double[]> i0data = in(0)->get_block();
6684 for (int i7 = 0; i7 != x7.size(); ++i7) {
6685 for (int i4 = 0; i4 != x4.size(); ++i4) {
6686 for (int i2 = 0; i2 != x2.size(); ++i2) {
6687 for (int i6 = 0; i6 != x6.size(); ++i6) {
6688 odata[i6+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))] += 2.0 * i0data[0] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6689 }
6690 }
6691 }
6692 }
6693 }
6694 if (x5 == x7 && x1 == x2 && x0 == x6) {
6695 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4);
6696 for (int i4 = 0; i4 != x4.size(); ++i4) {
6697 for (int i3 = 0; i3 != x3.size(); ++i3) {
6698 for (int i7 = 0; i7 != x7.size(); ++i7) {
6699 for (int i2 = 0; i2 != x2.size(); ++i2) {
6700 for (int i6 = 0; i6 != x6.size(); ++i6) {
6701 odata[i6+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6702 += (-1.0) * i0data[i3+x3.size()*(i4)] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6703 }
6704 }
6705 }
6706 }
6707 }
6708 }
6709 if (x5 == x7 && x1 == x4 && x0 == x6) {
6710 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x2);
6711 for (int i2 = 0; i2 != x2.size(); ++i2) {
6712 for (int i3 = 0; i3 != x3.size(); ++i3) {
6713 for (int i7 = 0; i7 != x7.size(); ++i7) {
6714 for (int i4 = 0; i4 != x4.size(); ++i4) {
6715 for (int i6 = 0; i6 != x6.size(); ++i6) {
6716 odata[i6+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6717 += (2.0) * i0data[i3+x3.size()*(i2)] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6718 }
6719 }
6720 }
6721 }
6722 }
6723 }
6724 if (x5 == x7 && x3 == x4 && x0 == x6) {
6725 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
6726 for (int i2 = 0; i2 != x2.size(); ++i2) {
6727 for (int i1 = 0; i1 != x1.size(); ++i1) {
6728 for (int i7 = 0; i7 != x7.size(); ++i7) {
6729 for (int i4 = 0; i4 != x4.size(); ++i4) {
6730 for (int i6 = 0; i6 != x6.size(); ++i6) {
6731 odata[i6+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6732 += (-1.0) * i0data[i1+x1.size()*(i2)] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6733 }
6734 }
6735 }
6736 }
6737 }
6738 }
6739 if (x5 == x7 && x0 == x6) {
6740 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x4, x3, x2);
6741 for (int i2 = 0; i2 != x2.size(); ++i2) {
6742 for (int i3 = 0; i3 != x3.size(); ++i3) {
6743 for (int i4 = 0; i4 != x4.size(); ++i4) {
6744 for (int i1 = 0; i1 != x1.size(); ++i1) {
6745 for (int i7 = 0; i7 != x7.size(); ++i7) {
6746 for (int i6 = 0; i6 != x6.size(); ++i6) {
6747 odata[i6+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6748 += (-1.0) * i0data[i1+x1.size()*(i4+x4.size()*(i3+x3.size()*(i2)))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6749 }
6750 }
6751 }
6752 }
6753 }
6754 }
6755 }
6756 // rdm0 merged case
6757 if (x5 == x6 && x3 == x4 && x1 == x2 && x0 == x7) {
6758 std::unique_ptr<double[]> i0data = in(0)->get_block();
6759 for (int i6 = 0; i6 != x6.size(); ++i6) {
6760 for (int i4 = 0; i4 != x4.size(); ++i4) {
6761 for (int i2 = 0; i2 != x2.size(); ++i2) {
6762 for (int i7 = 0; i7 != x7.size(); ++i7) {
6763 odata[i7+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))] += -4.0 * i0data[0] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6764 }
6765 }
6766 }
6767 }
6768 }
6769 if (x5 == x6 && x1 == x2 && x0 == x7) {
6770 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x4);
6771 for (int i4 = 0; i4 != x4.size(); ++i4) {
6772 for (int i3 = 0; i3 != x3.size(); ++i3) {
6773 for (int i6 = 0; i6 != x6.size(); ++i6) {
6774 for (int i2 = 0; i2 != x2.size(); ++i2) {
6775 for (int i7 = 0; i7 != x7.size(); ++i7) {
6776 odata[i7+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6777 += (2.0) * i0data[i3+x3.size()*(i4)] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6778 }
6779 }
6780 }
6781 }
6782 }
6783 }
6784 if (x5 == x6 && x1 == x4 && x0 == x7) {
6785 std::unique_ptr<double[]> i0data = in(1)->get_block(x3, x2);
6786 for (int i2 = 0; i2 != x2.size(); ++i2) {
6787 for (int i3 = 0; i3 != x3.size(); ++i3) {
6788 for (int i6 = 0; i6 != x6.size(); ++i6) {
6789 for (int i4 = 0; i4 != x4.size(); ++i4) {
6790 for (int i7 = 0; i7 != x7.size(); ++i7) {
6791 odata[i7+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6792 += (-4.0) * i0data[i3+x3.size()*(i2)] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6793 }
6794 }
6795 }
6796 }
6797 }
6798 }
6799 if (x5 == x6 && x3 == x4 && x0 == x7) {
6800 std::unique_ptr<double[]> i0data = in(1)->get_block(x1, x2);
6801 for (int i2 = 0; i2 != x2.size(); ++i2) {
6802 for (int i1 = 0; i1 != x1.size(); ++i1) {
6803 for (int i6 = 0; i6 != x6.size(); ++i6) {
6804 for (int i4 = 0; i4 != x4.size(); ++i4) {
6805 for (int i7 = 0; i7 != x7.size(); ++i7) {
6806 odata[i7+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6807 += (2.0) * i0data[i1+x1.size()*(i2)] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6808 }
6809 }
6810 }
6811 }
6812 }
6813 }
6814 if (x5 == x6 && x0 == x7) {
6815 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x4, x3, x2);
6816 for (int i2 = 0; i2 != x2.size(); ++i2) {
6817 for (int i3 = 0; i3 != x3.size(); ++i3) {
6818 for (int i4 = 0; i4 != x4.size(); ++i4) {
6819 for (int i1 = 0; i1 != x1.size(); ++i1) {
6820 for (int i6 = 0; i6 != x6.size(); ++i6) {
6821 for (int i7 = 0; i7 != x7.size(); ++i7) {
6822 odata[i7+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
6823 += (2.0) * i0data[i1+x1.size()*(i4+x4.size()*(i3+x3.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6824 }
6825 }
6826 }
6827 }
6828 }
6829 }
6830 }
6831 if (x5 == x6 && x3 == x4 && x1 == x2) {
6832 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x7);
6833 for (int i7 = 0; i7 != x7.size(); ++i7) {
6834 for (int i0 = 0; i0 != x0.size(); ++i0) {
6835 for (int i6 = 0; i6 != x6.size(); ++i6) {
6836 for (int i4 = 0; i4 != x4.size(); ++i4) {
6837 for (int i2 = 0; i2 != x2.size(); ++i2) {
6838 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6839 += (2.0) * i0data[i0+x0.size()*(i7)] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6840 }
6841 }
6842 }
6843 }
6844 }
6845 }
6846 if (x5 == x7 && x3 == x4 && x1 == x2) {
6847 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x6);
6848 for (int i6 = 0; i6 != x6.size(); ++i6) {
6849 for (int i0 = 0; i0 != x0.size(); ++i0) {
6850 for (int i7 = 0; i7 != x7.size(); ++i7) {
6851 for (int i4 = 0; i4 != x4.size(); ++i4) {
6852 for (int i2 = 0; i2 != x2.size(); ++i2) {
6853 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6854 += (-1.0) * i0data[i0+x0.size()*(i6)] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
6855 }
6856 }
6857 }
6858 }
6859 }
6860 }
6861 if (x5 == x7 && x3 == x6 && x1 == x2) {
6862 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x4);
6863 for (int i4 = 0; i4 != x4.size(); ++i4) {
6864 for (int i0 = 0; i0 != x0.size(); ++i0) {
6865 for (int i7 = 0; i7 != x7.size(); ++i7) {
6866 for (int i6 = 0; i6 != x6.size(); ++i6) {
6867 for (int i2 = 0; i2 != x2.size(); ++i2) {
6868 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6869 += (2.0) * i0data[i0+x0.size()*(i4)] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6870 }
6871 }
6872 }
6873 }
6874 }
6875 }
6876 if (x3 == x6 && x1 == x2) {
6877 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x7, x5, x4);
6878 for (int i4 = 0; i4 != x4.size(); ++i4) {
6879 for (int i5 = 0; i5 != x5.size(); ++i5) {
6880 for (int i7 = 0; i7 != x7.size(); ++i7) {
6881 for (int i0 = 0; i0 != x0.size(); ++i0) {
6882 for (int i6 = 0; i6 != x6.size(); ++i6) {
6883 for (int i2 = 0; i2 != x2.size(); ++i2) {
6884 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6885 += (2.0) * i0data[i0+x0.size()*(i7+x7.size()*(i5+x5.size()*(i4)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6886 }
6887 }
6888 }
6889 }
6890 }
6891 }
6892 }
6893 if (x5 == x6 && x3 == x7 && x1 == x2) {
6894 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x4);
6895 for (int i4 = 0; i4 != x4.size(); ++i4) {
6896 for (int i0 = 0; i0 != x0.size(); ++i0) {
6897 for (int i6 = 0; i6 != x6.size(); ++i6) {
6898 for (int i7 = 0; i7 != x7.size(); ++i7) {
6899 for (int i2 = 0; i2 != x2.size(); ++i2) {
6900 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6901 += (-1.0) * i0data[i0+x0.size()*(i4)] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6902 }
6903 }
6904 }
6905 }
6906 }
6907 }
6908 if (x3 == x7 && x1 == x2) {
6909 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x6, x5, x4);
6910 for (int i4 = 0; i4 != x4.size(); ++i4) {
6911 for (int i5 = 0; i5 != x5.size(); ++i5) {
6912 for (int i6 = 0; i6 != x6.size(); ++i6) {
6913 for (int i0 = 0; i0 != x0.size(); ++i0) {
6914 for (int i7 = 0; i7 != x7.size(); ++i7) {
6915 for (int i2 = 0; i2 != x2.size(); ++i2) {
6916 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6917 += (-1.0) * i0data[i0+x0.size()*(i6+x6.size()*(i5+x5.size()*(i4)))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
6918 }
6919 }
6920 }
6921 }
6922 }
6923 }
6924 }
6925 if (x5 == x6 && x1 == x2) {
6926 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x7, x3, x4);
6927 for (int i4 = 0; i4 != x4.size(); ++i4) {
6928 for (int i3 = 0; i3 != x3.size(); ++i3) {
6929 for (int i7 = 0; i7 != x7.size(); ++i7) {
6930 for (int i0 = 0; i0 != x0.size(); ++i0) {
6931 for (int i6 = 0; i6 != x6.size(); ++i6) {
6932 for (int i2 = 0; i2 != x2.size(); ++i2) {
6933 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6934 += (-1.0) * i0data[i0+x0.size()*(i7+x7.size()*(i3+x3.size()*(i4)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6935 }
6936 }
6937 }
6938 }
6939 }
6940 }
6941 }
6942 if (x5 == x7 && x1 == x2) {
6943 std::unique_ptr<double[]> i0data = in(2)->get_block(x3, x6, x0, x4);
6944 for (int i4 = 0; i4 != x4.size(); ++i4) {
6945 for (int i0 = 0; i0 != x0.size(); ++i0) {
6946 for (int i6 = 0; i6 != x6.size(); ++i6) {
6947 for (int i3 = 0; i3 != x3.size(); ++i3) {
6948 for (int i7 = 0; i7 != x7.size(); ++i7) {
6949 for (int i2 = 0; i2 != x2.size(); ++i2) {
6950 odata[i0+x0.size()*(i7+x7.size()*(i2+x1.size()*(i6)))]
6951 += (-1.0) * i0data[i3+x3.size()*(i6+x6.size()*(i0+x0.size()*(i4)))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
6952 }
6953 }
6954 }
6955 }
6956 }
6957 }
6958 }
6959 if (x5 == x7 && x3 == x6 && x1 == x4) {
6960 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
6961 for (int i2 = 0; i2 != x2.size(); ++i2) {
6962 for (int i0 = 0; i0 != x0.size(); ++i0) {
6963 for (int i7 = 0; i7 != x7.size(); ++i7) {
6964 for (int i6 = 0; i6 != x6.size(); ++i6) {
6965 for (int i4 = 0; i4 != x4.size(); ++i4) {
6966 odata[i0+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6967 += (-1.0) * i0data[i0+x0.size()*(i2)] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6968 }
6969 }
6970 }
6971 }
6972 }
6973 }
6974 if (x3 == x6 && x1 == x4) {
6975 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x7, x5, x2);
6976 for (int i2 = 0; i2 != x2.size(); ++i2) {
6977 for (int i5 = 0; i5 != x5.size(); ++i5) {
6978 for (int i7 = 0; i7 != x7.size(); ++i7) {
6979 for (int i0 = 0; i0 != x0.size(); ++i0) {
6980 for (int i6 = 0; i6 != x6.size(); ++i6) {
6981 for (int i4 = 0; i4 != x4.size(); ++i4) {
6982 odata[i0+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6983 += (-1.0) * i0data[i0+x0.size()*(i7+x7.size()*(i5+x5.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
6984 }
6985 }
6986 }
6987 }
6988 }
6989 }
6990 }
6991 if (x5 == x6 && x3 == x7 && x1 == x4) {
6992 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
6993 for (int i2 = 0; i2 != x2.size(); ++i2) {
6994 for (int i0 = 0; i0 != x0.size(); ++i0) {
6995 for (int i6 = 0; i6 != x6.size(); ++i6) {
6996 for (int i7 = 0; i7 != x7.size(); ++i7) {
6997 for (int i4 = 0; i4 != x4.size(); ++i4) {
6998 odata[i0+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
6999 += (2.0) * i0data[i0+x0.size()*(i2)] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
7000 }
7001 }
7002 }
7003 }
7004 }
7005 }
7006 if (x3 == x7 && x1 == x4) {
7007 std::unique_ptr<double[]> i0data = in(2)->get_block(x5, x6, x0, x2);
7008 for (int i2 = 0; i2 != x2.size(); ++i2) {
7009 for (int i0 = 0; i0 != x0.size(); ++i0) {
7010 for (int i6 = 0; i6 != x6.size(); ++i6) {
7011 for (int i5 = 0; i5 != x5.size(); ++i5) {
7012 for (int i7 = 0; i7 != x7.size(); ++i7) {
7013 for (int i4 = 0; i4 != x4.size(); ++i4) {
7014 odata[i0+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
7015 += (-1.0) * i0data[i5+x5.size()*(i6+x6.size()*(i0+x0.size()*(i2)))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
7016 }
7017 }
7018 }
7019 }
7020 }
7021 }
7022 }
7023 if (x5 == x6 && x1 == x4) {
7024 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x7, x3, x2);
7025 for (int i2 = 0; i2 != x2.size(); ++i2) {
7026 for (int i3 = 0; i3 != x3.size(); ++i3) {
7027 for (int i7 = 0; i7 != x7.size(); ++i7) {
7028 for (int i0 = 0; i0 != x0.size(); ++i0) {
7029 for (int i6 = 0; i6 != x6.size(); ++i6) {
7030 for (int i4 = 0; i4 != x4.size(); ++i4) {
7031 odata[i0+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
7032 += (2.0) * i0data[i0+x0.size()*(i7+x7.size()*(i3+x3.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7033 }
7034 }
7035 }
7036 }
7037 }
7038 }
7039 }
7040 if (x5 == x7 && x1 == x4) {
7041 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x6, x3, x2);
7042 for (int i2 = 0; i2 != x2.size(); ++i2) {
7043 for (int i3 = 0; i3 != x3.size(); ++i3) {
7044 for (int i6 = 0; i6 != x6.size(); ++i6) {
7045 for (int i0 = 0; i0 != x0.size(); ++i0) {
7046 for (int i7 = 0; i7 != x7.size(); ++i7) {
7047 for (int i4 = 0; i4 != x4.size(); ++i4) {
7048 odata[i0+x0.size()*(i7+x7.size()*(i4+x1.size()*(i6)))]
7049 += (-1.0) * i0data[i0+x0.size()*(i6+x6.size()*(i3+x3.size()*(i2)))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7050 }
7051 }
7052 }
7053 }
7054 }
7055 }
7056 }
7057 if (x5 == x7 && x3 == x4 && x1 == x6) {
7058 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
7059 for (int i2 = 0; i2 != x2.size(); ++i2) {
7060 for (int i0 = 0; i0 != x0.size(); ++i0) {
7061 for (int i7 = 0; i7 != x7.size(); ++i7) {
7062 for (int i4 = 0; i4 != x4.size(); ++i4) {
7063 for (int i6 = 0; i6 != x6.size(); ++i6) {
7064 odata[i0+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
7065 += (2.0) * i0data[i0+x0.size()*(i2)] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
7066 }
7067 }
7068 }
7069 }
7070 }
7071 }
7072 if (x5 == x7 && x1 == x6) {
7073 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x4, x3, x2);
7074 for (int i2 = 0; i2 != x2.size(); ++i2) {
7075 for (int i3 = 0; i3 != x3.size(); ++i3) {
7076 for (int i4 = 0; i4 != x4.size(); ++i4) {
7077 for (int i0 = 0; i0 != x0.size(); ++i0) {
7078 for (int i7 = 0; i7 != x7.size(); ++i7) {
7079 for (int i6 = 0; i6 != x6.size(); ++i6) {
7080 odata[i0+x0.size()*(i7+x7.size()*(i6+x1.size()*(i6)))]
7081 += (2.0) * i0data[i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i2)))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7082 }
7083 }
7084 }
7085 }
7086 }
7087 }
7088 }
7089 if (x5 == x6 && x3 == x4 && x1 == x7) {
7090 std::unique_ptr<double[]> i0data = in(1)->get_block(x0, x2);
7091 for (int i2 = 0; i2 != x2.size(); ++i2) {
7092 for (int i0 = 0; i0 != x0.size(); ++i0) {
7093 for (int i6 = 0; i6 != x6.size(); ++i6) {
7094 for (int i4 = 0; i4 != x4.size(); ++i4) {
7095 for (int i7 = 0; i7 != x7.size(); ++i7) {
7096 odata[i0+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
7097 += (-1.0) * i0data[i0+x0.size()*(i2)] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
7098 }
7099 }
7100 }
7101 }
7102 }
7103 }
7104 if (x5 == x6 && x1 == x7) {
7105 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x4, x3, x2);
7106 for (int i2 = 0; i2 != x2.size(); ++i2) {
7107 for (int i3 = 0; i3 != x3.size(); ++i3) {
7108 for (int i4 = 0; i4 != x4.size(); ++i4) {
7109 for (int i0 = 0; i0 != x0.size(); ++i0) {
7110 for (int i6 = 0; i6 != x6.size(); ++i6) {
7111 for (int i7 = 0; i7 != x7.size(); ++i7) {
7112 odata[i0+x0.size()*(i7+x7.size()*(i7+x1.size()*(i6)))]
7113 += (-1.0) * i0data[i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7114 }
7115 }
7116 }
7117 }
7118 }
7119 }
7120 }
7121 if (x5 == x6 && x3 == x4) {
7122 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x7, x1, x2);
7123 for (int i2 = 0; i2 != x2.size(); ++i2) {
7124 for (int i1 = 0; i1 != x1.size(); ++i1) {
7125 for (int i7 = 0; i7 != x7.size(); ++i7) {
7126 for (int i0 = 0; i0 != x0.size(); ++i0) {
7127 for (int i6 = 0; i6 != x6.size(); ++i6) {
7128 for (int i4 = 0; i4 != x4.size(); ++i4) {
7129 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7130 += (-1.0) * i0data[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
7131 }
7132 }
7133 }
7134 }
7135 }
7136 }
7137 }
7138 if (x5 == x7 && x3 == x4) {
7139 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x6, x0, x2);
7140 for (int i2 = 0; i2 != x2.size(); ++i2) {
7141 for (int i0 = 0; i0 != x0.size(); ++i0) {
7142 for (int i6 = 0; i6 != x6.size(); ++i6) {
7143 for (int i1 = 0; i1 != x1.size(); ++i1) {
7144 for (int i7 = 0; i7 != x7.size(); ++i7) {
7145 for (int i4 = 0; i4 != x4.size(); ++i4) {
7146 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7147 += (-1.0) * i0data[i1+x1.size()*(i6+x6.size()*(i0+x0.size()*(i2)))] * fdata[i7+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
7148 }
7149 }
7150 }
7151 }
7152 }
7153 }
7154 }
7155 if (x5 == x7 && x3 == x6) {
7156 std::unique_ptr<double[]> i0data = in(2)->get_block(x0, x4, x1, x2);
7157 for (int i2 = 0; i2 != x2.size(); ++i2) {
7158 for (int i1 = 0; i1 != x1.size(); ++i1) {
7159 for (int i4 = 0; i4 != x4.size(); ++i4) {
7160 for (int i0 = 0; i0 != x0.size(); ++i0) {
7161 for (int i7 = 0; i7 != x7.size(); ++i7) {
7162 for (int i6 = 0; i6 != x6.size(); ++i6) {
7163 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7164 += (-1.0) * i0data[i0+x0.size()*(i4+x4.size()*(i1+x1.size()*(i2)))] * fdata[i7+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
7165 }
7166 }
7167 }
7168 }
7169 }
7170 }
7171 }
7172 if (x3 == x6) {
7173 std::unique_ptr<double[]> i0data = in(3)->get_block(x0, x7, x5, x4, x1, x2);
7174 for (int i2 = 0; i2 != x2.size(); ++i2) {
7175 for (int i1 = 0; i1 != x1.size(); ++i1) {
7176 for (int i4 = 0; i4 != x4.size(); ++i4) {
7177 for (int i5 = 0; i5 != x5.size(); ++i5) {
7178 for (int i7 = 0; i7 != x7.size(); ++i7) {
7179 for (int i0 = 0; i0 != x0.size(); ++i0) {
7180 for (int i6 = 0; i6 != x6.size(); ++i6) {
7181 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7182 += (-1.0) * i0data[i0+x0.size()*(i7+x7.size()*(i5+x5.size()*(i4+x4.size()*(i1+x1.size()*(i2)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i6+x3.size()*(i2)))];
7183 }
7184 }
7185 }
7186 }
7187 }
7188 }
7189 }
7190 }
7191 if (x5 == x6 && x3 == x7) {
7192 std::unique_ptr<double[]> i0data = in(2)->get_block(x1, x4, x0, x2);
7193 for (int i2 = 0; i2 != x2.size(); ++i2) {
7194 for (int i0 = 0; i0 != x0.size(); ++i0) {
7195 for (int i4 = 0; i4 != x4.size(); ++i4) {
7196 for (int i1 = 0; i1 != x1.size(); ++i1) {
7197 for (int i6 = 0; i6 != x6.size(); ++i6) {
7198 for (int i7 = 0; i7 != x7.size(); ++i7) {
7199 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7200 += (-1.0) * i0data[i1+x1.size()*(i4+x4.size()*(i0+x0.size()*(i2)))] * fdata[i6+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
7201 }
7202 }
7203 }
7204 }
7205 }
7206 }
7207 }
7208 if (x3 == x7) {
7209 std::unique_ptr<double[]> i0data = in(3)->get_block(x1, x6, x5, x4, x0, x2);
7210 for (int i2 = 0; i2 != x2.size(); ++i2) {
7211 for (int i0 = 0; i0 != x0.size(); ++i0) {
7212 for (int i4 = 0; i4 != x4.size(); ++i4) {
7213 for (int i5 = 0; i5 != x5.size(); ++i5) {
7214 for (int i6 = 0; i6 != x6.size(); ++i6) {
7215 for (int i1 = 0; i1 != x1.size(); ++i1) {
7216 for (int i7 = 0; i7 != x7.size(); ++i7) {
7217 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7218 += (-1.0) * i0data[i1+x1.size()*(i6+x6.size()*(i5+x5.size()*(i4+x4.size()*(i0+x0.size()*(i2)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i7+x3.size()*(i2)))];
7219 }
7220 }
7221 }
7222 }
7223 }
7224 }
7225 }
7226 }
7227 if (x5 == x6) {
7228 std::unique_ptr<double[]> i0data = in(3)->get_block(x0, x7, x1, x4, x3, x2);
7229 for (int i2 = 0; i2 != x2.size(); ++i2) {
7230 for (int i3 = 0; i3 != x3.size(); ++i3) {
7231 for (int i4 = 0; i4 != x4.size(); ++i4) {
7232 for (int i1 = 0; i1 != x1.size(); ++i1) {
7233 for (int i7 = 0; i7 != x7.size(); ++i7) {
7234 for (int i0 = 0; i0 != x0.size(); ++i0) {
7235 for (int i6 = 0; i6 != x6.size(); ++i6) {
7236 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7237 += (-1.0) * i0data[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i4+x4.size()*(i3+x3.size()*(i2)))))] * fdata[i6+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7238 }
7239 }
7240 }
7241 }
7242 }
7243 }
7244 }
7245 }
7246 if (x5 == x7) {
7247 std::unique_ptr<double[]> i0data = in(3)->get_block(x1, x6, x0, x4, x3, x2);
7248 for (int i2 = 0; i2 != x2.size(); ++i2) {
7249 for (int i3 = 0; i3 != x3.size(); ++i3) {
7250 for (int i4 = 0; i4 != x4.size(); ++i4) {
7251 for (int i0 = 0; i0 != x0.size(); ++i0) {
7252 for (int i6 = 0; i6 != x6.size(); ++i6) {
7253 for (int i1 = 0; i1 != x1.size(); ++i1) {
7254 for (int i7 = 0; i7 != x7.size(); ++i7) {
7255 odata[i0+x0.size()*(i7+x7.size()*(i1+x1.size()*(i6)))]
7256 += (-1.0) * i0data[i1+x1.size()*(i6+x6.size()*(i0+x0.size()*(i4+x4.size()*(i3+x3.size()*(i2)))))] * fdata[i7+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7257 }
7258 }
7259 }
7260 }
7261 }
7262 }
7263 }
7264 }
7265 out()->add_block(odata, x0, x7, x1, x6);
7266 }
7267
compute()7268 void Task35::Task_local::compute() {
7269 const Index x1 = b(0);
7270 const Index x0 = b(1);
7271 // scalar
7272 // tensor label: Gamma102
7273 std::unique_ptr<double[]> odata(new double[out()->get_size()]);
7274 std::fill_n(odata.get(), out()->get_size(), 0.0);
7275 // associated with merged
7276 std::unique_ptr<double[]> fdata = in(1)->get_block(x1, x0);
7277 out()->add_block(odata);
7278 }
7279
compute()7280 void Task36::Task_local::compute() {
7281 const Index x3 = b(0);
7282 const Index x2 = b(1);
7283 const Index x1 = b(2);
7284 const Index x0 = b(3);
7285 // scalar
7286 // tensor label: Gamma104
7287 std::unique_ptr<double[]> odata(new double[out()->get_size()]);
7288 std::fill_n(odata.get(), out()->get_size(), 0.0);
7289 // associated with merged
7290 std::unique_ptr<double[]> fdata = in(2)->get_block(x3, x2, x1, x0);
7291 out()->add_block(odata);
7292 }
7293
compute()7294 void Task37::Task_local::compute() {
7295 const Index x5 = b(0);
7296 const Index x0 = b(1);
7297 const Index x4 = b(2);
7298 const Index x1 = b(3);
7299 const Index x3 = b(4);
7300 const Index x2 = b(5);
7301 // tensor label: Gamma110
7302 std::unique_ptr<double[]> odata(new double[out()->get_size(x5, x0, x4, x1)]);
7303 std::fill_n(odata.get(), out()->get_size(x5, x0, x4, x1), 0.0);
7304 // associated with merged
7305 std::unique_ptr<double[]> fdata = in(2)->get_block(x3, x2);
7306 if (x4 == x2) {
7307 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x1, x5, x0);
7308 for (int i0 = 0; i0 != x0.size(); ++i0) {
7309 for (int i5 = 0; i5 != x5.size(); ++i5) {
7310 for (int i1 = 0; i1 != x1.size(); ++i1) {
7311 for (int i3 = 0; i3 != x3.size(); ++i3) {
7312 for (int i2 = 0; i2 != x2.size(); ++i2) {
7313 odata[i5+x5.size()*(i0+x0.size()*(i2+x4.size()*(i1)))]
7314 += (1.0) * i0data[i3+x3.size()*(i1+x1.size()*(i5+x5.size()*(i0)))] * fdata[i3+x3.size()*(i2)];
7315 }
7316 }
7317 }
7318 }
7319 }
7320 }
7321 if (x5 == x2) {
7322 std::unique_ptr<double[]> i0data = in(0)->get_block(x3, x0, x4, x1);
7323 for (int i1 = 0; i1 != x1.size(); ++i1) {
7324 for (int i4 = 0; i4 != x4.size(); ++i4) {
7325 for (int i0 = 0; i0 != x0.size(); ++i0) {
7326 for (int i3 = 0; i3 != x3.size(); ++i3) {
7327 for (int i2 = 0; i2 != x2.size(); ++i2) {
7328 odata[i2+x5.size()*(i0+x0.size()*(i4+x4.size()*(i1)))]
7329 += (1.0) * i0data[i3+x3.size()*(i0+x0.size()*(i4+x4.size()*(i1)))] * fdata[i3+x3.size()*(i2)];
7330 }
7331 }
7332 }
7333 }
7334 }
7335 }
7336 out()->add_block(odata, x5, x0, x4, x1);
7337 }
7338
compute()7339 void Task38::Task_local::compute() {
7340 const Index x7 = b(0);
7341 const Index x0 = b(1);
7342 const Index x6 = b(2);
7343 const Index x1 = b(3);
7344 const Index x5 = b(4);
7345 const Index x4 = b(5);
7346 const Index x3 = b(6);
7347 const Index x2 = b(7);
7348 // tensor label: Gamma111
7349 std::unique_ptr<double[]> odata(new double[out()->get_size(x7, x0, x6, x1)]);
7350 std::fill_n(odata.get(), out()->get_size(x7, x0, x6, x1), 0.0);
7351 // associated with merged
7352 std::unique_ptr<double[]> fdata = in(3)->get_block(x5, x4, x3, x2);
7353 if (x7 == x4 && x6 == x2) {
7354 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x3, x1);
7355 for (int i1 = 0; i1 != x1.size(); ++i1) {
7356 for (int i3 = 0; i3 != x3.size(); ++i3) {
7357 for (int i0 = 0; i0 != x0.size(); ++i0) {
7358 for (int i5 = 0; i5 != x5.size(); ++i5) {
7359 for (int i4 = 0; i4 != x4.size(); ++i4) {
7360 for (int i2 = 0; i2 != x2.size(); ++i2) {
7361 odata[i4+x7.size()*(i0+x0.size()*(i2+x6.size()*(i1)))]
7362 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i1)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7363 }
7364 }
7365 }
7366 }
7367 }
7368 }
7369 }
7370 if (x7 == x2 && x6 == x4) {
7371 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x1, x3, x0);
7372 for (int i0 = 0; i0 != x0.size(); ++i0) {
7373 for (int i3 = 0; i3 != x3.size(); ++i3) {
7374 for (int i1 = 0; i1 != x1.size(); ++i1) {
7375 for (int i5 = 0; i5 != x5.size(); ++i5) {
7376 for (int i2 = 0; i2 != x2.size(); ++i2) {
7377 for (int i4 = 0; i4 != x4.size(); ++i4) {
7378 odata[i2+x7.size()*(i0+x0.size()*(i4+x6.size()*(i1)))]
7379 += (1.0) * i0data[i5+x5.size()*(i1+x1.size()*(i3+x3.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7380 }
7381 }
7382 }
7383 }
7384 }
7385 }
7386 }
7387 if (x6 == x4) {
7388 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x1, x3, x2, x7, x0);
7389 for (int i0 = 0; i0 != x0.size(); ++i0) {
7390 for (int i7 = 0; i7 != x7.size(); ++i7) {
7391 for (int i2 = 0; i2 != x2.size(); ++i2) {
7392 for (int i3 = 0; i3 != x3.size(); ++i3) {
7393 for (int i1 = 0; i1 != x1.size(); ++i1) {
7394 for (int i5 = 0; i5 != x5.size(); ++i5) {
7395 for (int i4 = 0; i4 != x4.size(); ++i4) {
7396 odata[i7+x7.size()*(i0+x0.size()*(i4+x6.size()*(i1)))]
7397 += (1.0) * i0data[i5+x5.size()*(i1+x1.size()*(i3+x3.size()*(i2+x2.size()*(i7+x7.size()*(i0)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7398 }
7399 }
7400 }
7401 }
7402 }
7403 }
7404 }
7405 }
7406 if (x7 == x4) {
7407 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x0, x3, x2, x6, x1);
7408 for (int i1 = 0; i1 != x1.size(); ++i1) {
7409 for (int i6 = 0; i6 != x6.size(); ++i6) {
7410 for (int i2 = 0; i2 != x2.size(); ++i2) {
7411 for (int i3 = 0; i3 != x3.size(); ++i3) {
7412 for (int i0 = 0; i0 != x0.size(); ++i0) {
7413 for (int i5 = 0; i5 != x5.size(); ++i5) {
7414 for (int i4 = 0; i4 != x4.size(); ++i4) {
7415 odata[i4+x7.size()*(i0+x0.size()*(i6+x6.size()*(i1)))]
7416 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i3+x3.size()*(i2+x2.size()*(i6+x6.size()*(i1)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7417 }
7418 }
7419 }
7420 }
7421 }
7422 }
7423 }
7424 }
7425 if (x3 == x4 && x6 == x2) {
7426 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x1, x7, x0);
7427 for (int i0 = 0; i0 != x0.size(); ++i0) {
7428 for (int i7 = 0; i7 != x7.size(); ++i7) {
7429 for (int i1 = 0; i1 != x1.size(); ++i1) {
7430 for (int i5 = 0; i5 != x5.size(); ++i5) {
7431 for (int i4 = 0; i4 != x4.size(); ++i4) {
7432 for (int i2 = 0; i2 != x2.size(); ++i2) {
7433 odata[i7+x7.size()*(i0+x0.size()*(i2+x6.size()*(i1)))]
7434 += (1.0) * i0data[i5+x5.size()*(i1+x1.size()*(i7+x7.size()*(i0)))] * fdata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
7435 }
7436 }
7437 }
7438 }
7439 }
7440 }
7441 }
7442 if (x6 == x2) {
7443 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x3, x1, x7, x0);
7444 for (int i0 = 0; i0 != x0.size(); ++i0) {
7445 for (int i7 = 0; i7 != x7.size(); ++i7) {
7446 for (int i1 = 0; i1 != x1.size(); ++i1) {
7447 for (int i3 = 0; i3 != x3.size(); ++i3) {
7448 for (int i4 = 0; i4 != x4.size(); ++i4) {
7449 for (int i5 = 0; i5 != x5.size(); ++i5) {
7450 for (int i2 = 0; i2 != x2.size(); ++i2) {
7451 odata[i7+x7.size()*(i0+x0.size()*(i2+x6.size()*(i1)))]
7452 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i7+x7.size()*(i0)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7453 }
7454 }
7455 }
7456 }
7457 }
7458 }
7459 }
7460 }
7461 if (x3 == x4 && x7 == x2) {
7462 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x0, x6, x1);
7463 for (int i1 = 0; i1 != x1.size(); ++i1) {
7464 for (int i6 = 0; i6 != x6.size(); ++i6) {
7465 for (int i0 = 0; i0 != x0.size(); ++i0) {
7466 for (int i5 = 0; i5 != x5.size(); ++i5) {
7467 for (int i4 = 0; i4 != x4.size(); ++i4) {
7468 for (int i2 = 0; i2 != x2.size(); ++i2) {
7469 odata[i2+x7.size()*(i0+x0.size()*(i6+x6.size()*(i1)))]
7470 += (1.0) * i0data[i5+x5.size()*(i0+x0.size()*(i6+x6.size()*(i1)))] * fdata[i5+x5.size()*(i4+x4.size()*(i4+x3.size()*(i2)))];
7471 }
7472 }
7473 }
7474 }
7475 }
7476 }
7477 }
7478 if (x7 == x2) {
7479 std::unique_ptr<double[]> i0data = in(1)->get_block(x5, x4, x3, x0, x6, x1);
7480 for (int i1 = 0; i1 != x1.size(); ++i1) {
7481 for (int i6 = 0; i6 != x6.size(); ++i6) {
7482 for (int i0 = 0; i0 != x0.size(); ++i0) {
7483 for (int i3 = 0; i3 != x3.size(); ++i3) {
7484 for (int i4 = 0; i4 != x4.size(); ++i4) {
7485 for (int i5 = 0; i5 != x5.size(); ++i5) {
7486 for (int i2 = 0; i2 != x2.size(); ++i2) {
7487 odata[i2+x7.size()*(i0+x0.size()*(i6+x6.size()*(i1)))]
7488 += (1.0) * i0data[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i0+x0.size()*(i6+x6.size()*(i1)))))] * fdata[i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i2)))];
7489 }
7490 }
7491 }
7492 }
7493 }
7494 }
7495 }
7496 }
7497 out()->add_block(odata, x7, x0, x6, x1);
7498 }
7499
compute()7500 void Task39::Task_local::compute() {
7501 const Index x2 = b(0);
7502 const Index x5 = b(1);
7503 const Index x4 = b(2);
7504 const Index x3 = b(3);
7505 const Index x1 = b(4);
7506 const Index x0 = b(5);
7507 // tensor label: Gamma121
7508 std::unique_ptr<double[]> odata(new double[out()->get_size(x2, x5, x4, x3, x1, x0)]);
7509 std::fill_n(odata.get(), out()->get_size(x2, x5, x4, x3, x1, x0), 0.0);
7510 {
7511 if (x1 == x3 && x2 == x5) {
7512 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x0);
7513 for (int i0 = 0; i0 != x0.size(); ++i0) {
7514 for (int i3 = 0; i3 != x3.size(); ++i3) {
7515 for (int i4 = 0; i4 != x4.size(); ++i4) {
7516 for (int i5 = 0; i5 != x5.size(); ++i5) {
7517 odata[i5+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i3+x1.size()*(i0)))))]
7518 += (2.0) * i0data[i4+x4.size()*(i0)];
7519 }
7520 }
7521 }
7522 }
7523 }
7524 }
7525 {
7526 if (x2 == x3 && x1 == x5) {
7527 std::unique_ptr<double[]> i0data = in(0)->get_block(x4, x0);
7528 for (int i0 = 0; i0 != x0.size(); ++i0) {
7529 for (int i3 = 0; i3 != x3.size(); ++i3) {
7530 for (int i4 = 0; i4 != x4.size(); ++i4) {
7531 for (int i5 = 0; i5 != x5.size(); ++i5) {
7532 odata[i3+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i5+x1.size()*(i0)))))]
7533 += (-1.0) * i0data[i4+x4.size()*(i0)];
7534 }
7535 }
7536 }
7537 }
7538 }
7539 }
7540 {
7541 if (x1 == x5) {
7542 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x3, x2, x0);
7543 for (int i0 = 0; i0 != x0.size(); ++i0) {
7544 for (int i3 = 0; i3 != x3.size(); ++i3) {
7545 for (int i4 = 0; i4 != x4.size(); ++i4) {
7546 for (int i5 = 0; i5 != x5.size(); ++i5) {
7547 for (int i2 = 0; i2 != x2.size(); ++i2) {
7548 odata[i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i5+x1.size()*(i0)))))]
7549 += (-1.0) * i0data[i4+x4.size()*(i3+x3.size()*(i2+x2.size()*(i0)))];
7550 }
7551 }
7552 }
7553 }
7554 }
7555 }
7556 }
7557 {
7558 if (x2 == x5) {
7559 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x3, x1, x0);
7560 for (int i0 = 0; i0 != x0.size(); ++i0) {
7561 for (int i1 = 0; i1 != x1.size(); ++i1) {
7562 for (int i3 = 0; i3 != x3.size(); ++i3) {
7563 for (int i4 = 0; i4 != x4.size(); ++i4) {
7564 for (int i5 = 0; i5 != x5.size(); ++i5) {
7565 odata[i5+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))]
7566 += (2.0) * i0data[i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))];
7567 }
7568 }
7569 }
7570 }
7571 }
7572 }
7573 }
7574 {
7575 if (x4 == x5 && x1 == x3) {
7576 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x0);
7577 for (int i0 = 0; i0 != x0.size(); ++i0) {
7578 for (int i3 = 0; i3 != x3.size(); ++i3) {
7579 for (int i5 = 0; i5 != x5.size(); ++i5) {
7580 for (int i2 = 0; i2 != x2.size(); ++i2) {
7581 odata[i2+x2.size()*(i5+x5.size()*(i5+x4.size()*(i3+x3.size()*(i3+x1.size()*(i0)))))]
7582 += (-1.0) * i0data[i2+x2.size()*(i0)];
7583 }
7584 }
7585 }
7586 }
7587 }
7588 }
7589 {
7590 if (x1 == x3) {
7591 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x5, x4, x0);
7592 for (int i0 = 0; i0 != x0.size(); ++i0) {
7593 for (int i3 = 0; i3 != x3.size(); ++i3) {
7594 for (int i4 = 0; i4 != x4.size(); ++i4) {
7595 for (int i5 = 0; i5 != x5.size(); ++i5) {
7596 for (int i2 = 0; i2 != x2.size(); ++i2) {
7597 odata[i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i3+x1.size()*(i0)))))]
7598 += (-1.0) * i0data[i2+x2.size()*(i5+x5.size()*(i4+x4.size()*(i0)))];
7599 }
7600 }
7601 }
7602 }
7603 }
7604 }
7605 }
7606 {
7607 if (x2 == x3 && x4 == x5) {
7608 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x0);
7609 for (int i0 = 0; i0 != x0.size(); ++i0) {
7610 for (int i1 = 0; i1 != x1.size(); ++i1) {
7611 for (int i3 = 0; i3 != x3.size(); ++i3) {
7612 for (int i5 = 0; i5 != x5.size(); ++i5) {
7613 odata[i3+x2.size()*(i5+x5.size()*(i5+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))]
7614 += (2.0) * i0data[i1+x1.size()*(i0)];
7615 }
7616 }
7617 }
7618 }
7619 }
7620 }
7621 {
7622 if (x2 == x3) {
7623 std::unique_ptr<double[]> i0data = in(1)->get_block(x4, x5, x1, x0);
7624 for (int i0 = 0; i0 != x0.size(); ++i0) {
7625 for (int i1 = 0; i1 != x1.size(); ++i1) {
7626 for (int i3 = 0; i3 != x3.size(); ++i3) {
7627 for (int i4 = 0; i4 != x4.size(); ++i4) {
7628 for (int i5 = 0; i5 != x5.size(); ++i5) {
7629 odata[i3+x2.size()*(i5+x5.size()*(i4+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))]
7630 += (-1.0) * i0data[i4+x4.size()*(i5+x5.size()*(i1+x1.size()*(i0)))];
7631 }
7632 }
7633 }
7634 }
7635 }
7636 }
7637 }
7638 {
7639 if (x4 == x5) {
7640 std::unique_ptr<double[]> i0data = in(1)->get_block(x2, x3, x1, x0);
7641 for (int i0 = 0; i0 != x0.size(); ++i0) {
7642 for (int i1 = 0; i1 != x1.size(); ++i1) {
7643 for (int i3 = 0; i3 != x3.size(); ++i3) {
7644 for (int i5 = 0; i5 != x5.size(); ++i5) {
7645 for (int i2 = 0; i2 != x2.size(); ++i2) {
7646 odata[i2+x2.size()*(i5+x5.size()*(i5+x4.size()*(i3+x3.size()*(i1+x1.size()*(i0)))))]
7647 += (-1.0) * i0data[i2+x2.size()*(i3+x3.size()*(i1+x1.size()*(i0)))];
7648 }
7649 }
7650 }
7651 }
7652 }
7653 }
7654 }
7655 {
7656 std::unique_ptr<double[]> i0data = in(2)->get_block(x2, x5, x4, x3, x1, x0);
7657 sort_indices<0,1,2,3,4,5,1,1,-1,1>(i0data, odata, x2.size(), x5.size(), x4.size(), x3.size(), x1.size(), x0.size());
7658 }
7659 out()->add_block(odata, x2, x5, x4, x3, x1, x0);
7660 }
7661
compute()7662 void Task41::Task_local::compute() {
7663 const Index c2 = b(0);
7664 const Index x1 = b(1);
7665 const Index c1 = b(2);
7666 const Index x0 = b(3);
7667 // tensor label: r
7668 std::unique_ptr<double[]> odata(new double[out()->get_size(c2, x1, c1, x0)]);
7669 std::fill_n(odata.get(), out()->get_size(c2, x1, c1, x0), 0.0);
7670 {
7671 // tensor label: I0
7672 std::unique_ptr<double[]> i0data = in(0)->get_block(c1, x0, x1, c2);
7673 sort_indices<3,2,0,1,1,1,1,1>(i0data, odata, c1.size(), x0.size(), x1.size(), c2.size());
7674 }
7675 {
7676 // tensor label: I0
7677 std::unique_ptr<double[]> i0data = in(0)->get_block(c2, x1, x0, c1);
7678 sort_indices<0,1,3,2,1,1,1,1>(i0data, odata, c2.size(), x1.size(), x0.size(), c1.size());
7679 }
7680 out()->add_block(odata, c2, x1, c1, x0);
7681 }
7682
compute()7683 void Task42::Task_local::compute() {
7684 const Index c1 = b(0);
7685 const Index x0 = b(1);
7686 const Index x1 = b(2);
7687 const Index c2 = b(3);
7688 // tensor label: I0
7689 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, x0, x1, c2)]);
7690 std::fill_n(odata.get(), out()->get_size(c1, x0, x1, c2), 0.0);
7691 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(c1, x0, x1, c2)]);
7692 std::fill_n(odata_sorted.get(), out()->get_size(c1, x0, x1, c2), 0.0);
7693 for (auto& c3 : *range_[0]) {
7694 // tensor label: f1
7695 std::unique_ptr<double[]> i0data = in(0)->get_block(c2, c3);
7696 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(c2, c3)]);
7697 sort_indices<1,0,0,1,1,1>(i0data, i0data_sorted, c2.size(), c3.size());
7698 // tensor label: I1
7699 std::unique_ptr<double[]> i1data = in(1)->get_block(c1, c3, x0, x1);
7700 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(c1, c3, x0, x1)]);
7701 sort_indices<1,0,2,3,0,1,1,1>(i1data, i1data_sorted, c1.size(), c3.size(), x0.size(), x1.size());
7702 dgemm_("T", "N", c2.size(), c1.size()*x0.size()*x1.size(), c3.size(),
7703 1.0, i0data_sorted, c3.size(), i1data_sorted, c3.size(),
7704 1.0, odata_sorted, c2.size());
7705 }
7706 sort_indices<1,2,3,0,1,1,1,1>(odata_sorted, odata, c2.size(), c1.size(), x0.size(), x1.size());
7707 out()->add_block(odata, c1, x0, x1, c2);
7708 }
7709
compute()7710 void Task43::Task_local::compute() {
7711 const Index c1 = b(0);
7712 const Index c3 = b(1);
7713 const Index x0 = b(2);
7714 const Index x1 = b(3);
7715 // tensor label: I1
7716 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, c3, x0, x1)]);
7717 std::fill_n(odata.get(), out()->get_size(c1, c3, x0, x1), 0.0);
7718 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(c1, c3, x0, x1)]);
7719 std::fill_n(odata_sorted.get(), out()->get_size(c1, c3, x0, x1), 0.0);
7720 for (auto& x3 : *range_[1]) {
7721 for (auto& x2 : *range_[1]) {
7722 // tensor label: Gamma0
7723 std::unique_ptr<double[]> i0data = in(0)->get_block(x0, x3, x1, x2);
7724 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(x0, x3, x1, x2)]);
7725 sort_indices<1,3,0,2,0,1,1,1>(i0data, i0data_sorted, x0.size(), x3.size(), x1.size(), x2.size());
7726 // tensor label: t2
7727 std::unique_ptr<double[]> i1data = in(1)->get_block(c1, x3, c3, x2);
7728 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(c1, x3, c3, x2)]);
7729 sort_indices<1,3,0,2,0,1,-2,1>(i1data, i1data_sorted, c1.size(), x3.size(), c3.size(), x2.size());
7730 dgemm_("T", "N", x0.size()*x1.size(), c1.size()*c3.size(), x3.size()*x2.size(),
7731 1.0, i0data_sorted, x3.size()*x2.size(), i1data_sorted, x3.size()*x2.size(),
7732 1.0, odata_sorted, x0.size()*x1.size());
7733 }
7734 }
7735 sort_indices<2,3,0,1,1,1,1,1>(odata_sorted, odata, x0.size(), x1.size(), c1.size(), c3.size());
7736 out()->add_block(odata, c1, c3, x0, x1);
7737 }
7738
compute()7739 void Task44::Task_local::compute() {
7740 const Index c1 = b(0);
7741 const Index x0 = b(1);
7742 const Index x1 = b(2);
7743 const Index c2 = b(3);
7744 // tensor label: I0
7745 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, x0, x1, c2)]);
7746 std::fill_n(odata.get(), out()->get_size(c1, x0, x1, c2), 0.0);
7747 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(c1, x0, x1, c2)]);
7748 std::fill_n(odata_sorted.get(), out()->get_size(c1, x0, x1, c2), 0.0);
7749 for (auto& x2 : *range_[1]) {
7750 // tensor label: f1
7751 std::unique_ptr<double[]> i0data = in(0)->get_block(c2, x2);
7752 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(c2, x2)]);
7753 sort_indices<1,0,0,1,1,1>(i0data, i0data_sorted, c2.size(), x2.size());
7754 // tensor label: I4
7755 std::unique_ptr<double[]> i1data = in(1)->get_block(c1, x0, x1, x2);
7756 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(c1, x0, x1, x2)]);
7757 sort_indices<3,0,1,2,0,1,1,1>(i1data, i1data_sorted, c1.size(), x0.size(), x1.size(), x2.size());
7758 dgemm_("T", "N", c2.size(), c1.size()*x0.size()*x1.size(), x2.size(),
7759 1.0, i0data_sorted, x2.size(), i1data_sorted, x2.size(),
7760 1.0, odata_sorted, c2.size());
7761 }
7762 sort_indices<1,2,3,0,1,1,1,1>(odata_sorted, odata, c2.size(), c1.size(), x0.size(), x1.size());
7763 out()->add_block(odata, c1, x0, x1, c2);
7764 }
7765
compute()7766 void Task45::Task_local::compute() {
7767 const Index c1 = b(0);
7768 const Index x0 = b(1);
7769 const Index x1 = b(2);
7770 const Index x2 = b(3);
7771 // tensor label: I4
7772 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, x0, x1, x2)]);
7773 std::fill_n(odata.get(), out()->get_size(c1, x0, x1, x2), 0.0);
7774 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(c1, x0, x1, x2)]);
7775 std::fill_n(odata_sorted.get(), out()->get_size(c1, x0, x1, x2), 0.0);
7776 for (auto& x5 : *range_[1]) {
7777 for (auto& x4 : *range_[1]) {
7778 for (auto& x3 : *range_[1]) {
7779 // tensor label: Gamma1
7780 std::unique_ptr<double[]> i0data = in(0)->get_block(x5, x4, x0, x3, x1, x2);
7781 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(x5, x4, x0, x3, x1, x2)]);
7782 sort_indices<0,1,3,2,4,5,0,1,1,1>(i0data, i0data_sorted, x5.size(), x4.size(), x0.size(), x3.size(), x1.size(), x2.size());
7783 // tensor label: t2
7784 std::unique_ptr<double[]> i1data = in(1)->get_block(x5, x4, c1, x3);
7785 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(x5, x4, c1, x3)]);
7786 sort_indices<0,1,3,2,0,1,1,1>(i1data, i1data_sorted, x5.size(), x4.size(), c1.size(), x3.size());
7787 dgemm_("T", "N", x0.size()*x1.size()*x2.size(), c1.size(), x5.size()*x4.size()*x3.size(),
7788 1.0, i0data_sorted, x5.size()*x4.size()*x3.size(), i1data_sorted, x5.size()*x4.size()*x3.size(),
7789 1.0, odata_sorted, x0.size()*x1.size()*x2.size());
7790 }
7791 }
7792 }
7793 sort_indices<3,0,1,2,1,1,1,1>(odata_sorted, odata, x0.size(), x1.size(), x2.size(), c1.size());
7794 out()->add_block(odata, c1, x0, x1, x2);
7795 }
7796
compute()7797 void Task46::Task_local::compute() {
7798 const Index c1 = b(0);
7799 const Index x0 = b(1);
7800 const Index x1 = b(2);
7801 const Index c2 = b(3);
7802 // tensor label: I0
7803 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, x0, x1, c2)]);
7804 std::fill_n(odata.get(), out()->get_size(c1, x0, x1, c2), 0.0);
7805 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(c1, x0, x1, c2)]);
7806 std::fill_n(odata_sorted.get(), out()->get_size(c1, x0, x1, c2), 0.0);
7807 for (auto& x3 : *range_[1]) {
7808 for (auto& x2 : *range_[1]) {
7809 // tensor label: Gamma2
7810 std::unique_ptr<double[]> i0data = in(0)->get_block(x1, x3, x0, x2);
7811 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(x1, x3, x0, x2)]);
7812 sort_indices<1,3,0,2,0,1,1,1>(i0data, i0data_sorted, x1.size(), x3.size(), x0.size(), x2.size());
7813 // tensor label: I7
7814 std::unique_ptr<double[]> i1data = in(1)->get_block(c1, c2, x3, x2);
7815 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(c1, c2, x3, x2)]);
7816 sort_indices<2,3,0,1,0,1,1,1>(i1data, i1data_sorted, c1.size(), c2.size(), x3.size(), x2.size());
7817 dgemm_("T", "N", x1.size()*x0.size(), c1.size()*c2.size(), x3.size()*x2.size(),
7818 1.0, i0data_sorted, x3.size()*x2.size(), i1data_sorted, x3.size()*x2.size(),
7819 1.0, odata_sorted, x1.size()*x0.size());
7820 }
7821 }
7822 sort_indices<2,1,0,3,1,1,1,1>(odata_sorted, odata, x1.size(), x0.size(), c1.size(), c2.size());
7823 out()->add_block(odata, c1, x0, x1, c2);
7824 }
7825
compute()7826 void Task47::Task_local::compute() {
7827 const Index c1 = b(0);
7828 const Index c2 = b(1);
7829 const Index x3 = b(2);
7830 const Index x2 = b(3);
7831 // tensor label: I7
7832 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, c2, x3, x2)]);
7833 std::fill_n(odata.get(), out()->get_size(c1, c2, x3, x2), 0.0);
7834 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(c1, c2, x3, x2)]);
7835 std::fill_n(odata_sorted.get(), out()->get_size(c1, c2, x3, x2), 0.0);
7836 for (auto& a3 : *range_[2]) {
7837 // tensor label: f1
7838 std::unique_ptr<double[]> i0data = in(0)->get_block(a3, x2);
7839 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(a3, x2)]);
7840 sort_indices<0,1,0,1,1,1>(i0data, i0data_sorted, a3.size(), x2.size());
7841 // tensor label: t2
7842 std::unique_ptr<double[]> i1data = in(1)->get_block(c1, a3, c2, x3);
7843 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(c1, a3, c2, x3)]);
7844 sort_indices<1,0,2,3,0,1,-1,1>(i1data, i1data_sorted, c1.size(), a3.size(), c2.size(), x3.size());
7845 dgemm_("T", "N", x2.size(), c1.size()*c2.size()*x3.size(), a3.size(),
7846 1.0, i0data_sorted, a3.size(), i1data_sorted, a3.size(),
7847 1.0, odata_sorted, x2.size());
7848 }
7849 sort_indices<1,2,3,0,1,1,1,1>(odata_sorted, odata, x2.size(), c1.size(), c2.size(), x3.size());
7850 out()->add_block(odata, c1, c2, x3, x2);
7851 }
7852
compute()7853 void Task48::Task_local::compute() {
7854 const Index c1 = b(0);
7855 const Index x2 = b(1);
7856 const Index x0 = b(2);
7857 const Index x1 = b(3);
7858 // tensor label: r
7859 std::unique_ptr<double[]> odata(new double[out()->get_size(c1, x2, x0, x1)]);
7860 std::fill_n(odata.get(), out()->get_size(c1, x2, x0, x1), 0.0);
7861 {
7862 // tensor label: I9
7863 std::unique_ptr<double[]> i0data = in(0)->get_block(x2, x1, x0, c1);
7864 sort_indices<3,0,2,1,1,1,1,1>(i0data, odata, x2.size(), x1.size(), x0.size(), c1.size());
7865 }
7866 out()->add_block(odata, c1, x2, x0, x1);
7867 }
7868
compute()7869 void Task49::Task_local::compute() {
7870 const Index x2 = b(0);
7871 const Index x1 = b(1);
7872 const Index x0 = b(2);
7873 const Index c1 = b(3);
7874 // tensor label: I9
7875 std::unique_ptr<double[]> odata(new double[out()->get_size(x2, x1, x0, c1)]);
7876 std::fill_n(odata.get(), out()->get_size(x2, x1, x0, c1), 0.0);
7877 std::unique_ptr<double[]> odata_sorted(new double[out()->get_size(x2, x1, x0, c1)]);
7878 std::fill_n(odata_sorted.get(), out()->get_size(x2, x1, x0, c1), 0.0);
7879 for (auto& c2 : *range_[0]) {
7880 // tensor label: f1
7881 std::unique_ptr<double[]> i0data = in(0)->get_block(c1, c2);
7882 std::unique_ptr<double[]> i0data_sorted(new double[in(0)->get_size(c1, c2)]);
7883 sort_indices<1,0,0,1,1,1>(i0data, i0data_sorted, c1.size(), c2.size());
7884 // tensor label: I10
7885 std::unique_ptr<double[]> i1data = in(1)->get_block(c2, x2, x1, x0);
7886 std::unique_ptr<double[]> i1data_sorted(new double[in(1)->get_size(c2, x2, x1, x0)]);
7887 sort_indices<0,1,2,3,0,1,1,1>(i1data, i1data_sorted, c2.size(), x2.size(), x1.size(), x0.size());
7888 dgemm_("T", "N", c1.size(), x2.size()*x1.size()*x0.size(), c2.size(),
7889 1.0, i0data_sorted, c2.size(), i1data_sorted, c2.size(),
7890 1.0, odata_sorted, c1.size());
7891 }
7892 sort_indices<1,2,3,0,1,1,1,1>(odata_sorted, odata, c1.size(), x2.size(), x1.size(), x0.size());
7893 out()->add_block(odata, x2, x1, x0, c1);
7894 }
7895
7896 #endif
7897