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

Functions

static void test_simple ()
 
static void test_const ()
 
 EIGEN_DECLARE_TEST (cxx11_tensor_forced_eval)
 

Function Documentation

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( cxx11_tensor_forced_eval  )
72  {
75 }
static void test_const()
Definition: cxx11_tensor_forced_eval.cpp:47
static void test_simple()
Definition: cxx11_tensor_forced_eval.cpp:18
#define CALL_SUBTEST(FUNC)
Definition: main.h:382

References CALL_SUBTEST, test_const(), and test_simple().

◆ test_const()

static void test_const ( )
static
47  {
48  MatrixXf input(3, 3);
49  input.setRandom();
50  MatrixXf output = input;
51  output.rowwise() -= input.colwise().maxCoeff();
52 
53  Eigen::array<int, 1> depth_dim;
54  depth_dim[0] = 0;
56  dims2d[0] = 1;
57  dims2d[1] = 3;
59  bcast[0] = 3;
60  bcast[1] = 1;
61  const TensorMap<const Tensor<float, 2> > input_tensor(input.data(), 3, 3);
62  Tensor<float, 2> output_tensor =
63  (input_tensor - input_tensor.maximum(depth_dim).eval().reshape(dims2d).broadcast(bcast));
64 
65  for (int i = 0; i < 3; ++i) {
66  for (int j = 0; j < 3; ++j) {
67  VERIFY_IS_APPROX(output(i, j), output_tensor(i, j));
68  }
69  }
70 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
A tensor expression mapping an existing array of data.
Definition: TensorMap.h:33
The tensor class.
Definition: Tensor.h:68
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
std::array< T, N > array
Definition: EmulateArray.h:231
void output(std::ostream &outfile, const unsigned &nplot)
Overload output function.
Definition: overloaded_element_body.h:490
Definition: TensorDimensions.h:161
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References i, j, output(), Eigen::TensorBase< Derived, AccessLevel >::reshape(), and VERIFY_IS_APPROX.

Referenced by EIGEN_DECLARE_TEST().

◆ test_simple()

static void test_simple ( )
static
18  {
19  MatrixXf m1(3, 3);
20  MatrixXf m2(3, 3);
21  m1.setRandom();
22  m2.setRandom();
23 
24  TensorMap<Tensor<float, 2> > mat1(m1.data(), 3, 3);
25  TensorMap<Tensor<float, 2> > mat2(m2.data(), 3, 3);
26 
27  Tensor<float, 2> mat3(3, 3);
28  mat3 = mat1;
29 
32  dims[0] = DimPair(1, 0);
33 
34  mat3 = mat3.contract(mat2, dims).eval();
35 
36  VERIFY_IS_APPROX(mat3(0, 0), (m1 * m2).eval()(0, 0));
37  VERIFY_IS_APPROX(mat3(0, 1), (m1 * m2).eval()(0, 1));
38  VERIFY_IS_APPROX(mat3(0, 2), (m1 * m2).eval()(0, 2));
39  VERIFY_IS_APPROX(mat3(1, 0), (m1 * m2).eval()(1, 0));
40  VERIFY_IS_APPROX(mat3(1, 1), (m1 * m2).eval()(1, 1));
41  VERIFY_IS_APPROX(mat3(1, 2), (m1 * m2).eval()(1, 2));
42  VERIFY_IS_APPROX(mat3(2, 0), (m1 * m2).eval()(2, 0));
43  VERIFY_IS_APPROX(mat3(2, 1), (m1 * m2).eval()(2, 1));
44  VERIFY_IS_APPROX(mat3(2, 2), (m1 * m2).eval()(2, 2));
45 }
Matrix3d m1
Definition: IOFormat.cpp:2
MatrixXd mat1(size, size)
MatrixType m2(n_dims)
Tensor< float, 1 >::DimensionPair DimPair
Definition: cxx11_tensor_contraction.cpp:17
internal::nested_eval< T, 1 >::type eval(const T &xpr)
Definition: sparse_permutations.cpp:47

References eval(), m1, m2(), mat1(), and VERIFY_IS_APPROX.

Referenced by EIGEN_DECLARE_TEST().