diff --git a/makefile.in b/makefile.in index cd8b6108a..f5526b8e4 100644 --- a/makefile.in +++ b/makefile.in @@ -523,8 +523,8 @@ filter_autotests := \ src/filter/tests/iirdecim_autotest.c \ src/filter/tests/iirdes_autotest.c \ src/filter/tests/iirdes_support_autotest.c \ + src/filter/tests/iirfilt_autotest.c \ src/filter/tests/iirfilt_xxxf_autotest.c \ - src/filter/tests/iirfilt_copy_autotest.c \ src/filter/tests/iirfiltsos_autotest.c \ src/filter/tests/iirhilb_autotest.c \ src/filter/tests/iirinterp_autotest.c \ diff --git a/src/filter/src/iirfilt.proto.c b/src/filter/src/iirfilt.proto.c index a74e3056c..c89cbfa82 100644 --- a/src/filter/src/iirfilt.proto.c +++ b/src/filter/src/iirfilt.proto.c @@ -350,8 +350,8 @@ IIRFILT() IIRFILT(_create_differentiator)() 0.1958670f * cexpf(_Complex_I * M_PI / 180.0f * -40.51510f), 0.1958670f * cexpf(_Complex_I * M_PI / 180.0f * 40.51510f), 0.1886088f,}; - // gain, digital, differentiator - float complex kdd = 2.09049284907492e-05f; + // gain, digital, differentiator (slight adjustment added for proper gain) + float complex kdd = 2.09049284907492e-05f / 1.033477783203125000f; // second-order sections // allocate 12 values for 4 second-order sections each with diff --git a/src/filter/tests/iirfilt_copy_autotest.c b/src/filter/tests/iirfilt_autotest.c similarity index 86% rename from src/filter/tests/iirfilt_copy_autotest.c rename to src/filter/tests/iirfilt_autotest.c index a4e3d85d3..20719fdab 100644 --- a/src/filter/tests/iirfilt_copy_autotest.c +++ b/src/filter/tests/iirfilt_autotest.c @@ -23,7 +23,59 @@ #include "autotest/autotest.h" #include "liquid.internal.h" -// +void autotest_iirfilt_integrator() +{ + // options + unsigned int num_ones = 10; + unsigned int num_samples = 40; + + // allocate memory for data arrays + float buf_0[num_samples]; // filter input + float buf_1[num_samples]; // filter output + + // generate input signal + unsigned int i; + for (i=0; i