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 };