8#include <kernel/shape.hpp>
9#include <kernel/util/math.hpp>
10#include <kernel/util/tiny_algebra.hpp>
26 template<
typename Shape_>
28 class CongruencyTrafo;
45 template<
typename DataType_,
int sm_,
int sn_,
int sl_>
46 static void compute(Tiny::Matrix<DataType_, m, n, sm_, sn_>& a, Tiny::Vector<DataType_, n, sl_>& b,
int orient);
54 class CongruencyTrafo<Shape::Simplex<1>>
57 template<
typename DataType_,
int sm_,
int sn_,
int sl_>
58 static void compute(Tiny::Matrix<DataType_, 1, 1, sm_, sn_>& a, Tiny::Vector<DataType_, 1, sl_>& b,
int orient)
64 b(
Index(0)) = DataType_(0);
68 b(
Index(0)) = +DataType_(1);
78 class CongruencyTrafo<Shape::Simplex<2>>
81 template<
typename DataType_,
int sm_,
int sn_,
int sl_>
82 static void compute(Tiny::Matrix<DataType_, 2, 2, sm_, sn_>& a, Tiny::Vector<DataType_, 2, sl_>& b,
int orient)
91 b(
Index(0)) = DataType_(0);
92 b(
Index(1)) = DataType_(0);
99 b(
Index(0)) = +DataType_(1);
100 b(
Index(1)) = DataType_(0);
107 b(
Index(0)) = DataType_(0);
108 b(
Index(1)) = +DataType_(1);
115 b(
Index(0)) = DataType_(0);
116 b(
Index(1)) = DataType_(0);
123 b(
Index(0)) = +DataType_(1);
124 b(
Index(1)) = DataType_(0);
131 b(
Index(0)) = DataType_(0);
132 b(
Index(1)) = +DataType_(1);
142 class CongruencyTrafo<Shape::Hypercube<1>>
145 template<
typename DataType_,
int sm_,
int sn_,
int sl_>
146 static void compute(Tiny::Matrix<DataType_, 1, 1, sm_, sn_>& a, Tiny::Vector<DataType_, 1, sl_>& b,
int orient)
157 b(
Index(0)) = DataType_(0);
165 class CongruencyTrafo<Shape::Hypercube<2>>
168 template<
typename DataType_,
int sm_,
int sn_,
int sl_>
169 static void compute(Tiny::Matrix<DataType_, 2, 2, sm_, sn_>& a, Tiny::Vector<DataType_, 2, sl_>& b,
int orient)
222 b(
Index(0)) = DataType_(0);
223 b(
Index(0)) = DataType_(0);
std::uint64_t Index
Index data type.