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