31#ifndef __TASMANIAN_SPARSE_GRID_UTILS_HPP
32#define __TASMANIAN_SPARSE_GRID_UTILS_HPP
46#include "tsgMathUtils.hpp"
65template<
typename scalar_type>
66void transpose(
long long M,
long long N, scalar_type
const A[], scalar_type B[]);
68template<
typename scalar_type>
69std::vector<scalar_type> transpose(
long long M,
long long N, scalar_type
const A[]){
70 std::vector<scalar_type> B(M * N);
71 transpose(M, N, A, B.data());
81template<
typename IntA,
typename IntB>
82inline size_t size_mult(IntA a, IntB b){
return static_cast<size_t>(a) *
static_cast<size_t>(b); }
91template<
typename T,
typename I>
92std::vector<typename std::remove_const<T>::type> copyArray(T* x, I size){
93 return (x ==
nullptr) ? std::vector<typename std::remove_const<T>::type>() :
94 std::vector<typename std::remove_const<T>::type>(x, x + static_cast<size_t>(size));
105std::vector<T> mergeVectors(std::vector<std::vector<T>>
const &vec){
106 size_t total_size = 0;
107 for(
auto const &v : vec) total_size += v.size();
108 std::vector<T> result;
109 result.reserve(total_size);
110 for(
auto const &v : vec) result.insert(result.end(), v.begin(), v.end());
130 Wrapper2D(
int stride_size, T *raw_data) : stride(static_cast<size_t>(stride_size)), data(raw_data){}
135 T* getStrip(
int i){
return &(data[size_mult(i, stride)]); }
146template<
bool condition>
147using use_if =
typename std::enable_if<condition, void>::type;
153template<
typename T,
typename U> T exchange(T& x, U new_x){
155 x =
static_cast<T
>(new_x);
163template<
typename T,
typename... Args>
164std::unique_ptr<T> make_unique(Args&&... args){
165 return std::unique_ptr<T>(
new T(std::forward<Args>(args)...));
Encapsulates the Tasmanian Sparse Grid module.
Definition TasmanianSparseGrid.hpp:68