{"abstract":"Exact ratio conversion returns a zero denominator for zero.","category":"Floating-point arithmetic","checks":11,"contract":"Decode a finite binary64 value into its exact reduced signed numerator and positive power-of-two denominator, using (0,1) for either zero. Infinity and NaN return null.","evaluation_group":"s3-float-float-ratio","failed_approach":"The attempted local correction if mantissa==0: return [sign,1] still violates the explicit regression fixtures.","family":"s3-floating_point_arithmetic-float-ratio-zero-ratio","id":"FA-16626","implementations":{"attempt":{"sha256":"90ee0b5f5905d32422b9b4e87b7e8a8bb045ec5f454b953fd913a546094c446b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport struct\nN = 1\nobservations = []\ndef solve(bits):\n    sign=-1 if bits>>63 else 1\n    e=(bits>>52)&2047\n    f=bits&((1<<52)-1)\n    if e==2047: return None\n    if e:\n        mantissa=f|(1<<52)\n        power=e-1023-52\n    else:\n        mantissa=f\n        power=-1074\n    if mantissa==0: return [sign,1]\n    while power<0 and mantissa%2==0:\n        mantissa//=2\n        power+=1\n    if power>=0: return [sign*(mantissa<<power),1]\n    return [sign*mantissa,1<<(-power)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('large integer', solve((1023+60+N)<<52), [1<<(60+N),1])\ncheck('positive integer', solve((1023+N)<<52), [1<<N,1])\ncheck('negative integer', solve((1<<63)|((1023+N)<<52)), [-(1<<N),1])\ncheck('fraction', solve(0x3fe0000000000000), [1,2])\ncheck('nontrivial fraction', solve(0x3fe8000000000000), [3,4])\ncheck('minimum subnormal', solve(N), list(math.ldexp(float(N),-1074).as_integer_ratio()))\ncheck('negative subnormal', solve((1<<63)|N), list((-math.ldexp(float(N),-1074)).as_integer_ratio()))\ncheck('zero', solve(0), [0,1])\ncheck('negative zero', solve(1<<63), [0,1])\ncheck('infinity', solve(0x7ff0000000000000), None)\ncheck('nan', solve(0x7ff8000000000000|N), None)\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":"b47ff251ca176b094f9eaa1d75a37e3f3a0ae06cf3f36af4a1c55b491b9c2b70","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport struct\nN = 1\nobservations = []\ndef solve(bits):\n    sign=-1 if bits>>63 else 1\n    e=(bits>>52)&2047\n    f=bits&((1<<52)-1)\n    if e==2047: return None\n    if e:\n        mantissa=f|(1<<52)\n        power=e-1023-52\n    else:\n        mantissa=f\n        power=-1074\n    if mantissa==0: return [0,0]\n    while power<0 and mantissa%2==0:\n        mantissa//=2\n        power+=1\n    if power>=0: return [sign*(mantissa<<power),1]\n    return [sign*mantissa,1<<(-power)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('large integer', solve((1023+60+N)<<52), [1<<(60+N),1])\ncheck('positive integer', solve((1023+N)<<52), [1<<N,1])\ncheck('negative integer', solve((1<<63)|((1023+N)<<52)), [-(1<<N),1])\ncheck('fraction', solve(0x3fe0000000000000), [1,2])\ncheck('nontrivial fraction', solve(0x3fe8000000000000), [3,4])\ncheck('minimum subnormal', solve(N), list(math.ldexp(float(N),-1074).as_integer_ratio()))\ncheck('negative subnormal', solve((1<<63)|N), list((-math.ldexp(float(N),-1074)).as_integer_ratio()))\ncheck('zero', solve(0), [0,1])\ncheck('negative zero', solve(1<<63), [0,1])\ncheck('infinity', solve(0x7ff0000000000000), None)\ncheck('nan', solve(0x7ff8000000000000|N), None)\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":"232c5cccac878943ca1770bff8d7a21afb5af3860d3181aefa1b46f6590a6293","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport math\nimport struct\nN = 1\nobservations = []\ndef solve(bits):\n    sign=-1 if bits>>63 else 1\n    e=(bits>>52)&2047\n    f=bits&((1<<52)-1)\n    if e==2047: return None\n    if e:\n        mantissa=f|(1<<52)\n        power=e-1023-52\n    else:\n        mantissa=f\n        power=-1074\n    if mantissa==0: return [0,1]\n    while power<0 and mantissa%2==0:\n        mantissa//=2\n        power+=1\n    if power>=0: return [sign*(mantissa<<power),1]\n    return [sign*mantissa,1<<(-power)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('large integer', solve((1023+60+N)<<52), [1<<(60+N),1])\ncheck('positive integer', solve((1023+N)<<52), [1<<N,1])\ncheck('negative integer', solve((1<<63)|((1023+N)<<52)), [-(1<<N),1])\ncheck('fraction', solve(0x3fe0000000000000), [1,2])\ncheck('nontrivial fraction', solve(0x3fe8000000000000), [3,4])\ncheck('minimum subnormal', solve(N), list(math.ldexp(float(N),-1074).as_integer_ratio()))\ncheck('negative subnormal', solve((1<<63)|N), list((-math.ldexp(float(N),-1074)).as_integer_ratio()))\ncheck('zero', solve(0), [0,1])\ncheck('negative zero', solve(1<<63), [0,1])\ncheck('infinity', solve(0x7ff0000000000000), None)\ncheck('nan', solve(0x7ff8000000000000|N), None)\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":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-floating_point_arithmetic-float-ratio-zero-ratio","generated_at":"2026-09-29T14:39:38.035604+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"An offline floating representation model isolates a reproducible arithmetic fault.","repair":"Apply the contract at this fault site using if mantissa==0: return [0,1].","root_cause":"Exact ratio conversion returns a zero denominator for zero. The faulty expression is if mantissa==0: return [0,0].","sha256":"5819e7c250379bb3cae062744d2a51325b2208128fec00e47f5ffa173d493792","title":"Exact ratio conversion returns a zero denominator for zero · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.592,"exit_code":1,"observations":[{"actual":[2305843009213693952,1],"check":"large integer","expected":[2305843009213693952,1],"passed":true},{"actual":[2,1],"check":"positive integer","expected":[2,1],"passed":true},{"actual":[-2,1],"check":"negative integer","expected":[-2,1],"passed":true},{"actual":[1,2],"check":"fraction","expected":[1,2],"passed":true},{"actual":[3,4],"check":"nontrivial fraction","expected":[3,4],"passed":true},{"actual":[1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"check":"minimum subnormal","expected":[1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"passed":true},{"actual":[-1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"check":"negative subnormal","expected":[-1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"passed":true},{"actual":[1,1],"check":"zero","expected":[0,1],"passed":false},{"actual":[-1,1],"check":"negative zero","expected":[0,1],"passed":false},{"actual":null,"check":"infinity","expected":null,"passed":true},{"actual":null,"check":"nan","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"large integer\", \"actual\": [2305843009213693952, 1], \"expected\": [2305843009213693952, 1], \"passed\": true}, {\"check\": \"positive integer\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"negative integer\", \"actual\": [-2, 1], \"expected\": [-2, 1], \"passed\": true}, {\"check\": \"fraction\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"nontrivial fraction\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"minimum subnormal\", \"actual\": [1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"expected\": [1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"passed\": true}, {\"check\": \"negative subnormal\", \"actual\": [-1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"expected\": [-1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"passed\": true}, {\"check\": \"zero\", \"actual\": [1, 1], \"expected\": [0, 1], \"passed\": false}, {\"check\": \"negative zero\", \"actual\": [-1, 1], \"expected\": [0, 1], \"passed\": false}, {\"check\": \"infinity\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"nan\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.81,"exit_code":1,"observations":[{"actual":[2305843009213693952,1],"check":"large integer","expected":[2305843009213693952,1],"passed":true},{"actual":[2,1],"check":"positive integer","expected":[2,1],"passed":true},{"actual":[-2,1],"check":"negative integer","expected":[-2,1],"passed":true},{"actual":[1,2],"check":"fraction","expected":[1,2],"passed":true},{"actual":[3,4],"check":"nontrivial fraction","expected":[3,4],"passed":true},{"actual":[1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"check":"minimum subnormal","expected":[1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"passed":true},{"actual":[-1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"check":"negative subnormal","expected":[-1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"passed":true},{"actual":[0,0],"check":"zero","expected":[0,1],"passed":false},{"actual":[0,0],"check":"negative zero","expected":[0,1],"passed":false},{"actual":null,"check":"infinity","expected":null,"passed":true},{"actual":null,"check":"nan","expected":null,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"large integer\", \"actual\": [2305843009213693952, 1], \"expected\": [2305843009213693952, 1], \"passed\": true}, {\"check\": \"positive integer\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"negative integer\", \"actual\": [-2, 1], \"expected\": [-2, 1], \"passed\": true}, {\"check\": \"fraction\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"nontrivial fraction\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"minimum subnormal\", \"actual\": [1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"expected\": [1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"passed\": true}, {\"check\": \"negative subnormal\", \"actual\": [-1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"expected\": [-1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"passed\": true}, {\"check\": \"zero\", \"actual\": [0, 0], \"expected\": [0, 1], \"passed\": false}, {\"check\": \"negative zero\", \"actual\": [0, 0], \"expected\": [0, 1], \"passed\": false}, {\"check\": \"infinity\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"nan\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.348,"exit_code":0,"observations":[{"actual":[2305843009213693952,1],"check":"large integer","expected":[2305843009213693952,1],"passed":true},{"actual":[2,1],"check":"positive integer","expected":[2,1],"passed":true},{"actual":[-2,1],"check":"negative integer","expected":[-2,1],"passed":true},{"actual":[1,2],"check":"fraction","expected":[1,2],"passed":true},{"actual":[3,4],"check":"nontrivial fraction","expected":[3,4],"passed":true},{"actual":[1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"check":"minimum subnormal","expected":[1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"passed":true},{"actual":[-1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"check":"negative subnormal","expected":[-1,202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784],"passed":true},{"actual":[0,1],"check":"zero","expected":[0,1],"passed":true},{"actual":[0,1],"check":"negative zero","expected":[0,1],"passed":true},{"actual":null,"check":"infinity","expected":null,"passed":true},{"actual":null,"check":"nan","expected":null,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"large integer\", \"actual\": [2305843009213693952, 1], \"expected\": [2305843009213693952, 1], \"passed\": true}, {\"check\": \"positive integer\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"negative integer\", \"actual\": [-2, 1], \"expected\": [-2, 1], \"passed\": true}, {\"check\": \"fraction\", \"actual\": [1, 2], \"expected\": [1, 2], \"passed\": true}, {\"check\": \"nontrivial fraction\", \"actual\": [3, 4], \"expected\": [3, 4], \"passed\": true}, {\"check\": \"minimum subnormal\", \"actual\": [1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"expected\": [1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"passed\": true}, {\"check\": \"negative subnormal\", \"actual\": [-1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"expected\": [-1, 202402253307310618352495346718917307049556649764142118356901358027430339567995346891960383701437124495187077864316811911389808737385793476867013399940738509921517424276566361364466907742093216341239767678472745068562007483424692698618103355649159556340810056512358769552333414615230502532186327508646006263307707741093494784], \"passed\": true}, {\"check\": \"zero\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}, {\"check\": \"negative zero\", \"actual\": [0, 1], \"expected\": [0, 1], \"passed\": true}, {\"check\": \"infinity\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"nan\", \"actual\": null, \"expected\": null, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}