gtsam
3rdparty
Eigen
test
eigen2support.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) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
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
#define EIGEN2_SUPPORT
11
12
#include "
main.h
"
13
14
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
),
22
m3
(
rows
,
cols
);
23
24
Scalar
s1 = internal::random<Scalar>(),
25
s2 = internal::random<Scalar>();
26
27
// scalar addition
28
VERIFY_IS_APPROX
(
m1
.cwise() + s1, s1 +
m1
.cwise());
29
VERIFY_IS_APPROX
(
m1
.cwise() + s1, MatrixType::Constant(
rows
,
cols
,s1) +
m1
);
30
VERIFY_IS_APPROX
((
m1
*
Scalar
(2)).cwise() - s2, (
m1
+
m1
) - MatrixType::Constant(
rows
,
cols
,s2) );
31
m3
=
m1
;
32
m3
.cwise() += s2;
33
VERIFY_IS_APPROX
(
m3
,
m1
.cwise() + s2);
34
m3
=
m1
;
35
m3
.cwise() -= s1;
36
VERIFY_IS_APPROX
(
m3
,
m1
.cwise() - s1);
37
38
VERIFY_IS_EQUAL
((
m1
.corner(TopLeft,1,1)), (
m1
.block(0,0,1,1)));
39
VERIFY_IS_EQUAL
((
m1
.template corner<1,1>(TopLeft)), (
m1
.template block<1,1>(0,0)));
40
VERIFY_IS_EQUAL
((
m1
.col(0).start(1)), (
m1
.col(0).segment(0,1)));
41
VERIFY_IS_EQUAL
((
m1
.col(0).template start<1>()), (
m1
.col(0).segment(0,1)));
42
VERIFY_IS_EQUAL
((
m1
.col(0).end(1)), (
m1
.col(0).segment(
rows
-1,1)));
43
VERIFY_IS_EQUAL
((
m1
.col(0).template end<1>()), (
m1
.col(0).segment(
rows
-1,1)));
44
45
using
std::cos
;
46
using
numext::real
;
47
using
numext::abs2
;
48
VERIFY_IS_EQUAL
(
ei_cos
(s1),
cos
(s1));
49
VERIFY_IS_EQUAL
(
ei_real
(s1),
real
(s1));
50
VERIFY_IS_EQUAL
(
ei_abs2
(s1),
abs2
(s1));
51
52
m1
.minor(0,0);
53
}
54
55
EIGEN_DECLARE_TEST
(
eigen2support
)
56
{
57
for
(
int
i
= 0;
i
<
g_repeat
;
i
++) {
58
CALL_SUBTEST_1
(
eigen2support
(
Matrix<double,1,1>
()) );
59
CALL_SUBTEST_2
(
eigen2support
(MatrixXd(1,1)) );
60
CALL_SUBTEST_4
(
eigen2support
(Matrix3f()) );
61
CALL_SUBTEST_5
(
eigen2support
(Matrix4d()) );
62
CALL_SUBTEST_2
(
eigen2support
(MatrixXf(200,200)) );
63
CALL_SUBTEST_6
(
eigen2support
(MatrixXcd(100,100)) );
64
}
65
}
MatrixType
MatrixXf MatrixType
Definition:
benchmark-blocking-sizes.cpp:52
VERIFY_IS_EQUAL
#define VERIFY_IS_EQUAL(a, b)
Definition:
main.h:386
m1
Matrix3d m1
Definition:
IOFormat.cpp:2
real
float real
Definition:
datatypes.h:10
abs2
EIGEN_DEVICE_FUNC const EIGEN_STRONG_INLINE Abs2ReturnType abs2() const
Definition:
ArrayCwiseUnaryOps.h:80
rows
int rows
Definition:
Tutorial_commainit_02.cpp:1
ceres::cos
Jet< T, N > cos(const Jet< T, N > &f)
Definition:
jet.h:426
CALL_SUBTEST_4
#define CALL_SUBTEST_4(FUNC)
Definition:
split_test_helper.h:22
EIGEN_DECLARE_TEST
EIGEN_DECLARE_TEST(eigen2support)
Definition:
eigen2support.cpp:55
CALL_SUBTEST_1
#define CALL_SUBTEST_1(FUNC)
Definition:
split_test_helper.h:4
ceres::ei_abs2
Jet< T, N > ei_abs2(const Jet< T, N > &x)
Definition:
jet.h:614
CALL_SUBTEST_5
#define CALL_SUBTEST_5(FUNC)
Definition:
split_test_helper.h:28
Eigen::g_repeat
static int g_repeat
Definition:
main.h:169
m
Matrix3f m
Definition:
AngleAxis_mimic_euler.cpp:1
CALL_SUBTEST_6
#define CALL_SUBTEST_6(FUNC)
Definition:
split_test_helper.h:34
CALL_SUBTEST_2
#define CALL_SUBTEST_2(FUNC)
Definition:
split_test_helper.h:10
VERIFY_IS_APPROX
#define VERIFY_IS_APPROX(a, b)
Definition:
integer_types.cpp:15
ceres::ei_cos
Jet< T, N > ei_cos(const Jet< T, N > &x)
Definition:
jet.h:619
m3
static const DiscreteKey m3(M(3), 2)
main.h
Eigen::Matrix
The matrix class, also used for vectors and row-vectors.
Definition:
3rdparty/Eigen/Eigen/src/Core/Matrix.h:178
cols
int cols
Definition:
Tutorial_commainit_02.cpp:1
ceres::ei_real
const Jet< T, N > & ei_real(const Jet< T, N > &x)
Definition:
jet.h:611
i
int i
Definition:
BiCGSTAB_step_by_step.cpp:9
eigen2support
void eigen2support(const MatrixType &m)
Definition:
eigen2support.cpp:14
Scalar
SCALAR Scalar
Definition:
bench_gemm.cpp:46
Eigen::Index
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API.
Definition:
Meta.h:74
gtsam
Author(s):
autogenerated on Fri Nov 1 2024 03:32:28