initializer_list_construction.cpp File Reference
#include "main.h"

Classes

struct  TestMethodDispatching< Scalar, is_integer >
 
struct  TestMethodDispatching< Scalar, 1 >
 

Macros

#define CHECK_MIXSCALAR_V5_APPROX(V, A0, A1, A2, A3, A4)
 
#define CHECK_MIXSCALAR_V5(VEC5, A0, A1, A2, A3, A4)
 

Functions

template<typename Vec4 , typename Vec5 >
void fixedsizeVariadicVectorConstruction2 ()
 
template<int >
void fixedsizeVariadicVectorConstruction3 ()
 
template<typename Scalar >
void fixedsizeVariadicVectorConstruction ()
 
template<typename Scalar >
void initializerListVectorConstruction ()
 
template<typename Scalar >
void initializerListMatrixConstruction ()
 
template<typename Scalar >
void initializerListArrayConstruction ()
 
template<typename Scalar >
void dynamicVectorConstruction ()
 
 EIGEN_DECLARE_TEST (initializer_list_construction)
 

Macro Definition Documentation

◆ CHECK_MIXSCALAR_V5

#define CHECK_MIXSCALAR_V5 (   VEC5,
  A0,
  A1,
  A2,
  A3,
  A4 
)
Value:
{ \
typedef VEC5::Scalar Scalar; \
VEC5 v = {A0, A1, A2, A3, A4}; \
CHECK_MIXSCALAR_V5_APPROX(v, A0, A1, A2, A3, A4); \
}
Array< int, Dynamic, 1 > v
Definition: Array_initializer_list_vector_cxx11.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45

◆ CHECK_MIXSCALAR_V5_APPROX

#define CHECK_MIXSCALAR_V5_APPROX (   V,
  A0,
  A1,
  A2,
  A3,
  A4 
)
Value:
{ \
VERIFY_IS_APPROX(V[0], Scalar(A0)); \
VERIFY_IS_APPROX(V[1], Scalar(A1)); \
VERIFY_IS_APPROX(V[2], Scalar(A2)); \
VERIFY_IS_APPROX(V[3], Scalar(A3)); \
VERIFY_IS_APPROX(V[4], Scalar(A4)); \
}
MatrixXcd V
Definition: EigenSolver_EigenSolver_MatrixType.cpp:15

Function Documentation

◆ dynamicVectorConstruction()

