cxx11_tensor_simple.cpp File Reference
#include "main.h"
#include <Eigen/CXX11/Tensor>

Functions

static void test_0d ()
 
static void test_1d ()
 
static void test_2d ()
 
static void test_3d ()
 
static void test_simple_assign ()
 
static void test_resize ()
 
 EIGEN_DECLARE_TEST (cxx11_tensor_simple)
 

Function Documentation

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( cxx11_tensor_simple  )
325  {
332 }
static void test_3d()
Definition: cxx11_tensor_simple.cpp:166
static void test_0d()
Definition: cxx11_tensor_simple.cpp:17
static void test_2d()
Definition: cxx11_tensor_simple.cpp:123
static void test_resize()
Definition: cxx11_tensor_simple.cpp:302
static void test_simple_assign()
Definition: cxx11_tensor_simple.cpp:283
static void test_1d()
Definition: cxx11_tensor_simple.cpp:45
#define CALL_SUBTEST(FUNC)
Definition: main.h:382

References CALL_SUBTEST, test_0d(), test_1d(), test_2d(), test_3d(), test_resize(), and test_simple_assign().

◆ test_0d()

static void test_0d ( )
static
17  {
18  Tensor<int, 0> scalar1;
20  Tensor<int, 0> scalar3;
22 
23  scalar3.resize();
24  scalar4.resize();
25 
26  scalar1() = 7;
27  scalar2() = 13;
28  scalar3.setValues(17);
29  scalar4.setZero();
30 
31  VERIFY_IS_EQUAL(scalar1.rank(), 0);
32  VERIFY_IS_EQUAL(scalar1.size(), 1);
33 
34  VERIFY_IS_EQUAL(scalar1(), 7);
35  VERIFY_IS_EQUAL(scalar2(), 13);
36  VERIFY_IS_EQUAL(scalar3(), 17);
37  VERIFY_IS_EQUAL(scalar4(), 0);
38 
39  Tensor<int, 0> scalar5(scalar1);
40 
41  VERIFY_IS_EQUAL(scalar5(), 7);
42  VERIFY_IS_EQUAL(scalar5.data()[0], 7);
43 }
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setValues(const typename internal::Initializer< Derived, NumDimensions >::InitList &vals)
Definition: TensorBase.h:1058
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Derived & setZero()
Definition: TensorBase.h:1041
The tensor class.
Definition: Tensor.h:68
EIGEN_DEVICE_FUNC void resize(Index firstDimension, IndexTypes... otherDimensions)
Definition: Tensor.h:296
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index size() const
Definition: Tensor.h:101
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rank() const
Definition: Tensor.h:98
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367

