detailed comments what is going on

prevent setting the `k[-1]` item
This commit is contained in:
homm 2016-10-11 18:15:56 +03:00
parent 22e3ae3ee4
commit f0c74d32a7

View File

@ -176,12 +176,19 @@ precompute_coeffs(int inSize, int outSize, struct filter *filterp,
k = &kk[xx * kmax]; k = &kk[xx * kmax];
for (x = 0; x < xmax; x++) { for (x = 0; x < xmax; x++) {
double w = filterp->filter((x + xmin - center + 0.5) * ss); double w = filterp->filter((x + xmin - center + 0.5) * ss);
// We can skip extreme coefficients if they are zeroes.
if (w == 0) { if (w == 0) {
// Skip from the start.
if (x == 0) { if (x == 0) {
// At next loop `x` will be 0.
x -= 1; x -= 1;
// But `w` will not be 0, because it based on `xmin`.
xmin += 1; xmin += 1;
xmax -= 1; xmax -= 1;
// Prevent setting the `k[-1]` item.
continue;
} else if (x == xmax - 1) { } else if (x == xmax - 1) {
// Truncate the last coefficient for current `xx`.
xmax -= 1; xmax -= 1;
} }
} }