annotate bqvec/test/TestVectorOps.cpp @ 372:af71cbdab621 tip

Update bqvec code
author Chris Cannam
date Tue, 19 Nov 2019 10:13:32 +0000
parents 5d0a2ebb4d17
children
rev   line source
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