apply method
Implementation
double apply(double input) {
var y1 = 0.0;
if (sample_cnt == 3) {
for (var ptr = 0; ptr < 2; ptr++) {
x_val[ptr] = x_val[ptr + 1];
}
x_val[2] = input;
for (var ptr = 0; ptr < 3; ptr++) {
y1 += numerator[ptr] * x_val[2 - ptr];
}
for (var ptr = 1; ptr < 3; ptr++) {
y1 -= denominator[ptr] * y_val[2 - ptr + 1];
}
for (var ptr = 0; ptr < 2; ptr++) {
y_val[ptr] = y_val[ptr + 1];
}
// _sample_cnt = 0;
y_val[2] = y1;
return y1;
} else {
x_val[sample_cnt] = input;
for (var ptr = 0; ptr < sample_cnt + 1; ptr++) {
y1 += numerator[ptr] * x_val[sample_cnt - ptr];
if (ptr > 0) {
y1 -= denominator[ptr] * y_val[sample_cnt - ptr];
}
}
y_val[sample_cnt] = y1;
sample_cnt += 1;
return y1;
}
}