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 "test_qvm_matrix.hpp"
9 #include "gold.hpp"
10 
11 namespace
12     {
13     template <int R,int CR,int C>
14     void
test()15     test()
16         {
17         using namespace boost::qvm::sfinae;
18         test_qvm::matrix<M1,R,CR> const x(42,1);
19         test_qvm::matrix<M2,CR,C> const y(42,1);
20             {
21             test_qvm::matrix<M3,R,C> r=x*y;
22             test_qvm::multiply_m(r.b,x.b,y.b);
23             BOOST_QVM_TEST_CLOSE(r.a,r.b,0.0000001f);
24             }
25             {
26             test_qvm::matrix<M3,R,C> r=mref(x)*y;
27             test_qvm::multiply_m(r.b,x.b,y.b);
28             BOOST_QVM_TEST_CLOSE(r.a,r.b,0.0000001f);
29             }
30             {
31             test_qvm::matrix<M3,R,C> r=x*mref(y);
32             test_qvm::multiply_m(r.b,x.b,y.b);
33             BOOST_QVM_TEST_CLOSE(r.a,r.b,0.0000001f);
34             }
35         }
36     }
37 
38 int
main()39 main()
40     {
41     test<1,2,2>();
42     test<2,2,1>();
43     test<2,2,2>();
44     test<1,3,3>();
45     test<3,3,1>();
46     test<3,3,3>();
47     test<1,4,4>();
48     test<4,4,1>();
49     test<4,4,4>();
50     test<1,5,5>();
51     test<5,5,1>();
52     test<5,5,5>();
53     test<2,3,4>();
54     return boost::report_errors();
55     }
56