template<typename Scalar >
void dynamicVectorConstruction ( )
296  {
297  const Index size = 4;
298  Scalar raw[size];
299  for (int i = 0; i < size; ++i) {
300  raw[i] = internal::random<Scalar>();
301  }
302 
304 
305  {
306  VectorX v{{raw[0], raw[1], raw[2], raw[3]}};
307  for (int i = 0; i < size; ++i) {
308  VERIFY(v(i) == raw[i]);
309  }
310  VERIFY(v.rows() == size);
311  VERIFY(v.cols() == 1);
312  VERIFY_IS_EQUAL(v, (VectorX{{raw[0], raw[1], raw[2], raw[3]}}));
313  }
314 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
#define VERIFY(a)
Definition: main.h:362
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83
Matrix< Scalar, Dynamic, 1 > VectorX
Definition: sparse_lu.cpp:43

References i, size, v, VERIFY, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( initializer_list_construction  )
316  {
317  CALL_SUBTEST_1(initializerListVectorConstruction<unsigned char>());
318  CALL_SUBTEST_1(initializerListVectorConstruction<float>());
319  CALL_SUBTEST_1(initializerListVectorConstruction<double>());
320  CALL_SUBTEST_1(initializerListVectorConstruction<int>());
321  CALL_SUBTEST_1(initializerListVectorConstruction<long int>());
322  CALL_SUBTEST_1(initializerListVectorConstruction<std::ptrdiff_t>());
323  CALL_SUBTEST_1(initializerListVectorConstruction<std::complex<double>>());
324  CALL_SUBTEST_1(initializerListVectorConstruction<std::complex<float>>());
325 
326  CALL_SUBTEST_2(initializerListMatrixConstruction<unsigned char>());
327  CALL_SUBTEST_2(initializerListMatrixConstruction<float>());
328  CALL_SUBTEST_2(initializerListMatrixConstruction<double>());
329  CALL_SUBTEST_2(initializerListMatrixConstruction<int>());
330  CALL_SUBTEST_2(initializerListMatrixConstruction<long int>());
331  CALL_SUBTEST_2(initializerListMatrixConstruction<std::ptrdiff_t>());
332  CALL_SUBTEST_2(initializerListMatrixConstruction<std::complex<double>>());
333  CALL_SUBTEST_2(initializerListMatrixConstruction<std::complex<float>>());
334 
335  CALL_SUBTEST_3(initializerListArrayConstruction<unsigned char>());
336  CALL_SUBTEST_3(initializerListArrayConstruction<float>());
337  CALL_SUBTEST_3(initializerListArrayConstruction<double>());
338  CALL_SUBTEST_3(initializerListArrayConstruction<int>());
339  CALL_SUBTEST_3(initializerListArrayConstruction<long int>());
340  CALL_SUBTEST_3(initializerListArrayConstruction<std::ptrdiff_t>());
341  CALL_SUBTEST_3(initializerListArrayConstruction<std::complex<double>>());
342  CALL_SUBTEST_3(initializerListArrayConstruction<std::complex<float>>());
343 
344  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<unsigned char>());
345  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<float>());
346  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<double>());
347  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<int>());
348  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<long int>());
349  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<std::ptrdiff_t>());
350  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<std::complex<double>>());
351  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction<std::complex<float>>());
352  CALL_SUBTEST_4(fixedsizeVariadicVectorConstruction3<0>());
353 
356 
357  CALL_SUBTEST_6(dynamicVectorConstruction<unsigned char>());
358  CALL_SUBTEST_6(dynamicVectorConstruction<float>());
359  CALL_SUBTEST_6(dynamicVectorConstruction<double>());
360  CALL_SUBTEST_6(dynamicVectorConstruction<int>());
361  CALL_SUBTEST_6(dynamicVectorConstruction<long int>());
362  CALL_SUBTEST_6(dynamicVectorConstruction<std::ptrdiff_t>());
363  CALL_SUBTEST_6(dynamicVectorConstruction<std::complex<double>>());
364  CALL_SUBTEST_6(dynamicVectorConstruction<std::complex<float>>());
365 }
void initializerListVectorConstruction()
Definition: initializer_list_construction.cpp:111
void fixedsizeVariadicVectorConstruction()
Definition: initializer_list_construction.cpp:103
void dynamicVectorConstruction()
Definition: initializer_list_construction.cpp:296
void initializerListMatrixConstruction()
Definition: initializer_list_construction.cpp:167
void initializerListArrayConstruction()
Definition: initializer_list_construction.cpp:232
#define CALL_SUBTEST_6(FUNC)
Definition: split_test_helper.h:34
#define CALL_SUBTEST_3(FUNC)
Definition: split_test_helper.h:16
#define CALL_SUBTEST_1(FUNC)
Definition: split_test_helper.h:4
#define CALL_SUBTEST_5(FUNC)
Definition: split_test_helper.h:28
#define CALL_SUBTEST_2(FUNC)
Definition: split_test_helper.h:10
#define CALL_SUBTEST_4(FUNC)
Definition: split_test_helper.h:22
Definition: initializer_list_construction.cpp:20

References CALL_SUBTEST_1, CALL_SUBTEST_2, CALL_SUBTEST_3, CALL_SUBTEST_4, CALL_SUBTEST_5, CALL_SUBTEST_6, dynamicVectorConstruction(), fixedsizeVariadicVectorConstruction(), initializerListArrayConstruction(), initializerListMatrixConstruction(), and initializerListVectorConstruction().

◆ fixedsizeVariadicVectorConstruction()

