1 // This file is part of Eigen, a lightweight C++ template library
4 // Copyright (C) 2009 Gael Guennebaud <gael.guennebaud@inria.fr>
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/.
10 #define EIGEN2_SUPPORT
14 template<typename MatrixType
> void eigen2support(const MatrixType
& m
)
16 typedef typename
MatrixType::Index Index
;
17 typedef typename
MatrixType::Scalar Scalar
;
19 Index rows
= m
.rows();
20 Index cols
= m
.cols();
22 MatrixType m1
= MatrixType::Random(rows
, cols
),
25 Scalar s1
= internal::random
<Scalar
>(),
26 s2
= internal::random
<Scalar
>();
29 VERIFY_IS_APPROX(m1
.cwise() + s1
, s1
+ m1
.cwise());
30 VERIFY_IS_APPROX(m1
.cwise() + s1
, MatrixType::Constant(rows
,cols
,s1
) + m1
);
31 VERIFY_IS_APPROX((m1
*Scalar(2)).cwise() - s2
, (m1
+m1
) - MatrixType::Constant(rows
,cols
,s2
) );
34 VERIFY_IS_APPROX(m3
, m1
.cwise() + s2
);
37 VERIFY_IS_APPROX(m3
, m1
.cwise() - s1
);
39 VERIFY_IS_EQUAL((m1
.corner(TopLeft
,1,1)), (m1
.block(0,0,1,1)));
40 VERIFY_IS_EQUAL((m1
.template corner
<1,1>(TopLeft
)), (m1
.template block
<1,1>(0,0)));
41 VERIFY_IS_EQUAL((m1
.col(0).start(1)), (m1
.col(0).segment(0,1)));
42 VERIFY_IS_EQUAL((m1
.col(0).template start
<1>()), (m1
.col(0).segment(0,1)));
43 VERIFY_IS_EQUAL((m1
.col(0).end(1)), (m1
.col(0).segment(rows
-1,1)));
44 VERIFY_IS_EQUAL((m1
.col(0).template end
<1>()), (m1
.col(0).segment(rows
-1,1)));
49 VERIFY_IS_EQUAL(ei_cos(s1
), cos(s1
));
50 VERIFY_IS_EQUAL(ei_real(s1
), real(s1
));
51 VERIFY_IS_EQUAL(ei_abs2(s1
), abs2(s1
));
56 void test_eigen2support()
58 for(int i
= 0; i
< g_repeat
; i
++) {
59 CALL_SUBTEST_1( eigen2support(Matrix
<double,1,1>()) );
60 CALL_SUBTEST_2( eigen2support(MatrixXd(1,1)) );
61 CALL_SUBTEST_4( eigen2support(Matrix3f()) );
62 CALL_SUBTEST_5( eigen2support(Matrix4d()) );
63 CALL_SUBTEST_2( eigen2support(MatrixXf(200,200)) );
64 CALL_SUBTEST_6( eigen2support(MatrixXcd(100,100)) );