Internal filter value gets too big (INF) and output is non-zero even with gain zero
from bugzilla ticket #1056
Keith 2017-01-04 10:37:48 PST
There was an issue where filters had values which could not be represented with double precision internally, which when the filter was turned on, even with a gain of zero, had an output of 1e20. The filter code itself set the output to 1e20 if greater than 1e20. For some reason, the code does not set the output to -1e20 if less than -1e20, possibly because it is intended to catch infinities and prevent them from passing on.
See for example:
According to trends, the L1:SUS-ETMY_L2_DAMP_MODE4_OUTPUT went to 1e20 even while L1:SUS-ETMY_L2_DAMP_MODE4_GAIN was 0. This filter is fed with DARM error and used to damp the violin modes in ETMY.
A question is, when a filter integrates or receives an infinite input, what should it do? Since IIR filters use prior outputs to calculate the current output, once it gets into that state, it will stay in that infinite state. Currently, a user or a guardian script needs to hit the clear history button. Should the internal code take a more active roll when such situations arise?
Keith: 2016-10-31 13:00:55 PDT
Joe B. is going to pursue this further as to cause and recommended fix.