]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/qvm/test/convert_to_test.cpp
update sources to v12.2.4
[ceph.git] / ceph / src / boost / libs / qvm / test / convert_to_test.cpp
1 //Copyright (c) 2008-2016 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 #include <boost/qvm/operations.hpp>
7 #include <boost/qvm/map_mat_mat.hpp>
8 #include "test_qvm_matrix.hpp"
9 #include "test_qvm_quaternion.hpp"
10 #include "test_qvm_vector.hpp"
11 #include "gold.hpp"
12
13 namespace
14 {
15 template <int Rows,int Cols>
16 void
17 test_matrix()
18 {
19 using namespace boost::qvm::sfinae;
20 test_qvm::matrix<M1,Rows,Cols> const x(42,1);
21 test_qvm::matrix<M2,Rows,Cols> const y=convert_to< test_qvm::matrix<M2,Rows,Cols> >(x);
22 BOOST_QVM_TEST_EQ(x.a,y.a);
23 }
24
25 template <int Dim>
26 void
27 test_vector()
28 {
29 using namespace boost::qvm::sfinae;
30 test_qvm::vector<V1,Dim> const x(42,1);
31 test_qvm::vector<V2,Dim> const y=convert_to< test_qvm::vector<V2,Dim> >(x);
32 BOOST_QVM_TEST_EQ(x.a,y.a);
33 }
34
35 void
36 test_quaternion()
37 {
38 using namespace boost::qvm;
39 test_qvm::quaternion<Q1> x(42,1);
40 normalize(x);
41 {
42 test_qvm::quaternion<Q2> const y=convert_to< test_qvm::quaternion<Q2> >(x);
43 BOOST_QVM_TEST_EQ(x.a,y.a);
44 }
45 {
46 test_qvm::matrix<M1,3,3> const my=convert_to< test_qvm::matrix<M1,3,3> >(x);
47 test_qvm::quaternion<Q1> const qy=convert_to< test_qvm::quaternion<Q1> >(my);
48 BOOST_QVM_TEST_CLOSE(x.a,qy.a,0.00001f);
49 }
50 {
51 test_qvm::matrix<M1,4,4> const my=convert_to< test_qvm::matrix<M1,4,4> >(x);
52 BOOST_TEST(my.a[0][3]==0);
53 BOOST_TEST(my.a[1][3]==0);
54 BOOST_TEST(my.a[2][3]==0);
55 BOOST_TEST(my.a[3][0]==0);
56 BOOST_TEST(my.a[3][1]==0);
57 BOOST_TEST(my.a[3][2]==0);
58 BOOST_TEST(my.a[3][3]==1);
59 test_qvm::quaternion<Q1> const qy=convert_to< test_qvm::quaternion<Q1> >(del_row_col<3,3>(my));
60 BOOST_QVM_TEST_CLOSE(x.a,qy.a,0.00001f);
61 }
62 }
63 }
64
65 int
66 main()
67 {
68 test_matrix<1,2>();
69 test_matrix<2,1>();
70 test_matrix<2,2>();
71 test_matrix<1,3>();
72 test_matrix<3,1>();
73 test_matrix<3,3>();
74 test_matrix<1,4>();
75 test_matrix<4,1>();
76 test_matrix<4,4>();
77 test_matrix<1,5>();
78 test_matrix<5,1>();
79 test_matrix<5,5>();
80 test_quaternion();
81 test_vector<2>();
82 test_vector<3>();
83 test_vector<4>();
84 test_vector<5>();
85 return boost::report_errors();
86 }