FA-91386 / Digital signal filters / Open access
Transposed DF-II adds a2 feedback in the second state · case 01
Second-order feedback has the wrong sign, e.g. a stable resonance diverges.
ROOT CAUSE
The s2 update uses + a2 y.
THE FAILURE
The s2 update uses + a2 y.
Unsuccessful approach: The attempted repair subtracts a2 times the input instead of the output.
Case contract
Input [[b0, b1, b2, a1, a2], samples, prime] (a0 = 1). Transposed direct form II: y = b0 x + s1; s1 = b1 x - a1 y + s2; s2 = b2 x - a2 y. If prime and samples exist, initialize s1, s2 to the steady state for a constant input equal to the first sample (y_ss = x0 (b0+b1+b2)/(1+a1+a2), "dc-pole" if the denominator is 0). Return exact fraction strings.
Why this case matters
Transposed DF-II is the default numerical form in filtering libraries, and steady-state priming avoids start-up transients.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
b0, b1, b2, a1, a2 = [Fraction(v) for v in x[0]]
xs, prime = x[1], x[2]
s1 = s2 = Fraction(0)
if prime and xs:
den = 1 + a1 + a2
if den == 0:
return 'dc-pole'
x0 = xs[0]
yss = x0 * (b0 + b1 + b2) / den
s1 = yss - b0 * x0
s2 = b2 * x0 - a2 * yss
out = []
for v in xs:
y = b0 * v + s1
s1 = b1 * v - a1 * y + s2
s2 = b2 * v + a2 * y
out.append(str(y))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: primed step lowpass', [['1/4', '1/2', '1/4', '-1/2', '1/4'], [2, 2, 2, 2], True], ['8/3', '8/3', '8/3', '8/3']], ['regression: unprimed impulse', [['1', '1/2', '1/3', '1/2', '-1/4'], [1, 0, 0, 0], False], ['1', '0', '7/12', '-7/24']], ['regression: random df2t 0', [['5/4', '1/3', '3/4', '-1/2', '2'], [-1, 2, 4, 4, 1], False], ['-5/4', '37/24', '131/16', '283/32', '-1223/192']], ['control: primed highpass', [['1', '-2', '1', '0', '0'], [3, 3, 1], True], ['0', '0', '-2']], ['control: dc pole', [['1', '0', '0', '-2', '1'], [1, 1], True], 'dc-pole'], ['control: primed empty', [['1', '0', '0', '0', '0'], [], True], []], ['control: random df2t 2', [['3/4', '-1/4', '1/2', '1/8', '-1/2'], [-2, 2], True], ['-16/5', '-1/5']]], [['regression: random df2t 1', [['-1/4', '-1/2', '0', '-1/2', '-3/8'], [-3, 3, 1, 2], False], ['3/4', '9/8', '-29/32', '-33/32']], ['regression: random df2t 6', [['0', '-1/2', '1/8', '3/4', '3/4'], [4, 4, 2, 4], False], ['0', '-2', '0', '1']], ['regression: random df2t 7', [['-1/2', '2', '-1/4', '1/2', '2'], [3, 2, -2, 0], True], ['15/14', '11/7', '37/28', '-465/56']], ['control: random df2t 3', [['1/8', '3/4', '-3/8', '-1/2', '1/8'], [2], False], ['1/4']], ['control: random df2t 4', [['-1/2', '-3/8', '0', '0', '1/3'], [-3], True], ['63/32']], ['control: random df2t 5', [['-3/8', '-1/4', '-1/4', '1/3', '-1/4'], [2], True], ['-21/13']], ['control: random df2t 11', [['1/8', '1/8', '5/4', '-3/8', '1/2'], [0], True], ['0']]], [['regression: random df2t 8', [['-3/8', '2', '1/8', '1/3', '2'], [4, -3, -2, 1, 4], True], ['21/10', '189/40', '-421/40', '-1283/120', '8951/360']], ['regression: random df2t 9', [['-3/8', '0', '-1/2', '2', '5/4'], [3, -3, 3, 2], False], ['-9/8', '27/8', '-255/32', '399/32']], ['regression: random df2t 7', [['-1/2', '2', '-1/4', '1/2', '2'], [3, 2, -2, 0], True], ['15/14', '11/7', '37/28', '-465/56']], ['control: random df2t 12', [['-1/2', '5/4', '-1/4', '5/4', '-1/4'], [0, 0], False], ['0', '0']], ['control: random df2t 13', [['-1/4', '-1/4', '1/2', '5/4', '0'], [2, -3, -1, 3, -3], False], ['-1/2', '7/8', '29/32', '-401/128', '1749/512']], ['control: random df2t 14', [['1/3', '2', '1/2', '1/2', '5/4'], [0, -2], True], ['0', '-2/3']], ['control: random df2t 15', [['-1/4', '2', '-1/2', '1/2', '1/2'], [4], False], ['-1']]], [['regression: random df2t 16', [['5/4', '1/8', '1/8', '-3/8', '1/3'], [-2, 2, 3], True], ['-72/23', '43/23', '1011/184']], ['regression: random df2t 18', [['0', '-3/8', '1/3', '1/3', '2'], [4, 4, 2, 0, -3], True], ['-1/20', '-1/20', '-1/20', '7/10', '8/15']], ['regression: random df2t 9', [['-3/8', '0', '-1/2', '2', '5/4'], [3, -3, 3, 2], False], ['-9/8', '27/8', '-255/32', '399/32']], ['control: random df2t 17', [['2', '-1/2', '3/4', '-1/4', '-3/8'], [-1, 1], True], ['-6', '-2']], ['control: random df2t 19', [['-1/4', '1/3', '1/8', '1/3', '1/8'], [0, 1, -3], True], ['0', '-1/4', '7/6']], ['control: random df2t 20', [['5/4', '0', '5/4', '-1/2', '-1/2'], [-3, 1], True], 'dc-pole'], ['control: random df2t 22', [['1/3', '-3/8', '1/3', '0', '5/4'], [4], True], ['14/27']]], [['regression: random df2t 25', [['-1/4', '1/3', '1/3', '0', '1/8'], [-1, 3, -1, 0], True], ['-10/27', '-37/27', '26/27', '181/216']], ['regression: random df2t 26', [['1/3', '-3/8', '0', '1/3', '5/4'], [-2, 3, -2, 4, 3], True], ['1/31', '158/93', '-5353/2232', '5083/6696', '180377/80352']], ['regression: random df2t 16', [['5/4', '1/8', '1/8', '-3/8', '1/3'], [-2, 2, 3], True], ['-72/23', '43/23', '1011/184']], ['control: random df2t 23', [['3/4', '0', '-1/2', '-1/2', '0'], [3, 0, 3], False], ['9/4', '9/8', '21/16']], ['control: random df2t 24', [['2', '0', '-1/4', '1/8', '2'], [1, 0], False], ['2', '-1/4']], ['control: random df2t 28', [['3/4', '0', '-1/2', '1/2', '-1/2'], [4, 1], False], ['3', '-3/4']], ['control: random df2t 31', [['-1/2', '1/8', '1/2', '-1/2', '-1/4'], [0, -3], False], ['0', '3/2']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: primed step lowpass | ['8/3', '8/3', '4', '14/3'] | ['8/3', '8/3', '8/3', '8/3'] | Failed |
| regression: unprimed impulse | ['1', '0', '1/12', '-1/24'] | ['1', '0', '7/12', '-7/24'] | Failed |
| regression: random df2t 0 | ['-5/4', '37/24', '51/16', '1201/96', '3497/192'] | ['-5/4', '37/24', '131/16', '283/32', '-1223/192'] | Failed |
| control: primed highpass | ['0', '0', '-2'] | ['0', '0', '-2'] | Passed |
| control: dc pole | dc-pole | dc-pole | Passed |
| control: primed empty | [] | [] | Passed |
| control: random df2t 2 | ['-16/5', '-1/5'] | ['-16/5', '-1/5'] | Passed |
SHA-256 / 3cb1745fa875abf9376021c75ef8e5d2a9f59d3f6984e229991a51c440e3aebc
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
from fractions import Fraction
N = 1
observations = []
def solve(x):
b0, b1, b2, a1, a2 = [Fraction(v) for v in x[0]]
xs, prime = x[1], x[2]
s1 = s2 = Fraction(0)
if prime and xs:
den = 1 + a1 + a2
if den == 0:
return 'dc-pole'
x0 = xs[0]
yss = x0 * (b0 + b1 + b2) / den
s1 = yss - b0 * x0
s2 = b2 * x0 - a2 * yss
out = []
for v in xs:
y = b0 * v + s1
s1 = b1 * v - a1 * y + s2
s2 = b2 * v - a2 * v
out.append(str(y))
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: primed step lowpass', [['1/4', '1/2', '1/4', '-1/2', '1/4'], [2, 2, 2, 2], True], ['8/3', '8/3', '8/3', '8/3']], ['regression: unprimed impulse', [['1', '1/2', '1/3', '1/2', '-1/4'], [1, 0, 0, 0], False], ['1', '0', '7/12', '-7/24']], ['regression: random df2t 0', [['5/4', '1/3', '3/4', '-1/2', '2'], [-1, 2, 4, 4, 1], False], ['-5/4', '37/24', '131/16', '283/32', '-1223/192']], ['control: primed highpass', [['1', '-2', '1', '0', '0'], [3, 3, 1], True], ['0', '0', '-2']], ['control: dc pole', [['1', '0', '0', '-2', '1'], [1, 1], True], 'dc-pole'], ['control: primed empty', [['1', '0', '0', '0', '0'], [], True], []], ['control: random df2t 2', [['3/4', '-1/4', '1/2', '1/8', '-1/2'], [-2, 2], True], ['-16/5', '-1/5']]], [['regression: random df2t 1', [['-1/4', '-1/2', '0', '-1/2', '-3/8'], [-3, 3, 1, 2], False], ['3/4', '9/8', '-29/32', '-33/32']], ['regression: random df2t 6', [['0', '-1/2', '1/8', '3/4', '3/4'], [4, 4, 2, 4], False], ['0', '-2', '0', '1']], ['regression: random df2t 7', [['-1/2', '2', '-1/4', '1/2', '2'], [3, 2, -2, 0], True], ['15/14', '11/7', '37/28', '-465/56']], ['control: random df2t 3', [['1/8', '3/4', '-3/8', '-1/2', '1/8'], [2], False], ['1/4']], ['control: random df2t 4', [['-1/2', '-3/8', '0', '0', '1/3'], [-3], True], ['63/32']], ['control: random df2t 5', [['-3/8', '-1/4', '-1/4', '1/3', '-1/4'], [2], True], ['-21/13']], ['control: random df2t 11', [['1/8', '1/8', '5/4', '-3/8', '1/2'], [0], True], ['0']]], [['regression: random df2t 8', [['-3/8', '2', '1/8', '1/3', '2'], [4, -3, -2, 1, 4], True], ['21/10', '189/40', '-421/40', '-1283/120', '8951/360']], ['regression: random df2t 9', [['-3/8', '0', '-1/2', '2', '5/4'], [3, -3, 3, 2], False], ['-9/8', '27/8', '-255/32', '399/32']], ['regression: random df2t 7', [['-1/2', '2', '-1/4', '1/2', '2'], [3, 2, -2, 0], True], ['15/14', '11/7', '37/28', '-465/56']], ['control: random df2t 12', [['-1/2', '5/4', '-1/4', '5/4', '-1/4'], [0, 0], False], ['0', '0']], ['control: random df2t 13', [['-1/4', '-1/4', '1/2', '5/4', '0'], [2, -3, -1, 3, -3], False], ['-1/2', '7/8', '29/32', '-401/128', '1749/512']], ['control: random df2t 14', [['1/3', '2', '1/2', '1/2', '5/4'], [0, -2], True], ['0', '-2/3']], ['control: random df2t 15', [['-1/4', '2', '-1/2', '1/2', '1/2'], [4], False], ['-1']]], [['regression: random df2t 16', [['5/4', '1/8', '1/8', '-3/8', '1/3'], [-2, 2, 3], True], ['-72/23', '43/23', '1011/184']], ['regression: random df2t 18', [['0', '-3/8', '1/3', '1/3', '2'], [4, 4, 2, 0, -3], True], ['-1/20', '-1/20', '-1/20', '7/10', '8/15']], ['regression: random df2t 9', [['-3/8', '0', '-1/2', '2', '5/4'], [3, -3, 3, 2], False], ['-9/8', '27/8', '-255/32', '399/32']], ['control: random df2t 17', [['2', '-1/2', '3/4', '-1/4', '-3/8'], [-1, 1], True], ['-6', '-2']], ['control: random df2t 19', [['-1/4', '1/3', '1/8', '1/3', '1/8'], [0, 1, -3], True], ['0', '-1/4', '7/6']], ['control: random df2t 20', [['5/4', '0', '5/4', '-1/2', '-1/2'], [-3, 1], True], 'dc-pole'], ['control: random df2t 22', [['1/3', '-3/8', '1/3', '0', '5/4'], [4], True], ['14/27']]], [['regression: random df2t 25', [['-1/4', '1/3', '1/3', '0', '1/8'], [-1, 3, -1, 0], True], ['-10/27', '-37/27', '26/27', '181/216']], ['regression: random df2t 26', [['1/3', '-3/8', '0', '1/3', '5/4'], [-2, 3, -2, 4, 3], True], ['1/31', '158/93', '-5353/2232', '5083/6696', '180377/80352']], ['regression: random df2t 16', [['5/4', '1/8', '1/8', '-3/8', '1/3'], [-2, 2, 3], True], ['-72/23', '43/23', '1011/184']], ['control: random df2t 23', [['3/4', '0', '-1/2', '-1/2', '0'], [3, 0, 3], False], ['9/4', '9/8', '21/16']], ['control: random df2t 24', [['2', '0', '-1/4', '1/8', '2'], [1, 0], False], ['2', '-1/4']], ['control: random df2t 28', [['3/4', '0', '-1/2', '1/2', '-1/2'], [4, 1], False], ['3', '-3/4']], ['control: random df2t 31', [['-1/2', '1/8', '1/2', '-1/2', '-1/4'], [0, -3], False], ['0', '3/2']]]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: primed step lowpass | ['8/3', '8/3', '17/6', '35/12'] | ['8/3', '8/3', '8/3', '8/3'] | Failed |
| regression: unprimed impulse | ['1', '0', '7/12', '-7/24'] | ['1', '0', '7/12', '-7/24'] | Passed |
| regression: random df2t 0 | ['-5/4', '37/24', '123/16', '737/96', '91/64'] | ['-5/4', '37/24', '131/16', '283/32', '-1223/192'] | Failed |
| control: primed highpass | ['0', '0', '-2'] | ['0', '0', '-2'] | Passed |
| control: dc pole | dc-pole | dc-pole | Passed |
| control: primed empty | [] | [] | Passed |
| control: random df2t 2 | ['-16/5', '-1/5'] | ['-16/5', '-1/5'] | Passed |
SHA-256 / 57a47245b970c0814be8a56fb2490813d75e468e787267e78acea3febf6ebf72
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
A deterministic bounded teaching model with a stipulated toy contract; exact rational arithmetic or fixed-decimal rounding keeps outputs strict JSON. It is not a production DSP library and claims no standards conformance. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:35.512687+00:00.
Case digest / 2ffbc1ac50a825b0fe9ed224ef6d8553181b03f60f52ff6712dff754b31d7d15