14 int mod(
const int &a,
const int &b);
17 template<
typename T>
int sgn(T &val) {
18 return (T(0) < val) - (val < T(0));
21 int compress3Indices(
const int &i1,
const int &i2,
const int &i3,
22 const int &size1,
const int &size2,
const int &size3);
24 std::tuple<int, int, int> decompress3Indices(
const int &iTot,
25 const int &size1,
const int &size2,
const int &size3);
27 int compress2Indices(
const int &i1,
const int &i2,
const int &size1,
30 std::tuple<int, int> decompress2Indices(
const int &iTot,
const int &size1,
34 std::vector<std::string> tokenize(
const std::string str);
39 template <
typename T> T* allocate(T *&array,
const unsigned int size){
50 template<
typename T,
typename Parameter>
59 T
const& get()
const {
99 std::tuple<double, double> memoryUsage();
109 template<
typename Vector>
110 std::vector<Vector> splitVector(
const Vector& v,
unsigned chunkSize) {
111 using Iterator =
typename Vector::const_iterator;
112 std::vector<Vector> vectorChunks;
113 Iterator it = v.cbegin();
114 const Iterator end = v.cend();
118 std::back_insert_iterator<Vector> inserter(v2);
119 const auto num_to_copy = std::min(
static_cast<unsigned>(
120 std::distance(it, end)), chunkSize);
121 std::copy(it, it + num_to_copy, inserter);
122 vectorChunks.push_back(std::move(v2));
123 std::advance(it, num_to_copy);
129 double findMaxRelativeDifference(
const Eigen::Tensor<double,3> &x,
130 const Eigen::Tensor<double,3> &xRef);
136 std::vector<std::string> split(
const std::string &s,
char delimiter);
Class for implementing strong typing.
Definition: utilities.h:51