1 | // Copyright (c) 2011 David Bellot |
2 | // |
3 | // Distributed under the Boost Software License, Version 1.0. (See |
4 | // accompanying file LICENSE_1_0.txt or copy at |
5 | // http://www.boost.org/LICENSE_1_0.txt) |
6 | |
7 | #include <boost/numeric/ublas/fwd.hpp> |
8 | #include <boost/numeric/ublas/matrix.hpp> |
9 | #include <boost/numeric/ublas/matrix_expression.hpp> |
10 | #include <boost/numeric/ublas/operation/num_rows.hpp> |
11 | #include <iostream> |
12 | #include "utils.hpp" |
13 | |
14 | |
15 | BOOST_UBLAS_TEST_DEF( test_row_major_matrix_container ) |
16 | { |
17 | BOOST_UBLAS_DEBUG_TRACE( "TEST Row-major Matrix Container" ); |
18 | |
19 | typedef double value_type; |
20 | typedef boost::numeric::ublas::matrix<value_type, boost::numeric::ublas::row_major> matrix_type; |
21 | |
22 | matrix_type A(5,4); |
23 | |
24 | A(0,0) = 0.555950; A(0,1) = 0.274690; A(0,2) = 0.540605; A(0,3) = 0.798938; |
25 | A(1,0) = 0.108929; A(1,1) = 0.830123; A(1,2) = 0.891726; A(1,3) = 0.895283; |
26 | A(2,0) = 0.948014; A(2,1) = 0.973234; A(2,2) = 0.216504; A(2,3) = 0.883152; |
27 | A(3,0) = 0.023787; A(3,1) = 0.675382; A(3,2) = 0.231751; A(3,3) = 0.450332; |
28 | A(4,0) = 1.023787; A(4,1) = 1.675382; A(4,2) = 1.231751; A(4,3) = 1.450332; |
29 | |
30 | |
31 | BOOST_UBLAS_DEBUG_TRACE( "num_rows(A) = " << boost::numeric::ublas::num_rows(A) << " ==> " << A.size1() ); |
32 | BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_rows(A) == A.size1() ); |
33 | } |
34 | |
35 | |
36 | BOOST_UBLAS_TEST_DEF( test_col_major_matrix_container ) |
37 | { |
38 | BOOST_UBLAS_DEBUG_TRACE( "TEST Column-major Matrix Container" ); |
39 | |
40 | typedef double value_type; |
41 | typedef boost::numeric::ublas::matrix<value_type, boost::numeric::ublas::column_major> matrix_type; |
42 | |
43 | matrix_type A(5,4); |
44 | |
45 | A(0,0) = 0.555950; A(0,1) = 0.274690; A(0,2) = 0.540605; A(0,3) = 0.798938; |
46 | A(1,0) = 0.108929; A(1,1) = 0.830123; A(1,2) = 0.891726; A(1,3) = 0.895283; |
47 | A(2,0) = 0.948014; A(2,1) = 0.973234; A(2,2) = 0.216504; A(2,3) = 0.883152; |
48 | A(3,0) = 0.023787; A(3,1) = 0.675382; A(3,2) = 0.231751; A(3,3) = 0.450332; |
49 | A(4,0) = 1.023787; A(4,1) = 1.675382; A(4,2) = 1.231751; A(4,3) = 1.450332; |
50 | |
51 | |
52 | BOOST_UBLAS_DEBUG_TRACE( "num_rows(A) = " << boost::numeric::ublas::num_rows(A) << " ==> " << A.size1() ); |
53 | BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_rows(A) == A.size1() ); |
54 | } |
55 | |
56 | |
57 | BOOST_UBLAS_TEST_DEF( test_matrix_expression ) |
58 | { |
59 | BOOST_UBLAS_DEBUG_TRACE( "TEST Matrix Expression" ); |
60 | |
61 | typedef double value_type; |
62 | typedef boost::numeric::ublas::matrix<value_type> matrix_type; |
63 | |
64 | matrix_type A(5,4); |
65 | |
66 | A(0,0) = 0.555950; A(0,1) = 0.274690; A(0,2) = 0.540605; A(0,3) = 0.798938; |
67 | A(1,0) = 0.108929; A(1,1) = 0.830123; A(1,2) = 0.891726; A(1,3) = 0.895283; |
68 | A(2,0) = 0.948014; A(2,1) = 0.973234; A(2,2) = 0.216504; A(2,3) = 0.883152; |
69 | A(3,0) = 0.023787; A(3,1) = 0.675382; A(3,2) = 0.231751; A(3,3) = 0.450332; |
70 | A(4,0) = 1.023787; A(4,1) = 1.675382; A(4,2) = 1.231751; A(4,3) = 1.450332; |
71 | |
72 | |
73 | BOOST_UBLAS_DEBUG_TRACE( "num_rows(A') = " << boost::numeric::ublas::num_rows(boost::numeric::ublas::trans(A)) << " ==> " << boost::numeric::ublas::trans(A).size1() ); |
74 | BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_rows(boost::numeric::ublas::trans(A)) == boost::numeric::ublas::trans(A).size1() ); |
75 | } |
76 | |
77 | |
78 | BOOST_UBLAS_TEST_DEF( test_matrix_reference ) |
79 | { |
80 | BOOST_UBLAS_DEBUG_TRACE( "TEST Matrix Reference" ); |
81 | |
82 | typedef double value_type; |
83 | typedef boost::numeric::ublas::matrix<value_type> matrix_type; |
84 | typedef boost::numeric::ublas::matrix_reference<matrix_type> matrix_reference_type; |
85 | |
86 | matrix_type A(5,4); |
87 | |
88 | A(0,0) = 0.555950; A(0,1) = 0.274690; A(0,2) = 0.540605; A(0,3) = 0.798938; |
89 | A(1,0) = 0.108929; A(1,1) = 0.830123; A(1,2) = 0.891726; A(1,3) = 0.895283; |
90 | A(2,0) = 0.948014; A(2,1) = 0.973234; A(2,2) = 0.216504; A(2,3) = 0.883152; |
91 | A(3,0) = 0.023787; A(3,1) = 0.675382; A(3,2) = 0.231751; A(3,3) = 0.450332; |
92 | A(4,0) = 1.023787; A(4,1) = 1.675382; A(4,2) = 1.231751; A(4,3) = 1.450332; |
93 | |
94 | |
95 | BOOST_UBLAS_DEBUG_TRACE( "num_rows(reference(A)) = " << boost::numeric::ublas::num_rows(matrix_reference_type(A)) << " ==> " << matrix_reference_type(A).size1() ); |
96 | BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_rows(matrix_reference_type(A)) == matrix_reference_type(A).size1() ); |
97 | } |
98 | |
99 | |
100 | int main() |
101 | { |
102 | BOOST_UBLAS_TEST_BEGIN(); |
103 | |
104 | BOOST_UBLAS_TEST_DO( test_row_major_matrix_container ); |
105 | BOOST_UBLAS_TEST_DO( test_col_major_matrix_container ); |
106 | BOOST_UBLAS_TEST_DO( test_matrix_expression ); |
107 | BOOST_UBLAS_TEST_DO( test_matrix_reference ); |
108 | |
109 | BOOST_UBLAS_TEST_END(); |
110 | } |
111 | |