template<typename Scalar >
void fixedsizeVariadicVectorConstruction ( )
103  {
108 }
General-purpose arrays with easy API for coefficient-wise operations.
Definition: Array.h:48
void fixedsizeVariadicVectorConstruction2()
Definition: initializer_list_construction.cpp:55
#define CALL_SUBTEST(FUNC)
Definition: main.h:382

References CALL_SUBTEST, and fixedsizeVariadicVectorConstruction2().

Referenced by EIGEN_DECLARE_TEST().

◆ fixedsizeVariadicVectorConstruction2()

template<typename Vec4 , typename Vec5 >
void fixedsizeVariadicVectorConstruction2 ( )
55  {
56  {
57  Vec4 ref = Vec4::Random();
58  Vec4 v{ref[0], ref[1], ref[2], ref[3]};
59  VERIFY_IS_APPROX(v, ref);
60  VERIFY_IS_APPROX(v, (Vec4(ref[0], ref[1], ref[2], ref[3])));
61  VERIFY_IS_APPROX(v, (Vec4({ref[0], ref[1], ref[2], ref[3]})));
62 
63  Vec4 v2 = {ref[0], ref[1], ref[2], ref[3]};
64  VERIFY_IS_APPROX(v2, ref);
65  }
66  {
67  Vec5 ref = Vec5::Random();
68  Vec5 v{ref[0], ref[1], ref[2], ref[3], ref[4]};
69  VERIFY_IS_APPROX(v, ref);
70  VERIFY_IS_APPROX(v, (Vec5(ref[0], ref[1], ref[2], ref[3], ref[4])));
71  VERIFY_IS_APPROX(v, (Vec5({ref[0], ref[1], ref[2], ref[3], ref[4]})));
72 
73  Vec5 v2 = {ref[0], ref[1], ref[2], ref[3], ref[4]};
74  VERIFY_IS_APPROX(v2, ref);
75  }
76 }
Map< RowVectorXf > v2(M2.data(), M2.size())
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13

References v, v2(), and VERIFY_IS_APPROX.

Referenced by fixedsizeVariadicVectorConstruction().

◆ fixedsizeVariadicVectorConstruction3()

template<int >
void fixedsizeVariadicVectorConstruction3 ( )
95  {
96  typedef Matrix<double, 5, 1> Vec5;
97  typedef Array<float, 5, 1> Arr5;
98  CHECK_MIXSCALAR_V5(Vec5, 1, 2., -3, 4.121, 5.53252);
99  CHECK_MIXSCALAR_V5(Arr5, 1, 2., 3.12f, 4.121, 5.53252);
100 }
#define CHECK_MIXSCALAR_V5(VEC5, A0, A1, A2, A3, A4)
Definition: initializer_list_construction.cpp:87

References CHECK_MIXSCALAR_V5.

◆ initializerListArrayConstruction()

