Build system improvements
[ustl.git] / bvt / bvt22.cc
blob597aa441bca60d998b1abc67f7f3b400afcac615
1 // This file is part of the ustl library, an STL implementation.
2 //
3 // Copyright (C) 2005 by Mike Sharov <msharov@users.sourceforge.net>
4 // This file is free software, distributed under the MIT License.
5 //
7 // Tests matrix operations
8 //
10 #include "stdtest.h"
12 template <size_t NX, size_t NY, typename T>
13 void TestMatrix (void)
15 matrix<NX,NY,T> m1, m2;
16 load_identity (m1);
17 cout << "load_identity(m1)"
18 "\n m1 = " << m1;
19 m2 = m1;
20 cout << "\nm1 = m2"
21 "\n m2 = " << m2;
22 m1 += m2;
23 cout << "\nm1 += m2"
24 "\n m1 = " << m1;
25 m1 /= 2;
26 cout << "\nm1 /= 2"
27 "\n m1 = " << m1;
28 m1 = m1 * m2;
29 cout << "\nm1 = m1 * m2"
30 "\n m1 = " << m1;
31 m1 += 3;
32 cout << "\nm1 += 3"
33 "\n m1 = " << m1;
34 load_identity (m2);
35 m2 *= 2;
36 m1 = m1 * m2;
37 cout << "\nm1 *= I(2)";
38 cout << "\n m1 = " << m1;
39 iota (m1.begin(), m1.end(), 1);
40 cout << "\nm1 = iota(1)"
41 "\n m1 = " << m1;
42 cout << "\n m1 row [1] = " << m1.row(1);
43 cout << "\n m1 column [2] = " << m1.column(2);
44 m1 = m1 * m2;
45 cout << "\nm1 *= I(2)"
46 "\n m1 = " << m1;
47 typename matrix<NX,NY,T>::column_type v, vt;
48 iota (v.begin(), v.end(), 1);
49 cout << "\nv = iota(1)"
50 "\n v = " << v;
51 load_identity (m2);
52 m2 *= 2;
53 for (uoff_t y = 0; y < NY - 1; ++ y)
54 m2[NY - 1][y] = 1;
55 cout << "\nm2 = I(2) + T(1)"
56 "\n m2 = " << m2;
57 vt = v * m2;
58 cout << "\nvt = v * m2"
59 "\n vt = " << vt << endl;
62 void TestMatrixAlgorithms (void)
64 cout << "========================================\n"
65 "Testing 4x4 int matrix:\n"
66 "========================================\n";
67 TestMatrix<4,4,int>();
68 cout << "========================================\n"
69 "Testing 4x4 float matrix:\n"
70 "========================================\n";
71 cout.set_precision (1);
72 TestMatrix<4,4,float>();
75 StdBvtMain (TestMatrixAlgorithms)