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/map.hpp> 7 #include <boost/qvm/mat_traits_array.hpp> 8 #include <boost/qvm/vec_operations.hpp> 9 #include <boost/qvm/mat_operations.hpp> 10 #include <boost/qvm/mat.hpp> 11 #include "test_qvm_vector.hpp" 12 #include "gold.hpp" 13 14 namespace 15 { 16 template <int Dim> 17 void test()18 test() 19 { 20 using namespace boost::qvm; 21 test_qvm::vector<V1,Dim> x(42,1); 22 float y[Dim][Dim]; assign(y,diag_mat(x)); 23 for( int i=0; i!=Dim; ++i ) 24 x.b[i]=y[i][i]; 25 BOOST_QVM_TEST_EQ(x.a,x.b); 26 test_qvm::scalar_multiply_v(x.b,x.a,2.0f); 27 diag(diag_mat(x)) *= 2; 28 BOOST_QVM_TEST_EQ(x.a,x.b); 29 diag_mat(x) + diag_mat(x); 30 -diag_mat(x); 31 } 32 } 33 34 int main()35main() 36 { 37 test<2>(); 38 test<3>(); 39 test<4>(); 40 test<5>(); 41 return boost::report_errors(); 42 } 43