template<typename Scalar >
void initializerListArrayConstruction ( )
232  {
233  const Index RowsAtCompileTime = 5;
234  const Index ColsAtCompileTime = 4;
235  const Index SizeAtCompileTime = RowsAtCompileTime * ColsAtCompileTime;
236 
237  Scalar raw[SizeAtCompileTime];
238  for (int i = 0; i < SizeAtCompileTime; ++i) {
239  raw[i] = internal::random<Scalar>();
240  }
241  {
243  VERIFY(a.cols() == 0);
244  VERIFY(a.rows() == 0);
245  }
246  {
247  Array<Scalar, 5, 4> m{{raw[0], raw[1], raw[2], raw[3]},
248  {raw[4], raw[5], raw[6], raw[7]},
249  {raw[8], raw[9], raw[10], raw[11]},
250  {raw[12], raw[13], raw[14], raw[15]},
251  {raw[16], raw[17], raw[18], raw[19]}};
252 
254  m2 << raw[0], raw[1], raw[2], raw[3], raw[4], raw[5], raw[6], raw[7], raw[8], raw[9], raw[10], raw[11], raw[12],
255  raw[13], raw[14], raw[15], raw[16], raw[17], raw[18], raw[19];
256 
257  int k = 0;
258  for (int i = 0; i < RowsAtCompileTime; ++i) {
259  for (int j = 0; j < ColsAtCompileTime; ++j) {
260  VERIFY(m(i, j) == raw[k]);
261  ++k;
262  }
263  }
265  }
266  {
267  Array<Scalar, Dynamic, Dynamic> m{{raw[0], raw[1], raw[2], raw[3]},
268  {raw[4], raw[5], raw[6], raw[7]},
269  {raw[8], raw[9], raw[10], raw[11]},
270  {raw[12], raw[13], raw[14], raw[15]},
271  {raw[16], raw[17], raw[18], raw[19]}};
272 
273  VERIFY(m.cols() == 4);
274  VERIFY(m.rows() == 5);
275  int k = 0;
276  for (int i = 0; i < RowsAtCompileTime; ++i) {
277  for (int j = 0; j < ColsAtCompileTime; ++j) {
278  VERIFY(m(i, j) == raw[k]);
279  ++k;
280  }
281  }
282 
283  Array<Scalar, Dynamic, Dynamic> m2(RowsAtCompileTime, ColsAtCompileTime);
284  k = 0;
285  for (int i = 0; i < RowsAtCompileTime; ++i) {
286  for (int j = 0; j < ColsAtCompileTime; ++j) {
287  m2(i, j) = raw[k];
288  ++k;
289  }
290  }
292  }
293 }
MatrixType m2(n_dims)
const Scalar * a
Definition: level2_cplx_impl.h:32
int * m
Definition: level2_cplx_impl.h:294
char char char int int * k
Definition: level2_impl.h:374
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References a, i, j, k, m, m2(), VERIFY, and VERIFY_IS_APPROX.

Referenced by EIGEN_DECLARE_TEST().

◆ initializerListMatrixConstruction()

template<typename Scalar >
void initializerListMatrixConstruction ( )
167  {
168  const Index RowsAtCompileTime = 5;
169  const Index ColsAtCompileTime = 4;
170  const Index SizeAtCompileTime = RowsAtCompileTime * ColsAtCompileTime;
171 
172  Scalar raw[SizeAtCompileTime];
173  for (int i = 0; i < SizeAtCompileTime; ++i) {
174  raw[i] = internal::random<Scalar>();
175  }
176  {
178  VERIFY(m.cols() == 0);
179  VERIFY(m.rows() == 0);
181  }
182  {
183  Matrix<Scalar, 5, 4> m{{raw[0], raw[1], raw[2], raw[3]},
184  {raw[4], raw[5], raw[6], raw[7]},
185  {raw[8], raw[9], raw[10], raw[11]},
186  {raw[12], raw[13], raw[14], raw[15]},
187  {raw[16], raw[17], raw[18], raw[19]}};
188 
190  m2 << raw[0], raw[1], raw[2], raw[3], raw[4], raw[5], raw[6], raw[7], raw[8], raw[9], raw[10], raw[11], raw[12],
191  raw[13], raw[14], raw[15], raw[16], raw[17], raw[18], raw[19];
192 
193  int k = 0;
194  for (int i = 0; i < RowsAtCompileTime; ++i) {
195  for (int j = 0; j < ColsAtCompileTime; ++j) {
196  VERIFY(m(i, j) == raw[k]);
197  ++k;
198  }
199  }
200  VERIFY_IS_EQUAL(m, m2);
201  }
202  {
203  Matrix<Scalar, Dynamic, Dynamic> m{{raw[0], raw[1], raw[2], raw[3]},
204  {raw[4], raw[5], raw[6], raw[7]},
205  {raw[8], raw[9], raw[10], raw[11]},
206  {raw[12], raw[13], raw[14], raw[15]},
207  {raw[16], raw[17], raw[18], raw[19]}};
208 
209  VERIFY(m.cols() == 4);
210  VERIFY(m.rows() == 5);
211  int k = 0;
212  for (int i = 0; i < RowsAtCompileTime; ++i) {
213  for (int j = 0; j < ColsAtCompileTime; ++j) {
214  VERIFY(m(i, j) == raw[k]);
215  ++k;
216  }
217  }
218 
219  Matrix<Scalar, Dynamic, Dynamic> m2(RowsAtCompileTime, ColsAtCompileTime);
220  k = 0;
221  for (int i = 0; i < RowsAtCompileTime; ++i) {
222  for (int j = 0; j < ColsAtCompileTime; ++j) {
223  m2(i, j) = raw[k];
224  ++k;
225  }
226  }
227  VERIFY_IS_EQUAL(m, m2);
228  }
229 }

