v0.13.2
Loading...
Searching...
No Matches
Tensor1_Expr_equals.hpp
Go to the documentation of this file.
1/* Various assignment operators for generic Tensor1_Expr's as well as
2 specializations for Tensor2_number_rhs's. I have to explicitly
3 declare the second operator= because otherwise the compiler will
4 generate its own and not use the template code. */
5
6/* =T1_Expr */
7
8#pragma once
9
10namespace FTensor
11{
12 template <class A, class B, class U, int Dim, char i, int Current_Dim>
13 void T1_equals_T1(A &iter, const Tensor1_Expr<B, U, Dim, i> result,
14 const Number<Current_Dim> &)
15 {
16 iter(Current_Dim - 1) = result(Current_Dim - 1);
18 }
19
20 template <class A, class B, class U, int Dim, char i>
21 void T1_equals_T1(A &iter, const Tensor1_Expr<B, U, Dim, i> result,
22 const Number<1> &)
23 {
24 iter(0) = result(0);
25 }
26
27 template <class A, class T, int Tensor_Dim, int Dim, char i>
28 template <class B, class U>
31 operator=(const Tensor1_Expr<B, U, Dim, i> &result)
32 {
33 T1_equals_T1(iter, result, Number<Dim>());
34 return *this;
35 }
36
37 /* =T1_Expr(T1) */
38
39 template <class A, class T, int Tensor_Dim, int Dim, char i>
42 operator=(const Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i> &result)
43 {
44 return operator=<Tensor1<A, Tensor_Dim>, T>(result);
45 }
46
47 /* <<=T1_Expr ADOL-C left */
48
49 template <class A, class B, class U, int Dim, char i, int Current_Dim>
50 inline void
52 const Number<Current_Dim> &)
53 {
54 iter(Current_Dim - 1) <<= result(Current_Dim - 1);
56 }
57
58 template <class A, class B, class U, int Dim, char i>
59 inline void
61 const Number<1> &)
62 {
63 iter(0) <<= result(0);
64 }
65
66 template <class A, class T, int Tensor_Dim, int Dim, char i>
67 template <class B, class U>
70 operator<<=(const Tensor1_Expr<B, U, Dim, i> &result)
71 {
73 return *this;
74 }
75
76 /* <<=T1_Expr ADOL-C right */
77
78 template <class A, class B, class U, int Dim, char i, int Current_Dim>
79 inline void
81 const Number<Current_Dim> &)
82 {
83 iter(Current_Dim - 1) >>= result(Current_Dim - 1);
85 }
86
87 template <class A, class B, class U, int Dim, char i>
88 inline void
90 const Number<1> &)
91 {
92 iter(0) >>= result(0);
93 }
94
95 template <class A, class T, int Tensor_Dim, int Dim, char i>
96 template <class B, class U>
97 inline const Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i> &
99 operator>>=(const Tensor1_Expr<B, U, Dim, i> &result)
100 {
101 T1_equals_addolc_right_T1(iter, result, Number<Dim>());
102 return *this;
103 }
104
105 /* +=T1 */
106
107 template <class A, class B, class U, int Dim, char i, int Current_Dim>
109 const Number<Current_Dim> &)
110 {
111 iter(Current_Dim - 1) += result(Current_Dim - 1);
113 }
114
115 template <class A, class B, class U, int Dim, char i>
117 const Number<1> &)
118 {
119 iter(0) += result(0);
120 }
121
122 template <class A, class T, int Tensor_Dim, int Dim, char i>
123 template <class B, class U>
126 operator+=(const Tensor1_Expr<B, U, Dim, i> &result)
127 {
128 T1_plus_equals_T1(iter, result, Number<Dim>());
129 return *this;
130 }
131
132 /* -=T1 */
133
134 template <class A, class B, class U, int Dim, char i, int Current_Dim>
136 const Number<Current_Dim> &)
137 {
138 iter(Current_Dim - 1) -= result(Current_Dim - 1);
140 }
141
142 template <class A, class B, class U, int Dim, char i>
144 const Number<1> &)
145 {
146 iter(0) -= result(0);
147 }
148
149 template <class A, class T, int Tensor_Dim, int Dim, char i>
150 template <class B, class U>
153 operator-=(const Tensor1_Expr<B, U, Dim, i> &result)
154 {
155 T1_minus_equals_T1(iter, result, Number<Dim>());
156 return *this;
157 }
158
159 /* General template assignment operators intended mostly for
160 doubles (type U), but could be applied to anything you want, like
161 complex, etc. All that is required is that T=U works (or T+=U,
162 etc.) */
163
164 /* =U */
165
166 template <class A, class U, int Current_Dim>
167 void T1_equals_generic(A &iter, const U &u, const Number<Current_Dim> &)
168 {
169 iter(Current_Dim - 1) = u;
171 }
172
173 template <class A, class U>
174 void T1_equals_generic(A &iter, const U &u, const Number<1> &)
175 {
176 iter(0) = u;
177 }
178
179 template <class A, class T, int Tensor_Dim, int Dim, char i>
180 template <class U>
182 Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i>::operator=(const U &u)
183 {
184 T1_equals_generic(iter, u, Number<Dim>());
185 return *this;
186 }
187
188 /* +=U */
189
190 template <class A, class U, int Current_Dim>
191 void T1_plus_equals_generic(A &iter, const U &u, const Number<Current_Dim> &)
192 {
193 iter(Current_Dim - 1) += u;
195 }
196
197 template <class A, class U>
198 void T1_plus_equals_generic(A &iter, const U &u, const Number<1> &)
199 {
200 iter(0) += u;
201 }
202
203 template <class A, class T, int Tensor_Dim, int Dim, char i>
204 template <class U>
206 Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i>::operator+=(const U &u)
207 {
209 return *this;
210 }
211
212 /* -=U */
213
214 template <class A, class U, int Current_Dim>
215 void
217 {
218 iter(Current_Dim - 1) -= u;
220 }
221
222 template <class A, class U>
223 void T1_minus_equals_generic(A &iter, const U &u, const Number<1> &)
224 {
225 iter(0) -= u;
226 }
227
228 template <class A, class T, int Tensor_Dim, int Dim, char i>
229 template <class U>
231 Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i>::operator-=(const U &u)
232 {
234 return *this;
235 }
236
237 /* *=U */
238
239 template <class A, class U, int Current_Dim>
240 void
242 {
243 iter(Current_Dim - 1) *= u;
245 }
246
247 template <class A, class U>
248 void T1_times_equals_generic(A &iter, const U &u, const Number<1> &)
249 {
250 iter(0) *= u;
251 }
252
253 template <class A, class T, int Tensor_Dim, int Dim, char i>
254 template <class U>
256 Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i>::operator*=(const U &u)
257 {
259 return *this;
260 }
261
262 /* /=U */
263
264 template <class A, class U, int Current_Dim>
265 void
267 {
268 iter(Current_Dim - 1) /= u;
270 }
271
272 template <class A, class U>
273 void T1_divide_equals_generic(A &iter, const U &u, const Number<1> &)
274 {
275 iter(0) /= u;
276 }
277
278 template <class A, class T, int Tensor_Dim, int Dim, char i>
279 template <class U>
281 Tensor1_Expr<Tensor1<A, Tensor_Dim>, T, Dim, i>::operator/=(const U &u)
282 {
284 return *this;
285 }
286
287 /* Specializations for Tensor2_number_rhs_0's */
288
289 /* =T1 */
290
291 template <class A, class B, class U, int Dim1, char i, int N, int Current_Dim>
293 const Number<N> &N1, const Number<Current_Dim> &)
294 {
295 iter(N, Current_Dim - 1) = result(Current_Dim - 1);
297 }
298
299 template <class A, class B, class U, int Dim1, char i, int N>
301 const Number<N> &, const Number<1> &)
302 {
303 iter(N, 0) = result(0);
304 }
305
306 template <class A, class T, int Dim1, char i, int N>
307 template <class B, class U>
310 operator=(const Tensor1_Expr<B, U, Dim1, i> &result)
311 {
312 T2rhs0_equals_T1(iter, result, Number<N>(), Number<Dim1>());
313 return *this;
314 }
315
316 template <class A, class T, int Dim1, char i, int N>
319 const Tensor1_Expr<Tensor2_number_rhs_0<A, T, N>, T, Dim1, i> &result)
320 {
321 return operator=<Tensor2_number_rhs_0<A, T, N>, T>(result);
322 }
323
324 /* +=T1 */
325
326 template <class A, class B, class U, int Dim1, char i, int N, int Current_Dim>
327 void
329 const Number<N> &N1, const Number<Current_Dim> &)
330 {
331 iter(N, Current_Dim - 1) += result(Current_Dim - 1);
333 }
334
335 template <class A, class B, class U, int Dim1, char i, int N>
336 void
338 const Number<N> &, const Number<1> &)
339 {
340 iter(N, 0) += result(0);
341 }
342
343 template <class A, class T, int Dim1, char i, int N>
344 template <class B, class U>
347 operator+=(const Tensor1_Expr<B, U, Dim1, i> &result)
348 {
349 T2rhs0_plus_equals_T1(iter, result, Number<N>(), Number<Dim1>());
350 return *this;
351 }
352
353 template <class A, class T, int Dim1, char i, int N>
356 const Tensor1_Expr<Tensor2_number_rhs_0<A, T, N>, T, Dim1, i> &result)
357 {
358 return operator+=<Tensor2_number_rhs_0<A, T, N>, T>(result);
359 }
360
361 /* -=T1 */
362
363 template <class A, class B, class U, int Dim1, char i, int N, int Current_Dim>
364 void
366 const Number<N> &N1, const Number<Current_Dim> &)
367 {
368 iter(N, Current_Dim - 1) -= result(Current_Dim - 1);
370 }
371
372 template <class A, class B, class U, int Dim1, char i, int N>
373 void
375 const Number<N> &, const Number<1> &)
376 {
377 iter(N, 0) -= result(0);
378 }
379
380 template <class A, class T, int Dim1, char i, int N>
381 template <class B, class U>
384 operator-=(const Tensor1_Expr<B, U, Dim1, i> &result)
385 {
387 return *this;
388 }
389
390 template <class A, class T, int Dim1, char i, int N>
393 const Tensor1_Expr<Tensor2_number_rhs_0<A, T, N>, T, Dim1, i> &result)
394 {
395 return operator-=<Tensor2_number_rhs_0<A, T, N>, T>(result);
396 }
397
398 /* =U */
399
400 template <class A, class U, int N, int Current_Dim>
401 void T2rhs0_equals_generic(A &iter, const U &u, const Number<N> &N1,
402 const Number<Current_Dim> &)
403 {
404 iter(N, Current_Dim - 1) = u;
406 }
407
408 template <class A, class U, int N>
409 void T2rhs0_equals_generic(A &iter, const U &u, const Number<N> &,
410 const Number<1> &)
411 {
412 iter(N, 0) = u;
413 }
414
415 template <class A, class T, int Dim1, char i, int N>
416 template <class U>
419 operator=(const U &u)
420 {
422 return *this;
423 }
424
425 /* +=U */
426
427 template <class A, class U, int N, int Current_Dim>
428 void T2rhs0_plus_equals_generic(A &iter, const U &u, const Number<N> &N1,
429 const Number<Current_Dim> &)
430 {
431 iter(N, Current_Dim - 1) += u;
433 }
434
435 template <class A, class U, int N>
436 void T2rhs0_plus_equals_generic(A &iter, const U &u, const Number<N> &,
437 const Number<1> &)
438 {
439 iter(N, 0) += u;
440 }
441
442 template <class A, class T, int Dim1, char i, int N>
443 template <class U>
446 operator+=(const U &u)
447 {
449 return *this;
450 }
451
452 /* -=U */
453
454 template <class A, class U, int N, int Current_Dim>
455 void T2rhs0_minus_equals_generic(A &iter, const U &u, const Number<N> &N1,
456 const Number<Current_Dim> &)
457 {
458 iter(N, Current_Dim - 1) -= u;
460 }
461
462 template <class A, class U, int N>
463 void T2rhs0_minus_equals_generic(A &iter, const U &u, const Number<N> &,
464 const Number<1> &)
465 {
466 iter(N, 0) -= u;
467 }
468
469 template <class A, class T, int Dim1, char i, int N>
470 template <class U>
473 operator-=(const U &u)
474 {
476 return *this;
477 }
478
479 /* *=U */
480
481 template <class A, class U, int N, int Current_Dim>
482 void T2rhs0_times_equals_generic(A &iter, const U &u, const Number<N> &N1,
483 const Number<Current_Dim> &)
484 {
485 iter(N, Current_Dim - 1) *= u;
487 }
488
489 template <class A, class U, int N>
490 void T2rhs0_times_equals_generic(A &iter, const U &u, const Number<N> &,
491 const Number<1> &)
492 {
493 iter(N, 0) *= u;
494 }
495
496 template <class A, class T, int Dim1, char i, int N>
497 template <class U>
500 operator*=(const U &u)
501 {
503 return *this;
504 }
505
506 /* /=U */
507
508 template <class A, class U, int N, int Current_Dim>
509 void T2rhs0_divide_equals_generic(A &iter, const U &u, const Number<N> &N1,
510 const Number<Current_Dim> &)
511 {
512 iter(N, Current_Dim - 1) /= u;
514 }
515
516 template <class A, class U, int N>
517 void T2rhs0_divide_equals_generic(A &iter, const U &u, const Number<N> &,
518 const Number<1> &)
519 {
520 iter(N, 0) /= u;
521 }
522
523 template <class A, class T, int Dim1, char i, int N>
524 template <class U>
527 operator/=(const U &u)
528 {
530 return *this;
531 }
532
533 /* Specializations for Tensor2_number_rhs_1's */
534
535 /* =T1 */
536
537 template <class A, class B, class U, int Dim1, char i, int N, int Current_Dim>
539 const Number<N> &N1, const Number<Current_Dim> &)
540 {
541 iter(Current_Dim - 1, N) = result(Current_Dim - 1);
543 }
544
545 template <class A, class B, class U, int Dim1, char i, int N>
547 const Number<N> &, const Number<1> &)
548 {
549 iter(0, N) = result(0);
550 }
551
552 template <class A, class T, int Dim1, char i, int N>
553 template <class B, class U>
556 operator=(const Tensor1_Expr<B, U, Dim1, i> &result)
557 {
558 T2rhs1_equals_T1(iter, result, Number<N>(), Number<Dim1>());
559 return *this;
560 }
561
562 template <class A, class T, int Dim1, char i, int N>
565 const Tensor1_Expr<Tensor2_number_rhs_1<A, T, N>, T, Dim1, i> &result)
566 {
567 return operator=<Tensor2_number_rhs_1<A, T, N>, T>(result);
568 }
569
570 /* +=T1 */
571
572 template <class A, class B, class U, int Dim1, char i, int N, int Current_Dim>
573 void
575 const Number<N> &N1, const Number<Current_Dim> &)
576 {
577 iter(Current_Dim - 1, N) += result(Current_Dim - 1);
579 }
580
581 template <class A, class B, class U, int Dim1, char i, int N>
582 void
584 const Number<N> &, const Number<1> &)
585 {
586 iter(0, N) += result(0);
587 }
588
589 template <class A, class T, int Dim1, char i, int N>
590 template <class B, class U>
593 operator+=(const Tensor1_Expr<B, U, Dim1, i> &result)
594 {
595 T2rhs1_plus_equals_T1(iter, result, Number<N>(), Number<Dim1>());
596 return *this;
597 }
598
599 template <class A, class T, int Dim1, char i, int N>
602 const Tensor1_Expr<Tensor2_number_rhs_1<A, T, N>, T, Dim1, i> &result)
603 {
604 return operator+=<Tensor2_number_rhs_1<A, T, N>, T>(result);
605 }
606
607 /* -=T1 */
608
609 template <class A, class B, class U, int Dim1, char i, int N, int Current_Dim>
610 void
612 const Number<N> &N1, const Number<Current_Dim> &)
613 {
614 iter(Current_Dim - 1, N) -= result(Current_Dim - 1);
616 }
617
618 template <class A, class B, class U, int Dim1, char i, int N>
619 void
621 const Number<N> &, const Number<1> &)
622 {
623 iter(0, N) -= result(0);
624 }
625
626 template <class A, class T, int Dim1, char i, int N>
627 template <class B, class U>
630 operator-=(const Tensor1_Expr<B, U, Dim1, i> &result)
631 {
633 return *this;
634 }
635
636 template <class A, class T, int Dim1, char i, int N>
639 const Tensor1_Expr<Tensor2_number_rhs_1<A, T, N>, T, Dim1, i> &result)
640 {
641 return operator-=<Tensor2_number_rhs_1<A, T, N>, T>(result);
642 }
643
644 /* =U */
645
646 template <class A, class U, int N, int Current_Dim>
647 void T2rhs1_equals_generic(A &iter, const U &u, const Number<N> &N1,
648 const Number<Current_Dim> &)
649 {
650 iter(Current_Dim - 1, N) = u;
652 }
653
654 template <class A, class U, int N>
655 void T2rhs1_equals_generic(A &iter, const U &u, const Number<N> &,
656 const Number<1> &)
657 {
658 iter(0, N) = u;
659 }
660
661 template <class A, class T, int Dim1, char i, int N>
662 template <class U>
665 operator=(const U &u)
666 {
668 return *this;
669 }
670
671 /* +=U */
672
673 template <class A, class U, int N, int Current_Dim>
674 void T2rhs1_plus_equals_generic(A &iter, const U &u, const Number<N> &N1,
675 const Number<Current_Dim> &)
676 {
677 iter(Current_Dim - 1, N) += u;
679 }
680
681 template <class A, class U, int N>
682 void T2rhs1_plus_equals_generic(A &iter, const U &u, const Number<N> &,
683 const Number<1> &)
684 {
685 iter(0, N) += u;
686 }
687
688 template <class A, class T, int Dim1, char i, int N>
689 template <class U>
692 operator+=(const U &u)
693 {
695 return *this;
696 }
697
698 /* -=U */
699
700 template <class A, class U, int N, int Current_Dim>
701 void T2rhs1_minus_equals_generic(A &iter, const U &u, const Number<N> &N1,
702 const Number<Current_Dim> &)
703 {
704 iter(Current_Dim - 1, N) -= u;
706 }
707
708 template <class A, class U, int N>
709 void T2rhs1_minus_equals_generic(A &iter, const U &u, const Number<N> &,
710 const Number<1> &)
711 {
712 iter(0, N) -= u;
713 }
714
715 template <class A, class T, int Dim1, char i, int N>
716 template <class U>
719 operator-=(const U &u)
720 {
722 return *this;
723 }
724
725 /* *=U */
726
727 template <class A, class U, int N, int Current_Dim>
728 void T2rhs1_times_equals_generic(A &iter, const U &u, const Number<N> &N1,
729 const Number<Current_Dim> &)
730 {
731 iter(Current_Dim - 1, N) *= u;
733 }
734
735 template <class A, class U, int N>
736 void T2rhs1_times_equals_generic(A &iter, const U &u, const Number<N> &,
737 const Number<1> &)
738 {
739 iter(0, N) *= u;
740 }
741
742 template <class A, class T, int Dim1, char i, int N>
743 template <class U>
746 operator*=(const U &u)
747 {
749 return *this;
750 }
751
752 /* /=U */
753
754 template <class A, class U, int N, int Current_Dim>
755 void T2rhs1_divide_equals_generic(A &iter, const U &u, const Number<N> &N1,
756 const Number<Current_Dim> &)
757 {
758 iter(Current_Dim - 1, N) /= u;
760 }
761
762 template <class A, class U, int N>
763 void T2rhs1_divide_equals_generic(A &iter, const U &u, const Number<N> &,
764 const Number<1> &)
765 {
766 iter(0, N) /= u;
767 }
768
769 template <class A, class T, int Dim1, char i, int N>
770 template <class U>
773 operator/=(const U &u)
774 {
776 return *this;
777 }
778
779 /* Specializations for Dg_number_rhs_12's */
780
781 template <class A, class B, class U, int Dim, char i, int N1, int N2,
782 int Current_Dim>
784 const Number<N1> &NN1, const Number<N2> &NN2,
785 const Number<Current_Dim> &)
786 {
787 iter(Current_Dim - 1, N1, N2) = result(Current_Dim - 1);
788 T3dgrhs12_equals_T1(iter, result, NN1, NN2, Number<Current_Dim - 1>());
789 }
790
791 template <class A, class B, class U, int Dim, char i, int N1, int N2>
793 const Number<N1> &, const Number<N2> &,
794 const Number<1> &)
795 {
796 iter(0, N1, N2) = result(0);
797 }
798
799 template <class A, class T, int Dim, char i, int N1, int N2>
800 template <class B, class U>
803 operator=(const Tensor1_Expr<B, U, Dim, i> &result)
804 {
805 T3dgrhs12_equals_T1(iter, result, Number<N1>(), Number<N2>(),
806 Number<Dim>());
807 return *this;
808 }
809
810 template <class A, class T, int Dim, char i, int N1, int N2>
813 const Tensor1_Expr<Dg_number_rhs_12<A, T, N1, N2>, T, Dim, i> &result)
814 {
815 return operator=<Dg_number_rhs_12<A, T, N1, N2>, T>(result);
816 }
817
818 /* Specializations for Dg_number_rhs_01's */
819
820 template <class A, class B, class U, int Dim, char i, int N1, int N2,
821 int Current_Dim>
823 const Number<N1> &NN1, const Number<N2> &NN2,
824 const Number<Current_Dim> &)
825 {
826 iter(N1, N2, Current_Dim - 1) = result(Current_Dim - 1);
827 T3dgrhs01_equals_T1(iter, result, NN1, NN2, Number<Current_Dim - 1>());
828 }
829
830 template <class A, class B, class U, int Dim, char i, int N1, int N2>
832 const Number<N1> &, const Number<N2> &,
833 const Number<1> &)
834 {
835 iter(N1, N2, 0) = result(0);
836 }
837
838 template <class A, class T, int Dim, char i, int N1, int N2>
839 template <class B, class U>
842 operator=(const Tensor1_Expr<B, U, Dim, i> &result)
843 {
844 T3dgrhs01_equals_T1(iter, result, Number<N1>(), Number<N2>(),
845 Number<Dim>());
846 return *this;
847 }
848
849 template <class A, class T, int Dim, char i, int N1, int N2>
852 const Tensor1_Expr<Dg_number_rhs_01<A, T, N1, N2>, T, Dim, i> &result)
853 {
854 return operator=<Dg_number_rhs_01<A, T, N1, N2>, T>(result);
855 }
856}
static Number< 2 > N2
static Number< 1 > N1
FTensor::Index< 'i', SPACE_DIM > i
const double T
Tensors class implemented by Walter Landry.
Definition: FTensor.hpp:51
void T1_equals_generic(A &iter, const U &u, const Number< Current_Dim > &)
void T2rhs0_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T3dgrhs01_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim, i > &result, const Number< N1 > &NN1, const Number< N2 > &NN2, const Number< Current_Dim > &)
void T1_plus_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim, i > result, const Number< Current_Dim > &)
void T1_divide_equals_generic(A &iter, const U &u, const Number< Current_Dim > &)
void T2rhs0_minus_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim1, i > &result, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs0_plus_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim1, i > &result, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs1_minus_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs1_plus_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs0_minus_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T1_equals_addolc_right_T1(A &iter, Tensor1_Expr< B, U, Dim, i > result, const Number< Current_Dim > &)
void T2rhs1_divide_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs0_plus_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs0_divide_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T1_equals_addolc_left_T1(A &iter, const Tensor1_Expr< B, U, Dim, i > result, const Number< Current_Dim > &)
void T2rhs1_minus_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim1, i > &result, const Number< N > &N1, const Number< Current_Dim > &)
void T2rhs1_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim1, i > &result, const Number< N > &N1, const Number< Current_Dim > &)
void T1_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim, i > result, const Number< Current_Dim > &)
void T1_minus_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim, i > result, const Number< Current_Dim > &)
void T2rhs0_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim1, i > &result, const Number< N > &N1, const Number< Current_Dim > &)
void T1_times_equals_generic(A &iter, const U &u, const Number< Current_Dim > &)
void T2rhs0_times_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T1_minus_equals_generic(A &iter, const U &u, const Number< Current_Dim > &)
void T2rhs1_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T3dgrhs12_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim, i > &result, const Number< N1 > &NN1, const Number< N2 > &NN2, const Number< Current_Dim > &)
void T2rhs1_times_equals_generic(A &iter, const U &u, const Number< N > &N1, const Number< Current_Dim > &)
void T1_plus_equals_generic(A &iter, const U &u, const Number< Current_Dim > &)
void T2rhs1_plus_equals_T1(A &iter, const Tensor1_Expr< B, U, Dim1, i > &result, const Number< N > &N1, const Number< Current_Dim > &)
constexpr AssemblyType A
const int N
Definition: speed_test.cpp:3