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

Macros

#define EIGEN2_SUPPORT
 

Functions

template<typename MatrixType >
void eigen2support (const MatrixType &m)
 
 EIGEN_DECLARE_TEST (eigen2support)
 

Macro Definition Documentation

◆ EIGEN2_SUPPORT

#define EIGEN2_SUPPORT

Function Documentation

◆ eigen2support()

template<typename MatrixType >
void eigen2support ( const MatrixType m)
15  {
16  typedef typename MatrixType::Scalar Scalar;
17 
18  Index rows = m.rows();
19  Index cols = m.cols();
20 
21  MatrixType m1 = MatrixType::Random(rows, cols), m3(rows, cols);
22 
23  Scalar s1 = internal::random<Scalar>(), s2 = internal::random<Scalar>();
24 
25  // scalar addition
26  VERIFY_IS_APPROX(m1.cwise() + s1, s1 + m1.cwise());
27  VERIFY_IS_APPROX(m1.cwise() + s1, MatrixType::Constant(rows, cols, s1) + m1);
28  VERIFY_IS_APPROX((m1 * Scalar(2)).cwise() - s2, (m1 + m1) - MatrixType::Constant(rows, cols, s2));
29  m3 = m1;
30  m3.cwise() += s2;
31  VERIFY_IS_APPROX(m3, m1.cwise() + s2);
32  m3 = m1;
33  m3.cwise() -= s1;
34  VERIFY_IS_APPROX(m3, m1.cwise() - s1);
35 
36  VERIFY_IS_EQUAL((m1.corner(TopLeft, 1, 1)), (m1.block(0, 0, 1, 1)));
37  VERIFY_IS_EQUAL((m1.template corner<1, 1>(TopLeft)), (m1.template block<1, 1>(0, 0)));
38  VERIFY_IS_EQUAL((m1.col(0).start(1)), (m1.col(0).segment(0, 1)));
39  VERIFY_IS_EQUAL((m1.col(0).template start<1>()), (m1.col(0).segment(0, 1)));
40  VERIFY_IS_EQUAL((m1.col(0).end(1)), (m1.col(0).segment(rows - 1, 1)));
41  VERIFY_IS_EQUAL((m1.col(0).template end<1>()), (m1.col(0).segment(rows - 1, 1)));
42 
43  using numext::abs2;
44  using numext::real;
45  using std::cos;
46  VERIFY_IS_EQUAL(ei_cos(s1), cos(s1));
47  VERIFY_IS_EQUAL(ei_real(s1), real(s1));
48  VERIFY_IS_EQUAL(ei_abs2(s1), abs2(s1));
49 
50  m1.minor(0, 0);
51 }
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
Matrix3d m1
Definition: IOFormat.cpp:2
int rows
Definition: Tutorial_commainit_02.cpp:1
int cols
Definition: Tutorial_commainit_02.cpp:1
SCALAR Scalar
Definition: bench_gemm.cpp:45
MatrixXf MatrixType
Definition: benchmark-blocking-sizes.cpp:52
float real
Definition: datatypes.h:10
#define VERIFY_IS_APPROX(a, b)
Definition: integer_types.cpp:13
int * m
Definition: level2_cplx_impl.h:294
#define VERIFY_IS_EQUAL(a, b)
Definition: main.h:367
EIGEN_DEVICE_FUNC bool abs2(bool x)
Definition: MathFunctions.h:1102
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition: Meta.h:83

References Eigen::numext::abs2(), cols, cos(), m, m1, rows, VERIFY_IS_APPROX, and VERIFY_IS_EQUAL.

Referenced by EIGEN_DECLARE_TEST().

◆ EIGEN_DECLARE_TEST()

EIGEN_DECLARE_TEST ( eigen2support  )
53  {
54  for (int i = 0; i < g_repeat; i++) {
56  CALL_SUBTEST_2(eigen2support(MatrixXd(1, 1)));
57  CALL_SUBTEST_4(eigen2support(Matrix3f()));
58  CALL_SUBTEST_5(eigen2support(Matrix4d()));
59  CALL_SUBTEST_2(eigen2support(MatrixXf(200, 200)));
60  CALL_SUBTEST_6(eigen2support(MatrixXcd(100, 100)));
61  }
62 }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
The matrix class, also used for vectors and row-vectors.
Definition: Eigen/Eigen/src/Core/Matrix.h:186
void eigen2support(const MatrixType &m)
Definition: eigen2support.cpp:15
static int g_repeat
Definition: main.h:191
#define CALL_SUBTEST_6(FUNC)
Definition: split_test_helper.h:34
#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

References CALL_SUBTEST_1, CALL_SUBTEST_2, CALL_SUBTEST_4, CALL_SUBTEST_5, CALL_SUBTEST_6, eigen2support(), Eigen::g_repeat, and i.