13 #ifndef OHMMS_VECTOR_OPERATORS_H 14 #define OHMMS_VECTOR_OPERATORS_H 31 template<
class T1,
class C1>
39 template<
class T1,
class C1>
47 template<
class T1,
class C1>
55 template<
class T1,
class C1>
63 template<
class T1,
class C1>
71 template<
class T1,
class C1>
79 template<
class T1,
class C1>
87 template<
class T1,
class C1>
95 template<
class T1,
class C1>
103 template<
class T1,
class C1>
111 template<
class T1,
class C1>
119 template<
class T1,
class C1>
127 template<
class T1,
class C1>
135 template<
class T1,
class C1>
143 template<
class T1,
class C1>
151 template<
class T1,
class C1>
159 template<
class T1,
class C1>
160 inline typename MakeReturn<UnaryNode<OpUnaryMinus, typename CreateLeaf<Vector<T1, C1>>::Leaf_t>>::Expression_t
167 template<
class T1,
class C1>
175 template<
class T1,
class C1>
176 inline typename MakeReturn<UnaryNode<OpBitwiseNot, typename CreateLeaf<Vector<T1, C1>>::Leaf_t>>::Expression_t
183 template<
class T1,
class C1>
184 inline typename MakeReturn<UnaryNode<OpIdentity, typename CreateLeaf<Vector<T1, C1>>::Leaf_t>>::Expression_t
191 template<
class T1,
class C1>
199 template<
class T1,
class T2,
class C2>
208 template<
class T1,
class C1,
class T2,
class C2>
209 inline typename MakeReturn<
210 BinaryNode<OpAdd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
219 template<
class T1,
class C1,
class T2,
class C2>
220 inline typename MakeReturn<
221 BinaryNode<OpSubtract, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
231 template<
class T1,
class C1,
class T2,
class C2>
232 inline typename MakeReturn<
233 BinaryNode<OpMultiply, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
243 template<
class T1,
class C1,
class T2,
class C2>
244 inline typename MakeReturn<
245 BinaryNode<OpDivide, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
254 template<
class T1,
class C1,
class T2,
class C2>
255 inline typename MakeReturn<
256 BinaryNode<OpMod, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
265 template<
class T1,
class C1,
class T2,
class C2>
266 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
267 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
268 typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
277 template<
class T1,
class C1,
class T2,
class C2>
278 inline typename MakeReturn<
279 BinaryNode<OpBitwiseOr, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
289 template<
class T1,
class C1,
class T2,
class C2>
290 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
291 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
292 typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
301 template<
class T1,
class C1,
class T2,
class C2>
302 inline typename MakeReturn<
303 BinaryNode<FnLdexp, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
312 template<
class T1,
class C1,
class T2,
class C2>
313 inline typename MakeReturn<
314 BinaryNode<FnPow, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
323 template<
class T1,
class C1,
class T2,
class C2>
324 inline typename MakeReturn<
325 BinaryNode<FnFmod, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
334 template<
class T1,
class C1,
class T2,
class C2>
335 inline typename MakeReturn<
336 BinaryNode<FnArcTan2, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
346 template<
class T1,
class C1,
class T2,
class C2>
347 inline typename MakeReturn<
348 BinaryNode<OpLT, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
357 template<
class T1,
class C1,
class T2,
class C2>
358 inline typename MakeReturn<
359 BinaryNode<OpLE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
368 template<
class T1,
class C1,
class T2,
class C2>
369 inline typename MakeReturn<
370 BinaryNode<OpGT, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
379 template<
class T1,
class C1,
class T2,
class C2>
380 inline typename MakeReturn<
381 BinaryNode<OpGE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
390 template<
class T1,
class C1,
class T2,
class C2>
391 inline typename MakeReturn<
392 BinaryNode<OpEQ, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
401 template<
class T1,
class C1,
class T2,
class C2>
402 inline typename MakeReturn<
403 BinaryNode<OpNE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
412 template<
class T1,
class C1,
class T2,
class C2>
413 inline typename MakeReturn<
414 BinaryNode<OpAnd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
423 template<
class T1,
class C1,
class T2,
class C2>
424 inline typename MakeReturn<
425 BinaryNode<OpOr, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
434 template<
class T1,
class C1,
class T2,
class C2>
435 inline typename MakeReturn<
436 BinaryNode<OpLeftShift, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
446 template<
class T1,
class C1,
class T2,
class C2>
447 inline typename MakeReturn<BinaryNode<OpRightShift,
448 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
449 typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
458 template<
class T1,
class C1,
class T2>
459 inline typename MakeReturn<
460 BinaryNode<OpAdd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
469 template<
class T1,
class C1,
class T2>
470 inline typename MakeReturn<
471 BinaryNode<OpSubtract, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
481 template<
class T1,
class C1,
class T2>
482 inline typename MakeReturn<
483 BinaryNode<OpMultiply, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
493 template<
class T1,
class C1,
class T2>
494 inline typename MakeReturn<
495 BinaryNode<OpDivide, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
504 template<
class T1,
class C1,
class T2>
505 inline typename MakeReturn<
506 BinaryNode<OpMod, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
515 template<
class T1,
class C1,
class T2>
516 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
517 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
518 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
527 template<
class T1,
class C1,
class T2>
528 inline typename MakeReturn<
529 BinaryNode<OpBitwiseOr, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
539 template<
class T1,
class C1,
class T2>
540 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
541 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
542 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
551 template<
class T1,
class C1,
class T2>
552 inline typename MakeReturn<
553 BinaryNode<FnLdexp, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
562 template<
class T1,
class C1,
class T2>
563 inline typename MakeReturn<
564 BinaryNode<FnPow, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
573 template<
class T1,
class C1,
class T2>
574 inline typename MakeReturn<
575 BinaryNode<FnFmod, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
584 template<
class T1,
class C1,
class T2>
585 inline typename MakeReturn<
586 BinaryNode<FnArcTan2, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
596 template<
class T1,
class C1,
class T2>
597 inline typename MakeReturn<
598 BinaryNode<OpLT, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
607 template<
class T1,
class C1,
class T2>
608 inline typename MakeReturn<
609 BinaryNode<OpLE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
618 template<
class T1,
class C1,
class T2>
619 inline typename MakeReturn<
620 BinaryNode<OpGT, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
629 template<
class T1,
class C1,
class T2>
630 inline typename MakeReturn<
631 BinaryNode<OpGE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
640 template<
class T1,
class C1,
class T2>
641 inline typename MakeReturn<
642 BinaryNode<OpEQ, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
651 template<
class T1,
class C1,
class T2>
652 inline typename MakeReturn<
653 BinaryNode<OpNE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
662 template<
class T1,
class C1,
class T2>
663 inline typename MakeReturn<
664 BinaryNode<OpAnd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
673 template<
class T1,
class C1,
class T2>
674 inline typename MakeReturn<
675 BinaryNode<OpOr, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
684 template<
class T1,
class C1,
class T2>
685 inline typename MakeReturn<
686 BinaryNode<OpLeftShift, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
696 template<
class T1,
class C1,
class T2>
697 inline typename MakeReturn<BinaryNode<OpRightShift,
698 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
699 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
708 template<
class T1,
class T2,
class C2>
709 inline typename MakeReturn<
710 BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
719 template<
class T1,
class T2,
class C2>
720 inline typename MakeReturn<
721 BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
731 template<
class T1,
class T2,
class C2>
732 inline typename MakeReturn<
733 BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
743 template<
class T1,
class T2,
class C2>
744 inline typename MakeReturn<
745 BinaryNode<OpDivide, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
754 template<
class T1,
class T2,
class C2>
755 inline typename MakeReturn<
756 BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
765 template<
class T1,
class T2,
class C2>
766 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
767 typename CreateLeaf<Expression<T1>>::Leaf_t,
768 typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
777 template<
class T1,
class T2,
class C2>
778 inline typename MakeReturn<
779 BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
789 template<
class T1,
class T2,
class C2>
790 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
791 typename CreateLeaf<Expression<T1>>::Leaf_t,
792 typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
801 template<
class T1,
class T2,
class C2>
802 inline typename MakeReturn<
803 BinaryNode<FnLdexp, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
812 template<
class T1,
class T2,
class C2>
813 inline typename MakeReturn<
814 BinaryNode<FnPow, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
823 template<
class T1,
class T2,
class C2>
824 inline typename MakeReturn<
825 BinaryNode<FnFmod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
834 template<
class T1,
class T2,
class C2>
835 inline typename MakeReturn<
836 BinaryNode<FnArcTan2, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
846 template<
class T1,
class T2,
class C2>
847 inline typename MakeReturn<
848 BinaryNode<OpLT, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
857 template<
class T1,
class T2,
class C2>
858 inline typename MakeReturn<
859 BinaryNode<OpLE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
868 template<
class T1,
class T2,
class C2>
869 inline typename MakeReturn<
870 BinaryNode<OpGT, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
879 template<
class T1,
class T2,
class C2>
880 inline typename MakeReturn<
881 BinaryNode<OpGE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
890 template<
class T1,
class T2,
class C2>
891 inline typename MakeReturn<
892 BinaryNode<OpEQ, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
901 template<
class T1,
class T2,
class C2>
902 inline typename MakeReturn<
903 BinaryNode<OpNE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
912 template<
class T1,
class T2,
class C2>
913 inline typename MakeReturn<
914 BinaryNode<OpAnd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
923 template<
class T1,
class T2,
class C2>
924 inline typename MakeReturn<
925 BinaryNode<OpOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
934 template<
class T1,
class T2,
class C2>
935 inline typename MakeReturn<
936 BinaryNode<OpLeftShift, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
946 template<
class T1,
class T2,
class C2>
947 inline typename MakeReturn<BinaryNode<OpRightShift,
948 typename CreateLeaf<Expression<T1>>::Leaf_t,
949 typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
958 template<
class T1,
class C1,
class T2>
959 inline typename MakeReturn<
960 BinaryNode<OpAdd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
967 template<
class T1,
class C1,
class T2>
968 inline typename MakeReturn<
969 BinaryNode<OpSubtract, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
976 template<
class T1,
class C1,
class T2>
977 inline typename MakeReturn<
978 BinaryNode<OpMultiply, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
985 template<
class T1,
class C1,
class T2>
986 inline typename MakeReturn<
987 BinaryNode<OpDivide, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
994 template<
class T1,
class C1,
class T2>
995 inline typename MakeReturn<
996 BinaryNode<OpMod, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1003 template<
class T1,
class C1,
class T2>
1004 inline typename MakeReturn<
1005 BinaryNode<OpBitwiseAnd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::
1013 template<
class T1,
class C1,
class T2>
1014 inline typename MakeReturn<
1015 BinaryNode<OpBitwiseOr, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1022 template<
class T1,
class C1,
class T2>
1023 inline typename MakeReturn<
1024 BinaryNode<OpBitwiseXor, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::
1032 template<
class T1,
class C1,
class T2>
1033 inline typename MakeReturn<
1034 BinaryNode<FnLdexp, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1041 template<
class T1,
class C1,
class T2>
1042 inline typename MakeReturn<
1043 BinaryNode<FnPow, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1050 template<
class T1,
class C1,
class T2>
1051 inline typename MakeReturn<
1052 BinaryNode<FnFmod, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1059 template<
class T1,
class C1,
class T2>
1060 inline typename MakeReturn<
1061 BinaryNode<FnArcTan2, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1068 template<
class T1,
class C1,
class T2>
1069 inline typename MakeReturn<
1070 BinaryNode<OpLT, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1071 operator<(const Vector<T1, C1>& l,
const T2& r)
1077 template<
class T1,
class C1,
class T2>
1078 inline typename MakeReturn<
1079 BinaryNode<OpLE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1080 operator<=(const Vector<T1, C1>& l,
const T2& r)
1086 template<
class T1,
class C1,
class T2>
1087 inline typename MakeReturn<
1088 BinaryNode<OpGT, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1095 template<
class T1,
class C1,
class T2>
1096 inline typename MakeReturn<
1097 BinaryNode<OpGE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1104 template<
class T1,
class C1,
class T2>
1105 inline typename MakeReturn<
1106 BinaryNode<OpEQ, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1113 template<
class T1,
class C1,
class T2>
1114 inline typename MakeReturn<
1115 BinaryNode<OpNE, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1122 template<
class T1,
class C1,
class T2>
1123 inline typename MakeReturn<
1124 BinaryNode<OpAnd, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1131 template<
class T1,
class C1,
class T2>
1132 inline typename MakeReturn<
1133 BinaryNode<OpOr, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1140 template<
class T1,
class C1,
class T2>
1141 inline typename MakeReturn<
1142 BinaryNode<OpLeftShift, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1143 operator<<(const Vector<T1, C1>& l,
const T2& r)
1149 template<
class T1,
class C1,
class T2>
1150 inline typename MakeReturn<
1151 BinaryNode<OpRightShift, typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::
1159 template<
class T1,
class T2,
class C2>
1160 inline typename MakeReturn<
1161 BinaryNode<OpAdd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1168 template<
class T1,
class T2,
class C2>
1169 inline typename MakeReturn<
1170 BinaryNode<OpSubtract, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1177 template<
class T1,
class T2,
class C2>
1178 inline typename MakeReturn<
1179 BinaryNode<OpMultiply, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1186 template<
class T1,
class T2,
class C2>
1187 inline typename MakeReturn<
1188 BinaryNode<OpDivide, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1195 template<
class T1,
class T2,
class C2>
1196 inline typename MakeReturn<
1197 BinaryNode<OpMod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1204 template<
class T1,
class T2,
class C2>
1205 inline typename MakeReturn<
1206 BinaryNode<OpBitwiseAnd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
1214 template<
class T1,
class T2,
class C2>
1215 inline typename MakeReturn<
1216 BinaryNode<OpBitwiseOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1223 template<
class T1,
class T2,
class C2>
1224 inline typename MakeReturn<
1225 BinaryNode<OpBitwiseXor, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
1233 template<
class T1,
class T2,
class C2>
1234 inline typename MakeReturn<
1235 BinaryNode<FnLdexp, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1242 template<
class T1,
class T2,
class C2>
1243 inline typename MakeReturn<
1244 BinaryNode<FnPow, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1251 template<
class T1,
class T2,
class C2>
1252 inline typename MakeReturn<
1253 BinaryNode<FnFmod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1260 template<
class T1,
class T2,
class C2>
1261 inline typename MakeReturn<
1262 BinaryNode<FnArcTan2, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1269 template<
class T1,
class T2,
class C2>
1270 inline typename MakeReturn<
1271 BinaryNode<OpLT, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1272 operator<(const T1& l, const Vector<T2, C2>& r)
1278 template<
class T1,
class T2,
class C2>
1279 inline typename MakeReturn<
1280 BinaryNode<OpLE, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1281 operator<=(const T1& l, const Vector<T2, C2>& r)
1287 template<
class T1,
class T2,
class C2>
1288 inline typename MakeReturn<
1289 BinaryNode<OpGT, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1296 template<
class T1,
class T2,
class C2>
1297 inline typename MakeReturn<
1298 BinaryNode<OpGE, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1305 template<
class T1,
class T2,
class C2>
1306 inline typename MakeReturn<
1307 BinaryNode<OpEQ, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1314 template<
class T1,
class T2,
class C2>
1315 inline typename MakeReturn<
1316 BinaryNode<OpNE, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1323 template<
class T1,
class T2,
class C2>
1324 inline typename MakeReturn<
1325 BinaryNode<OpAnd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1332 template<
class T1,
class T2,
class C2>
1333 inline typename MakeReturn<
1334 BinaryNode<OpOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1340 #ifdef PETE_ALLOW_SCALAR_SHIFT 1342 template<
class T1,
class T2,
class C2>
1343 inline typename MakeReturn<
1344 BinaryNode<OpLeftShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::Expression_t
1345 operator<<(const T1& l, const Vector<T2, C2>& r)
1347 using Tree_t = BinaryNode<OpLeftShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>;
1351 template<
class T1,
class T2,
class C2>
1352 inline typename MakeReturn<
1353 BinaryNode<OpRightShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>>::
1355 operator>>(
const T1& l,
const Vector<T2, C2>& r)
1357 using Tree_t = BinaryNode<OpRightShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Vector<T2, C2>>::Leaf_t>;
1360 #endif // PETE_ALLOW_SCALAR_SHIFT 1362 template<
class T1,
class C1,
class T2,
class T3>
1363 inline typename MakeReturn<TrinaryNode<FnWhere,
1364 typename CreateLeaf<Vector<T1, C1>>::Leaf_t,
1375 #ifndef PETE_EXPRESSION_OPERATORS 1376 #define PETE_EXPRESSION_OPERATORS 1507 inline typename MakeReturn<UnaryNode<OpUnaryMinus, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
1510 using Tree_t = UnaryNode<OpUnaryMinus, typename CreateLeaf<Expression<T1>>::Leaf_t>;
1515 inline typename MakeReturn<UnaryNode<OpUnaryPlus, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
operator+(
1516 const Expression<T1>& l)
1518 using Tree_t = UnaryNode<OpUnaryPlus, typename CreateLeaf<Expression<T1>>::Leaf_t>;
1523 inline typename MakeReturn<UnaryNode<OpBitwiseNot, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
1526 using Tree_t = UnaryNode<OpBitwiseNot, typename CreateLeaf<Expression<T1>>::Leaf_t>;
1531 inline typename MakeReturn<UnaryNode<OpIdentity, typename CreateLeaf<Expression<T1>>::Leaf_t>>::Expression_t
1534 using Tree_t = UnaryNode<OpIdentity, typename CreateLeaf<Expression<T1>>::Leaf_t>;
1546 template<
class T1,
class T2>
1547 inline typename MakeReturn<UnaryNode<OpCast<T1>,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
peteCast(
1549 const Expression<T2>& l)
1551 using Tree_t = UnaryNode<OpCast<T1>,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
1555 template<
class T1,
class T2>
1556 inline typename MakeReturn<
1557 BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1559 operator+(
const Expression<T1>& l,
const Expression<T2>& r)
1561 typedef BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>
1566 template<
class T1,
class T2>
1567 inline typename MakeReturn<
1568 BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1570 operator-(
const Expression<T1>& l,
const Expression<T2>& r)
1572 typedef BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
1573 typename CreateLeaf<Expression<T2>>::Leaf_t>
1578 template<
class T1,
class T2>
1579 inline typename MakeReturn<
1580 BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1582 operator*(
const Expression<T1>& l,
const Expression<T2>& r)
1584 typedef BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
1585 typename CreateLeaf<Expression<T2>>::Leaf_t>
1590 template<
class T1,
class T2>
1591 inline typename MakeReturn<
1592 BinaryNode<OpDivide, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1601 template<
class T1,
class T2>
1602 inline typename MakeReturn<
1603 BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1605 operator%(
const Expression<T1>& l,
const Expression<T2>& r)
1607 typedef BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>
1612 template<
class T1,
class T2>
1613 inline typename MakeReturn<BinaryNode<OpBitwiseAnd,
1614 typename CreateLeaf<Expression<T1>>::Leaf_t,
1615 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
1624 template<
class T1,
class T2>
1625 inline typename MakeReturn<
1626 BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1628 operator|(
const Expression<T1>& l,
const Expression<T2>& r)
1630 typedef BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
1631 typename CreateLeaf<Expression<T2>>::Leaf_t>
1636 template<
class T1,
class T2>
1637 inline typename MakeReturn<BinaryNode<OpBitwiseXor,
1638 typename CreateLeaf<Expression<T1>>::Leaf_t,
1639 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
1640 operator^(
const Expression<T1>& l,
const Expression<T2>& r)
1642 typedef BinaryNode<OpBitwiseXor, typename CreateLeaf<Expression<T1>>::Leaf_t,
1643 typename CreateLeaf<Expression<T2>>::Leaf_t>
1648 template<
class T1,
class T2>
1649 inline typename MakeReturn<
1650 BinaryNode<FnLdexp, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1659 template<
class T1,
class T2>
1660 inline typename MakeReturn<
1661 BinaryNode<FnPow, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1670 template<
class T1,
class T2>
1671 inline typename MakeReturn<
1672 BinaryNode<FnFmod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1681 template<
class T1,
class T2>
1682 inline typename MakeReturn<
1683 BinaryNode<FnArcTan2, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1693 template<
class T1,
class T2>
1694 inline typename MakeReturn<
1695 BinaryNode<OpLT, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1704 template<
class T1,
class T2>
1705 inline typename MakeReturn<
1706 BinaryNode<OpLE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1715 template<
class T1,
class T2>
1716 inline typename MakeReturn<
1717 BinaryNode<OpGT, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1726 template<
class T1,
class T2>
1727 inline typename MakeReturn<
1728 BinaryNode<OpGE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1737 template<
class T1,
class T2>
1738 inline typename MakeReturn<
1739 BinaryNode<OpEQ, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1748 template<
class T1,
class T2>
1749 inline typename MakeReturn<
1750 BinaryNode<OpNE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1759 template<
class T1,
class T2>
1760 inline typename MakeReturn<
1761 BinaryNode<OpAnd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1770 template<
class T1,
class T2>
1771 inline typename MakeReturn<
1772 BinaryNode<OpOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1781 template<
class T1,
class T2>
1782 inline typename MakeReturn<
1783 BinaryNode<OpLeftShift, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
1793 template<
class T1,
class T2>
1794 inline typename MakeReturn<BinaryNode<OpRightShift,
1795 typename CreateLeaf<Expression<T1>>::Leaf_t,
1796 typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
1805 template<
class T1,
class T2>
1806 inline typename MakeReturn<
1807 BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1808 operator+(
const Expression<T1>& l,
const T2& r)
1810 using Tree_t = BinaryNode<OpAdd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>;
1814 template<
class T1,
class T2>
1815 inline typename MakeReturn<
1816 BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1817 operator-(
const Expression<T1>& l,
const T2& r)
1819 using Tree_t = BinaryNode<OpSubtract, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>;
1823 template<
class T1,
class T2>
1824 inline typename MakeReturn<
1825 BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1826 operator*(
const Expression<T1>& l,
const T2& r)
1828 using Tree_t = BinaryNode<OpMultiply, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>;
1832 template<
class T1,
class T2>
1833 inline typename MakeReturn<
1834 BinaryNode<OpDivide, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1841 template<
class T1,
class T2>
1842 inline typename MakeReturn<
1843 BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1844 operator%(
const Expression<T1>& l,
const T2& r)
1846 using Tree_t = BinaryNode<OpMod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>;
1850 template<
class T1,
class T2>
1851 inline typename MakeReturn<
1852 BinaryNode<OpBitwiseAnd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::
1860 template<
class T1,
class T2>
1861 inline typename MakeReturn<
1862 BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1863 operator|(
const Expression<T1>& l,
const T2& r)
1865 using Tree_t = BinaryNode<OpBitwiseOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>;
1869 template<
class T1,
class T2>
1870 inline typename MakeReturn<
1871 BinaryNode<OpBitwiseXor, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::
1873 operator^(
const Expression<T1>& l,
const T2& r)
1875 using Tree_t = BinaryNode<OpBitwiseXor, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>;
1879 template<
class T1,
class T2>
1880 inline typename MakeReturn<
1881 BinaryNode<FnLdexp, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1888 template<
class T1,
class T2>
1889 inline typename MakeReturn<
1890 BinaryNode<FnPow, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1897 template<
class T1,
class T2>
1898 inline typename MakeReturn<
1899 BinaryNode<FnFmod, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1906 template<
class T1,
class T2>
1907 inline typename MakeReturn<
1908 BinaryNode<FnArcTan2, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1915 template<
class T1,
class T2>
1916 inline typename MakeReturn<
1917 BinaryNode<OpLT, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1918 operator<(const Expression<T1>& l,
const T2& r)
1924 template<
class T1,
class T2>
1925 inline typename MakeReturn<
1926 BinaryNode<OpLE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1927 operator<=(const Expression<T1>& l,
const T2& r)
1933 template<
class T1,
class T2>
1934 inline typename MakeReturn<
1935 BinaryNode<OpGT, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1942 template<
class T1,
class T2>
1943 inline typename MakeReturn<
1944 BinaryNode<OpGE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1951 template<
class T1,
class T2>
1952 inline typename MakeReturn<
1953 BinaryNode<OpEQ, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1960 template<
class T1,
class T2>
1961 inline typename MakeReturn<
1962 BinaryNode<OpNE, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1969 template<
class T1,
class T2>
1970 inline typename MakeReturn<
1971 BinaryNode<OpAnd, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1978 template<
class T1,
class T2>
1979 inline typename MakeReturn<
1980 BinaryNode<OpOr, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1987 template<
class T1,
class T2>
1988 inline typename MakeReturn<
1989 BinaryNode<OpLeftShift, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::Expression_t
1990 operator<<(const Expression<T1>& l,
const T2& r)
1996 template<
class T1,
class T2>
1997 inline typename MakeReturn<
1998 BinaryNode<OpRightShift, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t>>::
2006 template<
class T1,
class T2>
2007 inline typename MakeReturn<
2008 BinaryNode<OpAdd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2009 operator+(
const T1& l,
const Expression<T2>& r)
2011 using Tree_t = BinaryNode<OpAdd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2015 template<
class T1,
class T2>
2016 inline typename MakeReturn<
2017 BinaryNode<OpSubtract, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2018 operator-(
const T1& l,
const Expression<T2>& r)
2020 using Tree_t = BinaryNode<OpSubtract, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2024 template<
class T1,
class T2>
2025 inline typename MakeReturn<
2026 BinaryNode<OpMultiply, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2027 operator*(
const T1& l,
const Expression<T2>& r)
2029 using Tree_t = BinaryNode<OpMultiply, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2033 template<
class T1,
class T2>
2034 inline typename MakeReturn<
2035 BinaryNode<OpDivide, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2042 template<
class T1,
class T2>
2043 inline typename MakeReturn<
2044 BinaryNode<OpMod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2045 operator%(
const T1& l,
const Expression<T2>& r)
2047 using Tree_t = BinaryNode<OpMod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2051 template<
class T1,
class T2>
2052 inline typename MakeReturn<
2053 BinaryNode<OpBitwiseAnd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
2061 template<
class T1,
class T2>
2062 inline typename MakeReturn<
2063 BinaryNode<OpBitwiseOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2064 operator|(
const T1& l,
const Expression<T2>& r)
2066 using Tree_t = BinaryNode<OpBitwiseOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2070 template<
class T1,
class T2>
2071 inline typename MakeReturn<
2072 BinaryNode<OpBitwiseXor, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
2074 operator^(
const T1& l,
const Expression<T2>& r)
2076 using Tree_t = BinaryNode<OpBitwiseXor, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2080 template<
class T1,
class T2>
2081 inline typename MakeReturn<
2082 BinaryNode<FnLdexp, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2089 template<
class T1,
class T2>
2090 inline typename MakeReturn<
2091 BinaryNode<FnPow, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2098 template<
class T1,
class T2>
2099 inline typename MakeReturn<
2100 BinaryNode<FnFmod, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2107 template<
class T1,
class T2>
2108 inline typename MakeReturn<
2109 BinaryNode<FnArcTan2, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2116 template<
class T1,
class T2>
2117 inline typename MakeReturn<
2118 BinaryNode<OpLT, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2119 operator<(const T1& l, const Expression<T2>& r)
2125 template<
class T1,
class T2>
2126 inline typename MakeReturn<
2127 BinaryNode<OpLE, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2128 operator<=(const T1& l, const Expression<T2>& r)
2134 template<
class T1,
class T2>
2135 inline typename MakeReturn<
2136 BinaryNode<OpGT, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2143 template<
class T1,
class T2>
2144 inline typename MakeReturn<
2145 BinaryNode<OpGE, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2152 template<
class T1,
class T2>
2153 inline typename MakeReturn<
2154 BinaryNode<OpEQ, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2161 template<
class T1,
class T2>
2162 inline typename MakeReturn<
2163 BinaryNode<OpNE, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2170 template<
class T1,
class T2>
2171 inline typename MakeReturn<
2172 BinaryNode<OpAnd, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2179 template<
class T1,
class T2>
2180 inline typename MakeReturn<
2181 BinaryNode<OpOr, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2187 #ifdef PETE_ALLOW_SCALAR_SHIFT 2189 template<
class T1,
class T2>
2190 inline typename MakeReturn<
2191 BinaryNode<OpLeftShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::Expression_t
2192 operator<<(const T1& l, const Expression<T2>& r)
2194 using Tree_t = BinaryNode<OpLeftShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2198 template<
class T1,
class T2>
2199 inline typename MakeReturn<
2200 BinaryNode<OpRightShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>>::
2202 operator>>(
const T1& l,
const Expression<T2>& r)
2204 using Tree_t = BinaryNode<OpRightShift, typename CreateLeaf<T1>::Leaf_t,
typename CreateLeaf<Expression<T2>>::Leaf_t>;
2207 #endif // PETE_ALLOW_SCALAR_SHIFT 2209 template<
class T1,
class T2,
class T3>
2210 inline typename MakeReturn<TrinaryNode<FnWhere,
2211 typename CreateLeaf<Expression<T1>>::Leaf_t,
2214 where(
const Expression<T1>& c,
const T2& t,
const T3& f)
2216 typedef TrinaryNode<FnWhere, typename CreateLeaf<Expression<T1>>::Leaf_t,
typename CreateLeaf<T2>::Leaf_t,
2222 #endif // PETE_EXPRESSION_OPERATORS 2224 template<
class T1,
class C1,
class RHS>
2232 template<
class T1,
class C1,
class RHS>
2240 template<
class T1,
class C1,
class RHS>
2248 template<
class T1,
class C1,
class RHS>
2256 template<
class T1,
class C1,
class RHS>
2264 template<
class T1,
class C1,
class RHS>
2272 template<
class T1,
class C1,
class RHS>
2280 template<
class T1,
class C1,
class RHS>
2288 template<
class T1,
class C1,
class RHS>
2296 template<
class T1,
class C1,
class RHS>
2304 template<
class T1,
class C1,
class RHS>
2314 #endif // GENERATED_OPERATORS_H MakeReturn< BinaryNode< OpMultiply, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator*(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
Matrix< T1, C1 > & operator%=(Matrix< T1, C1 > &lhs, const RHS &rhs)
Matrix< T1, C1 > & operator|=(Matrix< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< BinaryNode< OpMod, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator%(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
helper functions for EinsplineSetBuilder
MakeReturn< UnaryNode< FnHypSin, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sinh(const Vector< T1, C1 > &l)
MakeReturn< BinaryNode< FnFmod, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t fmod(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
MakeReturn< UnaryNode< FnFabs, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t abs(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< OpBitwiseNot, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t > >::Expression_t operator~(const Matrix< T1, C1 > &l)
MakeReturn< BinaryNode< OpGE, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t operator>=(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
MakeReturn< BinaryNode< FnLdexp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t ldexp(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
MakeReturn< UnaryNode< FnSin, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sin(const Vector< T1, C1 > &l)
bool operator==(const Matrix< T, Alloc > &lhs, const Matrix< T, Alloc > &rhs)
MakeReturn< UnaryNode< OpUnaryMinus, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t > >::Expression_t operator-(const Matrix< T1, C1 > &l)
MakeReturn< TrinaryNode< FnWhere, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< T2 >::Leaf_t, typename CreateLeaf< T3 >::Leaf_t > >::Expression_t where(const Matrix< T1, C1 > &c, const T2 &t, const T3 &f)
MakeReturn< UnaryNode< FnHypCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t cosh(const Vector< T1, C1 > &l)
const AntiSymTensor< T, D > & operator+(const AntiSymTensor< T, D > &op)
Matrix< T1, C1 > & operator+=(Matrix< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< BinaryNode< FnPow, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t pow(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
static Expression_t make(const T &a)
Matrix< T1, C1 > & operator &=(Matrix< T1, C1 > &lhs, const RHS &rhs)
static Leaf_t make(const T &a)
MakeReturn< UnaryNode< FnHypTan, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t tanh(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t cos(const Vector< T1, C1 > &l)
MakeReturn< BinaryNode< OpBitwiseAnd, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator &(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
MakeReturn< UnaryNode< FnCeil, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t ceil(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnArcCos, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t acos(const Vector< T1, C1 > &l)
MakeReturn< BinaryNode< FnArcTan2, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t atan2(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
Matrix< T1, C1 > & operator^=(Matrix< T1, C1 > &lhs, const RHS &rhs)
Matrix< T1, C1 > & assign(Matrix< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< UnaryNode< FnArcTan, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t atan(const Vector< T1, C1 > &l)
MakeReturn< BinaryNode< OpAnd, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t operator &&(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
MakeReturn< BinaryNode< OpBitwiseXor, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator^(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)
MakeReturn< UnaryNode< OpCast< T1 >, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t peteCast(const T1 &, const Matrix< T2, C2 > &l)
Vector< T1, C1 > & operator>>=(Vector< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< BinaryNode< OpGT, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t operator>(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
MakeReturn< UnaryNode< FnExp, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t exp(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnTan, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t tan(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnLog10, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t log10(const Vector< T1, C1 > &l)
Matrix< T1, C1 > & operator*=(Matrix< T1, C1 > &lhs, const RHS &rhs)
Vector< T1, C1 > & operator/=(Vector< T1, C1 > &lhs, const RHS &rhs)
MakeReturn< UnaryNode< FnLog, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t log(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnSqrt, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t sqrt(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< OpNot, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t operator!(const Vector< T1, C1 > &l)
Matrix< T1, C1 > & operator-=(Matrix< T1, C1 > &lhs, const RHS &rhs)
void evaluate(Matrix< T, Alloc > &lhs, const Op &op, const Expression< RHS > &rhs)
MakeReturn< BinaryNode< OpOr, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t operator||(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
std::istream & operator>>(std::istream &is, Matrix< T, Alloc > &rhs)
MakeReturn< UnaryNode< OpIdentity, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t > >::Expression_t PETE_identity(const Matrix< T1, C1 > &l)
MakeReturn< BinaryNode< OpDivide, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t, typename CreateLeaf< Vector< T2, C2 > >::Leaf_t > >::Expression_t operator/(const Vector< T1, C1 > &l, const Vector< T2, C2 > &r)
bool operator!=(const Matrix< T, Alloc > &lhs, const Matrix< T, Alloc > &rhs)
MakeReturn< UnaryNode< FnArcSin, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t asin(const Vector< T1, C1 > &l)
MakeReturn< UnaryNode< FnFloor, typename CreateLeaf< Vector< T1, C1 > >::Leaf_t > >::Expression_t floor(const Vector< T1, C1 > &l)
MakeReturn< BinaryNode< OpBitwiseOr, typename CreateLeaf< Matrix< T1, C1 > >::Leaf_t, typename CreateLeaf< Matrix< T2, C2 > >::Leaf_t > >::Expression_t operator|(const Matrix< T1, C1 > &l, const Matrix< T2, C2 > &r)