Open
Description
arm_correlate_f32()
expecting the output array size to be 2*srcALen - 1
instead of srcALen + srcBLen - 1
for ARM_MATH_DSP
case.
Maybe just changing line 361 will be enough to fix the issue.
Now the output is unexpected, and call leads to buffer overflow if you don't guess output array size correctly:
const int kerN = 7;
float ker[kerN] = {+1,+1,+1,-1,-1,+1,-1};
const int dataN = 21;
float data[dataN] = {0, 0,+1,+1,+1,-1,-1,+1,-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const int resN = 2*dataN-1; // why so long array needed?
float res[resN];
for (int i = 0; i < resN; i++) {
res[i] = NAN;
}
arm_correlate_f32(data, dataN, ker, kerN, res);
results in
res={nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,nan,0,0,-1,0,-1,0,-1,0,7,0,-1,0,-1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0};