FA-91485 / Digital signal filters / Member archive
Q15 smoother divides with truncation toward zero · case 05
Negative updates round differently from positive ones, producing an asymmetric limit cycle.
Case contract
Input [alpha, samples]; alpha is Q15 in [0, 32768] ("bad-alpha" otherwise). Inputs are saturated to int16; y += ((x - y) * alpha + 2**14) >> 15 (round half up on the Q15 product via arithmetic shift), starting at y = 0. Return the integer outputs.
Why this case matters
Fixed-point exponential smoothers run on microcontrollers; rounding direction and saturation slips cause bias and limit cycles.
One recorded failure
Sample boundary fixtureThis sample comes from the broken implementation of a controlled reproducer.
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: random smoother 12 | [-7930, -2700, 15034] | [-7931, -2700, 15034] | Failed |
MEMBER ARCHIVE
The complete case is available to members.
This record includes three runnable implementations, regression fixtures, execution results, and source hashes.
Member access is invitation-based. Sign in with your invited account to inspect the sources.
Sign in to the archive ↗