References i, j, k, m, m2(), VERIFY, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ initializerListVectorConstruction()

template<typename Scalar >
void initializerListVectorConstruction ( )
111  {
112  Scalar raw[4];
113  for (int k = 0; k < 4; ++k) {
114  raw[k] = internal::random<Scalar>();
115  }
116  {
117  Matrix<Scalar, 4, 1> m{{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}};
118  Array<Scalar, 4, 1> a{{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}};
119  for (int k = 0; k < 4; ++k) {
120  VERIFY(m(k) == raw[k]);
121  }
122  for (int k = 0; k < 4; ++k) {
123  VERIFY(a(k) == raw[k]);
124  }
125  VERIFY_IS_EQUAL(m, (Matrix<Scalar, 4, 1>({{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}})));
126  VERIFY((a == (Array<Scalar, 4, 1>({{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}}))).all());
127  }
128  {
129  Matrix<Scalar, 1, 4> m{{raw[0], raw[1], raw[2], raw[3]}};
130  Array<Scalar, 1, 4> a{{raw[0], raw[1], raw[2], raw[3]}};
131  for (int k = 0; k < 4; ++k) {
132  VERIFY(m(k) == raw[k]);
133  }
134  for (int k = 0; k < 4; ++k) {
135  VERIFY(a(k) == raw[k]);
136  }
137  VERIFY_IS_EQUAL(m, (Matrix<Scalar, 1, 4>({{raw[0], raw[1], raw[2], raw[3]}})));
138  VERIFY((a == (Array<Scalar, 1, 4>({{raw[0], raw[1], raw[2], raw[3]}}))).all());
139  }
140  {
141  Matrix<Scalar, 4, Dynamic> m{{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}};
142  Array<Scalar, 4, Dynamic> a{{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}};
143  for (int k = 0; k < 4; ++k) {
144  VERIFY(m(k) == raw[k]);
145  }
146  for (int k = 0; k < 4; ++k) {
147  VERIFY(a(k) == raw[k]);
148  }
149  VERIFY_IS_EQUAL(m, (Matrix<Scalar, 4, Dynamic>({{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}})));
150  VERIFY((a == (Array<Scalar, 4, Dynamic>({{raw[0]}, {raw[1]}, {raw[2]}, {raw[3]}}))).all());
151  }
152  {
153  Matrix<Scalar, Dynamic, 4> m{{raw[0], raw[1], raw[2], raw[3]}};
154  Array<Scalar, Dynamic, 4> a{{raw[0], raw[1], raw[2], raw[3]}};
155  for (int k = 0; k < 4; ++k) {
156  VERIFY(m(k) == raw[k]);
157  }
158  for (int k = 0; k < 4; ++k) {
159  VERIFY(a(k) == raw[k]);
160  }
161  VERIFY_IS_EQUAL(m, (Matrix<Scalar, Dynamic, 4>({{raw[0], raw[1], raw[2], raw[3]}})));
162  VERIFY((a == (Array<Scalar, Dynamic, 4>({{raw[0], raw[1], raw[2], raw[3]}}))).all());
163  }
164 }
static constexpr Eigen::internal::all_t all
Definition: IndexedViewHelper.h:86

References a, Eigen::placeholders::all, k, m, VERIFY, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().