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_columns.hpp>
11#include <iostream>
12#include "utils.hpp"
13
14
15BOOST_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_columns(A) = " << boost::numeric::ublas::num_columns(A) << " ==> " << A.size2() );
32 BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_columns(A) == A.size2() );
33}
34
35
36BOOST_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_columns(A) = " << boost::numeric::ublas::num_columns(A) << " ==> " << A.size2() );
53 BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_columns(A) == A.size2() );
54}
55
56
57BOOST_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_columns(A') = " << boost::numeric::ublas::num_columns(boost::numeric::ublas::trans(A)) << " ==> " << boost::numeric::ublas::trans(A).size2() );
74 BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_columns(boost::numeric::ublas::trans(A)) == boost::numeric::ublas::trans(A).size2() );
75}
76
77
78BOOST_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_columns(reference(A)) = " << boost::numeric::ublas::num_columns(matrix_reference_type(A)) << " ==> " << matrix_reference_type(A).size2() );
96 BOOST_UBLAS_TEST_CHECK( boost::numeric::ublas::num_columns(matrix_reference_type(A)) == matrix_reference_type(A).size2() );
97}
98
99
100int 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

source code of boost/libs/numeric/ublas/test/num_columns.cpp