Mercurial > hg > qm-dsp
comparison tests/TestFFT.cpp @ 476:2de6184b2ce0
Untabify
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Thu, 30 May 2019 18:30:58 +0100 |
parents | a0829908bb74 |
children |
comparison
equal
deleted
inserted
replaced
475:64fc3009d0a3 | 476:2de6184b2ce0 |
---|---|
11 | 11 |
12 BOOST_AUTO_TEST_SUITE(TestFFT) | 12 BOOST_AUTO_TEST_SUITE(TestFFT) |
13 | 13 |
14 #define COMPARE_CONST(a, n) \ | 14 #define COMPARE_CONST(a, n) \ |
15 for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \ | 15 for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \ |
16 BOOST_CHECK_SMALL(a[cmp_i] - n, 1e-14); \ | 16 BOOST_CHECK_SMALL(a[cmp_i] - n, 1e-14); \ |
17 } | 17 } |
18 | 18 |
19 #define COMPARE_ARRAY(a, b) \ | 19 #define COMPARE_ARRAY(a, b) \ |
20 for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \ | 20 for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \ |
21 BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \ | 21 BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \ |
22 } | 22 } |
23 | 23 |
24 //!!! need at least one test with complex time-domain signal | 24 //!!! need at least one test with complex time-domain signal |
25 | 25 |
26 BOOST_AUTO_TEST_CASE(forwardArrayBounds) | 26 BOOST_AUTO_TEST_CASE(forwardArrayBounds) |
278 double backim[4]; | 278 double backim[4]; |
279 FFT(4).process(true, re, im, back, backim); | 279 FFT(4).process(true, re, im, back, backim); |
280 COMPARE_ARRAY(back, rin); | 280 COMPARE_ARRAY(back, rin); |
281 COMPARE_ARRAY(backim, iin); | 281 COMPARE_ARRAY(backim, iin); |
282 } | 282 } |
283 | 283 |
284 BOOST_AUTO_TEST_CASE(sineCosine) | 284 BOOST_AUTO_TEST_CASE(sineCosine) |
285 { | 285 { |
286 // Sine and cosine mixed | 286 // Sine and cosine mixed |
287 double in[] = { 0.5, 1, -0.5, -1 }; | 287 double in[] = { 0.5, 1, -0.5, -1 }; |
288 double re[] = { 999, 999, 999, 999 }; | 288 double re[] = { 999, 999, 999, 999 }; |
300 double backim[4]; | 300 double backim[4]; |
301 FFT(4).process(true, re, im, back, backim); | 301 FFT(4).process(true, re, im, back, backim); |
302 COMPARE_ARRAY(back, in); | 302 COMPARE_ARRAY(back, in); |
303 COMPARE_CONST(backim, 0.0); | 303 COMPARE_CONST(backim, 0.0); |
304 } | 304 } |
305 | 305 |
306 BOOST_AUTO_TEST_CASE(r_sineCosine) | 306 BOOST_AUTO_TEST_CASE(r_sineCosine) |
307 { | 307 { |
308 // Sine and cosine mixed | 308 // Sine and cosine mixed |
309 double in[] = { 0.5, 1, -0.5, -1 }; | 309 double in[] = { 0.5, 1, -0.5, -1 }; |
310 double re[] = { 999, 999, 999, 999 }; | 310 double re[] = { 999, 999, 999, 999 }; |
323 re[3] = 999; | 323 re[3] = 999; |
324 im[3] = 999; | 324 im[3] = 999; |
325 FFTReal(4).inverse(re, im, back); | 325 FFTReal(4).inverse(re, im, back); |
326 COMPARE_ARRAY(back, in); | 326 COMPARE_ARRAY(back, in); |
327 } | 327 } |
328 | 328 |
329 BOOST_AUTO_TEST_CASE(c_sineCosine) | 329 BOOST_AUTO_TEST_CASE(c_sineCosine) |
330 { | 330 { |
331 double rin[] = { 1, 0, -1, 0 }; | 331 double rin[] = { 1, 0, -1, 0 }; |
332 double iin[] = { 0, 1, 0, -1 }; | 332 double iin[] = { 0, 1, 0, -1 }; |
333 double re[] = { 999, 999, 999, 999 }; | 333 double re[] = { 999, 999, 999, 999 }; |