]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/transpose_test.cpp
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / qvm / test / transpose_test.cpp
1 // Copyright 2008-2022 Emil Dotchevski and Reverge Studios, Inc.
2
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #ifdef BOOST_QVM_TEST_SINGLE_HEADER
7 # include BOOST_QVM_TEST_SINGLE_HEADER
8 #else
9 # include <boost/qvm/map_mat_mat.hpp>
10 # include <boost/qvm/mat_operations.hpp>
11 # include <boost/qvm/mat.hpp>
12 #endif
13
14 #include <boost/qvm/mat_traits_array.hpp>
15 #include "test_qvm_matrix.hpp"
16 #include "gold.hpp"
17
18 namespace
19 {
20 template <int Rows,int Cols>
21 void
22 test()
23 {
24 using namespace boost::qvm;
25 test_qvm::matrix<M1,Rows,Cols> x(42,1);
26 float r1[Cols][Rows];
27 for( int i=0; i!=Rows; ++i )
28 for( int j=0; j!=Cols; ++j )
29 r1[j][i]=x.a[i][j];
30 float r2[Cols][Rows];
31 assign(r2,transposed(x));
32 BOOST_QVM_TEST_EQ(r1,r2);
33 test_qvm::scalar_multiply_m(x.b,x.a,2.0f);
34 transposed(x) *= 2;
35 BOOST_QVM_TEST_EQ(x.a,x.b);
36 transposed(x) + transposed(x);
37 -transposed(x);
38 }
39 }
40
41 int
42 main()
43 {
44 test<1,2>();
45 test<2,1>();
46 test<2,2>();
47 test<1,3>();
48 test<3,1>();
49 test<3,3>();
50 test<1,4>();
51 test<4,1>();
52 test<4,4>();
53 test<1,5>();
54 test<5,1>();
55 test<5,5>();
56 return boost::report_errors();
57 }