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