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

Functions

static void test_dynamic_size ()
 
static void test_fixed_size ()
 
static void test_match ()
 
static void test_rank_zero ()
 
static void test_index_type_promotion ()
 
 EIGEN_DECLARE_TEST (cxx11_tensor_dimension)
 

Function Documentation

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( cxx11_tensor_dimension  )
76  {
82 }
static void test_dynamic_size()
Definition: cxx11_tensor_dimension.cpp:16
static void test_match()
Definition: cxx11_tensor_dimension.cpp:37
static void test_rank_zero()
Definition: cxx11_tensor_dimension.cpp:47
static void test_fixed_size()
Definition: cxx11_tensor_dimension.cpp:28
static void test_index_type_promotion()
Definition: cxx11_tensor_dimension.cpp:58
#define CALL_SUBTEST(FUNC)
Definition: main.h:382

References CALL_SUBTEST, test_dynamic_size(), test_fixed_size(), test_index_type_promotion(), test_match(), and test_rank_zero().

◆ test_dynamic_size()

static void test_dynamic_size ( )
static
16  {
17  Eigen::DSizes<int, 3> dimensions(2, 3, 7);
18 
19  VERIFY_IS_EQUAL((int)Eigen::internal::array_get<0>(dimensions), 2);
20  VERIFY_IS_EQUAL((int)Eigen::internal::array_get<1>(dimensions), 3);
21  VERIFY_IS_EQUAL((int)Eigen::internal::array_get<2>(dimensions), 7);
22  VERIFY_IS_EQUAL((int)dimensions.TotalSize(), 2 * 3 * 7);
23  VERIFY_IS_EQUAL((int)dimensions[0], 2);
24  VERIFY_IS_EQUAL((int)dimensions[1], 3);
25  VERIFY_IS_EQUAL((int)dimensions[2], 7);
26 }
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
Definition: TensorDimensions.h:161

References Eigen::DSizes< DenseIndex, NumDims >::TotalSize(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_fixed_size()

static void test_fixed_size ( )
static
28  {
29  Eigen::Sizes<2, 3, 7> dimensions;
30 
31  VERIFY_IS_EQUAL((int)Eigen::internal::array_get<0>(dimensions), 2);
32  VERIFY_IS_EQUAL((int)Eigen::internal::array_get<1>(dimensions), 3);
33  VERIFY_IS_EQUAL((int)Eigen::internal::array_get<2>(dimensions), 7);
34  VERIFY_IS_EQUAL((int)dimensions.TotalSize(), 2 * 3 * 7);
35 }
Definition: TensorDimensions.h:85
static EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t TotalSize()
Definition: TensorDimensions.h:93

References Eigen::Sizes< Indices >::TotalSize(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_index_type_promotion()

static void test_index_type_promotion ( )
static
58  {
59  Eigen::DSizes<int, 3> src0(1, 2, 3);
61  src1[0] = 4;
62  src1[1] = 5;
63  src1[2] = 6;
64 
65  Eigen::DSizes<long, 3> dst0(src0);
66  Eigen::DSizes<long, 3> dst1(src1);
67 
68  VERIFY_IS_EQUAL(dst0[0], 1L);
69  VERIFY_IS_EQUAL(dst0[1], 2L);
70  VERIFY_IS_EQUAL(dst0[2], 3L);
71  VERIFY_IS_EQUAL(dst1[0], 4L);
72  VERIFY_IS_EQUAL(dst1[1], 5L);
73  VERIFY_IS_EQUAL(dst1[2], 6L);
74 }
std::array< T, N > array
Definition: EmulateArray.h:231

References VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_match()

static void test_match ( )
static
37  {
38  Eigen::DSizes<unsigned int, 3> dyn((unsigned int)2, (unsigned int)3, (unsigned int)7);
40  VERIFY_IS_EQUAL(Eigen::dimensions_match(dyn, stat), true);
41 
42  Eigen::DSizes<int, 3> dyn1(2, 3, 7);
43  Eigen::DSizes<int, 2> dyn2(2, 3);
44  VERIFY_IS_EQUAL(Eigen::dimensions_match(dyn1, dyn2), false);
45 }
EIGEN_DEVICE_FUNC EIGEN_ALWAYS_INLINE bool dimensions_match(Dims1 dims1, Dims2 dims2)
Definition: TensorDimensions.h:322

References Eigen::dimensions_match(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ test_rank_zero()

static void test_rank_zero ( )
static
47  {
48  Eigen::Sizes<> scalar;
49  VERIFY_IS_EQUAL((int)scalar.TotalSize(), 1);
50  VERIFY_IS_EQUAL((int)scalar.rank(), 0);
51  VERIFY_IS_EQUAL((int)internal::array_prod(scalar), 1);
52 
54  VERIFY_IS_EQUAL((int)dscalar.TotalSize(), 1);
55  VERIFY_IS_EQUAL((int)dscalar.rank(), 0);
56 }
constexpr EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE auto array_prod(const array< T, N > &arr) -> decltype(array_reduce< product_op, T, N >(arr, static_cast< T >(1)))
Definition: MoreMeta.h:497
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE DenseIndex TotalSize() const
Definition: TensorDimensions.h:167
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rank() const
Definition: TensorDimensions.h:165
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE std::ptrdiff_t rank() const
Definition: TensorDimensions.h:91

References Eigen::internal::array_prod(), Eigen::Sizes< Indices >::rank(), Eigen::DSizes< DenseIndex, NumDims >::rank(), Eigen::Sizes< Indices >::TotalSize(), Eigen::DSizes< DenseIndex, NumDims >::TotalSize(), and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().