FAILURE MAP
← Case archive

FA-15021 / Numerics / Open access

Balanced odd radix encoding: unsigned residue extraction · case 01

The exact balanced odd radix encoding result violates the stated contract at unsigned residue extraction.

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

ROOT CAUSE

The unsigned residue extraction step uses abs(n)%b instead of n%b.

VERIFIED REPAIR

Use n%b at the unsigned residue extraction step.

Unsuccessful approach: The partial repair n%(b-1) still violates the unsigned residue extraction invariant.

Case contract

Input [integer, odd radix>=3]; return least-significant-first balanced digits between -(base//2) and base//2, zero=[0]. Bounds: |integer|<=100 and radix<=9.

Why this case matters

Exact discrete arithmetic with observable algorithmic state; no floating point approximation is used.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import itertools
from fractions import Fraction
N = 1
observations = []
def solve(x):
    n,b=x
    if n==0:return [0]
    out=[];half=b//2
    for _ in range(60):
     if n==0:break
     r=abs(n)%b
     if r>half:r-=b
     out.append(r)
     n=(n-r)//b
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-100, 5], [0, 0, 1, -1]), ([-100, 7], [-2, 0, -2]), ([-100, 9], [-1, -2, -1]), ([-99, 3], [0, 0, 1, -1, -1]), ([-99, 5], [1, 0, 1, -1]), ([-99, 7], [-1, 0, -2])], [([-100, 5], [0, 0, 1, -1]), ([-100, 9], [-1, -2, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-96, 5], [-1, 1, 1, -1]), ([-96, 7], [2, 0, -2]), ([-96, 9], [3, -2, -1]), ([-95, 3], [1, 1, 1, -1, -1])], [([-100, 7], [-2, 0, -2]), ([-99, 7], [-1, 0, -2]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-92, 7], [-1, 1, -2]), ([-92, 9], [-2, -1, -1]), ([-91, 3], [-1, 0, -1, 0, -1]), ([-91, 5], [-1, 2, 1, -1])], [([-100, 9], [-1, -2, -1]), ([-98, 5], [2, 0, 1, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-88, 9], [2, -1, -1]), ([-87, 3], [0, 1, -1, 0, -1]), ([-87, 5], [-2, -2, 2, -1]), ([-87, 7], [-3, 2, -2])], [([-99, 3], [0, 0, 1, -1, -1]), ([-97, 3], [-1, 1, 1, -1, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-83, 3], [1, -1, 0, 0, -1]), ([-83, 5], [2, -2, 2, -1]), ([-83, 7], [1, 2, -2]), ([-83, 9], [-2, 0, -1])]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("explicit oracle %d" % i, 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
explicit oracle 0[1, 1, 0, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][-1, 0, 1, -1, -1]Failed
explicit oracle 1[1, 2, 1][1, 2, 1]Passed
explicit oracle 2[0, 0, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][0, 0, 1, -1]Failed
explicit oracle 3[2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][-2, 0, -2]Failed
explicit oracle 4[1, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][-1, -2, -1]Failed
explicit oracle 5[0, 0, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][0, 0, 1, -1, -1]Failed
explicit oracle 6[-1, 0, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][1, 0, 1, -1]Failed
explicit oracle 7[1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][-1, 0, -2]Failed

SHA-256 / 282c564a452cfeb0998868bf52cf77a96435a70882bfd8917f0861d54123939f

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import itertools
from fractions import Fraction
N = 1
observations = []
def solve(x):
    n,b=x
    if n==0:return [0]
    out=[];half=b//2
    for _ in range(60):
     if n==0:break
     r=n%(b-1)
     if r>half:r-=b
     out.append(r)
     n=(n-r)//b
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-100, 5], [0, 0, 1, -1]), ([-100, 7], [-2, 0, -2]), ([-100, 9], [-1, -2, -1]), ([-99, 3], [0, 0, 1, -1, -1]), ([-99, 5], [1, 0, 1, -1]), ([-99, 7], [-1, 0, -2])], [([-100, 5], [0, 0, 1, -1]), ([-100, 9], [-1, -2, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-96, 5], [-1, 1, 1, -1]), ([-96, 7], [2, 0, -2]), ([-96, 9], [3, -2, -1]), ([-95, 3], [1, 1, 1, -1, -1])], [([-100, 7], [-2, 0, -2]), ([-99, 7], [-1, 0, -2]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-92, 7], [-1, 1, -2]), ([-92, 9], [-2, -1, -1]), ([-91, 3], [-1, 0, -1, 0, -1]), ([-91, 5], [-1, 2, 1, -1])], [([-100, 9], [-1, -2, -1]), ([-98, 5], [2, 0, 1, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-88, 9], [2, -1, -1]), ([-87, 3], [0, 1, -1, 0, -1]), ([-87, 5], [-2, -2, 2, -1]), ([-87, 7], [-3, 2, -2])], [([-99, 3], [0, 0, 1, -1, -1]), ([-97, 3], [-1, 1, 1, -1, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-83, 3], [1, -1, 0, 0, -1]), ([-83, 5], [2, -2, 2, -1]), ([-83, 7], [1, 2, -2]), ([-83, 9], [-2, 0, -1])]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("explicit oracle %d" % i, 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
explicit oracle 0[0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][-1, 0, 1, -1, -1]Failed
explicit oracle 1[4, 2][1, 2, 1]Failed
explicit oracle 2[0, 0, 0, -2][0, 0, 1, -1]Failed
explicit oracle 3[2, 3, 3, -2][-2, 0, -2]Failed
explicit oracle 4[4, 4, -3][-1, -2, -1]Failed
explicit oracle 5[1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1][0, 0, 1, -1, -1]Failed
explicit oracle 6[1, 0, 0, -2][1, 0, 1, -1]Failed
explicit oracle 7[3, 3, 3, -2][-1, 0, -2]Failed

SHA-256 / 63ee5110807a87ccb9f3195829de1d49f805bb12f7f8b512c037e9d8bc1dbe10

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json
import math
import itertools
from fractions import Fraction
N = 1
observations = []
def solve(x):
    n,b=x
    if n==0:return [0]
    out=[];half=b//2
    for _ in range(60):
     if n==0:break
     r=n%b
     if r>half:r-=b
     out.append(r)
     n=(n-r)//b
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-100, 5], [0, 0, 1, -1]), ([-100, 7], [-2, 0, -2]), ([-100, 9], [-1, -2, -1]), ([-99, 3], [0, 0, 1, -1, -1]), ([-99, 5], [1, 0, 1, -1]), ([-99, 7], [-1, 0, -2])], [([-100, 5], [0, 0, 1, -1]), ([-100, 9], [-1, -2, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-96, 5], [-1, 1, 1, -1]), ([-96, 7], [2, 0, -2]), ([-96, 9], [3, -2, -1]), ([-95, 3], [1, 1, 1, -1, -1])], [([-100, 7], [-2, 0, -2]), ([-99, 7], [-1, 0, -2]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-92, 7], [-1, 1, -2]), ([-92, 9], [-2, -1, -1]), ([-91, 3], [-1, 0, -1, 0, -1]), ([-91, 5], [-1, 2, 1, -1])], [([-100, 9], [-1, -2, -1]), ([-98, 5], [2, 0, 1, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-88, 9], [2, -1, -1]), ([-87, 3], [0, 1, -1, 0, -1]), ([-87, 5], [-2, -2, 2, -1]), ([-87, 7], [-3, 2, -2])], [([-99, 3], [0, 0, 1, -1, -1]), ([-97, 3], [-1, 1, 1, -1, -1]), ([-100, 3], [-1, 0, 1, -1, -1]), ([100, 9], [1, 2, 1]), ([-83, 3], [1, -1, 0, 0, -1]), ([-83, 5], [2, -2, 2, -1]), ([-83, 7], [1, 2, -2]), ([-83, 9], [-2, 0, -1])]]
for i, (args, expected) in enumerate(fixtures[N-1]):
    check("explicit oracle %d" % i, 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
explicit oracle 0[-1, 0, 1, -1, -1][-1, 0, 1, -1, -1]Passed
explicit oracle 1[1, 2, 1][1, 2, 1]Passed
explicit oracle 2[0, 0, 1, -1][0, 0, 1, -1]Passed
explicit oracle 3[-2, 0, -2][-2, 0, -2]Passed
explicit oracle 4[-1, -2, -1][-1, -2, -1]Passed
explicit oracle 5[0, 0, 1, -1, -1][0, 0, 1, -1, -1]Passed
explicit oracle 6[1, 0, 1, -1][1, 0, 1, -1]Passed
explicit oracle 7[-1, 0, -2][-1, 0, -2]Passed

SHA-256 / a3840837212030eab0dd89ebe18a97c99f80a2a6033135b6bfde29bcaf539489

Verification & scope

A deterministic bounded teaching model. Inputs are restricted to the explicit contract; this is not a production algebra library. 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:39:22.601131+00:00.

Case digest / f99db32f19a4acb788d89ce86b72d6b70a29f3b51fa96a82008b258866676db6