{"abstract":"Exact ratio conversion forgets the fraction binary point.","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.","contract_signature":"bits","evaluation_group":"s3-float-float-ratio","failed_approach":"The attempted local correction power=e-1023+52 still violates the explicit regression fixtures.","family":"s3-floating_point_arithmetic-float-ratio-binary-point","id":"FA-16616","implementations":{"attempt":{"sha256":"1dd520ab4fe13dba432f01335555225ad3fa2f926820404c70120115950d2b33","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"},"broken":{"sha256":"2773edc6019dae958b9e3070d802a8b4199e84c868dabe10d706ae69734f098e","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\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-binary-point","generated_at":"2026-09-29T14:39:38.341867+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.","root_cause":"Exact ratio conversion forgets the fraction binary point. The faulty expression is power=e-1023.","sha256":"006fd23f81f2e4c44af84c61f79e53c93d81583b93191bce00a3a32f711b3c60","title":"Exact ratio conversion forgets the fraction binary point · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.459,"exit_code":1,"observations":[{"actual":[46768052394588893382517914646921056628989841375232,1],"check":"large integer","expected":[2305843009213693952,1],"passed":false},{"actual":[40564819207303340847894502572032,1],"check":"positive integer","expected":[2,1],"passed":false},{"actual":[-40564819207303340847894502572032,1],"check":"negative integer","expected":[-2,1],"passed":false},{"actual":[10141204801825835211973625643008,1],"check":"fraction","expected":[1,2],"passed":false},{"actual":[15211807202738752817960438464512,1],"check":"nontrivial fraction","expected":[3,4],"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"large integer\", \"actual\": [46768052394588893382517914646921056628989841375232, 1], \"expected\": [2305843009213693952, 1], \"passed\": false}, {\"check\": \"positive integer\", \"actual\": [40564819207303340847894502572032, 1], \"expected\": [2, 1], \"passed\": false}, {\"check\": \"negative integer\", \"actual\": [-40564819207303340847894502572032, 1], \"expected\": [-2, 1], \"passed\": false}, {\"check\": \"fraction\", \"actual\": [10141204801825835211973625643008, 1], \"expected\": [1, 2], \"passed\": false}, {\"check\": \"nontrivial fraction\", \"actual\": [15211807202738752817960438464512, 1], \"expected\": [3, 4], \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":43.101,"exit_code":1,"observations":[{"actual":[10384593717069655257060992658440192,1],"check":"large integer","expected":[2305843009213693952,1],"passed":false},{"actual":[9007199254740992,1],"check":"positive integer","expected":[2,1],"passed":false},{"actual":[-9007199254740992,1],"check":"negative integer","expected":[-2,1],"passed":false},{"actual":[2251799813685248,1],"check":"fraction","expected":[1,2],"passed":false},{"actual":[3377699720527872,1],"check":"nontrivial fraction","expected":[3,4],"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"large integer\", \"actual\": [10384593717069655257060992658440192, 1], \"expected\": [2305843009213693952, 1], \"passed\": false}, {\"check\": \"positive integer\", \"actual\": [9007199254740992, 1], \"expected\": [2, 1], \"passed\": false}, {\"check\": \"negative integer\", \"actual\": [-9007199254740992, 1], \"expected\": [-2, 1], \"passed\": false}, {\"check\": \"fraction\", \"actual\": [2251799813685248, 1], \"expected\": [1, 2], \"passed\": false}, {\"check\": \"nontrivial fraction\", \"actual\": [3377699720527872, 1], \"expected\": [3, 4], \"passed\": false}, {\"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\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}