Line data Source code
1 : #include "Set/Set.H"
2 : namespace Test
3 : {
4 : namespace Set
5 : {
6 : template <int dim, ::Set::Sym sym>
7 : class Matrix4
8 : {
9 : public:
10 6 : int SymmetryTest(int /*verbose*/)
11 : {
12 6 : ::Set::Matrix4<dim,sym> matrix = ::Set::Matrix4<dim,sym>::Randomize();
13 :
14 : //Util::Message(INFO,matrix);
15 : //std::cout << matrix << std::endl;
16 : if (sym == ::Set::Sym::None)
17 : return 0;
18 : if (sym == ::Set::Sym::MajorMinor)
19 : {
20 8 : for (int i = 0; i < dim; i++)
21 24 : for (int j = 0; j < dim; j++)
22 72 : for (int k = 0; k < dim; k++)
23 216 : for (int l = 0; l < dim; l++)
24 : {
25 324 : if (matrix(i,j,k,l) != matrix(k,l,i,j)) return 1; // breaks major symmetry
26 324 : if (matrix(i,j,k,l) != matrix(i,j,l,k)) return 1; // breaks minor symmetry
27 324 : if (matrix(i,j,k,l) != matrix(j,i,k,l)) return 1; // breaks minor symmetry
28 : }
29 2 : return 0;
30 : }
31 : if (sym == ::Set::Sym::Full)
32 : {
33 14 : for (int i = 0; i < dim; i++)
34 36 : for (int j = 0; j < dim; j++)
35 96 : for (int k = 0; k < dim; k++)
36 264 : for (int l = 0; l < dim; l++)
37 : {
38 388 : if (matrix(i,j,k,l) != matrix(i,j,l,k)) return 1;
39 388 : if (matrix(i,j,k,l) != matrix(i,k,j,l)) return 1;
40 388 : if (matrix(i,j,k,l) != matrix(i,k,l,j)) return 1;
41 388 : if (matrix(i,j,k,l) != matrix(i,l,j,k)) return 1;
42 388 : if (matrix(i,j,k,l) != matrix(i,l,k,j)) return 1;
43 388 : if (matrix(i,j,k,l) != matrix(j,i,k,l)) return 1;
44 388 : if (matrix(i,j,k,l) != matrix(j,i,l,k)) return 1;
45 388 : if (matrix(i,j,k,l) != matrix(j,k,i,l)) return 1;
46 388 : if (matrix(i,j,k,l) != matrix(j,k,l,i)) return 1;
47 388 : if (matrix(i,j,k,l) != matrix(j,l,i,k)) return 1;
48 388 : if (matrix(i,j,k,l) != matrix(j,l,k,i)) return 1;
49 388 : if (matrix(i,j,k,l) != matrix(k,i,j,l)) return 1;
50 388 : if (matrix(i,j,k,l) != matrix(k,i,l,j)) return 1;
51 388 : if (matrix(i,j,k,l) != matrix(k,j,i,l)) return 1;
52 388 : if (matrix(i,j,k,l) != matrix(k,j,l,i)) return 1;
53 388 : if (matrix(i,j,k,l) != matrix(k,l,i,j)) return 1;
54 388 : if (matrix(i,j,k,l) != matrix(k,l,j,i)) return 1;
55 388 : if (matrix(i,j,k,l) != matrix(l,i,j,k)) return 1;
56 388 : if (matrix(i,j,k,l) != matrix(l,i,k,j)) return 1;
57 388 : if (matrix(i,j,k,l) != matrix(l,j,i,k)) return 1;
58 388 : if (matrix(i,j,k,l) != matrix(l,j,k,i)) return 1;
59 388 : if (matrix(i,j,k,l) != matrix(l,k,i,j)) return 1;
60 388 : if (matrix(i,j,k,l) != matrix(l,k,j,i)) return 1;
61 : }
62 4 : return 0;
63 : }
64 :
65 :
66 : return 1;
67 : }
68 : };
69 : }
70 : }
|