cxx11_tensor_of_const_values.cpp
Go to the documentation of this file.
1 // This file is part of Eigen, a lightweight C++ template library
2 // for linear algebra.
3 //
4 // Copyright (C) 2014 Benoit Steiner <benoit.steiner.goog@gmail.com>
5 //
6 // This Source Code Form is subject to the terms of the Mozilla
7 // Public License v. 2.0. If a copy of the MPL was not distributed
8 // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 
10 #include "main.h"
11 
12 #include <Eigen/CXX11/Tensor>
13 
14 using Eigen::Tensor;
15 using Eigen::RowMajor;
16 
17 static void test_assign()
18 {
19  float data1[6];
21  float data2[6];
22  const TensorMap<Tensor<float, 2>> mat2(data2, 2, 3);
23 
24  for (int i = 0; i < 6; ++i) {
25  data1[i] = i;
26  data2[i] = -i;
27  }
28 
29  Tensor<float, 2> rslt1;
30  rslt1 = mat1;
31  Tensor<float, 2> rslt2;
32  rslt2 = mat2;
33 
34  Tensor<float, 2> rslt3 = mat1;
35  Tensor<float, 2> rslt4 = mat2;
36 
37  Tensor<float, 2> rslt5(mat1);
38  Tensor<float, 2> rslt6(mat2);
39 
40  for (int i = 0; i < 2; ++i) {
41  for (int j = 0; j < 3; ++j) {
42  VERIFY_IS_APPROX(rslt1(i,j), static_cast<float>(i + 2*j));
43  VERIFY_IS_APPROX(rslt2(i,j), static_cast<float>(-i - 2*j));
44  VERIFY_IS_APPROX(rslt3(i,j), static_cast<float>(i + 2*j));
45  VERIFY_IS_APPROX(rslt4(i,j), static_cast<float>(-i - 2*j));
46  VERIFY_IS_APPROX(rslt5(i,j), static_cast<float>(i + 2*j));
47  VERIFY_IS_APPROX(rslt6(i,j), static_cast<float>(-i - 2*j));
48  }
49  }
50 }
51 
52 
53 static void test_plus()
54 {
55  float data1[6];
57  float data2[6];
58  TensorMap<Tensor<float, 2>> mat2(data2, 2, 3);
59 
60  for (int i = 0; i < 6; ++i) {
61  data1[i] = i;
62  data2[i] = -i;
63  }
64 
65  Tensor<float, 2> sum1;
66  sum1 = mat1 + mat2;
67  Tensor<float, 2> sum2;
68  sum2 = mat2 + mat1;
69 
70  for (int i = 0; i < 2; ++i) {
71  for (int j = 0; j < 3; ++j) {
72  VERIFY_IS_APPROX(sum1(i,j), 0.0f);
73  VERIFY_IS_APPROX(sum2(i,j), 0.0f);
74  }
75  }
76 }
77 
78 
79 static void test_plus_equal()
80 {
81  float data1[6];
83  float data2[6];
84  TensorMap<Tensor<float, 2>> mat2(data2, 2, 3);
85 
86  for (int i = 0; i < 6; ++i) {
87  data1[i] = i;
88  data2[i] = -i;
89  }
90  mat2 += mat1;
91 
92  for (int i = 0; i < 2; ++i) {
93  for (int j = 0; j < 3; ++j) {
94  VERIFY_IS_APPROX(mat2(i,j), 0.0f);
95  }
96  }
97 }
98 
99 
100 EIGEN_DECLARE_TEST(cxx11_tensor_of_const_values)
101 {
105 }
MatrixXd mat1(size, size)
EIGEN_DECLARE_TEST(cxx11_tensor_of_const_values)
#define VERIFY_IS_APPROX(a, b)
static void test_plus_equal()
A tensor expression mapping an existing array of data.
static void test_assign()
Point2(* f)(const Point3 &, OptionalJacobian< 2, 3 >)
#define CALL_SUBTEST(FUNC)
Definition: main.h:399
static void test_plus()
std::ptrdiff_t j
The tensor class.
Definition: Tensor.h:63


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:34:08