FAILURE MAP
← Case archive

FA-91691 / Digital signal filters / Open access

Resampling plan normalizes the cutoff to the input Nyquist · case 01

The normalized cutoff handed to the filter designer is L times too large.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The cutoff is divided by fin / 2 although the filter runs at the intermediate rate.

VERIFIED REPAIR

Normalize to the intermediate Nyquist fin L / 2.

Unsuccessful approach: The attempted repair divides by the full intermediate rate, halving the normalized cutoff.

Case contract

Input [fin, fout, rolloff] (positive integer rates, rolloff in (0, 1]). Reduce fout/fin to up/down = L/M by gcd, intermediate rate = fin L, anti-alias cutoff = min(fin, fout)/2 * rolloff in Hz and normalized to the intermediate Nyquist. Return {"up", "down", "intermediate_rate", "cutoff_hz", "cutoff_norm"} or "bad-spec".

Why this case matters

Sample-rate converters are planned from these numbers; a wrong cutoff reference aliases or dulls the output.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
    fin, fout, roll = x[0], x[1], Fraction(x[2])
    if fin <= 0 or fout <= 0 or not 0 < roll <= 1:
        return 'bad-spec'
    g = math.gcd(fin, fout)
    L, M = fout // g, fin // g
    inter = fin * L
    cutoff = Fraction(min(fin, fout), 2) * roll
    return {'up': L, 'down': M, 'intermediate_rate': inter, 'cutoff_hz': str(cutoff), 'cutoff_norm': str(cutoff / Fraction(fin, 2))}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}]], [['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}]], [['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}]], [['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}]], [['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}]]]
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 fixtureActualExpectedOutcome
regression: 48k to 44.1k{'cutoff_hz': '19845', 'cutoff_norm': '1323/1600', 'down': 160, 'intermediate_rate': 7056000, 'up': 147}{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 160, 'intermediate_rate': 7056000, 'up': 147}Failed
regression: 44.1k to 48k{'cutoff_hz': '19845', 'cutoff_norm': '9/10', 'down': 147, 'intermediate_rate': 7056000, 'up': 160}{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 147, 'intermediate_rate': 7056000, 'up': 160}Failed
repair check: downsample by 3{'cutoff_hz': '8000', 'cutoff_norm': '1/3', 'down': 3, 'intermediate_rate': 48000, 'up': 1}{'cutoff_hz': '8000', 'cutoff_norm': '1/3', 'down': 3, 'intermediate_rate': 48000, 'up': 1}Passed
control: bad rolloffbad-specbad-specPassed
regression: upsample by 2{'cutoff_hz': '3200', 'cutoff_norm': '4/5', 'down': 1, 'intermediate_rate': 16000, 'up': 2}{'cutoff_hz': '3200', 'cutoff_norm': '2/5', 'down': 1, 'intermediate_rate': 16000, 'up': 2}Failed
regression: odd ratio{'cutoff_hz': '41895/4', 'cutoff_norm': '19/20', 'down': 441, 'intermediate_rate': 14112000, 'up': 640}{'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800', 'down': 441, 'intermediate_rate': 14112000, 'up': 640}Failed
regression: coprime rates{'cutoff_hz': '5/4', 'cutoff_norm': '5/14', 'down': 7, 'intermediate_rate': 35, 'up': 5}{'cutoff_hz': '5/4', 'cutoff_norm': '1/14', 'down': 7, 'intermediate_rate': 35, 'up': 5}Failed

SHA-256 / ee1894e9c947f76a600c50beef364b67dd62a30c4555b86cbf72f1eea6fa4dba

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
    fin, fout, roll = x[0], x[1], Fraction(x[2])
    if fin <= 0 or fout <= 0 or not 0 < roll <= 1:
        return 'bad-spec'
    g = math.gcd(fin, fout)
    L, M = fout // g, fin // g
    inter = fin * L
    cutoff = Fraction(min(fin, fout), 2) * roll
    return {'up': L, 'down': M, 'intermediate_rate': inter, 'cutoff_hz': str(cutoff), 'cutoff_norm': str(cutoff / inter)}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}]], [['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}]], [['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}]], [['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}]], [['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}]]]
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 fixtureActualExpectedOutcome
regression: 48k to 44.1k{'cutoff_hz': '19845', 'cutoff_norm': '9/3200', 'down': 160, 'intermediate_rate': 7056000, 'up': 147}{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 160, 'intermediate_rate': 7056000, 'up': 147}Failed
regression: 44.1k to 48k{'cutoff_hz': '19845', 'cutoff_norm': '9/3200', 'down': 147, 'intermediate_rate': 7056000, 'up': 160}{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 147, 'intermediate_rate': 7056000, 'up': 160}Failed
repair check: downsample by 3{'cutoff_hz': '8000', 'cutoff_norm': '1/6', 'down': 3, 'intermediate_rate': 48000, 'up': 1}{'cutoff_hz': '8000', 'cutoff_norm': '1/3', 'down': 3, 'intermediate_rate': 48000, 'up': 1}Failed
control: bad rolloffbad-specbad-specPassed
regression: upsample by 2{'cutoff_hz': '3200', 'cutoff_norm': '1/5', 'down': 1, 'intermediate_rate': 16000, 'up': 2}{'cutoff_hz': '3200', 'cutoff_norm': '2/5', 'down': 1, 'intermediate_rate': 16000, 'up': 2}Failed
regression: odd ratio{'cutoff_hz': '41895/4', 'cutoff_norm': '19/25600', 'down': 441, 'intermediate_rate': 14112000, 'up': 640}{'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800', 'down': 441, 'intermediate_rate': 14112000, 'up': 640}Failed
regression: coprime rates{'cutoff_hz': '5/4', 'cutoff_norm': '1/28', 'down': 7, 'intermediate_rate': 35, 'up': 5}{'cutoff_hz': '5/4', 'cutoff_norm': '1/14', 'down': 7, 'intermediate_rate': 35, 'up': 5}Failed

