11 #ifndef TSV_META_BINARY_H
12 #define TSV_META_BINARY_H
29 template<
class T1,
class T2,
class OP,
unsigned D>
36 for (
unsigned d=0; d<D; ++d)
42 template<
class T1,
class T2,
class OP,
unsigned D>
49 for (
unsigned d=0; d<D; ++d)
55 template<
class T1,
class T2,
class OP,
unsigned D>
62 for (
unsigned d=0; d<D; ++d)
74 template<
class T1,
class T2,
class OP>
84 template<
class T1,
class T2,
class OP>
94 template<
class T1,
class T2,
class OP>
110 template<
class T1,
class T2,
class OP>
121 template<
class T1,
class T2,
class OP>
132 template<
class T1,
class T2,
class OP>
149 template<
class T1,
class T2,
class OP>
161 template<
class T1,
class T2,
class OP>
173 template<
class T1,
class T2,
class OP>
191 template<
class T1,
class T2,
class OP,
unsigned D>
198 for (
unsigned d=0; d<D*D; ++d)
204 template<
class T1,
class T2,
class OP,
unsigned D>
211 for (
unsigned d=0; d<D*D; ++d)
217 template<
class T1,
class T2,
class OP,
unsigned D>
224 for (
unsigned d=0; d<D*D; ++d)
236 template<
class T1,
class T2,
class OP>
246 template<
class T1,
class T2,
class OP>
256 template<
class T1,
class T2,
class OP>
272 template<
class T1,
class T2,
class OP>
285 template<
class T1,
class T2,
class OP>
298 template<
class T1,
class T2,
class OP>
317 template<
class T1,
class T2,
class OP>
335 template<
class T1,
class T2,
class OP>
353 template<
class T1,
class T2,
class OP>
377 template<
class T1,
class T2,
class OP,
unsigned D>
384 for (
unsigned d=0; d<D*(D+1)/2; ++d)
390 template<
class T1,
class T2,
class OP,
unsigned D>
397 for (
unsigned d=0; d<D*(D+1)/2; ++d)
403 template<
class T1,
class T2,
class OP,
unsigned D>
410 for (
unsigned d=0; d<D*(D+1)/2; ++d)
422 template<
class T1,
class T2,
class OP>
432 template<
class T1,
class T2,
class OP>
442 template<
class T1,
class T2,
class OP>
458 template<
class T1,
class T2,
class OP>
470 template<
class T1,
class T2,
class OP>
482 template<
class T1,
class T2,
class OP>
500 template<
class T1,
class T2,
class OP>
515 template<
class T1,
class T2,
class OP>
530 template<
class T1,
class T2,
class OP>
551 template<
class T1,
class T2,
class OP,
unsigned D>
558 for (
unsigned i = 0; i < D; i++)
559 for (
unsigned j = 0; j < D; j++)
560 ret(i, j) =
PETE_apply(OP(), lhs(i, j), rhs(i, j));
571 template<
class T1,
class T2,
class OP,
unsigned D>
578 for (
unsigned i = 0; i < D; i++)
579 for (
unsigned j = 0; j < D; j++)
580 ret(i, j) =
PETE_apply(OP(), lhs(i, j), rhs(i, j));
591 template<
class T1,
class T2,
class OP,
unsigned D>
598 for (
unsigned d=0; d<D*(D-1)/2; ++d)
604 template<
class T1,
class T2,
class OP,
unsigned D>
611 for (
unsigned d=0; d<D*(D-1)/2; ++d)
617 template<
class T1,
class T2,
class OP,
unsigned D>
624 for (
unsigned d=0; d<D*(D-1)/2; ++d)
636 template<
class T1,
class T2,
class OP>
647 template<
class T1,
class T2,
class OP>
658 template<
class T1,
class T2,
class OP>
675 template<
class T1,
class T2,
class OP>
685 template<
class T1,
class T2,
class OP>
695 template<
class T1,
class T2,
class OP>
711 template<
class T1,
class T2,
class OP>
723 template<
class T1,
class T2,
class OP>
735 template<
class T1,
class T2,
class OP>
void PETE_apply(const OpPeriodic< T > &, T &a, const T &b)
static Vektor< T0, D > apply(const Vektor< T1, D > &lhs, const Vektor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, D > apply(const Vektor< T1, D > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, D > apply(T1 lhs, const Vektor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 1 > apply(const Vektor< T1, 1 > &lhs, const Vektor< T2, 1 > &rhs)
static Vektor< T0, 1 > apply(const Vektor< T1, 1 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 1 > apply(T1 lhs, const Vektor< T2, 1 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 2 > apply(const Vektor< T1, 2 > &lhs, const Vektor< T2, 2 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 2 > apply(const Vektor< T1, 2 > &lhs, T2 rhs)
static Vektor< T0, 2 > apply(T1 lhs, const Vektor< T2, 2 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 3 > apply(const Vektor< T1, 3 > &lhs, const Vektor< T2, 3 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 3 > apply(const Vektor< T1, 3 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Vektor< T0, 3 > apply(T1 lhs, const Vektor< T2, 3 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, D > apply(const Tenzor< T1, D > &lhs, const Tenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, D > apply(const Tenzor< T1, D > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, D > apply(T1 lhs, const Tenzor< T2, D > &rhs)
static Tenzor< T0, 1 > apply(const Tenzor< T1, 1 > &lhs, const Tenzor< T2, 1 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, 1 > apply(const Tenzor< T1, 1 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, 1 > apply(T1 lhs, const Tenzor< T2, 1 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, 2 > apply(const Tenzor< T1, 2 > &lhs, const Tenzor< T2, 2 > &rhs)
static Tenzor< T0, 2 > apply(const Tenzor< T1, 2 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, 2 > apply(T1 lhs, const Tenzor< T2, 2 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, 3 > apply(const Tenzor< T1, 3 > &lhs, const Tenzor< T2, 3 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, 3 > apply(const Tenzor< T1, 3 > &lhs, T2 rhs)
static Tenzor< T0, 3 > apply(T1 lhs, const Tenzor< T2, 3 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, D > apply(const SymTenzor< T1, D > &lhs, const SymTenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, D > apply(const SymTenzor< T1, D > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, D > apply(T1 lhs, const SymTenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 1 > apply(const SymTenzor< T1, 1 > &lhs, const SymTenzor< T2, 1 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 1 > apply(const SymTenzor< T1, 1 > &lhs, T2 rhs)
static SymTenzor< T0, 1 > apply(T1 lhs, const SymTenzor< T2, 1 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 2 > apply(const SymTenzor< T1, 2 > &lhs, const SymTenzor< T2, 2 > &rhs)
static SymTenzor< T0, 2 > apply(const SymTenzor< T1, 2 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 2 > apply(T1 lhs, const SymTenzor< T2, 2 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 3 > apply(const SymTenzor< T1, 3 > &lhs, const SymTenzor< T2, 3 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 3 > apply(const SymTenzor< T1, 3 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static SymTenzor< T0, 3 > apply(T1 lhs, const SymTenzor< T2, 3 > &rhs)
static Tenzor< T0, D > apply(const SymTenzor< T1, D > &lhs, const Tenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static Tenzor< T0, D > apply(const Tenzor< T1, D > &lhs, const SymTenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, D > apply(const AntiSymTenzor< T1, D > &lhs, const AntiSymTenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, D > apply(const AntiSymTenzor< T1, D > &lhs, T2 rhs)
static AntiSymTenzor< T0, D > apply(T1 lhs, const AntiSymTenzor< T2, D > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, 1 > apply(const AntiSymTenzor< T1, 1 > &, const AntiSymTenzor< T2, 1 > &)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, 1 > apply(const AntiSymTenzor< T1, 1 > &, T2)
static AntiSymTenzor< T0, 1 > apply(T1, const AntiSymTenzor< T2, 1 > &)
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, 2 > apply(const AntiSymTenzor< T1, 2 > &lhs, const AntiSymTenzor< T2, 2 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, 2 > apply(const AntiSymTenzor< T1, 2 > &lhs, T2 rhs)
static AntiSymTenzor< T0, 2 > apply(T1 lhs, const AntiSymTenzor< T2, 2 > &rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, 3 > apply(const AntiSymTenzor< T1, 3 > &lhs, const AntiSymTenzor< T2, 3 > &rhs)
static AntiSymTenzor< T0, 3 > apply(const AntiSymTenzor< T1, 3 > &lhs, T2 rhs)
PETEBinaryReturn< T1, T2, OP >::type T0
PETEBinaryReturn< T1, T2, OP >::type T0
static AntiSymTenzor< T0, 3 > apply(T1 lhs, const AntiSymTenzor< T2, 3 > &rhs)
PETE_ComputeBinaryType< T1, T2, Op, Op::tag >::type type