• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/mat_operations.hpp>
7 #include <boost/qvm/mat.hpp>
8 #include <boost/exception/diagnostic_information.hpp>
9 #include "test_qvm_matrix.hpp"
10 #include "gold.hpp"
11 
12 namespace
13     {
14     template <class T,class U> struct same_type_tester;
15     template <class T> struct same_type_tester<T,T> { };
test_same_type(T,U)16     template <class T,class U> void test_same_type( T, U ) { same_type_tester<T,U>(); }
17 
18     template <int D>
19     void
test()20     test()
21         {
22         using namespace boost::qvm::sfinae;
23         test_qvm::matrix<M1,D,D> x;
24         test_qvm::rotation_z(x.a,42.0f);
25         test_qvm::inverse(x.b,x.a);
26         test_same_type(x,inverse(x));
27             {
28             test_qvm::matrix<M1,D,D> y=inverse(x);
29             BOOST_QVM_TEST_CLOSE(x.b,y.a,0.000001f);
30             }
31             {
32             test_qvm::matrix<M1,D,D> y=inverse(mref(x));
33             BOOST_QVM_TEST_CLOSE(x.b,y.a,0.000001f);
34             }
35         }
36     }
37 
38 int
main()39 main()
40     {
41     try
42         {
43         test<2>();
44         test<3>();
45         test<4>();
46         test<5>();
47         return boost::report_errors();
48         }
49     catch(
50     ... )
51         {
52         std::cerr << "Uncaught exception:\n" << boost::current_exception_diagnostic_information();
53         return 1;
54         }
55     }
56