1 | /* |
2 | * Point_unit_test.hpp |
3 | * |
4 | * Created on: Aug 11, 2015 |
5 | * Author: i-bird |
6 | */ |
7 | |
8 | #ifndef SRC_SPACE_SHAPE_POINT_UNIT_TEST_HPP_ |
9 | #define SRC_SPACE_SHAPE_POINT_UNIT_TEST_HPP_ |
10 | |
11 | #include <iostream> |
12 | #include "Space/Shape/Point.hpp" |
13 | #include "Grid/comb.hpp" |
14 | #include "util/convert.hpp" |
15 | |
16 | BOOST_AUTO_TEST_SUITE( Point_test_suite ) |
17 | |
18 | BOOST_AUTO_TEST_CASE( Point_use ) |
19 | { |
20 | std::cout << "Point unit test start" << "\n" ; |
21 | |
22 | //! [assign and operation] |
23 | |
24 | Point<3,float> p; |
25 | |
26 | p.get(0) = 1.0; |
27 | p.get(1) = 2.0; |
28 | p.get(2) = 3.0; |
29 | |
30 | p = pmul(p,p) + p; |
31 | |
32 | BOOST_REQUIRE_EQUAL(p.get(0),2.0); |
33 | BOOST_REQUIRE_EQUAL(p.get(1),6.0); |
34 | BOOST_REQUIRE_EQUAL(p.get(2),12.0); |
35 | |
36 | // Combination 3D |
37 | comb<3> c; |
38 | c.c[0] = 1; |
39 | c.c[1] = 1; |
40 | c.c[2] = 1; |
41 | Point<3,float> pc = toPoint<3,float>::convert(c); |
42 | |
43 | Point<3,float> one; |
44 | // fill the point with one |
45 | one.one(); |
46 | Point<3,float> middle = p / 2.0; |
47 | |
48 | // middle * (one + comb_p) = 0 |
49 | p = p + pmul(middle,(one + pc)); |
50 | |
51 | BOOST_REQUIRE_EQUAL(p.get(0),4.0); |
52 | BOOST_REQUIRE_EQUAL(p.get(1),12.0); |
53 | BOOST_REQUIRE_EQUAL(p.get(2),24.0); |
54 | |
55 | //! [assign and operation] |
56 | |
57 | //! [norm] |
58 | |
59 | Point<3,float> pn({1.0,1.0,1.0}); |
60 | |
61 | BOOST_REQUIRE_CLOSE(pn.norm(),1.732050,0.0001); |
62 | |
63 | //! [norm] |
64 | |
65 | // distance between two points |
66 | |
67 | Point<3,float> p1({1.0,1.0,1.0}); |
68 | Point<3,float> p2({2.0,3.0,4.0}); |
69 | |
70 | BOOST_REQUIRE_EQUAL(p1.distance(p2),p2.distance(p1)); |
71 | BOOST_REQUIRE_CLOSE(p1.distance(p2),3.74165738677,0.0001); |
72 | |
73 | BOOST_REQUIRE_EQUAL(p1.distance2(p2),p2.distance2(p1)); |
74 | BOOST_REQUIRE_CLOSE(p1.distance2(p2),14.0,0.0001); |
75 | |
76 | std::cout << "Point unit test stop" << "\n" ; |
77 | |
78 | // check two point are equal |
79 | |
80 | BOOST_REQUIRE( p1 != p2 ); |
81 | BOOST_REQUIRE( p1 == p1 ); |
82 | |
83 | // Check division and operator* |
84 | |
85 | p2 /= 2.0; |
86 | p1 = p1 * 2.0; |
87 | |
88 | BOOST_REQUIRE_CLOSE(p2.get(0),1.0,0.001); |
89 | BOOST_REQUIRE_CLOSE(p2.get(1),1.5,0.001); |
90 | BOOST_REQUIRE_CLOSE(p2.get(2),2.0,0.001); |
91 | |
92 | BOOST_REQUIRE_CLOSE(p1.get(0),2.0,0.001); |
93 | BOOST_REQUIRE_CLOSE(p1.get(1),2.0,0.001); |
94 | BOOST_REQUIRE_CLOSE(p1.get(2),2.0,0.001); |
95 | |
96 | |
97 | } |
98 | |
99 | |
100 | BOOST_AUTO_TEST_CASE( Point_expression_usage ) |
101 | { |
102 | float scal = 0.0; |
103 | |
104 | Point<3,float> p1({1.0,1.0,1.0}); |
105 | Point<3,float> p2({2.0,3.0,4.0}); |
106 | Point<3,float> p3({6.0,7.0,9.0}); |
107 | |
108 | p3 = p1 + 2.0; |
109 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) + 2.0);} |
110 | p3 = 2.0 + p2; |
111 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),2.0 + p2.get(i));} |
112 | p3 = p2 + p1; |
113 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p2.get(i) + p1.get(i));} |
114 | |
115 | p3 = p1 - 2.0; |
116 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) - 2.0);} |
117 | p3 = 2.0 - p2; |
118 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),2.0 - p2.get(i));} |
119 | p3 = p2 - p1; |
120 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p2.get(i) - p1.get(i));} |
121 | |
122 | p3 = p1 * 2.0; |
123 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) * 2.0);} |
124 | p3 = 2.0f * p2; |
125 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),2.0 * p2.get(i));} |
126 | p3 = p2 * p1; |
127 | for (size_t i = 0 ; i < 3 ; i++) {scal += p1.get(i) * p2.get(i);} |
128 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),scal);} |
129 | |
130 | p3 = p1 / 2.0; |
131 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) / 2.0);} |
132 | p3 = 2.0 / p2; |
133 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(float)2.0 / p2.get(i));} |
134 | p3 = p2 / p1; |
135 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p2.get(i) / p1.get(i));} |
136 | |
137 | // Variuos combination 3 operator |
138 | |
139 | p3 = p1 + (p2 + p1); |
140 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) + (p2.get(i) + p1.get(i))) ;} |
141 | p3 = (p1 + p2) + p2; |
142 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(p1.get(i) + p2.get(i)) + p2.get(i)) ;} |
143 | p3 = (p1 + p2) + (p1 + p2); |
144 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(p1.get(i) + p2.get(i)) + (p2.get(i) + p1.get(i))) ;} |
145 | |
146 | p3 = p2 - (p1 + p2); |
147 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p2.get(i) - (p1.get(i) + p2.get(i))) ;} |
148 | p3 = (p1 + p2) - p2; |
149 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(p1.get(i) + p2.get(i)) - p2.get(i)) ;} |
150 | p3 = (p1 + p2) - (p1 + p2); |
151 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(p1.get(i) + p2.get(i)) - (p1.get(i) + p2.get(i))) ;} |
152 | |
153 | scal = 0; |
154 | p3 = p2 * (p1 + p2); |
155 | for (size_t i = 0 ; i < 3 ; i++) {scal += p2.get(i) * (p2.get(i) + p1.get(i));} |
156 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),scal) ;} |
157 | |
158 | p3 = (p1 + p2) * p2; |
159 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),scal) ;} |
160 | scal = 0; |
161 | p3 = (p1 + p2) * (p1 + p2); |
162 | for (size_t i = 0 ; i < 3 ; i++) {scal += (p2.get(i) + p1.get(i)) * (p2.get(i) + p1.get(i));} |
163 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),scal) ;} |
164 | |
165 | // norm test |
166 | p3 = p1 / norm(p1); |
167 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) / p1.norm()) ;} |
168 | // distance calculation |
169 | float dist = norm(p1 - p2); |
170 | float dist2 = 0.0; |
171 | for (size_t i = 0 ; i < 3 ; i++) {dist2 += (p1.get(i) - p2.get(i)) * (p1.get(i) - p2.get(i));} |
172 | dist2 = sqrt(dist2); |
173 | BOOST_REQUIRE_EQUAL(dist,dist2); |
174 | float dist3 = distance(p1,p2); |
175 | BOOST_REQUIRE_EQUAL(dist,dist3); |
176 | |
177 | p3 = p2 / (p1 + p2); |
178 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p2.get(i) / (p2.get(i) + p1.get(i))) ;} |
179 | p3 = (p1 + p2) / p2; |
180 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(p2.get(i) + p1.get(i)) / p2.get(i) ) ;} |
181 | p3 = (p1 + p2) / (p1 + p2); |
182 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(p2.get(i) + p1.get(i)) / (p2.get(i) + p1.get(i)) ) ;} |
183 | |
184 | |
185 | // Point function test |
186 | |
187 | p3 = abs(p1 + p2); |
188 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::abs(p1.get(i) + p2.get(i))) ;} |
189 | p3 = exp(p1 - p2); |
190 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::exp(p1.get(i) - p2.get(i))) ;} |
191 | p3 = exp2(p1 + p2); |
192 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::exp2(p1.get(i) + p2.get(i))) ;} |
193 | p3 = expm1(p1 + p2); |
194 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::expm1(p1.get(i) + p2.get(i))) ;} |
195 | p3 = log(p1 + p2); |
196 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::log(p1.get(i) + p2.get(i))) ;} |
197 | p3 = log10(p1 + p2); |
198 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::log10(p1.get(i) + p2.get(i))) ;} |
199 | p3 = log2(p1 + p2); |
200 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::log2(p1.get(i) + p2.get(i))) ;} |
201 | p3 = log1p(p1 + p2); |
202 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::log1p(p1.get(i) + p2.get(i))) ;} |
203 | p3 = sqrt(p1 + p2); |
204 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::sqrt(p1.get(i) + p2.get(i))) ;} |
205 | p3 = cbrt(p1 + p2); |
206 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::cbrt(p1.get(i) + p2.get(i))) ;} |
207 | p3 = sin(p1 + p2); |
208 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::sin(p1.get(i) + p2.get(i))) ;} |
209 | p3 = cos(p1 + p2); |
210 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::cos(p1.get(i) + p2.get(i))) ;} |
211 | p3 = tan(p1 + p2); |
212 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::tan(p1.get(i) + p2.get(i))) ;} |
213 | p3 = atan(p1 + p2); |
214 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::atan(p1.get(i) + p2.get(i))) ;} |
215 | p3 = asin(p1/5.0f + p2/6.0f); |
216 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::asin(p1.get(i)/5.0f + p2.get(i)/6.0f)) ;} |
217 | p3 = acos(p1/5.0f + p2/6.0f); |
218 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::acos(p1.get(i)/5.0f + p2.get(i)/6.0f)) ;} |
219 | p3 = sinh(p1 + p2); |
220 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::sinh(p1.get(i) + p2.get(i))) ;} |
221 | p3 = cosh(p1 + p2); |
222 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::cosh(p1.get(i) + p2.get(i))) ;} |
223 | p3 = tanh(p1 + p2); |
224 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::tanh(p1.get(i) + p2.get(i))) ;} |
225 | p3 = atanh(p1/5.0f + p2/6.0f); |
226 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::atanh(p1.get(i)/5.0f + p2.get(i)/6.0f)) ;} |
227 | p3 = asinh(p1 + p2); |
228 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::asinh(p1.get(i) + p2.get(i))) ;} |
229 | p3 = acosh(p1 + p2); |
230 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::acosh(p1.get(i) + p2.get(i))) ;} |
231 | p3 = erf(p1 + p2); |
232 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::erf(p1.get(i) + p2.get(i))) ;} |
233 | p3 = erfc(p1 + p2); |
234 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::erfc(p1.get(i) + p2.get(i))) ;} |
235 | p3 = tgamma(p1 + p2); |
236 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::tgamma(p1.get(i) + p2.get(i))) ;} |
237 | p3 = lgamma(p1 + p2); |
238 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::lgamma(p1.get(i) + p2.get(i))) ;} |
239 | p3 = ceil(p1 + p2); |
240 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::ceil(p1.get(i) + p2.get(i))) ;} |
241 | p3 = floor(p1 + p2); |
242 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::floor(p1.get(i) + p2.get(i))) ;} |
243 | p3 = trunc(p1 + p2); |
244 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::trunc(p1.get(i) + p2.get(i))) ;} |
245 | p3 = round(p1 + p2); |
246 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::round(p1.get(i) + p2.get(i))) ;} |
247 | p3 = nearbyint(p1 + p2); |
248 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::nearbyint(p1.get(i) + p2.get(i))) ;} |
249 | p3 = rint(p1 + p2); |
250 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),std::rint(p1.get(i) + p2.get(i))) ;} |
251 | |
252 | |
253 | double tmp = 5.0 + (p1 * p2); |
254 | BOOST_REQUIRE_EQUAL(tmp,14.0); |
255 | p3 = 5.0 + (p1 * p2); |
256 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),14.0) ;} |
257 | tmp = 5.0 - (p1 * p2); |
258 | BOOST_REQUIRE_EQUAL(tmp,-4.0); |
259 | p3 = 5.0 - (p1 * p2); |
260 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),-4.0) ;} |
261 | tmp = 5.0 * (p1 * p2); |
262 | BOOST_REQUIRE_EQUAL(tmp,45.0); |
263 | p3 = 5.0 * (p1 * p2); |
264 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),45.0) ;} |
265 | tmp = 5.0f / (p1 * p2); |
266 | BOOST_REQUIRE_EQUAL(tmp,5.0f/9.0f); |
267 | p3 = 5.0f / (p1 * p2); |
268 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),5.0f/9.0f) ;} |
269 | |
270 | float p[3] = {1.0,2.0,3.0}; |
271 | auto p_e = getExprR(p); |
272 | |
273 | p3 = p_e - p1; |
274 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p[i]-p1.get(i)) ;} |
275 | p3 = p_e + p1; |
276 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p[i]+p1.get(i)) ;} |
277 | |
278 | tmp = norm(p_e); |
279 | BOOST_REQUIRE_EQUAL(tmp,sqrtf(14.0)); |
280 | |
281 | Point<3,float> p4({1.0,2.0,3.0}); |
282 | |
283 | p4 += p2; |
284 | BOOST_REQUIRE_EQUAL(p4.get(0),3.0); |
285 | BOOST_REQUIRE_EQUAL(p4.get(1),5.0); |
286 | BOOST_REQUIRE_EQUAL(p4.get(2),7.0); |
287 | |
288 | |
289 | p4 = Point<3,float>({1.0,2.0,3.0}); |
290 | |
291 | p4 += p2 + p1; |
292 | |
293 | BOOST_REQUIRE_EQUAL(p4.get(0),4.0); |
294 | BOOST_REQUIRE_EQUAL(p4.get(1),6.0); |
295 | BOOST_REQUIRE_EQUAL(p4.get(2),8.0); |
296 | |
297 | double s = 0.0; |
298 | s += p1+(p1+p2); |
299 | BOOST_REQUIRE_EQUAL(s,4.0); |
300 | |
301 | // Scalar product |
302 | |
303 | Point<3,float> p5({1.0,2.0,3.0}); |
304 | |
305 | p4 = (p1*p2) * p5; |
306 | |
307 | BOOST_REQUIRE_EQUAL(p4.get(0),9.0); |
308 | BOOST_REQUIRE_EQUAL(p4.get(1),18.0); |
309 | BOOST_REQUIRE_EQUAL(p4.get(2),27.0); |
310 | |
311 | p4 = p5 * (p1*p2); |
312 | |
313 | BOOST_REQUIRE_EQUAL(p4.get(0),9.0); |
314 | BOOST_REQUIRE_EQUAL(p4.get(1),18.0); |
315 | BOOST_REQUIRE_EQUAL(p4.get(2),27.0); |
316 | |
317 | |
318 | p4 = p2 * (p1*p2); |
319 | |
320 | BOOST_REQUIRE_EQUAL(p4.get(0),18.0); |
321 | BOOST_REQUIRE_EQUAL(p4.get(1),27.0); |
322 | BOOST_REQUIRE_EQUAL(p4.get(2),36.0); |
323 | |
324 | p4 = (p1*p2) * p2; |
325 | |
326 | BOOST_REQUIRE_EQUAL(p4.get(0),18.0); |
327 | BOOST_REQUIRE_EQUAL(p4.get(1),27.0); |
328 | BOOST_REQUIRE_EQUAL(p4.get(2),36.0); |
329 | |
330 | p4 = (p1*p2) * (p2*p1); |
331 | |
332 | BOOST_REQUIRE_EQUAL(p4.get(0),81.0); |
333 | BOOST_REQUIRE_EQUAL(p4.get(1),81.0); |
334 | BOOST_REQUIRE_EQUAL(p4.get(2),81.0); |
335 | } |
336 | |
337 | |
338 | BOOST_AUTO_TEST_CASE( Point_expression_usage_with_array ) |
339 | { |
340 | float scal = 0.0; |
341 | |
342 | float p1_p[] = {1.0,1.0,1.0}; |
343 | float p2_p[] = {2.0,3.0,4.0}; |
344 | float p3_p[] = {6.0,7.0,9.0}; |
345 | |
346 | Point<3,float> pp1({1.0,1.0,1.0}); |
347 | Point<3,float> pp2({2.0,3.0,4.0}); |
348 | Point<3,float> pp3({6.0,7.0,9.0}); |
349 | |
350 | auto p1 = getExprR(p1_p); |
351 | auto p2 = getExprR(p2_p); |
352 | |
353 | auto p3L = getExprL(p3_p); |
354 | |
355 | p3L = p1 + 2.0; |
356 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] + 2.0);} |
357 | p3L = 2.0 + p2; |
358 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2.0 + p2_p[i]);} |
359 | p3L = p2 + p1; |
360 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p2_p[i] + p1_p[i]);} |
361 | |
362 | p3L = p1 - 2.0; |
363 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] - 2.0);} |
364 | p3L = 2.0 - p2; |
365 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2.0 - p2_p[i]);} |
366 | p3L = p2 - p1; |
367 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p2_p[i] - p1_p[i]);} |
368 | |
369 | p3L = p1 * 2.0; |
370 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] * 2.0);} |
371 | p3L = 2.0f * p2; |
372 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2.0 * p2_p[i]);} |
373 | p3L = p2 * p1; |
374 | for (size_t i = 0 ; i < 3 ; i++) {scal += p1_p[i] * p2_p[i];} |
375 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],scal);} |
376 | |
377 | p3L = p1 / 2.0; |
378 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] / 2.0);} |
379 | p3L = 2.0 / p2; |
380 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(float)2.0 / p2_p[i]);} |
381 | p3L = p2 / p1; |
382 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p2_p[i] / p1_p[i]);} |
383 | |
384 | // Some 2 operator combination |
385 | |
386 | p3L = p1 + p2; |
387 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] + p2_p[i]);} |
388 | p3L = p1 + pp2; |
389 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] + pp2.get(i));} |
390 | p3L = pp2 + p1; |
391 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],pp2.get(i) + p1_p[i]);} |
392 | |
393 | // Variuos combination 3 operator |
394 | |
395 | p3L = p1 + (p2 + p1); |
396 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] + (p2_p[i] + p1_p[i])) ;} |
397 | p3L = (p1 + p2) + p2; |
398 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(p1_p[i] + p2_p[i]) + p2_p[i]) ;} |
399 | p3L = (p1 + p2) + (p1 + p2); |
400 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(p1_p[i] + p2_p[i]) + (p2_p[i] + p1_p[i])) ;} |
401 | |
402 | p3L = p2 - (p1 + p2); |
403 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p2_p[i] - (p1_p[i] + p2_p[i])) ;} |
404 | p3L = (p1 + p2) - p2; |
405 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(p1_p[i] + p2_p[i]) - p2_p[i]) ;} |
406 | p3L = (p1 + p2) - (p1 + p2); |
407 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(p1_p[i] + p2_p[i]) - (p1_p[i] + p2_p[i])) ;} |
408 | |
409 | scal = 0; |
410 | p3L = p2 * (p1 + p2); |
411 | for (size_t i = 0 ; i < 3 ; i++) {scal += p2_p[i] * (p2_p[i] + p1_p[i]);} |
412 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],scal) ;} |
413 | p3L = (p1 + p2) * p2; |
414 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],scal) ;} |
415 | scal = 0; |
416 | p3L = (p1 + p2) * (p1 + p2); |
417 | for (size_t i = 0 ; i < 3 ; i++) {scal += (p2_p[i] + p1_p[i]) * (p2_p[i] + p1_p[i]);} |
418 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],scal) ;} |
419 | |
420 | // norm test |
421 | p3L = p1 / norm(p1); |
422 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] / sqrtf(3.0)) ;} |
423 | // distance calculation |
424 | float dist = norm(p1 - p2); |
425 | float dist2 = 0.0; |
426 | for (size_t i = 0 ; i < 3 ; i++) {dist2 += (p1_p[i] - p2_p[i]) * (p1_p[i] - p2_p[i]);} |
427 | dist2 = sqrt(dist2); |
428 | BOOST_REQUIRE_EQUAL(dist,dist2); |
429 | float dist3 = distance(p1,p2); |
430 | BOOST_REQUIRE_EQUAL(dist,dist3); |
431 | |
432 | p3L = p2 / (p1 + p2); |
433 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p2_p[i] / (p2_p[i] + p1_p[i])) ;} |
434 | p3L = (p1 + p2) / p2; |
435 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(p2_p[i] + p1_p[i]) / p2_p[i] ) ;} |
436 | p3L = (p1 + p2) / (p1 + p2); |
437 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],(p2_p[i] + p1_p[i]) / (p2_p[i] + p1_p[i]) ) ;} |
438 | |
439 | |
440 | // Point function test |
441 | |
442 | p3L = abs(p1 + p2); |
443 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::abs(p1_p[i] + p2_p[i])) ;} |
444 | p3L = exp(p1 - p2); |
445 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::exp(p1_p[i] - p2_p[i])) ;} |
446 | p3L = exp2(p1 + p2); |
447 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::exp2(p1_p[i] + p2_p[i])) ;} |
448 | p3L = expm1(p1 + p2); |
449 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::expm1(p1_p[i] + p2_p[i])) ;} |
450 | p3L = log(p1 + p2); |
451 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::log(p1_p[i] + p2_p[i])) ;} |
452 | p3L = log10(p1 + p2); |
453 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::log10(p1_p[i] + p2_p[i])) ;} |
454 | p3L = log2(p1 + p2); |
455 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::log2(p1_p[i] + p2_p[i])) ;} |
456 | p3L = log1p(p1 + p2); |
457 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::log1p(p1_p[i] + p2_p[i])) ;} |
458 | p3L = sqrt(p1 + p2); |
459 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::sqrt(p1_p[i] + p2_p[i])) ;} |
460 | p3L = cbrt(p1 + p2); |
461 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::cbrt(p1_p[i] + p2_p[i])) ;} |
462 | p3L = sin(p1 + p2); |
463 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::sin(p1_p[i] + p2_p[i])) ;} |
464 | p3L = cos(p1 + p2); |
465 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::cos(p1_p[i] + p2_p[i])) ;} |
466 | p3L = tan(p1 + p2); |
467 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::tan(p1_p[i] + p2_p[i])) ;} |
468 | p3L = atan(p1 + p2); |
469 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::atan(p1_p[i] + p2_p[i])) ;} |
470 | p3L = asin(p1/5.0f + p2/6.0f); |
471 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_CLOSE(p3_p[i],std::asin(p1_p[i]/5.0f + p2_p[i]/6.0f),0.1) ;} |
472 | p3L = acos(p1/5.0f + p2/6.0f); |
473 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::acos(p1_p[i]/5.0f + p2_p[i]/6.0f)) ;} |
474 | p3L = sinh(p1 + p2); |
475 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::sinh(p1_p[i] + p2_p[i])) ;} |
476 | p3L = cosh(p1 + p2); |
477 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::cosh(p1_p[i] + p2_p[i])) ;} |
478 | p3L = tanh(p1 + p2); |
479 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::tanh(p1_p[i] + p2_p[i])) ;} |
480 | p3L = atanh(p1/5.0f + p2/6.0f); |
481 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::atanh(p1_p[i]/5.0f + p2_p[i]/6.0f)) ;} |
482 | p3L = acosh(p1 + p2); |
483 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::acosh(p1_p[i] + p2_p[i])) ;} |
484 | p3L = erf(p1 + p2); |
485 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::erf(p1_p[i] + p2_p[i])) ;} |
486 | p3L = erfc(p1 + p2); |
487 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::erfc(p1_p[i] + p2_p[i])) ;} |
488 | p3L = tgamma(p1 + p2); |
489 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::tgamma(p1_p[i] + p2_p[i])) ;} |
490 | p3L = lgamma(p1 + p2); |
491 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::lgamma(p1_p[i] + p2_p[i])) ;} |
492 | p3L = ceil(p1 + p2); |
493 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::ceil(p1_p[i] + p2_p[i])) ;} |
494 | p3L = floor(p1 + p2); |
495 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::floor(p1_p[i] + p2_p[i])) ;} |
496 | p3L = trunc(p1 + p2); |
497 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::trunc(p1_p[i] + p2_p[i])) ;} |
498 | p3L = round(p1 + p2); |
499 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::round(p1_p[i] + p2_p[i])) ;} |
500 | p3L = nearbyint(p1 + p2); |
501 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::nearbyint(p1_p[i] + p2_p[i])) ;} |
502 | p3L = rint(p1 + p2); |
503 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::rint(p1_p[i] + p2_p[i])) ;} |
504 | |
505 | |
506 | double tmp = 5.0 + (p1 * p2); |
507 | BOOST_REQUIRE_EQUAL(tmp,14.0); |
508 | p3L = 5.0 + (p1 * p2); |
509 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],14.0) ;} |
510 | tmp = 5.0 - (p1 * p2); |
511 | BOOST_REQUIRE_EQUAL(tmp,-4.0); |
512 | p3L = 5.0 - (p1 * p2); |
513 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],-4.0) ;} |
514 | tmp = 5.0 * (p1 * p2); |
515 | BOOST_REQUIRE_EQUAL(tmp,45.0); |
516 | p3L = 5.0 * (p1 * p2); |
517 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],45.0) ;} |
518 | tmp = 5.0f / (p1 * p2); |
519 | BOOST_REQUIRE_EQUAL(tmp,5.0f/9.0f); |
520 | p3L = 5.0f / (p1 * p2); |
521 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],5.0f/9.0f) ;} |
522 | } |
523 | |
524 | BOOST_AUTO_TEST_CASE( Point_expression_usage_with_conversion ) |
525 | { |
526 | float scal = 0.0; |
527 | |
528 | Point<3,float> p1({0.1,0.1,0.1}); |
529 | Point<3,float> p2({0.2,0.3,0.4}); |
530 | Point<3,float> p3({0.6,0.7,0.9}); |
531 | |
532 | p3 = p1 + 2; |
533 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) + 2);} |
534 | p3 = 2 + p2; |
535 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),2 + p2.get(i));} |
536 | |
537 | p3 = p1 - 2; |
538 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) - 2);} |
539 | p3 = 2 - p2; |
540 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),2 - p2.get(i));} |
541 | |
542 | p3 = p1 * 2; |
543 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) * 2);} |
544 | p3 = 2 * p2; |
545 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),2 * p2.get(i));} |
546 | |
547 | p3 = p1 / 2; |
548 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),p1.get(i) / 2.0);} |
549 | p3 = 2 / p2; |
550 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),(float)2 / p2.get(i));} |
551 | |
552 | // Point function test |
553 | |
554 | double tmp = 5 + (p1 * p2); |
555 | double check = 5 + p1.get(0)*p2.get(0) + p1.get(1)*p2.get(1) + p1.get(2)*p2.get(2); |
556 | BOOST_REQUIRE_EQUAL(tmp,check); |
557 | p3 = 5 + (p1 * p2); |
558 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),check) ;} |
559 | tmp = 5 - (p1 * p2); |
560 | check = 5 - p1.get(0)*p2.get(0) - p1.get(1)*p2.get(1) - p1.get(2)*p2.get(2); |
561 | BOOST_REQUIRE_EQUAL(tmp,check); |
562 | p3 = 5 - (p1 * p2); |
563 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),check) ;} |
564 | tmp = 5 * (p1 * p2); |
565 | check = 5*(p1.get(0)*p2.get(0) + p1.get(1)*p2.get(1) + p1.get(2)*p2.get(2)); |
566 | BOOST_REQUIRE_EQUAL(tmp,check); |
567 | p3 = 5 * (p1 * p2); |
568 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),check) ;} |
569 | tmp = 5 / (p1 * p2); |
570 | check = 5/(p1.get(0)*p2.get(0) + p1.get(1)*p2.get(1) + p1.get(2)*p2.get(2)); |
571 | BOOST_REQUIRE_EQUAL(tmp,check); |
572 | p3 = 5 / (p1 * p2); |
573 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3.get(i),check) ;} |
574 | |
575 | p3 = 2*(p1*p2)*p1; |
576 | for (size_t i = 0 ; i < 3 ; i++) |
577 | { |
578 | check = 2*(p1.get(0)*p2.get(0) + p1.get(1)*p2.get(1) + p1.get(2)*p2.get(2))*p1.get(i); |
579 | BOOST_REQUIRE_EQUAL(p3[i],check) ; |
580 | } |
581 | p3 = (p1*p2)*2*p1; |
582 | for (size_t i = 0 ; i < 3 ; i++) |
583 | { |
584 | check = 2*(p1.get(0)*p2.get(0) + p1.get(1)*p2.get(1) + p1.get(2)*p2.get(2))*p1.get(i); |
585 | BOOST_REQUIRE_EQUAL(p3[i],check) ; |
586 | } |
587 | p3 = (p1*p2)*p1*2; |
588 | for (size_t i = 0 ; i < 3 ; i++) |
589 | { |
590 | check = 2*(p1.get(0)*p2.get(0) + p1.get(1)*p2.get(1) + p1.get(2)*p2.get(2))*p1.get(i); |
591 | BOOST_REQUIRE_EQUAL(p3[i],check) ; |
592 | } |
593 | |
594 | } |
595 | |
596 | BOOST_AUTO_TEST_CASE( Point_expression_usage_with_conversion_array ) |
597 | { |
598 | float scal = 0.0; |
599 | |
600 | float p1_p[] = {0.1,0.1,0.1}; |
601 | float p2_p[] = {0.2,0.3,0.4}; |
602 | float p3_p[] = {0.6,0.7,0.9}; |
603 | |
604 | Point<3,float> pp1({0.1,0.1,0.1}); |
605 | Point<3,float> pp2({0.2,0.3,0.4}); |
606 | Point<3,float> pp3({0.6,0.7,0.9}); |
607 | |
608 | auto p1 = getExprR(p1_p); |
609 | auto p2 = getExprR(p2_p); |
610 | |
611 | auto p3L = getExprL(p3_p); |
612 | |
613 | p3L = p1 + 2; |
614 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] + 2);} |
615 | p3L = 2 + p2; |
616 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2 + p2_p[i]);} |
617 | |
618 | p3L = p1 - 2; |
619 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] - 2);} |
620 | p3L = 2 - p2; |
621 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2 - p2_p[i]);} |
622 | |
623 | p3L = p1 * 2; |
624 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] * 2);} |
625 | p3L = 2 * p2; |
626 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2 * p2_p[i]);} |
627 | |
628 | p3L = p1 / 2; |
629 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],p1_p[i] / 2);} |
630 | p3L = 2 / p2; |
631 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],2 / p2_p[i]);} |
632 | |
633 | // Point function test |
634 | |
635 | p3L = asin(p1/5 + p2/6); |
636 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_CLOSE(p3_p[i],std::asin(p1_p[i]/5 + p2_p[i]/6),0.1) ;} |
637 | p3L = acos(p1/5 + p2/6); |
638 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],std::acos(p1_p[i]/5 + p2_p[i]/6)) ;} |
639 | |
640 | |
641 | double tmp = 5 + (p1 * p2); |
642 | double check = 5 + pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2); |
643 | BOOST_REQUIRE_EQUAL(tmp,check); |
644 | p3L = 5 + (p1 * p2); |
645 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],check) ;} |
646 | tmp = 5 - (p1 * p2); |
647 | check = 5 - pp1.get(0)*pp2.get(0) - pp1.get(1)*pp2.get(1) - pp1.get(2)*pp2.get(2); |
648 | BOOST_REQUIRE_EQUAL(tmp,check); |
649 | p3L = 5 - (p1 * p2); |
650 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],check) ;} |
651 | tmp = 5 * (p1 * p2); |
652 | check = 5*(pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2)); |
653 | BOOST_REQUIRE_EQUAL(tmp,check); |
654 | p3L = 5 * (p1 * p2); |
655 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],check) ;} |
656 | tmp = 5 / (p1 * p2); |
657 | check = 5/(pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2)); |
658 | BOOST_REQUIRE_EQUAL(tmp,check); |
659 | p3L = 2*(p1*p2)*p1; |
660 | for (size_t i = 0 ; i < 3 ; i++) |
661 | { |
662 | check = 2*(pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2))*pp1.get(i); |
663 | BOOST_REQUIRE_EQUAL(p3_p[i],check) ; |
664 | } |
665 | p3L = (p1*p2)*2*p1; |
666 | for (size_t i = 0 ; i < 3 ; i++) |
667 | { |
668 | check = 2*(pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2))*pp1.get(i); |
669 | BOOST_REQUIRE_EQUAL(p3_p[i],check) ; |
670 | } |
671 | p3L = (p1*p2)*p1*2; |
672 | for (size_t i = 0 ; i < 3 ; i++) |
673 | { |
674 | check = 2*(pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2))*pp1.get(i); |
675 | BOOST_REQUIRE_EQUAL(p3_p[i],check) ; |
676 | } |
677 | p3L = 5 / (p1 * p2); |
678 | check = 5/(pp1.get(0)*pp2.get(0) + pp1.get(1)*pp2.get(1) + pp1.get(2)*pp2.get(2)); |
679 | for (size_t i = 0 ; i < 3 ; i++) {BOOST_REQUIRE_EQUAL(p3_p[i],check) ;} |
680 | } |
681 | |
682 | BOOST_AUTO_TEST_SUITE_END() |
683 | |
684 | |
685 | |
686 | |
687 | #endif /* SRC_SPACE_SHAPE_POINT_UNIT_TEST_HPP_ */ |
688 | |