{"abstract":"max_error understates the real error for saturated coefficients.","category":"Digital signal filters","checks":7,"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}.","evaluation_group":"w2-digital_signal_filters-coefficient-quantization","failed_approach":"The attempted repair uses the saturated code but reports the error in LSB units instead of coefficient units.","family":"w2-digital_signal_filters-coefficient-quantization-error-after-saturation","id":"FA-91616","implementations":{"attempt":{"sha256":"aa6a6e86dfc3f1ac5c15ac2dd95937950c5c74e9df3845cd894592f17e0e2d33","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    coeffs, f, B, mode = x\n    scale = 2 ** f\n    hi, lo = 2 ** (B - 1) - 1, -2 ** (B - 1)\n    codes = []\n    sat = 0\n    err = Fraction(0)\n    for s in coeffs:\n        c = Fraction(s)\n        v = c * scale\n        if mode == 'nearest':\n            q = math.floor(abs(v) + Fraction(1, 2)) * (1 if v >= 0 else -1)\n        else:\n            q = math.floor(v)\n        if q > hi or q < lo:\n            sat += 1\n            q = max(lo, min(hi, q))\n        codes.append(q)\n        err = max(err, abs(q - v))\n    return {'codes': codes, 'saturated': sat, 'max_error': str(err)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['regression: negative overflow', [['-1.5'], 7, 8, 'truncate'], {'codes': [-128], 'saturated': 1, 'max_error': '1/2'}], ['repair check: tie cases nearest', [['0.125', '0.375', '-0.125'], 2, 8, 'nearest'], {'codes': [1, 2, -1], 'saturated': 0, 'max_error': '1/8'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 8', [['0.08', '-2.194', '-0.29'], 4, 6, 'nearest'], {'codes': [1, -32, -5], 'saturated': 1, 'max_error': '97/500'}], ['regression: random quantize 9', [['-0.92', '1.79'], 4, 5, 'truncate'], {'codes': [-15, 15], 'saturated': 1, 'max_error': '341/400'}], ['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 21', [['1.81'], 6, 7, 'truncate'], {'codes': [63], 'saturated': 1, 'max_error': '1321/1600'}], ['regression: random quantize 26', [['-1.848', '0.82', '-1.59'], 2, 3, 'truncate'], {'codes': [-4, 3, -4], 'saturated': 2, 'max_error': '106/125'}], ['repair check: random quantize 0', [['-1.79', '1.59'], 3, 5, 'truncate'], {'codes': [-15, 12], 'saturated': 0, 'max_error': '9/100'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 32', [['-1.79', '-1.633', '-0.38'], 3, 4, 'nearest'], {'codes': [-8, -8, -3], 'saturated': 2, 'max_error': '79/100'}], ['regression: random quantize 36', [['-1.29', '-1.846'], 3, 4, 'truncate'], {'codes': [-8, -8], 'saturated': 2, 'max_error': '423/500'}], ['repair check: random quantize 2', [['-0.09', '-0.09', '0.397'], 4, 7, 'nearest'], {'codes': [-1, -1, 6], 'saturated': 0, 'max_error': '11/400'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 38', [['2.146', '-1.527', '-1.91'], 5, 6, 'nearest'], {'codes': [31, -32, -32], 'saturated': 3, 'max_error': '4709/4000'}], ['regression: random quantize 39', [['1.85', '-1.902'], 3, 4, 'truncate'], {'codes': [7, -8], 'saturated': 2, 'max_error': '39/40'}], ['regression: random quantize 4', [['-1.49', '-1.91'], 2, 3, 'nearest'], {'codes': [-4, -4], 'saturated': 2, 'max_error': '91/100'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"9d54efc7ffcfabe2a10ff577dba230b184ae9ff3dee3d42afa8c0ddd5a44e3b1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    coeffs, f, B, mode = x\n    scale = 2 ** f\n    hi, lo = 2 ** (B - 1) - 1, -2 ** (B - 1)\n    codes = []\n    sat = 0\n    err = Fraction(0)\n    for s in coeffs:\n        c = Fraction(s)\n        v = c * scale\n        if mode == 'nearest':\n            q = math.floor(abs(v) + Fraction(1, 2)) * (1 if v >= 0 else -1)\n        else:\n            q = math.floor(v)\n        raw = q\n        if q > hi or q < lo:\n            sat += 1\n            q = max(lo, min(hi, q))\n        codes.append(q)\n        err = max(err, abs(Fraction(raw, scale) - c))\n    return {'codes': codes, 'saturated': sat, 'max_error': str(err)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['regression: negative overflow', [['-1.5'], 7, 8, 'truncate'], {'codes': [-128], 'saturated': 1, 'max_error': '1/2'}], ['repair check: tie cases nearest', [['0.125', '0.375', '-0.125'], 2, 8, 'nearest'], {'codes': [1, 2, -1], 'saturated': 0, 'max_error': '1/8'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 8', [['0.08', '-2.194', '-0.29'], 4, 6, 'nearest'], {'codes': [1, -32, -5], 'saturated': 1, 'max_error': '97/500'}], ['regression: random quantize 9', [['-0.92', '1.79'], 4, 5, 'truncate'], {'codes': [-15, 15], 'saturated': 1, 'max_error': '341/400'}], ['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 21', [['1.81'], 6, 7, 'truncate'], {'codes': [63], 'saturated': 1, 'max_error': '1321/1600'}], ['regression: random quantize 26', [['-1.848', '0.82', '-1.59'], 2, 3, 'truncate'], {'codes': [-4, 3, -4], 'saturated': 2, 'max_error': '106/125'}], ['repair check: random quantize 0', [['-1.79', '1.59'], 3, 5, 'truncate'], {'codes': [-15, 12], 'saturated': 0, 'max_error': '9/100'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 32', [['-1.79', '-1.633', '-0.38'], 3, 4, 'nearest'], {'codes': [-8, -8, -3], 'saturated': 2, 'max_error': '79/100'}], ['regression: random quantize 36', [['-1.29', '-1.846'], 3, 4, 'truncate'], {'codes': [-8, -8], 'saturated': 2, 'max_error': '423/500'}], ['repair check: random quantize 2', [['-0.09', '-0.09', '0.397'], 4, 7, 'nearest'], {'codes': [-1, -1, 6], 'saturated': 0, 'max_error': '11/400'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 38', [['2.146', '-1.527', '-1.91'], 5, 6, 'nearest'], {'codes': [31, -32, -32], 'saturated': 3, 'max_error': '4709/4000'}], ['regression: random quantize 39', [['1.85', '-1.902'], 3, 4, 'truncate'], {'codes': [7, -8], 'saturated': 2, 'max_error': '39/40'}], ['regression: random quantize 4', [['-1.49', '-1.91'], 2, 3, 'nearest'], {'codes': [-4, -4], 'saturated': 2, 'max_error': '91/100'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"4ae57d8919e0f7192204a8322fd727064db7c5a3f145009454a7dd663a9e3ab2","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nfrom fractions import Fraction\nN = 1\nobservations = []\ndef solve(x):\n    coeffs, f, B, mode = x\n    scale = 2 ** f\n    hi, lo = 2 ** (B - 1) - 1, -2 ** (B - 1)\n    codes = []\n    sat = 0\n    err = Fraction(0)\n    for s in coeffs:\n        c = Fraction(s)\n        v = c * scale\n        if mode == 'nearest':\n            q = math.floor(abs(v) + Fraction(1, 2)) * (1 if v >= 0 else -1)\n        else:\n            q = math.floor(v)\n        if q > hi or q < lo:\n            sat += 1\n            q = max(lo, min(hi, q))\n        codes.append(q)\n        err = max(err, abs(Fraction(q, scale) - c))\n    return {'codes': codes, 'saturated': sat, 'max_error': str(err)}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['regression: negative overflow', [['-1.5'], 7, 8, 'truncate'], {'codes': [-128], 'saturated': 1, 'max_error': '1/2'}], ['repair check: tie cases nearest', [['0.125', '0.375', '-0.125'], 2, 8, 'nearest'], {'codes': [1, 2, -1], 'saturated': 0, 'max_error': '1/8'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 8', [['0.08', '-2.194', '-0.29'], 4, 6, 'nearest'], {'codes': [1, -32, -5], 'saturated': 1, 'max_error': '97/500'}], ['regression: random quantize 9', [['-0.92', '1.79'], 4, 5, 'truncate'], {'codes': [-15, 15], 'saturated': 1, 'max_error': '341/400'}], ['regression: positive overflow', [['1', '0.99'], 7, 8, 'nearest'], {'codes': [127, 127], 'saturated': 1, 'max_error': '1/128'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 21', [['1.81'], 6, 7, 'truncate'], {'codes': [63], 'saturated': 1, 'max_error': '1321/1600'}], ['regression: random quantize 26', [['-1.848', '0.82', '-1.59'], 2, 3, 'truncate'], {'codes': [-4, 3, -4], 'saturated': 2, 'max_error': '106/125'}], ['repair check: random quantize 0', [['-1.79', '1.59'], 3, 5, 'truncate'], {'codes': [-15, 12], 'saturated': 0, 'max_error': '9/100'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 32', [['-1.79', '-1.633', '-0.38'], 3, 4, 'nearest'], {'codes': [-8, -8, -3], 'saturated': 2, 'max_error': '79/100'}], ['regression: random quantize 36', [['-1.29', '-1.846'], 3, 4, 'truncate'], {'codes': [-8, -8], 'saturated': 2, 'max_error': '423/500'}], ['repair check: random quantize 2', [['-0.09', '-0.09', '0.397'], 4, 7, 'nearest'], {'codes': [-1, -1, 6], 'saturated': 0, 'max_error': '11/400'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]], [['regression: random quantize 38', [['2.146', '-1.527', '-1.91'], 5, 6, 'nearest'], {'codes': [31, -32, -32], 'saturated': 3, 'max_error': '4709/4000'}], ['regression: random quantize 39', [['1.85', '-1.902'], 3, 4, 'truncate'], {'codes': [7, -8], 'saturated': 2, 'max_error': '39/40'}], ['regression: random quantize 4', [['-1.49', '-1.91'], 2, 3, 'nearest'], {'codes': [-4, -4], 'saturated': 2, 'max_error': '91/100'}], ['control: negative full scale', [['-1'], 7, 8, 'nearest'], {'codes': [-128], 'saturated': 0, 'max_error': '0'}], ['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'}], ['control: integer multiple truncate', [['-0.5', '1.25'], 3, 6, 'truncate'], {'codes': [-4, 10], 'saturated': 0, 'max_error': '0'}]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-digital_signal_filters-coefficient-quantization-error-after-saturation","generated_at":"2026-09-29T14:51:37.589225+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Coefficient quantization decides whether a fixed-point filter still meets spec; rounding and saturation slips shift poles.","repair":"Compute the error from the saturated code.","root_cause":"The error uses the unclipped code rather than the stored code.","sha256":"89e415a58a9876badbb0b7320233b0ad98bc8f957f4d0a9e748908e01aeb0dd8","title":"Coefficient quantizer measures error before clipping · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.692,"exit_code":1,"observations":[{"actual":{"codes":[127,127],"max_error":"1","saturated":1},"check":"regression: positive overflow","expected":{"codes":[127,127],"max_error":"1/128","saturated":1},"passed":false},{"actual":{"codes":[-128],"max_error":"64","saturated":1},"check":"regression: negative overflow","expected":{"codes":[-128],"max_error":"1/2","saturated":1},"passed":false},{"actual":{"codes":[1,2,-1],"max_error":"1/2","saturated":0},"check":"repair check: tie cases nearest","expected":{"codes":[1,2,-1],"max_error":"1/8","saturated":0},"passed":false},{"actual":{"codes":[-128],"max_error":"0","saturated":0},"check":"control: negative full scale","expected":{"codes":[-128],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[2,-1],"max_error":"0","saturated":0},"check":"control: exact grid","expected":{"codes":[2,-1],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[2,-1,3],"max_error":"0","saturated":0},"check":"control: exact grid truncate","expected":{"codes":[2,-1,3],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[-4,10],"max_error":"0","saturated":0},"check":"control: integer multiple truncate","expected":{"codes":[-4,10],"max_error":"0","saturated":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: positive overflow\", \"actual\": {\"codes\": [127, 127], \"saturated\": 1, \"max_error\": \"1\"}, \"expected\": {\"codes\": [127, 127], \"saturated\": 1, \"max_error\": \"1/128\"}, \"passed\": false}, {\"check\": \"regression: negative overflow\", \"actual\": {\"codes\": [-128], \"saturated\": 1, \"max_error\": \"64\"}, \"expected\": {\"codes\": [-128], \"saturated\": 1, \"max_error\": \"1/2\"}, \"passed\": false}, {\"check\": \"repair check: tie cases nearest\", \"actual\": {\"codes\": [1, 2, -1], \"saturated\": 0, \"max_error\": \"1/2\"}, \"expected\": {\"codes\": [1, 2, -1], \"saturated\": 0, \"max_error\": \"1/8\"}, \"passed\": false}, {\"check\": \"control: negative full scale\", \"actual\": {\"codes\": [-128], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-128], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: exact grid\", \"actual\": {\"codes\": [2, -1], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [2, -1], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: exact grid truncate\", \"actual\": {\"codes\": [2, -1, 3], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [2, -1, 3], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: integer multiple truncate\", \"actual\": {\"codes\": [-4, 10], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-4, 10], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.987,"exit_code":1,"observations":[{"actual":{"codes":[127,127],"max_error":"7/3200","saturated":1},"check":"regression: positive overflow","expected":{"codes":[127,127],"max_error":"1/128","saturated":1},"passed":false},{"actual":{"codes":[-128],"max_error":"0","saturated":1},"check":"regression: negative overflow","expected":{"codes":[-128],"max_error":"1/2","saturated":1},"passed":false},{"actual":{"codes":[1,2,-1],"max_error":"1/8","saturated":0},"check":"repair check: tie cases nearest","expected":{"codes":[1,2,-1],"max_error":"1/8","saturated":0},"passed":true},{"actual":{"codes":[-128],"max_error":"0","saturated":0},"check":"control: negative full scale","expected":{"codes":[-128],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[2,-1],"max_error":"0","saturated":0},"check":"control: exact grid","expected":{"codes":[2,-1],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[2,-1,3],"max_error":"0","saturated":0},"check":"control: exact grid truncate","expected":{"codes":[2,-1,3],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[-4,10],"max_error":"0","saturated":0},"check":"control: integer multiple truncate","expected":{"codes":[-4,10],"max_error":"0","saturated":0},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: positive overflow\", \"actual\": {\"codes\": [127, 127], \"saturated\": 1, \"max_error\": \"7/3200\"}, \"expected\": {\"codes\": [127, 127], \"saturated\": 1, \"max_error\": \"1/128\"}, \"passed\": false}, {\"check\": \"regression: negative overflow\", \"actual\": {\"codes\": [-128], \"saturated\": 1, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-128], \"saturated\": 1, \"max_error\": \"1/2\"}, \"passed\": false}, {\"check\": \"repair check: tie cases nearest\", \"actual\": {\"codes\": [1, 2, -1], \"saturated\": 0, \"max_error\": \"1/8\"}, \"expected\": {\"codes\": [1, 2, -1], \"saturated\": 0, \"max_error\": \"1/8\"}, \"passed\": true}, {\"check\": \"control: negative full scale\", \"actual\": {\"codes\": [-128], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-128], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: exact grid\", \"actual\": {\"codes\": [2, -1], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [2, -1], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: exact grid truncate\", \"actual\": {\"codes\": [2, -1, 3], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [2, -1, 3], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: integer multiple truncate\", \"actual\": {\"codes\": [-4, 10], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-4, 10], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.101,"exit_code":0,"observations":[{"actual":{"codes":[127,127],"max_error":"1/128","saturated":1},"check":"regression: positive overflow","expected":{"codes":[127,127],"max_error":"1/128","saturated":1},"passed":true},{"actual":{"codes":[-128],"max_error":"1/2","saturated":1},"check":"regression: negative overflow","expected":{"codes":[-128],"max_error":"1/2","saturated":1},"passed":true},{"actual":{"codes":[1,2,-1],"max_error":"1/8","saturated":0},"check":"repair check: tie cases nearest","expected":{"codes":[1,2,-1],"max_error":"1/8","saturated":0},"passed":true},{"actual":{"codes":[-128],"max_error":"0","saturated":0},"check":"control: negative full scale","expected":{"codes":[-128],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[2,-1],"max_error":"0","saturated":0},"check":"control: exact grid","expected":{"codes":[2,-1],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[2,-1,3],"max_error":"0","saturated":0},"check":"control: exact grid truncate","expected":{"codes":[2,-1,3],"max_error":"0","saturated":0},"passed":true},{"actual":{"codes":[-4,10],"max_error":"0","saturated":0},"check":"control: integer multiple truncate","expected":{"codes":[-4,10],"max_error":"0","saturated":0},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: positive overflow\", \"actual\": {\"codes\": [127, 127], \"saturated\": 1, \"max_error\": \"1/128\"}, \"expected\": {\"codes\": [127, 127], \"saturated\": 1, \"max_error\": \"1/128\"}, \"passed\": true}, {\"check\": \"regression: negative overflow\", \"actual\": {\"codes\": [-128], \"saturated\": 1, \"max_error\": \"1/2\"}, \"expected\": {\"codes\": [-128], \"saturated\": 1, \"max_error\": \"1/2\"}, \"passed\": true}, {\"check\": \"repair check: tie cases nearest\", \"actual\": {\"codes\": [1, 2, -1], \"saturated\": 0, \"max_error\": \"1/8\"}, \"expected\": {\"codes\": [1, 2, -1], \"saturated\": 0, \"max_error\": \"1/8\"}, \"passed\": true}, {\"check\": \"control: negative full scale\", \"actual\": {\"codes\": [-128], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-128], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: exact grid\", \"actual\": {\"codes\": [2, -1], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [2, -1], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: exact grid truncate\", \"actual\": {\"codes\": [2, -1, 3], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [2, -1, 3], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}, {\"check\": \"control: integer multiple truncate\", \"actual\": {\"codes\": [-4, 10], \"saturated\": 0, \"max_error\": \"0\"}, \"expected\": {\"codes\": [-4, 10], \"saturated\": 0, \"max_error\": \"0\"}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}