References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::rank(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::resize(), Eigen::TensorBase< Derived, AccessLevel >::setValues(), Eigen::TensorBase< Derived, AccessLevel >::setZero(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_1d()

static void test_1d ( )
static
45  {
48  Tensor<int, 1> vec3;
50 
51  vec3.resize(6);
52  vec4.resize(6);
53 
54  vec1(0) = 4;
55  vec2(0) = 0;
56  vec3(0) = 5;
57  vec1(1) = 8;
58  vec2(1) = 1;
59  vec3(1) = 4;
60  vec1(2) = 15;
61  vec2(2) = 2;
62  vec3(2) = 3;
63  vec1(3) = 16;
64  vec2(3) = 3;
65  vec3(3) = 2;
66  vec1(4) = 23;
67  vec2(4) = 4;
68  vec3(4) = 1;
69  vec1(5) = 42;
70  vec2(5) = 5;
71  vec3(5) = 0;
72  vec4.setZero();
73 
74  VERIFY_IS_EQUAL((vec1.rank()), 1);
75  VERIFY_IS_EQUAL((vec1.size()), 6);
76  VERIFY_IS_EQUAL((vec1.dimensions()[0]), 6);
77 
78  VERIFY_IS_EQUAL((vec1[0]), 4);
79  VERIFY_IS_EQUAL((vec1[1]), 8);
80  VERIFY_IS_EQUAL((vec1[2]), 15);
81  VERIFY_IS_EQUAL((vec1[3]), 16);
82  VERIFY_IS_EQUAL((vec1[4]), 23);
83  VERIFY_IS_EQUAL((vec1[5]), 42);
84 
85  VERIFY_IS_EQUAL((vec2[0]), 0);
86  VERIFY_IS_EQUAL((vec2[1]), 1);
87  VERIFY_IS_EQUAL((vec2[2]), 2);
88  VERIFY_IS_EQUAL((vec2[3]), 3);
89  VERIFY_IS_EQUAL((vec2[4]), 4);
90  VERIFY_IS_EQUAL((vec2[5]), 5);
91 
92  VERIFY_IS_EQUAL((vec3[0]), 5);
93  VERIFY_IS_EQUAL((vec3[1]), 4);
94  VERIFY_IS_EQUAL((vec3[2]), 3);
95  VERIFY_IS_EQUAL((vec3[3]), 2);
96  VERIFY_IS_EQUAL((vec3[4]), 1);
97  VERIFY_IS_EQUAL((vec3[5]), 0);
98 
99  VERIFY_IS_EQUAL((vec4[0]), 0);
100  VERIFY_IS_EQUAL((vec4[1]), 0);
101  VERIFY_IS_EQUAL((vec4[2]), 0);
102  VERIFY_IS_EQUAL((vec4[3]), 0);
103  VERIFY_IS_EQUAL((vec4[4]), 0);
104  VERIFY_IS_EQUAL((vec4[5]), 0);
105 
106  Tensor<int, 1> vec5(vec1);
107 
108  VERIFY_IS_EQUAL((vec5(0)), 4);
109  VERIFY_IS_EQUAL((vec5(1)), 8);
110  VERIFY_IS_EQUAL((vec5(2)), 15);
111  VERIFY_IS_EQUAL((vec5(3)), 16);
112  VERIFY_IS_EQUAL((vec5(4)), 23);
113  VERIFY_IS_EQUAL((vec5(5)), 42);
114 
115  VERIFY_IS_EQUAL((vec5.data()[0]), 4);
116  VERIFY_IS_EQUAL((vec5.data()[1]), 8);
117  VERIFY_IS_EQUAL((vec5.data()[2]), 15);
118  VERIFY_IS_EQUAL((vec5.data()[3]), 16);
119  VERIFY_IS_EQUAL((vec5.data()[4]), 23);
120  VERIFY_IS_EQUAL((vec5.data()[5]), 42);
121 }
RowVectorXd vec1(3)

References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::resize(), Eigen::TensorBase< Derived, AccessLevel >::setZero(), vec1(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_2d()

static void test_2d ( )
static
123  {
124  Tensor<int, 2> mat1(2, 3);
125  Tensor<int, 2, RowMajor> mat2(2, 3);
126 
127  mat1(0, 0) = 0;
128  mat1(0, 1) = 1;
129  mat1(0, 2) = 2;
130  mat1(1, 0) = 3;
131  mat1(1, 1) = 4;
132  mat1(1, 2) = 5;
133 
134  mat2(0, 0) = 0;
135  mat2(0, 1) = 1;
136  mat2(0, 2) = 2;
137  mat2(1, 0) = 3;
138  mat2(1, 1) = 4;
139  mat2(1, 2) = 5;
140 
141  VERIFY_IS_EQUAL((mat1.rank()), 2);
142  VERIFY_IS_EQUAL((mat1.size()), 6);
143  VERIFY_IS_EQUAL((mat1.dimensions()[0]), 2);
144  VERIFY_IS_EQUAL((mat1.dimensions()[1]), 3);
145 
146  VERIFY_IS_EQUAL((mat2.rank()), 2);
147  VERIFY_IS_EQUAL((mat2.size()), 6);
148  VERIFY_IS_EQUAL((mat2.dimensions()[0]), 2);
149  VERIFY_IS_EQUAL((mat2.dimensions()[1]), 3);
150 
151  VERIFY_IS_EQUAL((mat1.data()[0]), 0);
152  VERIFY_IS_EQUAL((mat1.data()[1]), 3);
153  VERIFY_IS_EQUAL((mat1.data()[2]), 1);
154  VERIFY_IS_EQUAL((mat1.data()[3]), 4);
155  VERIFY_IS_EQUAL((mat1.data()[4]), 2);
156  VERIFY_IS_EQUAL((mat1.data()[5]), 5);
157 
158  VERIFY_IS_EQUAL((mat2.data()[0]), 0);
159  VERIFY_IS_EQUAL((mat2.data()[1]), 1);
160  VERIFY_IS_EQUAL((mat2.data()[2]), 2);
161  VERIFY_IS_EQUAL((mat2.data()[3]), 3);
162  VERIFY_IS_EQUAL((mat2.data()[4]), 4);
163  VERIFY_IS_EQUAL((mat2.data()[5]), 5);
164 }
MatrixXd mat1(size, size)

References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::dimensions(), mat1(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::rank(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_3d()

static void test_3d ( )
static
166  {
167  Tensor<int, 3> epsilon(3, 3, 3);
168  epsilon.setZero();
169  epsilon(0, 1, 2) = epsilon(2, 0, 1) = epsilon(1, 2, 0) = 1;
170  epsilon(2, 1, 0) = epsilon(0, 2, 1) = epsilon(1, 0, 2) = -1;
171 
172  VERIFY_IS_EQUAL((epsilon.size()), 27);
173  VERIFY_IS_EQUAL((epsilon.dimensions()[0]), 3);
174  VERIFY_IS_EQUAL((epsilon.dimensions()[1]), 3);
175  VERIFY_IS_EQUAL((epsilon.dimensions()[2]), 3);
176 
177  VERIFY_IS_EQUAL((epsilon(0, 0, 0)), 0);
178  VERIFY_IS_EQUAL((epsilon(0, 0, 1)), 0);
179  VERIFY_IS_EQUAL((epsilon(0, 0, 2)), 0);
180  VERIFY_IS_EQUAL((epsilon(0, 1, 0)), 0);
181  VERIFY_IS_EQUAL((epsilon(0, 1, 1)), 0);
182  VERIFY_IS_EQUAL((epsilon(0, 2, 0)), 0);
183  VERIFY_IS_EQUAL((epsilon(0, 2, 2)), 0);
184  VERIFY_IS_EQUAL((epsilon(1, 0, 0)), 0);
185  VERIFY_IS_EQUAL((epsilon(1, 0, 1)), 0);
186  VERIFY_IS_EQUAL((epsilon(1, 1, 0)), 0);
187  VERIFY_IS_EQUAL((epsilon(1, 1, 1)), 0);
188  VERIFY_IS_EQUAL((epsilon(1, 1, 2)), 0);
189  VERIFY_IS_EQUAL((epsilon(1, 2, 1)), 0);
190  VERIFY_IS_EQUAL((epsilon(1, 2, 2)), 0);
191  VERIFY_IS_EQUAL((epsilon(2, 0, 0)), 0);
192  VERIFY_IS_EQUAL((epsilon(2, 0, 2)), 0);
193  VERIFY_IS_EQUAL((epsilon(2, 1, 1)), 0);
194  VERIFY_IS_EQUAL((epsilon(2, 1, 2)), 0);
195  VERIFY_IS_EQUAL((epsilon(2, 2, 0)), 0);
196  VERIFY_IS_EQUAL((epsilon(2, 2, 1)), 0);
197  VERIFY_IS_EQUAL((epsilon(2, 2, 2)), 0);
198 
199  VERIFY_IS_EQUAL((epsilon(0, 1, 2)), 1);
200  VERIFY_IS_EQUAL((epsilon(2, 0, 1)), 1);
201  VERIFY_IS_EQUAL((epsilon(1, 2, 0)), 1);
202  VERIFY_IS_EQUAL((epsilon(2, 1, 0)), -1);
203  VERIFY_IS_EQUAL((epsilon(0, 2, 1)), -1);
204  VERIFY_IS_EQUAL((epsilon(1, 0, 2)), -1);
205 
207  dims[0] = 2;
208  dims[1] = 3;
209  dims[2] = 4;
210  Tensor<int, 3> t1(dims);
211  Tensor<int, 3, RowMajor> t2(dims);
212 
213  VERIFY_IS_EQUAL((t1.size()), 24);
214  VERIFY_IS_EQUAL((t1.dimensions()[0]), 2);
215  VERIFY_IS_EQUAL((t1.dimensions()[1]), 3);
216  VERIFY_IS_EQUAL((t1.dimensions()[2]), 4);
217 
218  VERIFY_IS_EQUAL((t2.size()), 24);
219  VERIFY_IS_EQUAL((t2.dimensions()[0]), 2);
220  VERIFY_IS_EQUAL((t2.dimensions()[1]), 3);
221  VERIFY_IS_EQUAL((t2.dimensions()[2]), 4);
222 
223  for (int i = 0; i < 2; i++) {
224  for (int j = 0; j < 3; j++) {
225  for (int k = 0; k < 4; k++) {
226  t1(i, j, k) = 100 * i + 10 * j + k;
227  t2(i, j, k) = 100 * i + 10 * j + k;
228  }
229  }
230  }
231 
232  VERIFY_IS_EQUAL((t1.data()[0]), 0);
233  VERIFY_IS_EQUAL((t1.data()[1]), 100);
234  VERIFY_IS_EQUAL((t1.data()[2]), 10);
235  VERIFY_IS_EQUAL((t1.data()[3]), 110);
236  VERIFY_IS_EQUAL((t1.data()[4]), 20);
237  VERIFY_IS_EQUAL((t1.data()[5]), 120);
238  VERIFY_IS_EQUAL((t1.data()[6]), 1);
239  VERIFY_IS_EQUAL((t1.data()[7]), 101);
240  VERIFY_IS_EQUAL((t1.data()[8]), 11);
241  VERIFY_IS_EQUAL((t1.data()[9]), 111);
242  VERIFY_IS_EQUAL((t1.data()[10]), 21);
243  VERIFY_IS_EQUAL((t1.data()[11]), 121);
244  VERIFY_IS_EQUAL((t1.data()[12]), 2);
245  VERIFY_IS_EQUAL((t1.data()[13]), 102);
246  VERIFY_IS_EQUAL((t1.data()[14]), 12);
247  VERIFY_IS_EQUAL((t1.data()[15]), 112);
248  VERIFY_IS_EQUAL((t1.data()[16]), 22);
249  VERIFY_IS_EQUAL((t1.data()[17]), 122);
250  VERIFY_IS_EQUAL((t1.data()[18]), 3);
251  VERIFY_IS_EQUAL((t1.data()[19]), 103);
252  VERIFY_IS_EQUAL((t1.data()[20]), 13);
253  VERIFY_IS_EQUAL((t1.data()[21]), 113);
254  VERIFY_IS_EQUAL((t1.data()[22]), 23);
255  VERIFY_IS_EQUAL((t1.data()[23]), 123);
256 
257  VERIFY_IS_EQUAL((t2.data()[0]), 0);
258  VERIFY_IS_EQUAL((t2.data()[1]), 1);
259  VERIFY_IS_EQUAL((t2.data()[2]), 2);
260  VERIFY_IS_EQUAL((t2.data()[3]), 3);
261  VERIFY_IS_EQUAL((t2.data()[4]), 10);
262  VERIFY_IS_EQUAL((t2.data()[5]), 11);
263  VERIFY_IS_EQUAL((t2.data()[6]), 12);
264  VERIFY_IS_EQUAL((t2.data()[7]), 13);
265  VERIFY_IS_EQUAL((t2.data()[8]), 20);
266  VERIFY_IS_EQUAL((t2.data()[9]), 21);
267  VERIFY_IS_EQUAL((t2.data()[10]), 22);
268  VERIFY_IS_EQUAL((t2.data()[11]), 23);
269  VERIFY_IS_EQUAL((t2.data()[12]), 100);
270  VERIFY_IS_EQUAL((t2.data()[13]), 101);
271  VERIFY_IS_EQUAL((t2.data()[14]), 102);
272  VERIFY_IS_EQUAL((t2.data()[15]), 103);
273  VERIFY_IS_EQUAL((t2.data()[16]), 110);
274  VERIFY_IS_EQUAL((t2.data()[17]), 111);
275  VERIFY_IS_EQUAL((t2.data()[18]), 112);
276  VERIFY_IS_EQUAL((t2.data()[19]), 113);
277  VERIFY_IS_EQUAL((t2.data()[20]), 120);
278  VERIFY_IS_EQUAL((t2.data()[21]), 121);
279  VERIFY_IS_EQUAL((t2.data()[22]), 122);
280  VERIFY_IS_EQUAL((t2.data()[23]), 123);
281 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
char char char int int * k
Definition: level2_impl.h:374
std::array< T, N > array
Definition: EmulateArray.h:231
double epsilon
Definition: osc_ring_sarah_asymptotics.h:43
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::data(), Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::dimensions(), oomph::SarahBL::epsilon, i, j, k, Eigen::Tensor< Scalar_, NumIndices_, Options_, IndexType_ >::size(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_resize()

static void test_resize ( )
static
302  {
304  epsilon.resize(2, 3, 7);
305  VERIFY_IS_EQUAL(epsilon.dimension(0), 2);
306  VERIFY_IS_EQUAL(epsilon.dimension(1), 3);
307  VERIFY_IS_EQUAL(epsilon.dimension(2), 7);
308  VERIFY_IS_EQUAL(epsilon.size(), 2 * 3 * 7);
309 
310  const int* old_data = epsilon.data();
311  epsilon.resize(3, 2, 7);
312  VERIFY_IS_EQUAL(epsilon.dimension(0), 3);
313  VERIFY_IS_EQUAL(epsilon.dimension(1), 2);
314  VERIFY_IS_EQUAL(epsilon.dimension(2), 7);
315  VERIFY_IS_EQUAL(epsilon.size(), 2 * 3 * 7);
316  VERIFY_IS_EQUAL(epsilon.data(), old_data);
317 
318  epsilon.resize(3, 5, 7);
319  VERIFY_IS_EQUAL(epsilon.dimension(0), 3);
320  VERIFY_IS_EQUAL(epsilon.dimension(1), 5);
321  VERIFY_IS_EQUAL(epsilon.dimension(2), 7);
322  VERIFY_IS_EQUAL(epsilon.size(), 3 * 5 * 7);
323 }

References oomph::SarahBL::epsilon, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_simple_assign()

static void test_simple_assign ( )
static
283  {
284  Tensor<int, 3> epsilon(3, 3, 3);
285  epsilon.setZero();
286  epsilon(0, 1, 2) = epsilon(2, 0, 1) = epsilon(1, 2, 0) = 1;
287  epsilon(2, 1, 0) = epsilon(0, 2, 1) = epsilon(1, 0, 2) = -1;
288 
289  Tensor<int, 3> e2(3, 3, 3);
290  e2.setZero();
291  VERIFY_IS_EQUAL((e2(1, 2, 0)), 0);
292 
293  e2 = epsilon;
294  VERIFY_IS_EQUAL((e2(1, 2, 0)), 1);
295  VERIFY_IS_EQUAL((e2(0, 1, 2)), 1);
296  VERIFY_IS_EQUAL((e2(2, 0, 1)), 1);
297  VERIFY_IS_EQUAL((e2(2, 1, 0)), -1);
298  VERIFY_IS_EQUAL((e2(0, 2, 1)), -1);
299  VERIFY_IS_EQUAL((e2(1, 0, 2)), -1);
300 }

References oomph::SarahBL::epsilon, Eigen::TensorBase< Derived, AccessLevel >::setZero(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().