SHA-256 / 4fb61880330f5c2ce7e51d911b536c7acc2f4c3c11cb9522ae4d59c08dfa0dd3

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
from fractions import Fraction
N = 1
observations = []
def solve(x):
    fin, fout, roll = x[0], x[1], Fraction(x[2])
    if fin <= 0 or fout <= 0 or not 0 < roll <= 1:
        return 'bad-spec'
    g = math.gcd(fin, fout)
    L, M = fout // g, fin // g
    inter = fin * L
    cutoff = Fraction(min(fin, fout), 2) * roll
    return {'up': L, 'down': M, 'intermediate_rate': inter, 'cutoff_hz': str(cutoff), 'cutoff_norm': str(cutoff / Fraction(inter, 2))}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}]], [['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}]], [['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}]], [['regression: coprime rates', [7, 5, '1/2'], {'up': 5, 'down': 7, 'intermediate_rate': 35, 'cutoff_hz': '5/4', 'cutoff_norm': '1/14'}], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}]], [['regression: upsample by 2', [8000, 16000, '4/5'], {'up': 2, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '3200', 'cutoff_norm': '2/5'}], ['regression: odd ratio', [22050, 32000, '19/20'], {'up': 640, 'down': 441, 'intermediate_rate': 14112000, 'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800'}], ['regression: 44.1k to 48k', [44100, 48000, '9/10'], {'up': 160, 'down': 147, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['control: bad rolloff', [8000, 16000, '0'], 'bad-spec'], ['regression: 48k to 44.1k', [48000, 44100, '9/10'], {'up': 147, 'down': 160, 'intermediate_rate': 7056000, 'cutoff_hz': '19845', 'cutoff_norm': '9/1600'}], ['repair check: downsample by 3', [48000, 16000, '1'], {'up': 1, 'down': 3, 'intermediate_rate': 48000, 'cutoff_hz': '8000', 'cutoff_norm': '1/3'}], ['repair check: identity', [16000, 16000, '1'], {'up': 1, 'down': 1, 'intermediate_rate': 16000, 'cutoff_hz': '8000', 'cutoff_norm': '1'}]]]
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 fixtureActualExpectedOutcome
regression: 48k to 44.1k{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 160, 'intermediate_rate': 7056000, 'up': 147}{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 160, 'intermediate_rate': 7056000, 'up': 147}Passed
regression: 44.1k to 48k{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 147, 'intermediate_rate': 7056000, 'up': 160}{'cutoff_hz': '19845', 'cutoff_norm': '9/1600', 'down': 147, 'intermediate_rate': 7056000, 'up': 160}Passed
repair check: downsample by 3{'cutoff_hz': '8000', 'cutoff_norm': '1/3', 'down': 3, 'intermediate_rate': 48000, 'up': 1}{'cutoff_hz': '8000', 'cutoff_norm': '1/3', 'down': 3, 'intermediate_rate': 48000, 'up': 1}Passed
control: bad rolloffbad-specbad-specPassed
regression: upsample by 2{'cutoff_hz': '3200', 'cutoff_norm': '2/5', 'down': 1, 'intermediate_rate': 16000, 'up': 2}{'cutoff_hz': '3200', 'cutoff_norm': '2/5', 'down': 1, 'intermediate_rate': 16000, 'up': 2}Passed
regression: odd ratio{'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800', 'down': 441, 'intermediate_rate': 14112000, 'up': 640}{'cutoff_hz': '41895/4', 'cutoff_norm': '19/12800', 'down': 441, 'intermediate_rate': 14112000, 'up': 640}Passed
regression: coprime rates{'cutoff_hz': '5/4', 'cutoff_norm': '1/14', 'down': 7, 'intermediate_rate': 35, 'up': 5}{'cutoff_hz': '5/4', 'cutoff_norm': '1/14', 'down': 7, 'intermediate_rate': 35, 'up': 5}Passed

SHA-256 / 6152b044ce9d2eaf9f167a2e44d83d2634502004b9e455476cb768e262addae0

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:38.276275+00:00.

Case digest / c098988849f0fb3e3731bac7168dcf573804bdedc895120511bdf371590b0e67