Chris@366
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
Chris@366
|
2
|
Chris@372
|
3 #include "bqvec/VectorOps.h"
|
Chris@366
|
4
|
Chris@372
|
5 #define BOOST_TEST_DYN_LINK
|
Chris@372
|
6 #define BOOST_TEST_MAIN
|
Chris@366
|
7
|
Chris@372
|
8 #include <boost/test/unit_test.hpp>
|
Chris@366
|
9
|
Chris@372
|
10 #include <stdexcept>
|
Chris@372
|
11 #include <vector>
|
Chris@366
|
12
|
Chris@372
|
13 using namespace breakfastquay;
|
Chris@366
|
14
|
Chris@372
|
15 BOOST_AUTO_TEST_SUITE(TestVectorOps)
|
Chris@366
|
16
|
Chris@372
|
17 #define COMPARE_ARRAY(a, b) \
|
Chris@372
|
18 for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
|
Chris@372
|
19 BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \
|
Chris@366
|
20 }
|
Chris@366
|
21
|
Chris@372
|
22 #define COMPARE_N(a, b, n) \
|
Chris@372
|
23 for (int cmp_i = 0; cmp_i < n; ++cmp_i) { \
|
Chris@372
|
24 BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \
|
Chris@366
|
25 }
|
Chris@366
|
26
|
Chris@372
|
27 BOOST_AUTO_TEST_CASE(add)
|
Chris@372
|
28 {
|
Chris@372
|
29 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
30 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
31 double expected[] = { 0.0, 5.0, -1.5 };
|
Chris@372
|
32 v_add(a, b, 3);
|
Chris@372
|
33 COMPARE_N(a, expected, 3);
|
Chris@366
|
34 }
|
Chris@366
|
35
|
Chris@372
|
36 BOOST_AUTO_TEST_CASE(add_with_gain)
|
Chris@366
|
37 {
|
Chris@372
|
38 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
39 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
40 double expected[] = { -0.5, 6.5, -3.75 };
|
Chris@372
|
41 v_add_with_gain(a, b, 1.5, 3);
|
Chris@372
|
42 COMPARE_N(a, expected, 3);
|
Chris@366
|
43 }
|
Chris@366
|
44
|
Chris@372
|
45 BOOST_AUTO_TEST_CASE(subtract)
|
Chris@366
|
46 {
|
Chris@372
|
47 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
48 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
49 double expected[] = { 2.0, -1.0, 7.5 };
|
Chris@372
|
50 v_subtract(a, b, 3);
|
Chris@372
|
51 COMPARE_N(a, expected, 3);
|
Chris@366
|
52 }
|
Chris@366
|
53
|
Chris@372
|
54 BOOST_AUTO_TEST_CASE(increment)
|
Chris@366
|
55 {
|
Chris@372
|
56 double a[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
57 double incr = -0.5;
|
Chris@372
|
58 double expected[] = { -1.5, 2.5, -5.0 };
|
Chris@372
|
59 v_increment(a, incr, 3);
|
Chris@372
|
60 COMPARE_N(a, expected, 3);
|
Chris@366
|
61 }
|
Chris@366
|
62
|
Chris@372
|
63 BOOST_AUTO_TEST_CASE(scale)
|
Chris@372
|
64 {
|
Chris@372
|
65 double a[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
66 double scale = -0.5;
|
Chris@372
|
67 double expected[] = { 0.5, -1.5, 2.25 };
|
Chris@372
|
68 v_scale(a, scale, 3);
|
Chris@372
|
69 COMPARE_N(a, expected, 3);
|
Chris@366
|
70 }
|
Chris@366
|
71
|
Chris@372
|
72 BOOST_AUTO_TEST_CASE(multiply)
|
Chris@372
|
73 {
|
Chris@372
|
74 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
75 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
76 double expected[] = { -1.0, 6.0, -13.5 };
|
Chris@372
|
77 v_multiply(a, b, 3);
|
Chris@372
|
78 COMPARE_N(a, expected, 3);
|
Chris@366
|
79 }
|
Chris@366
|
80
|
Chris@372
|
81 BOOST_AUTO_TEST_CASE(multiply_to)
|
Chris@372
|
82 {
|
Chris@372
|
83 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
84 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
85 double o[3];
|
Chris@372
|
86 double expected[] = { -1.0, 6.0, -13.5 };
|
Chris@372
|
87 v_multiply_to(o, a, b, 3);
|
Chris@372
|
88 COMPARE_N(o, expected, 3);
|
Chris@372
|
89 }
|
Chris@372
|
90
|
Chris@372
|
91 BOOST_AUTO_TEST_CASE(multiply_and_add)
|
Chris@372
|
92 {
|
Chris@372
|
93 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
94 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
95 double c[] = { 3.0, -1.0, 4.0 };
|
Chris@372
|
96 double expected[] = { 2.0, 5.0, -9.5 };
|
Chris@372
|
97 v_multiply_and_add(c, a, b, 3);
|
Chris@372
|
98 COMPARE_N(c, expected, 3);
|
Chris@372
|
99 }
|
Chris@372
|
100
|
Chris@372
|
101 BOOST_AUTO_TEST_CASE(divide)
|
Chris@372
|
102 {
|
Chris@372
|
103 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
104 double b[] = { -1.0, 3.0, -4.5 };
|
Chris@372
|
105 double expected[] = { -1.0, 2.0/3.0, 3.0/-4.5 };
|
Chris@372
|
106 v_divide(a, b, 3);
|
Chris@372
|
107 COMPARE_N(a, expected, 3);
|
Chris@372
|
108 }
|
Chris@372
|
109
|
Chris@372
|
110 BOOST_AUTO_TEST_CASE(sum)
|
Chris@372
|
111 {
|
Chris@372
|
112 double a[] = { 1.0, 2.0, -3.5 };
|
Chris@372
|
113 double s = v_sum(a, 3);
|
Chris@372
|
114 BOOST_CHECK_EQUAL(s, -0.5);
|
Chris@372
|
115 }
|
Chris@372
|
116
|
Chris@372
|
117 BOOST_AUTO_TEST_CASE(multiply_and_sum)
|
Chris@372
|
118 {
|
Chris@372
|
119 double a[] = { 2.0, 0.0, -1.5 };
|
Chris@372
|
120 double b[] = { 3.0, 4.0, 5.0 };
|
Chris@372
|
121 double s = v_multiply_and_sum(a, b, 3);
|
Chris@372
|
122 BOOST_CHECK_EQUAL(s, -1.5);
|
Chris@372
|
123 }
|
Chris@372
|
124
|
Chris@372
|
125 BOOST_AUTO_TEST_CASE(log)
|
Chris@372
|
126 {
|
Chris@372
|
127 double a[] = { 1.0, 1.0 / M_E, M_E };
|
Chris@372
|
128 double expected[] = { 0.0, -1.0, 1.0 };
|
Chris@372
|
129 v_log(a, 3);
|
Chris@372
|
130 COMPARE_N(a, expected, 3);
|
Chris@372
|
131 }
|
Chris@372
|
132
|
Chris@372
|
133 BOOST_AUTO_TEST_CASE(exp)
|
Chris@372
|
134 {
|
Chris@372
|
135 double a[] = { 0.0, -1.0, 2.0 };
|
Chris@372
|
136 double expected[] = { 1.0, 1.0 / M_E, M_E * M_E };
|
Chris@372
|
137 v_exp(a, 3);
|
Chris@372
|
138 COMPARE_N(a, expected, 3);
|
Chris@372
|
139 }
|
Chris@372
|
140
|
Chris@372
|
141 BOOST_AUTO_TEST_CASE(sqrt)
|
Chris@372
|
142 {
|
Chris@372
|
143 double a[] = { 0.0, 1.0, 4.0 };
|
Chris@372
|
144 double expected[] = { 0.0, 1.0, 2.0 };
|
Chris@372
|
145 v_sqrt(a, 3);
|
Chris@372
|
146 COMPARE_N(a, expected, 3);
|
Chris@372
|
147 }
|
Chris@372
|
148
|
Chris@372
|
149 BOOST_AUTO_TEST_CASE(square)
|
Chris@372
|
150 {
|
Chris@372
|
151 double a[] = { 0.0, 1.5, -2.0 };
|
Chris@372
|
152 double expected[] = { 0.0, 2.25, 4.0 };
|
Chris@372
|
153 v_square(a, 3);
|
Chris@372
|
154 COMPARE_N(a, expected, 3);
|
Chris@372
|
155 }
|
Chris@372
|
156
|
Chris@372
|
157 BOOST_AUTO_TEST_CASE(abs)
|
Chris@372
|
158 {
|
Chris@372
|
159 double a[] = { -1.9, 0.0, 0.01, -0.0 };
|
Chris@372
|
160 double expected[] = { 1.9, 0.0, 0.01, 0.0 };
|
Chris@372
|
161 v_abs(a, 4);
|
Chris@372
|
162 COMPARE_N(a, expected, 4);
|
Chris@372
|
163 }
|
Chris@372
|
164
|
Chris@372
|
165 BOOST_AUTO_TEST_CASE(mean)
|
Chris@372
|
166 {
|
Chris@372
|
167 double a[] = { -1.0, 1.6, 3.0 };
|
Chris@372
|
168 double s = v_mean(a, 3);
|
Chris@372
|
169 BOOST_CHECK_EQUAL(s, 1.2);
|
Chris@372
|
170 }
|
Chris@372
|
171
|
Chris@372
|
172 BOOST_AUTO_TEST_CASE(interleave_1)
|
Chris@372
|
173 {
|
Chris@372
|
174 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
175 double *ch[] = { a };
|
Chris@372
|
176 double o[3];
|
Chris@372
|
177 double expected[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
178 v_interleave(o, ch, 1, 3);
|
Chris@372
|
179 COMPARE_N(o, expected, 3);
|
Chris@372
|
180 }
|
Chris@372
|
181
|
Chris@372
|
182 BOOST_AUTO_TEST_CASE(interleave_2)
|
Chris@372
|
183 {
|
Chris@372
|
184 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
185 double b[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
186 double *ch[] = { a, b };
|
Chris@372
|
187 double o[6];
|
Chris@372
|
188 double expected[] = { 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 };
|
Chris@372
|
189 v_interleave(o, ch, 2, 3);
|
Chris@372
|
190 COMPARE_N(o, expected, 6);
|
Chris@372
|
191 }
|
Chris@372
|
192
|
Chris@372
|
193 BOOST_AUTO_TEST_CASE(interleave_3)
|
Chris@372
|
194 {
|
Chris@372
|
195 double a[] = { 1.0, 2.0 };
|
Chris@372
|
196 double b[] = { 3.0, 4.0 };
|
Chris@372
|
197 double c[] = { 5.0, 6.0 };
|
Chris@372
|
198 double *ch[] = { a, b, c };
|
Chris@372
|
199 double o[6];
|
Chris@372
|
200 double expected[] = { 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 };
|
Chris@372
|
201 v_interleave(o, ch, 3, 2);
|
Chris@372
|
202 COMPARE_N(o, expected, 6);
|
Chris@372
|
203 }
|
Chris@372
|
204
|
Chris@372
|
205 BOOST_AUTO_TEST_CASE(deinterleave_1)
|
Chris@372
|
206 {
|
Chris@372
|
207 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
208 double o[3];
|
Chris@372
|
209 double *oo[] = { o };
|
Chris@372
|
210 double *expected[] = { a };
|
Chris@372
|
211 v_deinterleave(oo, a, 1, 3);
|
Chris@372
|
212 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
213 }
|
Chris@372
|
214
|
Chris@372
|
215 BOOST_AUTO_TEST_CASE(deinterleave_2)
|
Chris@372
|
216 {
|
Chris@372
|
217 double a[] = { 1.0, 4.0, 2.0, 5.0, 3.0, 6.0 };
|
Chris@372
|
218 double o1[3], o2[3];
|
Chris@372
|
219 double *oo[] = { o1, o2 };
|
Chris@372
|
220 double e1[] = { 1.0, 2.0, 3.0 }, e2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
221 double *expected[] = { e1, e2 };
|
Chris@372
|
222 v_deinterleave(oo, a, 2, 3);
|
Chris@372
|
223 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
224 COMPARE_N(oo[1], expected[1], 3);
|
Chris@372
|
225 }
|
Chris@372
|
226
|
Chris@372
|
227 BOOST_AUTO_TEST_CASE(deinterleave_3)
|
Chris@372
|
228 {
|
Chris@372
|
229 double a[] = { 1.0, 3.0, 5.0, 2.0, 4.0, 6.0 };
|
Chris@372
|
230 double o1[2], o2[2], o3[2];
|
Chris@372
|
231 double *oo[] = { o1, o2, o3 };
|
Chris@372
|
232 double e1[] = { 1.0, 2.0 }, e2[] = { 3.0, 4.0 }, e3[] = { 5.0, 6.0 };
|
Chris@372
|
233 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
234 v_deinterleave(oo, a, 3, 2);
|
Chris@372
|
235 COMPARE_N(oo[0], expected[0], 2);
|
Chris@372
|
236 COMPARE_N(oo[1], expected[1], 2);
|
Chris@372
|
237 COMPARE_N(oo[2], expected[2], 2);
|
Chris@372
|
238 }
|
Chris@372
|
239
|
Chris@372
|
240 BOOST_AUTO_TEST_CASE(mix_1)
|
Chris@372
|
241 {
|
Chris@372
|
242 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
243 double *ch[] = { a };
|
Chris@372
|
244 double o[3];
|
Chris@372
|
245 double expected[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
246 v_mix(o, ch, 1, 3);
|
Chris@372
|
247 COMPARE_N(o, expected, 3);
|
Chris@372
|
248 }
|
Chris@372
|
249
|
Chris@372
|
250 BOOST_AUTO_TEST_CASE(mix_2)
|
Chris@372
|
251 {
|
Chris@372
|
252 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
253 double b[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
254 double *ch[] = { a, b };
|
Chris@372
|
255 double o[6];
|
Chris@372
|
256 double expected[] = { 2.5, 3.5, 4.5 };
|
Chris@372
|
257 v_mix(o, ch, 2, 3);
|
Chris@372
|
258 COMPARE_N(o, expected, 3);
|
Chris@372
|
259 }
|
Chris@372
|
260
|
Chris@372
|
261 BOOST_AUTO_TEST_CASE(mix_3)
|
Chris@372
|
262 {
|
Chris@372
|
263 double a[] = { 1.0, 2.0 };
|
Chris@372
|
264 double b[] = { 3.0, 4.0 };
|
Chris@372
|
265 double c[] = { 5.0, 6.0 };
|
Chris@372
|
266 double *ch[] = { a, b, c };
|
Chris@372
|
267 double o[6];
|
Chris@372
|
268 double expected[] = { 3.0, 4.0 };
|
Chris@372
|
269 v_mix(o, ch, 3, 2);
|
Chris@372
|
270 COMPARE_N(o, expected, 2);
|
Chris@372
|
271 }
|
Chris@372
|
272
|
Chris@372
|
273 BOOST_AUTO_TEST_CASE(reconfigure_1_2)
|
Chris@372
|
274 {
|
Chris@372
|
275 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
276 double *aa[] = { a };
|
Chris@372
|
277 double o1[3], o2[3];
|
Chris@372
|
278 double *oo[] = { o1, o2 };
|
Chris@372
|
279 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
280 double e2[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
281 double *expected[] = { e1, e2 };
|
Chris@372
|
282 v_reconfigure_channels(oo, 2, aa, 1, 3);
|
Chris@372
|
283 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
284 COMPARE_N(oo[1], expected[1], 3);
|
Chris@372
|
285 }
|
Chris@372
|
286
|
Chris@372
|
287 BOOST_AUTO_TEST_CASE(reconfigure_2_1)
|
Chris@372
|
288 {
|
Chris@372
|
289 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
290 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
291 double *aa[] = { a1, a2 };
|
Chris@372
|
292 double o1[3];
|
Chris@372
|
293 double *oo[] = { o1 };
|
Chris@372
|
294 double e1[] = { 2.5, 3.5, 4.5 };
|
Chris@372
|
295 double *expected[] = { e1 };
|
Chris@372
|
296 v_reconfigure_channels(oo, 1, aa, 2, 3);
|
Chris@372
|
297 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
298 }
|
Chris@372
|
299
|
Chris@372
|
300 BOOST_AUTO_TEST_CASE(reconfigure_3_1)
|
Chris@372
|
301 {
|
Chris@372
|
302 double a1[] = { 1.0, 2.0 };
|
Chris@372
|
303 double a2[] = { 3.0, 4.0 };
|
Chris@372
|
304 double a3[] = { 5.0, 6.0 };
|
Chris@372
|
305 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
306 double o1[2];
|
Chris@372
|
307 double *oo[] = { o1 };
|
Chris@372
|
308 double e1[] = { 3.0, 4.0 };
|
Chris@372
|
309 double *expected[] = { e1 };
|
Chris@372
|
310 v_reconfigure_channels(oo, 1, aa, 3, 2);
|
Chris@372
|
311 COMPARE_N(oo[0], expected[0], 2);
|
Chris@372
|
312 }
|
Chris@372
|
313
|
Chris@372
|
314 BOOST_AUTO_TEST_CASE(reconfigure_1_3)
|
Chris@372
|
315 {
|
Chris@372
|
316 double a[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
317 double *aa[] = { a };
|
Chris@372
|
318 double o1[3], o2[3], o3[3];
|
Chris@372
|
319 double *oo[] = { o1, o2, o3 };
|
Chris@372
|
320 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
321 double e2[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
322 double e3[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
323 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
324 v_reconfigure_channels(oo, 3, aa, 1, 3);
|
Chris@372
|
325 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
326 COMPARE_N(oo[1], expected[1], 3);
|
Chris@372
|
327 COMPARE_N(oo[2], expected[2], 3);
|
Chris@372
|
328 }
|
Chris@372
|
329
|
Chris@372
|
330 BOOST_AUTO_TEST_CASE(reconfigure_2_3)
|
Chris@372
|
331 {
|
Chris@372
|
332 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
333 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
334 double *aa[] = { a1, a2 };
|
Chris@372
|
335 double o1[3], o2[3], o3[3];
|
Chris@372
|
336 double *oo[] = { o1, o2, o3 };
|
Chris@372
|
337 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
338 double e2[] = { 0.0, 0.0, 0.0 };
|
Chris@372
|
339 double e3[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
340 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
341 v_reconfigure_channels(oo, 3, aa, 2, 3);
|
Chris@372
|
342 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
343 COMPARE_N(oo[1], expected[1], 3);
|
Chris@372
|
344 COMPARE_N(oo[2], expected[2], 3);
|
Chris@372
|
345 }
|
Chris@372
|
346
|
Chris@372
|
347 BOOST_AUTO_TEST_CASE(reconfigure_3_2)
|
Chris@372
|
348 {
|
Chris@372
|
349 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
350 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
351 double a3[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
352 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
353 double o1[3], o2[3];
|
Chris@372
|
354 double *oo[] = { o1, o2 };
|
Chris@372
|
355 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
356 double e2[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
357 double *expected[] = { e1, e2 };
|
Chris@372
|
358 v_reconfigure_channels(oo, 2, aa, 3, 3);
|
Chris@372
|
359 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
360 COMPARE_N(oo[1], expected[1], 3);
|
Chris@372
|
361 }
|
Chris@372
|
362
|
Chris@372
|
363 BOOST_AUTO_TEST_CASE(reconfigure_3_3)
|
Chris@372
|
364 {
|
Chris@372
|
365 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
366 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
367 double a3[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
368 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
369 double o1[3], o2[3], o3[3];
|
Chris@372
|
370 double *oo[] = { o1, o2, o3 };
|
Chris@372
|
371 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
372 double e2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
373 double e3[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
374 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
375 v_reconfigure_channels(oo, 3, aa, 3, 3);
|
Chris@372
|
376 COMPARE_N(oo[0], expected[0], 3);
|
Chris@372
|
377 COMPARE_N(oo[1], expected[1], 3);
|
Chris@372
|
378 COMPARE_N(oo[2], expected[2], 3);
|
Chris@372
|
379 }
|
Chris@372
|
380
|
Chris@372
|
381 BOOST_AUTO_TEST_CASE(reconfigure_1_2_inplace)
|
Chris@372
|
382 {
|
Chris@372
|
383 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
384 double a2[3];
|
Chris@372
|
385 double *aa[] = { a1, a2 };
|
Chris@372
|
386 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
387 double e2[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
388 double *expected[] = { e1, e2 };
|
Chris@372
|
389 v_reconfigure_channels_inplace(aa, 2, 1, 3);
|
Chris@372
|
390 COMPARE_N(aa[0], expected[0], 3);
|
Chris@372
|
391 COMPARE_N(aa[1], expected[1], 3);
|
Chris@372
|
392 }
|
Chris@372
|
393
|
Chris@372
|
394 BOOST_AUTO_TEST_CASE(reconfigure_2_1_inplace)
|
Chris@372
|
395 {
|
Chris@372
|
396 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
397 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
398 double *aa[] = { a1, a2 };
|
Chris@372
|
399 double e1[] = { 2.5, 3.5, 4.5 };
|
Chris@372
|
400 double *expected[] = { e1 };
|
Chris@372
|
401 v_reconfigure_channels_inplace(aa, 1, 2, 3);
|
Chris@372
|
402 COMPARE_N(aa[0], expected[0], 3);
|
Chris@372
|
403 }
|
Chris@372
|
404
|
Chris@372
|
405 BOOST_AUTO_TEST_CASE(reconfigure_3_1_inplace)
|
Chris@372
|
406 {
|
Chris@372
|
407 double a1[] = { 1.0, 2.0 };
|
Chris@372
|
408 double a2[] = { 3.0, 4.0 };
|
Chris@372
|
409 double a3[] = { 5.0, 6.0 };
|
Chris@372
|
410 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
411 double e1[] = { 3.0, 4.0 };
|
Chris@372
|
412 double *expected[] = { e1 };
|
Chris@372
|
413 v_reconfigure_channels_inplace(aa, 1, 3, 2);
|
Chris@372
|
414 COMPARE_N(aa[0], expected[0], 2);
|
Chris@372
|
415 }
|
Chris@372
|
416
|
Chris@372
|
417 BOOST_AUTO_TEST_CASE(reconfigure_1_3_inplace)
|
Chris@372
|
418 {
|
Chris@372
|
419 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
420 double a2[3], a3[3];
|
Chris@372
|
421 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
422 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
423 double e2[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
424 double e3[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
425 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
426 v_reconfigure_channels_inplace(aa, 3, 1, 3);
|
Chris@372
|
427 COMPARE_N(aa[0], expected[0], 3);
|
Chris@372
|
428 COMPARE_N(aa[1], expected[1], 3);
|
Chris@372
|
429 COMPARE_N(aa[2], expected[2], 3);
|
Chris@372
|
430 }
|
Chris@372
|
431
|
Chris@372
|
432 BOOST_AUTO_TEST_CASE(reconfigure_2_3_inplace)
|
Chris@372
|
433 {
|
Chris@372
|
434 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
435 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
436 double a3[3];
|
Chris@372
|
437 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
438 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
439 double e2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
440 double e3[] = { 0.0, 0.0, 0.0 };
|
Chris@372
|
441 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
442 v_reconfigure_channels_inplace(aa, 3, 2, 3);
|
Chris@372
|
443 COMPARE_N(aa[0], expected[0], 3);
|
Chris@372
|
444 COMPARE_N(aa[1], expected[1], 3);
|
Chris@372
|
445 COMPARE_N(aa[2], expected[2], 3);
|
Chris@372
|
446 }
|
Chris@372
|
447
|
Chris@372
|
448 BOOST_AUTO_TEST_CASE(reconfigure_3_2_inplace)
|
Chris@372
|
449 {
|
Chris@372
|
450 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
451 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
452 double a3[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
453 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
454 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
455 double e2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
456 double *expected[] = { e1, e2 };
|
Chris@372
|
457 v_reconfigure_channels_inplace(aa, 2, 3, 3);
|
Chris@372
|
458 COMPARE_N(aa[0], expected[0], 3);
|
Chris@372
|
459 COMPARE_N(aa[1], expected[1], 3);
|
Chris@372
|
460 }
|
Chris@372
|
461
|
Chris@372
|
462 BOOST_AUTO_TEST_CASE(reconfigure_3_3_inplace)
|
Chris@372
|
463 {
|
Chris@372
|
464 double a1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
465 double a2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
466 double a3[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
467 double *aa[] = { a1, a2, a3 };
|
Chris@372
|
468 double e1[] = { 1.0, 2.0, 3.0 };
|
Chris@372
|
469 double e2[] = { 4.0, 5.0, 6.0 };
|
Chris@372
|
470 double e3[] = { 7.0, 8.0, 9.0 };
|
Chris@372
|
471 double *expected[] = { e1, e2, e3 };
|
Chris@372
|
472 v_reconfigure_channels_inplace(aa, 3, 3, 3);
|
Chris@372
|
473 COMPARE_N(aa[0], expected[0], 3);
|
Chris@372
|
474 COMPARE_N(aa[1], expected[1], 3);
|
Chris@372
|
475 COMPARE_N(aa[2], expected[2], 3);
|
Chris@372
|
476 }
|
Chris@372
|
477
|
Chris@372
|
478 BOOST_AUTO_TEST_CASE(fftshift)
|
Chris@372
|
479 {
|
Chris@372
|
480 double a[] = { 0.1, 2.0, -0.3, 4.0 };
|
Chris@372
|
481 double e[] = { -0.3, 4.0, 0.1, 2.0 };
|
Chris@372
|
482 v_fftshift(a, 4);
|
Chris@372
|
483 COMPARE_N(a, e, 4);
|
Chris@372
|
484 }
|
Chris@372
|
485
|
Chris@372
|
486 BOOST_AUTO_TEST_SUITE_END()
|
Chris@372
|
487
|