]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/qvm/test/swizzle3_test.cpp
update sources to v12.2.3
[ceph.git] / ceph / src / boost / libs / qvm / test / swizzle3_test.cpp
CommitLineData
b32b8144
FG
1//Copyright (c) 2008-2016 Emil Dotchevski and Reverge Studios, Inc.\r
2\r
3//Distributed under the Boost Software License, Version 1.0. (See accompanying\r
4//file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5\r
6#include <boost/qvm/vec_operations.hpp>\r
7#include <boost/qvm/vec_access.hpp>\r
8#include <boost/qvm/vec.hpp>\r
9#include <boost/qvm/swizzle.hpp>\r
10#include "test_qvm_vector.hpp"\r
11\r
12int\r
13main()\r
14 { \r
15 using namespace boost::qvm;\r
16 test_qvm::vector<V1,4> v1;\r
17 v1.a[0]=42.0f;\r
18 v1.a[1]=43.0f;\r
19 v1.a[2]=44.0f;\r
20 v1.a[3]=45.0f;\r
21 XXX(v1) + XXX(v1);\r
22 -XXX(v1);\r
23 XXX(42.0f) + XXX(42.0f);\r
24 -XXX(42.0f);\r
25 {\r
26 test_qvm::vector<V2,3> v0=X00(42.0f);\r
27 BOOST_TEST(v0.a[0]==42);\r
28 BOOST_TEST(v0.a[1]==0);\r
29 BOOST_TEST(v0.a[2]==0);\r
30 test_qvm::vector<V2,3> v2=_10X(42.0f);\r
31 BOOST_TEST(v2.a[0]==1);\r
32 BOOST_TEST(v2.a[1]==0);\r
33 BOOST_TEST(v2.a[2]==42);\r
34 float s=42.0f;\r
35 BOOST_TEST(&X(X01(s))==&s);\r
36 }\r
37 {\r
38 test_qvm::vector<V2,3> r;\r
39 r.a[0]=v1.a[0];\r
40 r.a[1]=v1.a[0];\r
41 r.a[2]=v1.a[0];\r
42 test_qvm::vector<V2,3> v2=XXX(v1);\r
43 BOOST_QVM_TEST_EQ(v2,r);\r
44 }\r
45 {\r
46 test_qvm::vector<V2,3> r;\r
47 r.a[0]=v1.a[0];\r
48 r.a[1]=v1.a[0];\r
49 r.a[2]=v1.a[1];\r
50 test_qvm::vector<V2,3> v2=XXY(v1);\r
51 BOOST_QVM_TEST_EQ(v2,r);\r
52 }\r
53 {\r
54 test_qvm::vector<V2,3> r;\r
55 r.a[0]=v1.a[0];\r
56 r.a[1]=v1.a[0];\r
57 r.a[2]=v1.a[2];\r
58 test_qvm::vector<V2,3> v2=XXZ(v1);\r
59 BOOST_QVM_TEST_EQ(v2,r);\r
60 }\r
61 {\r
62 test_qvm::vector<V2,3> r;\r
63 r.a[0]=v1.a[0];\r
64 r.a[1]=v1.a[0];\r
65 r.a[2]=v1.a[3];\r
66 test_qvm::vector<V2,3> v2=XXW(v1);\r
67 BOOST_QVM_TEST_EQ(v2,r);\r
68 }\r
69 {\r
70 test_qvm::vector<V2,3> r;\r
71 r.a[0]=v1.a[0];\r
72 r.a[1]=v1.a[0];\r
73 r.a[2]=0;\r
74 test_qvm::vector<V2,3> v2=XX0(v1);\r
75 BOOST_QVM_TEST_EQ(v2,r);\r
76 }\r
77 {\r
78 test_qvm::vector<V2,3> r;\r
79 r.a[0]=v1.a[0];\r
80 r.a[1]=v1.a[0];\r
81 r.a[2]=1;\r
82 test_qvm::vector<V2,3> v2=XX1(v1);\r
83 BOOST_QVM_TEST_EQ(v2,r);\r
84 }\r
85 {\r
86 test_qvm::vector<V2,3> v2=XYZ(v1);\r
87 XYZ(v1) *= 2;\r
88 v2 *= 2;\r
89 test_qvm::vector<V2,3> v3=XYZ(v1);\r
90 BOOST_QVM_TEST_EQ(v2,v3);\r
91 }\r
92 {\r
93 test_qvm::vector<V2,3> v2=XYZ(v1);\r
94 test_qvm::vector<V3,3> v3;\r
95 XYZ(v3)=XYZ(v2);\r
96 BOOST_QVM_TEST_EQ(v2,v3);\r
97 }\r
98 {\r
99 test_qvm::vector<V1,3> v=_000();\r
100 BOOST_TEST(v.a[0]==0);\r
101 BOOST_TEST(v.a[1]==0);\r
102 BOOST_TEST(v.a[2]==0);\r
103 }\r
104 {\r
105 test_qvm::vector<V1,3> v=_001();\r
106 BOOST_TEST(v.a[0]==0);\r
107 BOOST_TEST(v.a[1]==0);\r
108 BOOST_TEST(v.a[2]==1);\r
109 }\r
110 {\r
111 test_qvm::vector<V1,3> v=_010();\r
112 BOOST_TEST(v.a[0]==0);\r
113 BOOST_TEST(v.a[1]==1);\r
114 BOOST_TEST(v.a[2]==0);\r
115 }\r
116 {\r
117 test_qvm::vector<V1,3> v=_011();\r
118 BOOST_TEST(v.a[0]==0);\r
119 BOOST_TEST(v.a[1]==1);\r
120 BOOST_TEST(v.a[2]==1);\r
121 }\r
122 {\r
123 test_qvm::vector<V1,3> v=_100();\r
124 BOOST_TEST(v.a[0]==1);\r
125 BOOST_TEST(v.a[1]==0);\r
126 BOOST_TEST(v.a[2]==0);\r
127 }\r
128 {\r
129 test_qvm::vector<V1,3> v=_101();\r
130 BOOST_TEST(v.a[0]==1);\r
131 BOOST_TEST(v.a[1]==0);\r
132 BOOST_TEST(v.a[2]==1);\r
133 }\r
134 {\r
135 test_qvm::vector<V1,3> v=_110();\r
136 BOOST_TEST(v.a[0]==1);\r
137 BOOST_TEST(v.a[1]==1);\r
138 BOOST_TEST(v.a[2]==0);\r
139 }\r
140 {\r
141 test_qvm::vector<V1,3> v=_111();\r
142 BOOST_TEST(v.a[0]==1);\r
143 BOOST_TEST(v.a[1]==1);\r
144 BOOST_TEST(v.a[2]==1);\r
145 }\r
146 return boost::report_errors();\r
147 }\r