Error_t DecimatorProcessD(DecimatorD* decimator, double* outBuffer, const double* inBuffer, unsigned n_samples) { if (decimator && outBuffer) { unsigned declen = n_samples / decimator->factor; double temp_buf[declen]; ClearBufferD(outBuffer, declen); for (unsigned filt = 0; filt < decimator->factor; ++filt) { CopyBufferStrideD(temp_buf, 1, inBuffer, decimator->factor, declen); FIRFilterProcessD(decimator->polyphase[filt], temp_buf, temp_buf, declen); VectorVectorAddD(outBuffer, (const double*)outBuffer, temp_buf, declen); } return NOERR; } else { return NULL_PTR_ERROR; } }
TEST(DSPDouble, TestVectorVectorAdd) { double out[10]; VectorVectorAddD(out, zerosD, rampD, 10); for (unsigned i = 0; i < 10; ++i) { ASSERT_DOUBLE_EQ(rampD[i], out[i]); } }