FA-91606 / Digital signal filters / Open access
Coefficient quantizer allows the positive code 2^(B-1) · case 01
A coefficient of 1.0 in Q7 yields code 128, which does not fit in eight bits.
ROOT CAUSE
The upper rail is 2^(B-1) instead of 2^(B-1) - 1.
VERIFIED REPAIR
Saturate to 2^(B-1) - 1.
Unsuccessful approach: The attempted repair makes the negative rail symmetric at -(2^(B-1) - 1), clipping the legal most-negative code.
Case contract
Input [coeffs, f, B, mode]: quantize each decimal coefficient to a B-bit two's-complement code with f fractional bits; "nearest" rounds half away from zero, "truncate" floors. Codes saturate to [-2^(B-1), 2^(B-1)-1]. Return {"codes", "saturated": count of clipped codes, "max_error": max |code/2^f - c| after saturation as a fraction string}.
Why this case matters
Coefficient quantization decides whether a fixed-point filter still meets spec; rounding and saturation slips shift poles.
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):
coeffs, f, B, mode = x
scale = 2 ** f
hi, lo = 2 ** (B - 1), -2 ** (B - 1)
codes = []
sat = 0
err = Fraction(0)
for s in coeffs:
c = Fraction(s)
v = c * scale
if mode == 'nearest':
q = math.floor(abs(v) + Fraction(1, 2)) * (1 if v >= 0 else -1)
else:
q = math.floor(v)
if q > hi or q < lo:
sat += 1
q = max(lo, min(hi, q))
codes.append(q)
err = max(err, abs(Fraction(q, scale) - c))
return {'codes': codes, 'saturated': sat, 'max_error': str(err)}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['regression: random quantize 9', [['-0.92', '1.79'], 4, 5, 'truncate'], {'codes': [-15, 15], 'saturated': 1, 'max_error': '341/400'}], ['repair check: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['control: tie cases nearest', [['0.125', '0.375', '-0.125'], 2, 8, 'nearest'], {'codes': [1, 2, -1], 'saturated': 0, 'max_error': '1/8'}], ['control: negative truncate', [['-0.3', '0.3'], 3, 8, 'truncate'], {'codes': [-3, 2], 'saturated': 0, 'max_error': '3/40'}], ['control: exact grid', [['0.5', '-0.25'], 2, 4, 'nearest'], {'codes': [2, -1], 'saturated': 0, 'max_error': '0'}], ['control: exact grid truncate', [['0.5', '-0.25', '0.75'], 2, 4, 'truncate'], {'codes': [2, -1, 3], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 29', [['2.017', '-0.693', '1.94'], 2, 4, 'nearest'], {'codes': [7, -3, 7], 'saturated': 2, 'max_error': '267/1000'}], ['regression: random quantize 38', [['2.146', '-1.527', '-1.91'], 5, 6, 'nearest'], {'codes': [31, -32, -32], 'saturated': 3, 'max_error': '4709/4000'}], ['repair check: random quantize 4', [['-1.49', '-1.91'], 2, 3, 'nearest'], {'codes': [-4, -4], 'saturated': 2, 'max_error': '91/100'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}], ['control: random quantize 0', [['-1.79', '1.59'], 3, 5, 'truncate'], {'codes': [-15, 12], 'saturated': 0, 'max_error': '9/100'}], ['control: random quantize 1', [['-1.919', '-2.19', '0.764', '-2.046'], 4, 7, 'truncate'], {'codes': [-31, -36, 12, -33], 'saturated': 0, 'max_error': '3/50'}], ['control: random quantize 2', [['-0.09', '-0.09', '0.397'], 4, 7, 'nearest'], {'codes': [-1, -1, 6], 'saturated': 0, 'max_error': '11/400'}]], [['regression: random quantize 48', [['0.88', '-2.15', '-1.86', '2.016'], 3, 5, 'nearest'], {'codes': [7, -16, -15, 15], 'saturated': 2, 'max_error': '3/20'}], ['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['repair check: random quantize 10', [['-1.232', '-0.29', '-0.82', '0.594'], 4, 5, 'truncate'], {'codes': [-16, -5, -14, 9], 'saturated': 1, 'max_error': '29/125'}], ['control: random quantize 3', [['-1.8'], 3, 5, 'nearest'], {'codes': [-14], 'saturated': 0, 'max_error': '1/20'}], ['control: random quantize 5', [['1.92'], 4, 6, 'truncate'], {'codes': [30], 'saturated': 0, 'max_error': '9/200'}], ['control: random quantize 6', [['2.04', '0.49'], 3, 6, 'nearest'], {'codes': [16, 4], 'saturated': 0, 'max_error': '1/25'}], ['control: random quantize 7', [['-2.111', '2.022', '-1.492'], 3, 6, 'truncate'], {'codes': [-17, 16, -12], 'saturated': 0, 'max_error': '11/500'}]], [['regression: random quantize 21', [['1.81'], 6, 7, 'truncate'], {'codes': [63], 'saturated': 1, 'max_error': '1321/1600'}], ['regression: random quantize 29', [['2.017', '-0.693', '1.94'], 2, 4, 'nearest'], {'codes': [7, -3, 7], 'saturated': 2, 'max_error': '267/1000'}], ['repair check: random quantize 26', [['-1.848', '0.82', '-1.59'], 2, 3, 'truncate'], {'codes': [-4, 3, -4], 'saturated': 2, 'max_error': '106/125'}], ['control: random quantize 11', [['-0.158', '1.311', '1.13', '-0.89'], 6, 8, 'truncate'], {'codes': [-11, 83, 72, -57], 'saturated': 0, 'max_error': '113/8000'}], ['control: random quantize 12', [['-0.52', '-2.037', '1.37'], 3, 6, 'nearest'], {'codes': [-4, -16, 11], 'saturated': 0, 'max_error': '37/1000'}], ['control: random quantize 13', [['0.615'], 3, 4, 'nearest'], {'codes': [5], 'saturated': 0, 'max_error': '1/100'}], ['control: random quantize 14', [['-1.84', '1.735', '0.56', '1.37'], 3, 6, 'truncate'], {'codes': [-15, 13, 4, 10], 'saturated': 0, 'max_error': '3/25'}]], [['regression: random quantize 39', [['1.85', '-1.902'], 3, 4, 'truncate'], {'codes': [7, -8], 'saturated': 2, 'max_error': '39/40'}], ['regression: random quantize 48', [['0.88', '-2.15', '-1.86', '2.016'], 3, 5, 'nearest'], {'codes': [7, -16, -15, 15], 'saturated': 2, 'max_error': '3/20'}], ['repair check: random quantize 36', [['-1.29', '-1.846'], 3, 4, 'truncate'], {'codes': [-8, -8], 'saturated': 2, 'max_error': '423/500'}], ['control: random quantize 16', [['0.334'], 6, 7, 'truncate'], {'codes': [21], 'saturated': 0, 'max_error': '47/8000'}], ['control: random quantize 17', [['-0.86'], 2, 5, 'truncate'], {'codes': [-4], 'saturated': 0, 'max_error': '7/50'}], ['control: random quantize 18', [['0.742', '0.423', '0.231', '-0.3'], 4, 6, 'truncate'], {'codes': [11, 6, 3, -5], 'saturated': 0, 'max_error': '109/2000'}], ['control: random quantize 19', [['-0.718', '0.68', '0.97'], 2, 5, 'truncate'], {'codes': [-3, 2, 3], 'saturated': 0, 'max_error': '11/50'}]]]
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: positive overflow | {'codes': [128, 127], 'max_error': '7/3200', 'saturated': 0} | {'codes': [127, 127], 'max_error': '1/128', 'saturated': 1} | Failed |
| regression: random quantize 9 | {'codes': [-15, 16], 'max_error': '79/100', 'saturated': 1} | {'codes': [-15, 15], 'max_error': '341/400', 'saturated': 1} | Failed |
| repair check: negative full scale | {'codes': [-128], 'max_error': '0', 'saturated': 0} | {'codes': [-128], 'max_error': '0', 'saturated': 0} | Passed |
| control: tie cases nearest | {'codes': [1, 2, -1], 'max_error': '1/8', 'saturated': 0} | {'codes': [1, 2, -1], 'max_error': '1/8', 'saturated': 0} | Passed |
| control: negative truncate | {'codes': [-3, 2], 'max_error': '3/40', 'saturated': 0} | {'codes': [-3, 2], 'max_error': '3/40', 'saturated': 0} | Passed |
| control: exact grid | {'codes': [2, -1], 'max_error': '0', 'saturated': 0} | {'codes': [2, -1], 'max_error': '0', 'saturated': 0} | Passed |
| control: exact grid truncate | {'codes': [2, -1, 3], 'max_error': '0', 'saturated': 0} | {'codes': [2, -1, 3], 'max_error': '0', 'saturated': 0} | Passed |
SHA-256 / 4e7e620df395f33d514c5aec7a63176f327cd7e4e80aec28bd311c6b38a94a3e
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):
coeffs, f, B, mode = x
scale = 2 ** f
hi, lo = 2 ** (B - 1) - 1, -(2 ** (B - 1) - 1)
codes = []
sat = 0
err = Fraction(0)
for s in coeffs:
c = Fraction(s)
v = c * scale
if mode == 'nearest':
q = math.floor(abs(v) + Fraction(1, 2)) * (1 if v >= 0 else -1)
else:
q = math.floor(v)
if q > hi or q < lo:
sat += 1
q = max(lo, min(hi, q))
codes.append(q)
err = max(err, abs(Fraction(q, scale) - c))
return {'codes': codes, 'saturated': sat, 'max_error': str(err)}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['regression: random quantize 9', [['-0.92', '1.79'], 4, 5, 'truncate'], {'codes': [-15, 15], 'saturated': 1, 'max_error': '341/400'}], ['repair check: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['control: tie cases nearest', [['0.125', '0.375', '-0.125'], 2, 8, 'nearest'], {'codes': [1, 2, -1], 'saturated': 0, 'max_error': '1/8'}], ['control: negative truncate', [['-0.3', '0.3'], 3, 8, 'truncate'], {'codes': [-3, 2], 'saturated': 0, 'max_error': '3/40'}], ['control: exact grid', [['0.5', '-0.25'], 2, 4, 'nearest'], {'codes': [2, -1], 'saturated': 0, 'max_error': '0'}], ['control: exact grid truncate', [['0.5', '-0.25', '0.75'], 2, 4, 'truncate'], {'codes': [2, -1, 3], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 29', [['2.017', '-0.693', '1.94'], 2, 4, 'nearest'], {'codes': [7, -3, 7], 'saturated': 2, 'max_error': '267/1000'}], ['regression: random quantize 38', [['2.146', '-1.527', '-1.91'], 5, 6, 'nearest'], {'codes': [31, -32, -32], 'saturated': 3, 'max_error': '4709/4000'}], ['repair check: random quantize 4', [['-1.49', '-1.91'], 2, 3, 'nearest'], {'codes': [-4, -4], 'saturated': 2, 'max_error': '91/100'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}], ['control: random quantize 0', [['-1.79', '1.59'], 3, 5, 'truncate'], {'codes': [-15, 12], 'saturated': 0, 'max_error': '9/100'}], ['control: random quantize 1', [['-1.919', '-2.19', '0.764', '-2.046'], 4, 7, 'truncate'], {'codes': [-31, -36, 12, -33], 'saturated': 0, 'max_error': '3/50'}], ['control: random quantize 2', [['-0.09', '-0.09', '0.397'], 4, 7, 'nearest'], {'codes': [-1, -1, 6], 'saturated': 0, 'max_error': '11/400'}]], [['regression: random quantize 48', [['0.88', '-2.15', '-1.86', '2.016'], 3, 5, 'nearest'], {'codes': [7, -16, -15, 15], 'saturated': 2, 'max_error': '3/20'}], ['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['repair check: random quantize 10', [['-1.232', '-0.29', '-0.82', '0.594'], 4, 5, 'truncate'], {'codes': [-16, -5, -14, 9], 'saturated': 1, 'max_error': '29/125'}], ['control: random quantize 3', [['-1.8'], 3, 5, 'nearest'], {'codes': [-14], 'saturated': 0, 'max_error': '1/20'}], ['control: random quantize 5', [['1.92'], 4, 6, 'truncate'], {'codes': [30], 'saturated': 0, 'max_error': '9/200'}], ['control: random quantize 6', [['2.04', '0.49'], 3, 6, 'nearest'], {'codes': [16, 4], 'saturated': 0, 'max_error': '1/25'}], ['control: random quantize 7', [['-2.111', '2.022', '-1.492'], 3, 6, 'truncate'], {'codes': [-17, 16, -12], 'saturated': 0, 'max_error': '11/500'}]], [['regression: random quantize 21', [['1.81'], 6, 7, 'truncate'], {'codes': [63], 'saturated': 1, 'max_error': '1321/1600'}], ['regression: random quantize 29', [['2.017', '-0.693', '1.94'], 2, 4, 'nearest'], {'codes': [7, -3, 7], 'saturated': 2, 'max_error': '267/1000'}], ['repair check: random quantize 26', [['-1.848', '0.82', '-1.59'], 2, 3, 'truncate'], {'codes': [-4, 3, -4], 'saturated': 2, 'max_error': '106/125'}], ['control: random quantize 11', [['-0.158', '1.311', '1.13', '-0.89'], 6, 8, 'truncate'], {'codes': [-11, 83, 72, -57], 'saturated': 0, 'max_error': '113/8000'}], ['control: random quantize 12', [['-0.52', '-2.037', '1.37'], 3, 6, 'nearest'], {'codes': [-4, -16, 11], 'saturated': 0, 'max_error': '37/1000'}], ['control: random quantize 13', [['0.615'], 3, 4, 'nearest'], {'codes': [5], 'saturated': 0, 'max_error': '1/100'}], ['control: random quantize 14', [['-1.84', '1.735', '0.56', '1.37'], 3, 6, 'truncate'], {'codes': [-15, 13, 4, 10], 'saturated': 0, 'max_error': '3/25'}]], [['regression: random quantize 39', [['1.85', '-1.902'], 3, 4, 'truncate'], {'codes': [7, -8], 'saturated': 2, 'max_error': '39/40'}], ['regression: random quantize 48', [['0.88', '-2.15', '-1.86', '2.016'], 3, 5, 'nearest'], {'codes': [7, -16, -15, 15], 'saturated': 2, 'max_error': '3/20'}], ['repair check: random quantize 36', [['-1.29', '-1.846'], 3, 4, 'truncate'], {'codes': [-8, -8], 'saturated': 2, 'max_error': '423/500'}], ['control: random quantize 16', [['0.334'], 6, 7, 'truncate'], {'codes': [21], 'saturated': 0, 'max_error': '47/8000'}], ['control: random quantize 17', [['-0.86'], 2, 5, 'truncate'], {'codes': [-4], 'saturated': 0, 'max_error': '7/50'}], ['control: random quantize 18', [['0.742', '0.423', '0.231', '-0.3'], 4, 6, 'truncate'], {'codes': [11, 6, 3, -5], 'saturated': 0, 'max_error': '109/2000'}], ['control: random quantize 19', [['-0.718', '0.68', '0.97'], 2, 5, 'truncate'], {'codes': [-3, 2, 3], 'saturated': 0, 'max_error': '11/50'}]]]
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: positive overflow | {'codes': [127, 127], 'max_error': '1/128', 'saturated': 1} | {'codes': [127, 127], 'max_error': '1/128', 'saturated': 1} | Passed |
| regression: random quantize 9 | {'codes': [-15, 15], 'max_error': '341/400', 'saturated': 1} | {'codes': [-15, 15], 'max_error': '341/400', 'saturated': 1} | Passed |
| repair check: negative full scale | {'codes': [-127], 'max_error': '1/128', 'saturated': 1} | {'codes': [-128], 'max_error': '0', 'saturated': 0} | Failed |
| control: tie cases nearest | {'codes': [1, 2, -1], 'max_error': '1/8', 'saturated': 0} | {'codes': [1, 2, -1], 'max_error': '1/8', 'saturated': 0} | Passed |
| control: negative truncate | {'codes': [-3, 2], 'max_error': '3/40', 'saturated': 0} | {'codes': [-3, 2], 'max_error': '3/40', 'saturated': 0} | Passed |
| control: exact grid | {'codes': [2, -1], 'max_error': '0', 'saturated': 0} | {'codes': [2, -1], 'max_error': '0', 'saturated': 0} | Passed |
| control: exact grid truncate | {'codes': [2, -1, 3], 'max_error': '0', 'saturated': 0} | {'codes': [2, -1, 3], 'max_error': '0', 'saturated': 0} | Passed |
SHA-256 / edaca1242eabd3c09981dfa8bfe494a584890e12bb15085c46151dff1e172908
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):
coeffs, f, B, mode = x
scale = 2 ** f
hi, lo = 2 ** (B - 1) - 1, -2 ** (B - 1)
codes = []
sat = 0
err = Fraction(0)
for s in coeffs:
c = Fraction(s)
v = c * scale
if mode == 'nearest':
q = math.floor(abs(v) + Fraction(1, 2)) * (1 if v >= 0 else -1)
else:
q = math.floor(v)
if q > hi or q < lo:
sat += 1
q = max(lo, min(hi, q))
codes.append(q)
err = max(err, abs(Fraction(q, scale) - c))
return {'codes': codes, 'saturated': sat, 'max_error': str(err)}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['regression: random quantize 9', [['-0.92', '1.79'], 4, 5, 'truncate'], {'codes': [-15, 15], 'saturated': 1, 'max_error': '341/400'}], ['repair check: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['control: tie cases nearest', [['0.125', '0.375', '-0.125'], 2, 8, 'nearest'], {'codes': [1, 2, -1], 'saturated': 0, 'max_error': '1/8'}], ['control: negative truncate', [['-0.3', '0.3'], 3, 8, 'truncate'], {'codes': [-3, 2], 'saturated': 0, 'max_error': '3/40'}], ['control: exact grid', [['0.5', '-0.25'], 2, 4, 'nearest'], {'codes': [2, -1], 'saturated': 0, 'max_error': '0'}], ['control: exact grid truncate', [['0.5', '-0.25', '0.75'], 2, 4, 'truncate'], {'codes': [2, -1, 3], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 29', [['2.017', '-0.693', '1.94'], 2, 4, 'nearest'], {'codes': [7, -3, 7], 'saturated': 2, 'max_error': '267/1000'}], ['regression: random quantize 38', [['2.146', '-1.527', '-1.91'], 5, 6, 'nearest'], {'codes': [31, -32, -32], 'saturated': 3, 'max_error': '4709/4000'}], ['repair check: random quantize 4', [['-1.49', '-1.91'], 2, 3, 'nearest'], {'codes': [-4, -4], 'saturated': 2, 'max_error': '91/100'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}], ['control: random quantize 0', [['-1.79', '1.59'], 3, 5, 'truncate'], {'codes': [-15, 12], 'saturated': 0, 'max_error': '9/100'}], ['control: random quantize 1', [['-1.919', '-2.19', '0.764', '-2.046'], 4, 7, 'truncate'], {'codes': [-31, -36, 12, -33], 'saturated': 0, 'max_error': '3/50'}], ['control: random quantize 2', [['-0.09', '-0.09', '0.397'], 4, 7, 'nearest'], {'codes': [-1, -1, 6], 'saturated': 0, 'max_error': '11/400'}]], [['regression: random quantize 48', [['0.88', '-2.15', '-1.86', '2.016'], 3, 5, 'nearest'], {'codes': [7, -16, -15, 15], 'saturated': 2, 'max_error': '3/20'}], ['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['repair check: random quantize 10', [['-1.232', '-0.29', '-0.82', '0.594'], 4, 5, 'truncate'], {'codes': [-16, -5, -14, 9], 'saturated': 1, 'max_error': '29/125'}], ['control: random quantize 3', [['-1.8'], 3, 5, 'nearest'], {'codes': [-14], 'saturated': 0, 'max_error': '1/20'}], ['control: random quantize 5', [['1.92'], 4, 6, 'truncate'], {'codes': [30], 'saturated': 0, 'max_error': '9/200'}], ['control: random quantize 6', [['2.04', '0.49'], 3, 6, 'nearest'], {'codes': [16, 4], 'saturated': 0, 'max_error': '1/25'}], ['control: random quantize 7', [['-2.111', '2.022', '-1.492'], 3, 6, 'truncate'], {'codes': [-17, 16, -12], 'saturated': 0, 'max_error': '11/500'}]], [['regression: random quantize 21', [['1.81'], 6, 7, 'truncate'], {'codes': [63], 'saturated': 1, 'max_error': '1321/1600'}], ['regression: random quantize 29', [['2.017', '-0.693', '1.94'], 2, 4, 'nearest'], {'codes': [7, -3, 7], 'saturated': 2, 'max_error': '267/1000'}], ['repair check: random quantize 26', [['-1.848', '0.82', '-1.59'], 2, 3, 'truncate'], {'codes': [-4, 3, -4], 'saturated': 2, 'max_error': '106/125'}], ['control: random quantize 11', [['-0.158', '1.311', '1.13', '-0.89'], 6, 8, 'truncate'], {'codes': [-11, 83, 72, -57], 'saturated': 0, 'max_error': '113/8000'}], ['control: random quantize 12', [['-0.52', '-2.037', '1.37'], 3, 6, 'nearest'], {'codes': [-4, -16, 11], 'saturated': 0, 'max_error': '37/1000'}], ['control: random quantize 13', [['0.615'], 3, 4, 'nearest'], {'codes': [5], 'saturated': 0, 'max_error': '1/100'}], ['control: random quantize 14', [['-1.84', '1.735', '0.56', '1.37'], 3, 6, 'truncate'], {'codes': [-15, 13, 4, 10], 'saturated': 0, 'max_error': '3/25'}]], [['regression: random quantize 39', [['1.85', '-1.902'], 3, 4, 'truncate'], {'codes': [7, -8], 'saturated': 2, 'max_error': '39/40'}], ['regression: random quantize 48', [['0.88', '-2.15', '-1.86', '2.016'], 3, 5, 'nearest'], {'codes': [7, -16, -15, 15], 'saturated': 2, 'max_error': '3/20'}], ['repair check: random quantize 36', [['-1.29', '-1.846'], 3, 4, 'truncate'], {'codes': [-8, -8], 'saturated': 2, 'max_error': '423/500'}], ['control: random quantize 16', [['0.334'], 6, 7, 'truncate'], {'codes': [21], 'saturated': 0, 'max_error': '47/8000'}], ['control: random quantize 17', [['-0.86'], 2, 5, 'truncate'], {'codes': [-4], 'saturated': 0, 'max_error': '7/50'}], ['control: random quantize 18', [['0.742', '0.423', '0.231', '-0.3'], 4, 6, 'truncate'], {'codes': [11, 6, 3, -5], 'saturated': 0, 'max_error': '109/2000'}], ['control: random quantize 19', [['-0.718', '0.68', '0.97'], 2, 5, 'truncate'], {'codes': [-3, 2, 3], 'saturated': 0, 'max_error': '11/50'}]]]
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: positive overflow | {'codes': [127, 127], 'max_error': '1/128', 'saturated': 1} | {'codes': [127, 127], 'max_error': '1/128', 'saturated': 1} | Passed |
| regression: random quantize 9 | {'codes': [-15, 15], 'max_error': '341/400', 'saturated': 1} | {'codes': [-15, 15], 'max_error': '341/400', 'saturated': 1} | Passed |
| repair check: negative full scale | {'codes': [-128], 'max_error': '0', 'saturated': 0} | {'codes': [-128], 'max_error': '0', 'saturated': 0} | Passed |
| control: tie cases nearest | {'codes': [1, 2, -1], 'max_error': '1/8', 'saturated': 0} | {'codes': [1, 2, -1], 'max_error': '1/8', 'saturated': 0} | Passed |
| control: negative truncate | {'codes': [-3, 2], 'max_error': '3/40', 'saturated': 0} | {'codes': [-3, 2], 'max_error': '3/40', 'saturated': 0} | Passed |
| control: exact grid | {'codes': [2, -1], 'max_error': '0', 'saturated': 0} | {'codes': [2, -1], 'max_error': '0', 'saturated': 0} | Passed |
| control: exact grid truncate | {'codes': [2, -1, 3], 'max_error': '0', 'saturated': 0} | {'codes': [2, -1, 3], 'max_error': '0', 'saturated': 0} | Passed |
SHA-256 / cdf439f57fef2a737ab8bac4d0330028137561e42c9d75f7fc55e24c6524282b
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:37.555817+00:00.
Case digest / 3477647e965a8f5a50ae1bc282970c980bcc6d21e8c9dfa4fc0195ba4759c023