{"abstract":"Exact ratio conversion loses sign on integral outputs.","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 if power>=0: return [sign*mantissa,1] still violates the explicit regression fixtures.","family":"s3-floating_point_arithmetic-float-ratio-integer-sign","id":"FA-16641","implementations":{"attempt":{"sha256":"7cdc75f9b353100b6dfbbbdcd09f8305a2bfbe79f5c76ff5e82c87a2819f23e2","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,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":"393f663c8f2901ed419cbb89bcd60e66894acb6165fe448ba4b021069057d1f3","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 [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-integer-sign","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 loses sign on integral outputs. The faulty expression is if power>=0: return [mantissa<<power,1].","sha256":"3e625a35e8509c60ad8c105b2a22966b02734042c3d3782d7c5c1ece9c0e93bc","title":"Exact ratio conversion loses sign on integral outputs · 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":37.743,"exit_code":1,"observations":[{"actual":[4503599627370496,1],"check":"large integer","expected":[2305843009213693952,1],"passed":false},{"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"large integer\", \"actual\": [4503599627370496, 1], \"expected\": [2305843009213693952, 1], \"passed\": false}, {\"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\": false}\n"},"broken":{"elapsed_ms":39.899,"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":false},{"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":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\": false}, {\"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\": 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."}}