FA-15996 / Floating-point arithmetic / Open access
Overflow uses the largest finite value as its threshold · case 01
Overflow uses the largest finite value as its threshold.
ROOT CAUSE
Overflow uses the largest finite value as its threshold. The faulty expression is if x >= 240: return sign|120.
VERIFIED REPAIR
Apply the contract at this fault site using if x >= 248: return sign|120.
Unsuccessful approach: The attempted local correction if x >= 248: return sign|119 still violates the explicit regression fixtures.
Case contract
Encode finite exactly represented dyadic x into sign/4-bit-exponent/3-bit-fraction toy float with bias 7, gradual underflow, round-to-nearest-even and infinity overflow. Return the unsigned byte. The miniature format is stipulated, not a hardware conformance claim.
Why this case matters
An offline floating representation model isolates a reproducible arithmetic fault.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import struct
N = 1
observations = []
def solve(x):
sign=128 if math.copysign(1.0,x)<0 else 0
x=abs(x)
if x == 0: return sign
if x >= 240: return sign|120
if x < 2**-6:
q=round(x*512)
return sign|q
m,e=math.frexp(x)
e-=1
q=round(m*16)
if q == 16:
q=8
e+=1
if e>7: return sign|120
exponent=e+7
fraction=q-8
return sign|(exponent<<3)|fraction
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('zero', solve(0.0), 0)
check('negative zero', solve(-0.0), 128)
check('subnormal', solve(N/512), N)
check('negative subnormal', solve(-N/512), 128|N)
check('underflow tie', solve(1/1024), 0)
check('subnormal carry', solve(15/1024), 8)
check('normal varying', solve(2.0**N), (N+7)<<3)
check('normal fraction', solve((8+N)/8), 56+N)
check('binade carry', solve(1.9375), 64)
check('below midpoint', solve(1.90625), 63)
check('largest finite', solve(240.0), 119)
check('overflow tie', solve(248.0), 120)
check('negative overflow', solve(-256.0), 248)
check('minimum normal', solve(1/64), 8)
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 |
|---|---|---|---|
| zero | 0 | 0 | Passed |
| negative zero | 128 | 128 | Passed |
| subnormal | 1 | 1 | Passed |
| negative subnormal | 129 | 129 | Passed |
| underflow tie | 0 | 0 | Passed |
| subnormal carry | 8 | 8 | Passed |
| normal varying | 64 | 64 | Passed |
| normal fraction | 57 | 57 | Passed |
| binade carry | 64 | 64 | Passed |
| below midpoint | 63 | 63 | Passed |
| largest finite | 120 | 119 | Failed |
| overflow tie | 120 | 120 | Passed |
| negative overflow | 248 | 248 | Passed |
| minimum normal | 8 | 8 | Passed |
SHA-256 / 889c0a275954a1c74a081dff764b17dc9b7c84cfa7e35558ab352468998c1291
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
import math
import struct
N = 1
observations = []
def solve(x):
sign=128 if math.copysign(1.0,x)<0 else 0
x=abs(x)
if x == 0: return sign
if x >= 248: return sign|119
if x < 2**-6:
q=round(x*512)
return sign|q
m,e=math.frexp(x)
e-=1
q=round(m*16)
if q == 16:
q=8
e+=1
if e>7: return sign|120
exponent=e+7
fraction=q-8
return sign|(exponent<<3)|fraction
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('zero', solve(0.0), 0)
check('negative zero', solve(-0.0), 128)
check('subnormal', solve(N/512), N)
check('negative subnormal', solve(-N/512), 128|N)
check('underflow tie', solve(1/1024), 0)
check('subnormal carry', solve(15/1024), 8)
check('normal varying', solve(2.0**N), (N+7)<<3)
check('normal fraction', solve((8+N)/8), 56+N)
check('binade carry', solve(1.9375), 64)
check('below midpoint', solve(1.90625), 63)
check('largest finite', solve(240.0), 119)
check('overflow tie', solve(248.0), 120)
check('negative overflow', solve(-256.0), 248)
check('minimum normal', solve(1/64), 8)
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 |
|---|---|---|---|
| zero | 0 | 0 | Passed |
| negative zero | 128 | 128 | Passed |
| subnormal | 1 | 1 | Passed |
| negative subnormal | 129 | 129 | Passed |
| underflow tie | 0 | 0 | Passed |
| subnormal carry | 8 | 8 | Passed |
| normal varying | 64 | 64 | Passed |
| normal fraction | 57 | 57 | Passed |
| binade carry | 64 | 64 | Passed |
| below midpoint | 63 | 63 | Passed |
| largest finite | 119 | 119 | Passed |
| overflow tie | 119 | 120 | Failed |
| negative overflow | 247 | 248 | Failed |
| minimum normal | 8 | 8 | Passed |
SHA-256 / 82b3645fb13f0e54c84802ca288686e5e315cde8ab92fdd0822d93e79406a52c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
import math
import struct
N = 1
observations = []
def solve(x):
sign=128 if math.copysign(1.0,x)<0 else 0
x=abs(x)
if x == 0: return sign
if x >= 248: return sign|120
if x < 2**-6:
q=round(x*512)
return sign|q
m,e=math.frexp(x)
e-=1
q=round(m*16)
if q == 16:
q=8
e+=1
if e>7: return sign|120
exponent=e+7
fraction=q-8
return sign|(exponent<<3)|fraction
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('zero', solve(0.0), 0)
check('negative zero', solve(-0.0), 128)
check('subnormal', solve(N/512), N)
check('negative subnormal', solve(-N/512), 128|N)
check('underflow tie', solve(1/1024), 0)
check('subnormal carry', solve(15/1024), 8)
check('normal varying', solve(2.0**N), (N+7)<<3)
check('normal fraction', solve((8+N)/8), 56+N)
check('binade carry', solve(1.9375), 64)
check('below midpoint', solve(1.90625), 63)
check('largest finite', solve(240.0), 119)
check('overflow tie', solve(248.0), 120)
check('negative overflow', solve(-256.0), 248)
check('minimum normal', solve(1/64), 8)
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 |
|---|---|---|---|
| zero | 0 | 0 | Passed |
| negative zero | 128 | 128 | Passed |
| subnormal | 1 | 1 | Passed |
| negative subnormal | 129 | 129 | Passed |
| underflow tie | 0 | 0 | Passed |
| subnormal carry | 8 | 8 | Passed |
| normal varying | 64 | 64 | Passed |
| normal fraction | 57 | 57 | Passed |
| binade carry | 64 | 64 | Passed |
| below midpoint | 63 | 63 | Passed |
| largest finite | 119 | 119 | Passed |
| overflow tie | 120 | 120 | Passed |
| negative overflow | 248 | 248 | Passed |
| minimum normal | 8 | 8 | Passed |
SHA-256 / a4885c1da227084f5313862887aa4cd62946fb499325336c2d369be5452b6fec
Verification & scope
Controlled binary64 or explicitly stipulated miniature format; no hardware exception flags or platform floating environment are modeled. 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:32.100182+00:00.
Case digest / c3b35af3de51e44739c9647b146432c897864f83985a7f2d96a15aa7e1175dda