diff --git a/ERRATA_2026-06-14.md b/ERRATA_2026-06-14.md index 71a1d39932..a15d85b0cb 100644 --- a/ERRATA_2026-06-14.md +++ b/ERRATA_2026-06-14.md @@ -157,3 +157,59 @@ number, which is what lets the two drift. The gate warns rather than fails on that axis by design, and this amendment is the second time the warning has been acted on. The recommendation from 2026-06-14 stands: quote the live SSOT count with the commit that produced it, not a number frozen into a title. + +--- + +# Amendment 2 -- 2026-08-09: 92 -> 109, and why the count moved twice in one day + +Amendment 1 set the count at 92 after a whole family, the ternary-exponent ladder, +turned out to have zero rows. It moved again the same day, and the reason is the +opposite of a miscount: **two families were conflated into one.** + +The ladder was renamed twice on 2026-08-09 -- GF-T to TEF, then TEF to TNF -- on +the assumption that these were the same object under successive names. They are +not. **GF-T and TNF are different families on different rules**, and a control +family, **BNF**, was then added to measure what separates them. + +Four families on two axes: + +| | phi-derived | theorem-derived | +|---|---|---| +| binary | GF | **BNF** (new) | +| ternary | **GF-T** (restored) | TNF | + +GF-T carries a mantissa from the phi lineage and leaves positions unspent -- 2 at +16 bits, 4 at 64 through 512, 6 at 1024. TNF derives its mantissa from the width +rule and spends every position. By the precision law the difference is exactly +2^k, and the reference oracle confirms it at 4.03x, 15.43x, 15.99x and 15.24x +against predictions of 4, 16, 16 and 16. + +BNF differs from TNF in exactly one thing -- the radix the exponent field is +encoded in -- so the pair measures the ternary encoding rather than asserting it. + +**Canonical count going forward: 109.** 84, 83 and 92 are superseded. + +## Cluster breakdown at 109 + +| Cluster | Count | +|---|---| +| GoldenFloat | 48 | +| HistoricalVendor | 10 | +| PositUnumIII | 8 | +| IntegerFixed | 8 | +| MlLowPrecision | 7 | +| Ieee754Binary | 5 | +| Lns | 4 | +| Theoretical | 4 | +| CompressionTrick | 4 | +| Ieee754Decimal | 3 | +| ExtendedFloat | 3 | +| Microscaling | 3 | +| QuantTuned | 2 | +| **TOTAL** | **109** | + +## What did not change + +No conformance pack, SHA-256 or bit-exact vector from the 92 is affected. GF-T's +nine rungs are restored with their historical parameters, exactly as they were +before the rename; BNF's eight are new. diff --git a/conformance/vectors/INDEX_all_formats.json b/conformance/vectors/INDEX_all_formats.json index e8dda47ae7..bd4ddfc0e7 100644 --- a/conformance/vectors/INDEX_all_formats.json +++ b/conformance/vectors/INDEX_all_formats.json @@ -1,825 +1,987 @@ { - "schema": "t27-conformance-index/v0.1", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", - "preprint": "https://arxiv.org/abs/2606.05017", - "total_formats": 92, - "total_packs": 92, - "bitexact_packs": 84, - "selfconsistent_packs": 0, - "structural_packs": 8, - "witnessed_packs": 10, - "packs": [ - { - "id": "afp", - "file": "afp_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "384a16af29fe5305d07a2eb07f9056cf0b6fe0d97b83eb3f04fcba90f2397f32", - "witnesses": 0 - }, - { - "id": "bcd", - "file": "bcd_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "637912a0b8d1a4a1e5a50ddafa2c6dbc8e44c7e96218fb8c70763bc69de505cb", - "witnesses": 3 - }, - { - "id": "bfloat16", - "file": "bf16_golden_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "98bbddcbb8a520dc45a6dfed7209c50a0acc0fabc4d3b430359969467eee4e13", - "witnesses": 0 - }, - { - "id": "binary128", - "file": "binary128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "9d08a8a6a10f94e875f73e5f44643f088435a570bfafaef9991464d5377b26e0", - "witnesses": 0 - }, - { - "id": "binary16", - "file": "binary16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "84fd7629430b06d761ac3b92fc85208c472a4582040b1ac2001cc87a6612f7b4", - "witnesses": 0 - }, - { - "id": "binary256", - "file": "binary256_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "43d39ae4c4808276ba1ed5b2d8c221c17983a53570da2fc161996b0f7ea3aee3", - "witnesses": 0 - }, - { - "id": "binary32", - "file": "binary32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "9dc16a1c3b65b7f7a5d59c546886ed12e99fb37cbfc9f3d5d45813921e6a70ff", - "witnesses": 0 - }, - { - "id": "binary64", - "file": "binary64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "1d3e3d6daee576ae3b2b4dca6f26560390535fb7441a54b389f98a4238e58bec", - "witnesses": 0 - }, - { - "id": "block_fp", - "file": "block_fp_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "3129fa92145096e55527c2fc22d9e6bed23db1a6d88148e8b711a3b6641a43c1", - "witnesses": 0 - }, - { - "id": "cray_float", - "file": "cray_float_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "b1a8f6652112be3f49949bafe9f6cd7f46f0271e8f4e19cadb55c2a0e972f503", - "witnesses": 0 - }, - { - "id": "decimal128", - "file": "decimal128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "84dbc594340717415385b3bd86eb20432f5430aba047557579f2e2a96de0dc2d", - "witnesses": 0 - }, - { - "id": "decimal32", - "file": "decimal32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "e13bc9cd6bc33545ab55f575e23d2343418ded5eddf1395b61f31321dc7d272e", - "witnesses": 0 - }, - { - "id": "decimal64", - "file": "decimal64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "fedef68cfe1b910e737574bbe331dc19fbe1724edbd35ec8beac89b1595bea0d", - "witnesses": 0 - }, - { - "id": "double_double", - "file": "double_double_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "f8dc9608093afada65df94852a9b78c3a4a5466415389c5ec359afd19d3b208c", - "witnesses": 0 - }, - { - "id": "fp4_e2m1", - "file": "fp4_e2m1_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "8ded6625c4644139320dd89b2b7815d6ba27177c35b7d645b2d93b8cfdc63fd9", - "witnesses": 0 - }, - { - "id": "fp6_e2m3", - "file": "fp6_e2m3_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "de70d6aacf0ac2d47decae0866d14f126058176428315d4c767e460c0a9ae5e5", - "witnesses": 0 - }, - { - "id": "fp6_e3m2", - "file": "fp6_e3m2_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "17a80f0a3b5b2495dbcd6de6062d8c1f8ce19b9746d1e370e6d16897ef5f9c02", - "witnesses": 0 - }, - { - "id": "fp8_e4m3", - "file": "fp8_e4m3fn_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "7193ccd0d330d3e05154432abcec5da4a4c170e11004d4ffa44ff5cbbff9cba9", - "witnesses": 0 - }, - { - "id": "fp8_e5m2", - "file": "fp8_e5m2_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "9c31fbd03923bd6555304848a092504dfbc02f72d2be82d2b80f49243e925a18", - "witnesses": 0 - }, - { - "id": "gf10", - "file": "gf10_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "af62499491faf340d7940b0b10ab0208745e57faa97bbe19588fe1d879db485b", - "witnesses": 0 - }, - { - "id": "gf1024", - "file": "gf1024_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 15, - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf1024 paired PR)", - "sha256": "1e1613e3e1d1a11deae5c99408a2581244c2cb98c203d429b24247905d188df4", - "witnesses": 3 - }, - { - "id": "gf12", - "file": "gf12_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "ea00efde4825931a421ec9feb5910f3ad9ab7ab5d38a77d2c364ea9fa49a7f96", - "witnesses": 0 - }, - { - "id": "gf128", - "file": "gf128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 15, - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf128 PR)", - "sha256": "cda05a8e608038f3ebb53757ecbe0f78a650f959cf34a54b0cf26d80730e54d3", - "witnesses": 3 - }, - { - "id": "gf14", - "file": "gf14_conformance_v0.json", - "kind": "bitexact", - "source": "pre-existing pack + recorded independent witness", - "n_vectors": 14, - "sha256": "e2364f36a4cb5812b81d2f8f4253688b4d269201463c8481e18568438114a718", - "witnesses": 1 - }, - { - "id": "gf16", - "file": "gf16_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "d1c0eb5bd66247b3c5db9a00a95e29cf4359653aec56f2f9e6827f96898d1509", - "witnesses": 0 - }, - { - "id": "gf20", - "file": "gf20_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "76c7814558901d5633cb16ffead7468583de5577c4ccf0378c296c73ae08acc5", - "witnesses": 0 - }, - { - "id": "gf24", - "file": "gf24_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "983642c7aea54b7e6c5b6e41edcf20828bfc3a1f2707307eaa713ca5a45e612c", - "witnesses": 0 - }, - { - "id": "gf256", - "file": "gf256_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 2021, - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; bias audit resolved decode-bias=2^96-1 closed form; gf256 promote PR)", - "sha256": "f504258daa4c537ff11a9863814470dd0731ab8cca988093d72e83c221c425f1", - "witnesses": 3 - }, - { - "id": "gf32", - "file": "gf32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "f7222e2442f2c106e7f3590e5dbe8ed177603fc2324560987af138ae9abeceb4", - "witnesses": 0 - }, - { - "id": "gf4", - "file": "gf4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "25471b7a0e3dc3633118191e722ced2f450a3ed8a6228ad2492f92084f556f96", - "witnesses": 0 - }, - { - "id": "gf48", - "file": "gf48_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 15, - "source": "wide-rung GoldenFloat oracle promoted to strict bitexact by an independent second decoder (gf_wide_independent_witness.py, dyadic-exact, abs_error=0) + golden Fraction oracle + FP64 RTL bit-model (224255/224255)", - "sha256": "d9928025d21fa0e0f0c02904d9a3e20f5f12a7811b57fa474e8a325ded43e91a", - "witnesses": 3 - }, - { - "id": "gf512", - "file": "gf512_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 15, - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf512 paired PR)", - "sha256": "08d32005ba118c4d0d4a61cb47e074ffd7131a41ca84d4debcac4ebfdfcef9cd", - "witnesses": 3 - }, - { - "id": "gf6", - "file": "gf6_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "9c9fc955db5f6c9b185bdd5d88bd92f3f21a71ad4d784b944330d5cba85fb724", - "witnesses": 0 - }, - { - "id": "gf64", - "file": "gf64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "887223d0bc8b00d76b70238ddbc8933e3a773ed6a9fbc10264d9fdbebca76cd3", - "witnesses": 0 - }, - { - "id": "gf8", - "file": "gf8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "6dccbc6628cbc051e06a006a0731499970c1d99e65fc0d42d9007d8f0ed1402d", - "witnesses": 0 - }, - { - "id": "gf8_bfp", - "file": "gf8_bfp_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "fe600234cab0e589b69d84e673d74729cff153f9e4e63e871e285fa82ad2cc70", - "witnesses": 0 - }, - { - "id": "gf96", - "file": "gf96_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 15, - "source": "wide-rung GoldenFloat exact-dyadic pack promoted to strict bitexact by an analytic zero-rounding separation-bound + two structurally independent exact decoders (dyadic gf_wide_independent_witness.py + Fraction oracle gf96_decode_ref.py), 15/15 abs_error=0, 201512-code cross-check", - "sha256": "43127e758d653d26640d38801d42d4daf36fdc70df66a63aadac6a8ce06159fa", - "witnesses": 3 - }, - { - "id": "gf_lns_hybrid", - "file": "gf_lns_hybrid_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "eb7c946281fb6ed6fadd9c63c7e7fa186412480910c9fedcb25fbc056c1bd34a", - "witnesses": 0 - }, - { - "id": "gfternary", - "file": "gfternary_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 4, - "source": "generated by gen_all_formats.py", - "sha256": "9f246d24511fbff6fb9e83e60e1bedfce401052537f7c8929fe205d0f6e57b81", - "witnesses": 0 - }, - { - "id": "ibm_hfp128", - "file": "ibm_hfp128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "2f02899d621a8a7aebfdf2a69a2484d7616c61ac7cebdc483f643e8109c4e31f", - "witnesses": 0 - }, - { - "id": "ibm_hfp32", - "file": "ibm_hfp32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "8e35040e30d3a0091ecca5fdb08d1dd1ce98031e5d655239c7196bc667fc3876", - "witnesses": 0 - }, - { - "id": "ibm_hfp64", - "file": "ibm_hfp64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "fbe42a167c13f226fe8eaf876c9e17109fb32dbddd76d3a677cc0b9aef2626a1", - "witnesses": 0 - }, - { - "id": "int128", - "file": "int128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "df77519366e4c59888dcfafa66c20db4389e162f7dae96767684f46d8427d9fc", - "witnesses": 0 - }, - { - "id": "int16", - "file": "int16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "a14f51cd6b29bef2215573bc7f1d299559d5d34af36fd0ffceb513f0659765b9", - "witnesses": 0 - }, - { - "id": "int32", - "file": "int32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "e7f8ddbc4f8606a83febb5c8836f38a143c28f650d73330af5650ea698d91570", - "witnesses": 0 - }, - { - "id": "int4", - "file": "int4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "ec35d81224f9635c21b53165e123d1b6b0ed13ad3c1d7ec830e018df22c46ad1", - "witnesses": 0 - }, - { - "id": "int64", - "file": "int64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "15e7ae6bd373de5b4f755c71877d6bb662c241526f3a5f4ead22307764f754f5", - "witnesses": 0 - }, - { - "id": "int8", - "file": "int8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "3e7358f28f5d242e24a46fcf0359e24e21bb4f54834e88b38235fc6332e86978", - "witnesses": 0 - }, - { - "id": "lns16", - "file": "lns16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 5, - "source": "generated by gen_all_formats.py", - "sha256": "0b4b9d4ce2162e079239aa05e742c7f699453b96f6a8abd90c17bca95d88eff6", - "witnesses": 0 - }, - { - "id": "lns32", - "file": "lns32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 5, - "source": "generated by gen_all_formats.py", - "sha256": "7877795b137b599bafb64e8c4b114e128a2ef5af433db222b2875e0df6919872", - "witnesses": 0 - }, - { - "id": "lns64", - "file": "lns64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 5, - "source": "generated by gen_all_formats.py", - "sha256": "9969a97f62be45bc120cc2310b5be5c0e6c83d3151a51d6fbb5173db54581ec0", - "witnesses": 0 - }, - { - "id": "lns8", - "file": "lns8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "1cb3ca966b7564b15d6b64b37efb4548fa4b6ff26686576cf5da9ac7657379b8", - "witnesses": 0 - }, - { - "id": "minifloat", - "file": "minifloat_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "d42d1d167c5aa9f504de5ca9ebc04cbd863ff5ebb300fbcb09306413d7b334c3", - "witnesses": 0 - }, - { - "id": "ms_mbf32", - "file": "ms_mbf32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "260382da8c40576d046d6d044753522e1c3730e55a4712f21e91b21ad918c365", - "witnesses": 0 - }, - { - "id": "ms_mbf64", - "file": "ms_mbf64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "8d750f03d47a4113548a5e57be2201d4b7f5689143b3605a9a51a60b49988ec9", - "witnesses": 0 - }, - { - "id": "mxfp4", - "file": "mxfp4_e2m1_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "b5795fed0c0f2b580174b443d2c54519c4953916525237bb7ea7d6831f14fde7", - "witnesses": 0 - }, - { - "id": "mxfp6", - "file": "mxfp6_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "3db420779597b673a691d409b1fc11aee8168549c55be1c8ebfb70dc8330e0c7", - "witnesses": 0 - }, - { - "id": "mxfp8", - "file": "mxfp8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "16eedca7e82c4e6753f8248dce0000ba9a50ba09bab9be747b0dcac3efc21b6b", - "witnesses": 0 - }, - { - "id": "mxgf4", - "file": "mxgf4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "5e8d03fe80c59b458dc4bbd3fba3213dbc00626d8bc73b2cfcc09836539e89fb", - "witnesses": 0 - }, - { - "id": "mxgf6", - "file": "mxgf6_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "9d77d8be5522942e9276b723915b3223123b7741a076a1bfd819cc73ab29f1ec", - "witnesses": 0 - }, - { - "id": "nf4", - "file": "nf4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "723ddd4237153c7c0cc6a9c3436ba071f8affcef8ad0c384070a3e1a3bf13f45", - "witnesses": 0 - }, - { - "id": "per_channel_scale", - "file": "per_channel_scale_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "d60b7dacff5f609455f5f0da2011ac6ab6f276097d6a21f477d21be82c8457e5", - "witnesses": 0 - }, - { - "id": "posit16", - "file": "posit16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "7cc2edfeb0f52769b1a536dcbe04945a301cdcc3799a23267380b0c4fb0b82d5", - "witnesses": 0 - }, - { - "id": "posit32", - "file": "posit32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "aee6cc72691a0ae211e39bf6315ac68a5fe74e87190e0c27088871c6ccc87f52", - "witnesses": 0 - }, - { - "id": "posit64", - "file": "posit64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "66b14056938549c1aaa522097ee8744246581cf6d3bb6002cef3b2f3f6ea0ff6", - "witnesses": 0 - }, - { - "id": "posit8", - "file": "posit8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "0c638ef95b6537e4dc0e256dc1ca2d9363152b3d5a800501472230ce98a84b76", - "witnesses": 0 - }, - { - "id": "q_format", - "file": "q_format_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "2bc0c114aecd1d0dbfa7925efe298cea80efd510022ee0734cf9450af8027b63", - "witnesses": 0 - }, - { - "id": "quad_double", - "file": "quad_double_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "62ef8067fd1d70ef0abac77d4b0252a3686b9cd698ee4806e0bc1e01bcfe7cfa", - "witnesses": 0 - }, - { - "id": "shared_exp", - "file": "shared_exp_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "ca139ebd7bc5c139357c533bb0a6509e4edd05044d7869fcea57cf34d052c3c7", - "witnesses": 0 - }, - { - "id": "stochastic_rounding", - "file": "stochastic_rounding_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "fc2a0a6dcce7bbb0eccc1e23ebdacb9abbd81cd54111796be6dc7e6a87a2071a", - "witnesses": 0 - }, - { - "id": "takum16", - "file": "takum16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 3, - "source": "generated by gen_all_formats.py", - "sha256": "924a2e5626df001d2780f542f5aff0c0152a8c819f35866dce2e2152409c1a11", - "witnesses": 0 - }, - { - "id": "takum32", - "file": "takum32_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "c5b034ff12169e921ce3a9411a0317ccd85003dde6c71c8461ced3fd73b3c80f", - "witnesses": 4 - }, - { - "id": "takum64", - "file": "takum64_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "1c4fc6d0579626ed364e9044aa455df4f1a1984b8b14cd370004498d86f73a0c", - "witnesses": 4 - }, - { - "id": "takum8", - "file": "takum8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "e81b280fbd1a30381c169760b24b5686db82eff8debcc5412cb43d1a0be9a05f", - "witnesses": 0 - }, - { - "id": "tapered_fp", - "file": "tapered_fp_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "e20d828fda7d3d6b86d047b390fae2964622b83fb8200220f5a4283bc5ae2b4b", - "witnesses": 0 - }, - { - "id": "tef1024", - "file": "tef1024_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "a8cf707ee4dfab432287f6a7e7a7bb7c07054d9729606b23cc3658318bb0ca31" - }, - { - "id": "tef128", - "file": "tef128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "df4b8956e7ed1977eb4baefb8f790d54b73bf370142e09f2ed7032d9b742709b" - }, - { - "id": "tef16", - "file": "tef16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "regenerated at M=11 from conformance/gft_ref.py", - "sha256": "57944f2a2bc54573d49210f644076233c7e31421d04a8288260eb3a98625f135" - }, - { - "id": "tef256", - "file": "tef256_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "8a1b04d9a393b547de91b00c2ea533f43266eaf458be21840798a7c557fadf8f" - }, - { - "id": "tef32", - "file": "tef32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "49989871fd377e2ba6e9c9c577ef21b8764d5c79091246eb4f6ed74bd79aab80" - }, - { - "id": "tef4", - "file": "tef4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "2d7d3832be8c23388e90baa9ca1f15e07a4641f247a7414b0047284a805251da" - }, - { - "id": "tef512", - "file": "tef512_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "202496c6f573d79a10a256b18c83d2ada45a6e8f044dfe6fefa1a73998d6cb1e" - }, - { - "id": "tef64", - "file": "tef64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "ca7e8c6d05207009cf13f63628bfc45c4be9bf2f90abcfe1dc10a1d14450c48c" - }, - { - "id": "tef8", - "file": "tef8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 22, - "source": "generated from conformance/gft_ref.py (round-trip verified 90/90)", - "sha256": "5509c7570c5395eed0a91b694a6cdc2a62501e00f938449ba72e1cc7a721fe0c" - }, - { - "id": "tf32", - "file": "tf32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "b35c334092b49dad9a944d37a91697f08f442b633142e81c69296c12bac0055d", - "witnesses": 0 - }, - { - "id": "unum_i", - "file": "unum_i_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "2b28ce1eca1f39623122fbdd853945d05c73adc47e132c250e6ccb56217d689b", - "witnesses": 0 - }, - { - "id": "unum_ii", - "file": "unum_ii_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "a79c4cdca84fc702a4ce25fd36040912f841dc9d75f35476e78dbbdfc6fb12f8", - "witnesses": 0 - }, - { - "id": "vax_d", - "file": "vax_d_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "b87494ddee38fe68f77dd8082e8a9811530cc346526b80e59c81b17665677792", - "witnesses": 0 - }, - { - "id": "vax_f", - "file": "vax_f_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "a7f45aec8da42931da5ad9f24c3ee369419ec58a783abe657a275210ae9b1e4d", - "witnesses": 0 - }, - { - "id": "vax_g", - "file": "vax_g_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "9a6372bbf85a50457e0b66db8849845333582e3fef28934047963e89dd95e65a", - "witnesses": 0 - }, - { - "id": "vax_h", - "file": "vax_h_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "eaaa44e4ce2e5454da2cc83571bf3261a84a1b6fabb0dc8064c04cd71fa581f0", - "witnesses": 0 - }, - { - "id": "x87_fp80", - "file": "x87_fp80_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "e9be37c939c7108081bd2190e949f4d01be7ad12511d82bb8849f337c94e7e0c", - "witnesses": 0 - } - ] -} + "schema": "t27-conformance-index/v0.1", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "total_formats": 109, + "total_packs": 109, + "bitexact_packs": 89, + "selfconsistent_packs": 0, + "structural_packs": 20, + "witnessed_packs": 10, + "packs": [ + { + "id": "binary16", + "file": "binary16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "84fd7629430b06d761ac3b92fc85208c472a4582040b1ac2001cc87a6612f7b4", + "witnesses": 0 + }, + { + "id": "binary32", + "file": "binary32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "9dc16a1c3b65b7f7a5d59c546886ed12e99fb37cbfc9f3d5d45813921e6a70ff", + "witnesses": 0 + }, + { + "id": "binary64", + "file": "binary64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "1d3e3d6daee576ae3b2b4dca6f26560390535fb7441a54b389f98a4238e58bec", + "witnesses": 0 + }, + { + "id": "binary128", + "file": "binary128_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "9d08a8a6a10f94e875f73e5f44643f088435a570bfafaef9991464d5377b26e0", + "witnesses": 0 + }, + { + "id": "binary256", + "file": "binary256_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "43d39ae4c4808276ba1ed5b2d8c221c17983a53570da2fc161996b0f7ea3aee3", + "witnesses": 0 + }, + { + "id": "decimal32", + "file": "decimal32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 7, + "source": "generated by gen_all_formats.py", + "sha256": "e13bc9cd6bc33545ab55f575e23d2343418ded5eddf1395b61f31321dc7d272e", + "witnesses": 0 + }, + { + "id": "decimal64", + "file": "decimal64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 7, + "source": "generated by gen_all_formats.py", + "sha256": "fedef68cfe1b910e737574bbe331dc19fbe1724edbd35ec8beac89b1595bea0d", + "witnesses": 0 + }, + { + "id": "decimal128", + "file": "decimal128_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "84dbc594340717415385b3bd86eb20432f5430aba047557579f2e2a96de0dc2d", + "witnesses": 0 + }, + { + "id": "x87_fp80", + "file": "x87_fp80_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "e9be37c939c7108081bd2190e949f4d01be7ad12511d82bb8849f337c94e7e0c", + "witnesses": 0 + }, + { + "id": "double_double", + "file": "double_double_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "f8dc9608093afada65df94852a9b78c3a4a5466415389c5ec359afd19d3b208c", + "witnesses": 0 + }, + { + "id": "quad_double", + "file": "quad_double_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "62ef8067fd1d70ef0abac77d4b0252a3686b9cd698ee4806e0bc1e01bcfe7cfa", + "witnesses": 0 + }, + { + "id": "bfloat16", + "file": "bf16_golden_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "98bbddcbb8a520dc45a6dfed7209c50a0acc0fabc4d3b430359969467eee4e13", + "witnesses": 0 + }, + { + "id": "tf32", + "file": "tf32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "b35c334092b49dad9a944d37a91697f08f442b633142e81c69296c12bac0055d", + "witnesses": 0 + }, + { + "id": "fp8_e4m3", + "file": "fp8_e4m3fn_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "7193ccd0d330d3e05154432abcec5da4a4c170e11004d4ffa44ff5cbbff9cba9", + "witnesses": 0 + }, + { + "id": "fp8_e5m2", + "file": "fp8_e5m2_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "9c31fbd03923bd6555304848a092504dfbc02f72d2be82d2b80f49243e925a18", + "witnesses": 0 + }, + { + "id": "fp6_e3m2", + "file": "fp6_e3m2_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 64, + "source": "generated by gen_all_formats.py", + "sha256": "17a80f0a3b5b2495dbcd6de6062d8c1f8ce19b9746d1e370e6d16897ef5f9c02", + "witnesses": 0 + }, + { + "id": "fp6_e2m3", + "file": "fp6_e2m3_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 64, + "source": "generated by gen_all_formats.py", + "sha256": "de70d6aacf0ac2d47decae0866d14f126058176428315d4c767e460c0a9ae5e5", + "witnesses": 0 + }, + { + "id": "fp4_e2m1", + "file": "fp4_e2m1_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "8ded6625c4644139320dd89b2b7815d6ba27177c35b7d645b2d93b8cfdc63fd9", + "witnesses": 0 + }, + { + "id": "mxfp8", + "file": "mxfp8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "16eedca7e82c4e6753f8248dce0000ba9a50ba09bab9be747b0dcac3efc21b6b", + "witnesses": 0 + }, + { + "id": "mxfp6", + "file": "mxfp6_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 64, + "source": "generated by gen_all_formats.py", + "sha256": "3db420779597b673a691d409b1fc11aee8168549c55be1c8ebfb70dc8330e0c7", + "witnesses": 0 + }, + { + "id": "mxfp4", + "file": "mxfp4_e2m1_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "b5795fed0c0f2b580174b443d2c54519c4953916525237bb7ea7d6831f14fde7", + "witnesses": 0 + }, + { + "id": "nf4", + "file": "nf4_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "723ddd4237153c7c0cc6a9c3436ba071f8affcef8ad0c384070a3e1a3bf13f45", + "witnesses": 0 + }, + { + "id": "afp", + "file": "afp_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "384a16af29fe5305d07a2eb07f9056cf0b6fe0d97b83eb3f04fcba90f2397f32", + "witnesses": 0 + }, + { + "id": "posit8", + "file": "posit8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "0c638ef95b6537e4dc0e256dc1ca2d9363152b3d5a800501472230ce98a84b76", + "witnesses": 0 + }, + { + "id": "posit16", + "file": "posit16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "7cc2edfeb0f52769b1a536dcbe04945a301cdcc3799a23267380b0c4fb0b82d5", + "witnesses": 0 + }, + { + "id": "posit32", + "file": "posit32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "aee6cc72691a0ae211e39bf6315ac68a5fe74e87190e0c27088871c6ccc87f52", + "witnesses": 0 + }, + { + "id": "posit64", + "file": "posit64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "66b14056938549c1aaa522097ee8744246581cf6d3bb6002cef3b2f3f6ea0ff6", + "witnesses": 0 + }, + { + "id": "takum8", + "file": "takum8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "e81b280fbd1a30381c169760b24b5686db82eff8debcc5412cb43d1a0be9a05f", + "witnesses": 0 + }, + { + "id": "takum16", + "file": "takum16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 3, + "source": "generated by gen_all_formats.py", + "sha256": "924a2e5626df001d2780f542f5aff0c0152a8c819f35866dce2e2152409c1a11", + "witnesses": 0 + }, + { + "id": "takum32", + "file": "takum32_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "c5b034ff12169e921ce3a9411a0317ccd85003dde6c71c8461ced3fd73b3c80f", + "witnesses": 4 + }, + { + "id": "takum64", + "file": "takum64_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "1c4fc6d0579626ed364e9044aa455df4f1a1984b8b14cd370004498d86f73a0c", + "witnesses": 4 + }, + { + "id": "lns8", + "file": "lns8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "1cb3ca966b7564b15d6b64b37efb4548fa4b6ff26686576cf5da9ac7657379b8", + "witnesses": 0 + }, + { + "id": "lns16", + "file": "lns16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 5, + "source": "generated by gen_all_formats.py", + "sha256": "0b4b9d4ce2162e079239aa05e742c7f699453b96f6a8abd90c17bca95d88eff6", + "witnesses": 0 + }, + { + "id": "lns32", + "file": "lns32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 5, + "source": "generated by gen_all_formats.py", + "sha256": "7877795b137b599bafb64e8c4b114e128a2ef5af433db222b2875e0df6919872", + "witnesses": 0 + }, + { + "id": "lns64", + "file": "lns64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 5, + "source": "generated by gen_all_formats.py", + "sha256": "9969a97f62be45bc120cc2310b5be5c0e6c83d3151a51d6fbb5173db54581ec0", + "witnesses": 0 + }, + { + "id": "gfternary", + "file": "gfternary_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 4, + "source": "generated by gen_all_formats.py", + "sha256": "9f246d24511fbff6fb9e83e60e1bedfce401052537f7c8929fe205d0f6e57b81", + "witnesses": 0 + }, + { + "id": "gf4", + "file": "gf4_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "25471b7a0e3dc3633118191e722ced2f450a3ed8a6228ad2492f92084f556f96", + "witnesses": 0 + }, + { + "id": "gf8", + "file": "gf8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "6dccbc6628cbc051e06a006a0731499970c1d99e65fc0d42d9007d8f0ed1402d", + "witnesses": 0 + }, + { + "id": "gf12", + "file": "gf12_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "ea00efde4825931a421ec9feb5910f3ad9ab7ab5d38a77d2c364ea9fa49a7f96", + "witnesses": 0 + }, + { + "id": "gf16", + "file": "gf16_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "d1c0eb5bd66247b3c5db9a00a95e29cf4359653aec56f2f9e6827f96898d1509", + "witnesses": 0 + }, + { + "id": "gf20", + "file": "gf20_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "76c7814558901d5633cb16ffead7468583de5577c4ccf0378c296c73ae08acc5", + "witnesses": 0 + }, + { + "id": "gf24", + "file": "gf24_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "983642c7aea54b7e6c5b6e41edcf20828bfc3a1f2707307eaa713ca5a45e612c", + "witnesses": 0 + }, + { + "id": "gf32", + "file": "gf32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "f7222e2442f2c106e7f3590e5dbe8ed177603fc2324560987af138ae9abeceb4", + "witnesses": 0 + }, + { + "id": "gf64", + "file": "gf64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "887223d0bc8b00d76b70238ddbc8933e3a773ed6a9fbc10264d9fdbebca76cd3", + "witnesses": 0 + }, + { + "id": "gf6", + "file": "gf6_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 64, + "source": "generated by gen_all_formats.py", + "sha256": "9c9fc955db5f6c9b185bdd5d88bd92f3f21a71ad4d784b944330d5cba85fb724", + "witnesses": 0 + }, + { + "id": "gf10", + "file": "gf10_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "af62499491faf340d7940b0b10ab0208745e57faa97bbe19588fe1d879db485b", + "witnesses": 0 + }, + { + "id": "gf14", + "file": "gf14_conformance_v0.json", + "kind": "bitexact", + "source": "pre-existing pack + recorded independent witness", + "n_vectors": 14, + "sha256": "e2364f36a4cb5812b81d2f8f4253688b4d269201463c8481e18568438114a718", + "witnesses": 1 + }, + { + "id": "gf48", + "file": "gf48_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 15, + "source": "wide-rung GoldenFloat oracle promoted to strict bitexact by an independent second decoder (gf_wide_independent_witness.py, dyadic-exact, abs_error=0) + golden Fraction oracle + FP64 RTL bit-model (224255/224255)", + "sha256": "d9928025d21fa0e0f0c02904d9a3e20f5f12a7811b57fa474e8a325ded43e91a", + "witnesses": 3 + }, + { + "id": "gf96", + "file": "gf96_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 15, + "source": "wide-rung GoldenFloat exact-dyadic pack promoted to strict bitexact by an analytic zero-rounding separation-bound + two structurally independent exact decoders (dyadic gf_wide_independent_witness.py + Fraction oracle gf96_decode_ref.py), 15/15 abs_error=0, 201512-code cross-check", + "sha256": "43127e758d653d26640d38801d42d4daf36fdc70df66a63aadac6a8ce06159fa", + "witnesses": 3 + }, + { + "id": "gf128", + "file": "gf128_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 15, + "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf128 PR)", + "sha256": "cda05a8e608038f3ebb53757ecbe0f78a650f959cf34a54b0cf26d80730e54d3", + "witnesses": 3 + }, + { + "id": "gf256", + "file": "gf256_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 2021, + "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; bias audit resolved decode-bias=2^96-1 closed form; gf256 promote PR)", + "sha256": "f504258daa4c537ff11a9863814470dd0731ab8cca988093d72e83c221c425f1", + "witnesses": 3 + }, + { + "id": "gf512", + "file": "gf512_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 15, + "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf512 paired PR)", + "sha256": "08d32005ba118c4d0d4a61cb47e074ffd7131a41ca84d4debcac4ebfdfcef9cd", + "witnesses": 3 + }, + { + "id": "gf1024", + "file": "gf1024_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 15, + "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf1024 paired PR)", + "sha256": "1e1613e3e1d1a11deae5c99408a2581244c2cb98c203d429b24247905d188df4", + "witnesses": 3 + }, + { + "id": "gft4", + "file": "gft4_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "033b3e06928c54024072514ccb92c29846692075107e7495cfaf6453b3a9ddf9", + "witnesses": 0 + }, + { + "id": "gft8", + "file": "gft8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "588f995eef23c3050506764f686a95f615bbd794950c41a2c422479be474ad8f", + "witnesses": 0 + }, + { + "id": "gft16", + "file": "gft16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 1, + "source": "generated by gen_all_formats.py", + "sha256": "ead0599558969fe3883732e3f7fff144000fa3e6ebcb2c3bdba0301ecf7d7d51", + "witnesses": 0 + }, + { + "id": "gft32", + "file": "gft32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 1, + "source": "generated by gen_all_formats.py", + "sha256": "70f6a626f8e699678740b2a7b7c89d3d5b841ca60f52a7fd456ca31878cfbb65", + "witnesses": 0 + }, + { + "id": "gft64", + "file": "gft64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 1, + "source": "generated by gen_all_formats.py", + "sha256": "994b4c48c482dca79e712b41873c4caa2710b9849f9b575e9a90546b650dafec", + "witnesses": 0 + }, + { + "id": "gft128", + "file": "gft128_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "9f73814a1b07b66f9dc786f587a707c28f681d81e92bdf9dc5aa89c58319d046", + "witnesses": 0 + }, + { + "id": "gft256", + "file": "gft256_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "eff73e7b933b048bb1dd35268561386bc41d3f3fb0b10ba24046c63ab8b2aac6", + "witnesses": 0 + }, + { + "id": "gft512", + "file": "gft512_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "03f9063b4d8d39f40d2c55af45945a8b3bf7adecd188e77593b6dc4eabfadf6e", + "witnesses": 0 + }, + { + "id": "gft1024", + "file": "gft1024_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "24d27778a4bc071a206123a0646526da073f99d7b8682d71f3ed57dbe68ee0a2", + "witnesses": 0 + }, + { + "id": "bnf8", + "file": "bnf8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "fa9aafc601fa4ea3c20ce3b688ad8fd910ee90dd36ed9d135404d57c58c303f2", + "witnesses": 0 + }, + { + "id": "bnf16", + "file": "bnf16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "f51f066a4017b4b5a404b3f89d48bfd0ba73d16a0818759c85d9d19b41c7a01b", + "witnesses": 0 + }, + { + "id": "bnf32", + "file": "bnf32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "b37a06633abcbb440e45f60320e067770e58fd35b235a648560138e42fbd96b9", + "witnesses": 0 + }, + { + "id": "bnf64", + "file": "bnf64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "319abf8c626687549424a0887caff4f8dee6b93bb44ad763b7a2cacdec8f6549", + "witnesses": 0 + }, + { + "id": "bnf128", + "file": "bnf128_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "191354c40583ffdeeb9a4b196ae866ae99b5f5575d4ee26705fe649d8bd2a2df", + "witnesses": 0 + }, + { + "id": "bnf256", + "file": "bnf256_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "5fd1b687eb5d995e08553ed0399b1e96e289f51f018228ce4a65df41e4696e82", + "witnesses": 0 + }, + { + "id": "bnf512", + "file": "bnf512_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "5ed69aeb6a00cdd4eb84a991801947067698262950c313ec87b81f9f20b13fc1", + "witnesses": 0 + }, + { + "id": "bnf1024", + "file": "bnf1024_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "1c2414e169933cdd2631c0749f8996a9e4d4c96ff6ff9762555ef297a3f12623", + "witnesses": 0 + }, + { + "id": "tnf4", + "file": "tnf4_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "b8ac947a242e708fe9aa85f5537b5ae368b844f32651709a8744de19a7db5087", + "witnesses": 0 + }, + { + "id": "tnf8", + "file": "tnf8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "cff4e3ae985a78f52203a09ca1fa9ffbf3a3c524757026dde0c93b6ca430cc5e", + "witnesses": 0 + }, + { + "id": "tnf16", + "file": "tnf16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 1, + "source": "generated by gen_all_formats.py", + "sha256": "3569b75d902d421268ae34f44638d50b6c34d3265bebe26f40b48c2cc69b1d5d", + "witnesses": 0 + }, + { + "id": "tnf32", + "file": "tnf32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 1, + "source": "generated by gen_all_formats.py", + "sha256": "f2eb79954c6f53ebc9c5d962b2913dda4586639ab73f3d58049e2d18fdaa7987", + "witnesses": 0 + }, + { + "id": "tnf64", + "file": "tnf64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 1, + "source": "generated by gen_all_formats.py", + "sha256": "a122229e99b43e910b29924ad4e9989b4aa23e92700c5db0a19ae03174eef313", + "witnesses": 0 + }, + { + "id": "tnf128", + "file": "tnf128_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "3ea5401071d8595b3bed5f2a6c1595ad9ac9d53a19ae0d8528c071b656051414", + "witnesses": 0 + }, + { + "id": "tnf256", + "file": "tnf256_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "0a34094b5e0661f0d6a069064146d9455fef568056f6c45ffef06438f6ea4800", + "witnesses": 0 + }, + { + "id": "tnf512", + "file": "tnf512_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "66bfa1fc07ea2d9a5c78a941e53988a62210d9b5bcdbc681fadcc50547be33ee", + "witnesses": 0 + }, + { + "id": "tnf1024", + "file": "tnf1024_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "5ada7cf0a863b92f2f7767b55673e1209b15ccb249173301295f018c05a69068", + "witnesses": 0 + }, + { + "id": "gf8_bfp", + "file": "gf8_bfp_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "fe600234cab0e589b69d84e673d74729cff153f9e4e63e871e285fa82ad2cc70", + "witnesses": 0 + }, + { + "id": "gf_lns_hybrid", + "file": "gf_lns_hybrid_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "eb7c946281fb6ed6fadd9c63c7e7fa186412480910c9fedcb25fbc056c1bd34a", + "witnesses": 0 + }, + { + "id": "mxgf6", + "file": "mxgf6_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 64, + "source": "generated by gen_all_formats.py", + "sha256": "9d77d8be5522942e9276b723915b3223123b7741a076a1bfd819cc73ab29f1ec", + "witnesses": 0 + }, + { + "id": "mxgf4", + "file": "mxgf4_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "5e8d03fe80c59b458dc4bbd3fba3213dbc00626d8bc73b2cfcc09836539e89fb", + "witnesses": 0 + }, + { + "id": "int4", + "file": "int4_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 16, + "source": "generated by gen_all_formats.py", + "sha256": "ec35d81224f9635c21b53165e123d1b6b0ed13ad3c1d7ec830e018df22c46ad1", + "witnesses": 0 + }, + { + "id": "int8", + "file": "int8_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "3e7358f28f5d242e24a46fcf0359e24e21bb4f54834e88b38235fc6332e86978", + "witnesses": 0 + }, + { + "id": "int16", + "file": "int16_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 7, + "source": "generated by gen_all_formats.py", + "sha256": "a14f51cd6b29bef2215573bc7f1d299559d5d34af36fd0ffceb513f0659765b9", + "witnesses": 0 + }, + { + "id": "int32", + "file": "int32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 7, + "source": "generated by gen_all_formats.py", + "sha256": "e7f8ddbc4f8606a83febb5c8836f38a143c28f650d73330af5650ea698d91570", + "witnesses": 0 + }, + { + "id": "int64", + "file": "int64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 7, + "source": "generated by gen_all_formats.py", + "sha256": "15e7ae6bd373de5b4f755c71877d6bb662c241526f3a5f4ead22307764f754f5", + "witnesses": 0 + }, + { + "id": "int128", + "file": "int128_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 7, + "source": "generated by gen_all_formats.py", + "sha256": "df77519366e4c59888dcfafa66c20db4389e162f7dae96767684f46d8427d9fc", + "witnesses": 0 + }, + { + "id": "q_format", + "file": "q_format_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "2bc0c114aecd1d0dbfa7925efe298cea80efd510022ee0734cf9450af8027b63", + "witnesses": 0 + }, + { + "id": "bcd", + "file": "bcd_conformance_v0.json", + "kind": "bitexact", + "source": "hand-curated (pre-existing)", + "sha256": "637912a0b8d1a4a1e5a50ddafa2c6dbc8e44c7e96218fb8c70763bc69de505cb", + "witnesses": 3 + }, + { + "id": "ibm_hfp32", + "file": "ibm_hfp32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "8e35040e30d3a0091ecca5fdb08d1dd1ce98031e5d655239c7196bc667fc3876", + "witnesses": 0 + }, + { + "id": "ibm_hfp64", + "file": "ibm_hfp64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "fbe42a167c13f226fe8eaf876c9e17109fb32dbddd76d3a677cc0b9aef2626a1", + "witnesses": 0 + }, + { + "id": "ibm_hfp128", + "file": "ibm_hfp128_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "2f02899d621a8a7aebfdf2a69a2484d7616c61ac7cebdc483f643e8109c4e31f", + "witnesses": 0 + }, + { + "id": "ms_mbf32", + "file": "ms_mbf32_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "260382da8c40576d046d6d044753522e1c3730e55a4712f21e91b21ad918c365", + "witnesses": 0 + }, + { + "id": "ms_mbf64", + "file": "ms_mbf64_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "8d750f03d47a4113548a5e57be2201d4b7f5689143b3605a9a51a60b49988ec9", + "witnesses": 0 + }, + { + "id": "vax_f", + "file": "vax_f_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "a7f45aec8da42931da5ad9f24c3ee369419ec58a783abe657a275210ae9b1e4d", + "witnesses": 0 + }, + { + "id": "vax_d", + "file": "vax_d_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "b87494ddee38fe68f77dd8082e8a9811530cc346526b80e59c81b17665677792", + "witnesses": 0 + }, + { + "id": "vax_g", + "file": "vax_g_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "9a6372bbf85a50457e0b66db8849845333582e3fef28934047963e89dd95e65a", + "witnesses": 0 + }, + { + "id": "vax_h", + "file": "vax_h_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "eaaa44e4ce2e5454da2cc83571bf3261a84a1b6fabb0dc8064c04cd71fa581f0", + "witnesses": 0 + }, + { + "id": "cray_float", + "file": "cray_float_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 8, + "source": "generated by gen_all_formats.py", + "sha256": "b1a8f6652112be3f49949bafe9f6cd7f46f0271e8f4e19cadb55c2a0e972f503", + "witnesses": 0 + }, + { + "id": "minifloat", + "file": "minifloat_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "d42d1d167c5aa9f504de5ca9ebc04cbd863ff5ebb300fbcb09306413d7b334c3", + "witnesses": 0 + }, + { + "id": "unum_i", + "file": "unum_i_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "2b28ce1eca1f39623122fbdd853945d05c73adc47e132c250e6ccb56217d689b", + "witnesses": 0 + }, + { + "id": "unum_ii", + "file": "unum_ii_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "a79c4cdca84fc702a4ce25fd36040912f841dc9d75f35476e78dbbdfc6fb12f8", + "witnesses": 0 + }, + { + "id": "tapered_fp", + "file": "tapered_fp_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "e20d828fda7d3d6b86d047b390fae2964622b83fb8200220f5a4283bc5ae2b4b", + "witnesses": 0 + }, + { + "id": "block_fp", + "file": "block_fp_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "3129fa92145096e55527c2fc22d9e6bed23db1a6d88148e8b711a3b6641a43c1", + "witnesses": 0 + }, + { + "id": "shared_exp", + "file": "shared_exp_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "ca139ebd7bc5c139357c533bb0a6509e4edd05044d7869fcea57cf34d052c3c7", + "witnesses": 0 + }, + { + "id": "per_channel_scale", + "file": "per_channel_scale_conformance_v0.json", + "kind": "bitexact", + "n_vectors": 256, + "source": "generated by gen_all_formats.py", + "sha256": "d60b7dacff5f609455f5f0da2011ac6ab6f276097d6a21f477d21be82c8457e5", + "witnesses": 0 + }, + { + "id": "stochastic_rounding", + "file": "stochastic_rounding_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "fc2a0a6dcce7bbb0eccc1e23ebdacb9abbd81cd54111796be6dc7e6a87a2071a", + "witnesses": 0 + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/bnf1024_conformance_v0.json b/conformance/vectors/bnf1024_conformance_v0.json new file mode 100644 index 0000000000..7e96562813 --- /dev/null +++ b/conformance/vectors/bnf1024_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF1024", + "format_name": "BNF1024", + "bitexact": false, + "format_notes": "BNF1024 -- this work; control for TNF1024; width rule 1+E+M=N; exponent sized for range not phi", + "catalog": { + "id": "bnf1024", + "bits": 1024, + "s": 1, + "e": 18, + "m": 1005, + "bias": 131071, + "storage": "u1024_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF1024; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf1024.t27", + "phi_distance": 0.6 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/bnf128_conformance_v0.json b/conformance/vectors/bnf128_conformance_v0.json new file mode 100644 index 0000000000..9189cb0e26 --- /dev/null +++ b/conformance/vectors/bnf128_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF128", + "format_name": "BNF128", + "bitexact": false, + "format_notes": "BNF128 -- this work; control for TNF128; width rule 1+E+M=N; exponent sized for range not phi", + "catalog": { + "id": "bnf128", + "bits": 128, + "s": 1, + "e": 13, + "m": 114, + "bias": 4095, + "storage": "u128", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF128; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf128.t27", + "phi_distance": 0.504 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/bnf16_conformance_v0.json b/conformance/vectors/bnf16_conformance_v0.json new file mode 100644 index 0000000000..89de45b825 --- /dev/null +++ b/conformance/vectors/bnf16_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF16", + "format_name": "BNF16", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E7M8, bias 63. IEEE-style specials at top exponent", + "catalog": { + "id": "bnf16", + "bits": 16, + "s": 1, + "e": 7, + "m": 8, + "bias": 63, + "storage": "u16", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF16; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf16.t27", + "phi_distance": 0.257 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "bnf16_bits_hex": "0x4080" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 8, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "bnf16_bits_hex": "0x0000", + "bnf16_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "pos_one", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "bnf16_bits_hex": "0x3F00", + "bnf16_bits_int": 16128, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "neg_one", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "bnf16_bits_hex": "0xBF00", + "bnf16_bits_int": 48896, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_two", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "bnf16_bits_hex": "0x4000", + "bnf16_bits_int": 16384, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_three", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "bnf16_bits_hex": "0x4080", + "bnf16_bits_int": 16512, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_half", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "bnf16_bits_hex": "0x3E00", + "bnf16_bits_int": 15872, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "bnf16_bits_hex": "0x4100", + "bnf16_bits_int": 16640, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "neg_three", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "bnf16_bits_hex": "0xC080", + "bnf16_bits_int": 49280, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/bnf256_conformance_v0.json b/conformance/vectors/bnf256_conformance_v0.json new file mode 100644 index 0000000000..7794cbe677 --- /dev/null +++ b/conformance/vectors/bnf256_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF256", + "format_name": "BNF256", + "bitexact": false, + "format_notes": "BNF256 -- this work; control for TNF256; width rule 1+E+M=N; exponent sized for range not phi", + "catalog": { + "id": "bnf256", + "bits": 256, + "s": 1, + "e": 15, + "m": 240, + "bias": 16383, + "storage": "u256_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF256; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf256.t27", + "phi_distance": 0.556 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/bnf32_conformance_v0.json b/conformance/vectors/bnf32_conformance_v0.json new file mode 100644 index 0000000000..6b2e450973 --- /dev/null +++ b/conformance/vectors/bnf32_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF32", + "format_name": "BNF32", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E10M21, bias 511. IEEE-style specials at top exponent", + "catalog": { + "id": "bnf32", + "bits": 32, + "s": 1, + "e": 10, + "m": 21, + "bias": 511, + "storage": "u32", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF32; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf32.t27", + "phi_distance": 0.142 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "bnf32_bits_hex": "0x40100000" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 8, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "bnf32_bits_hex": "0x00000000", + "bnf32_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "pos_one", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "bnf32_bits_hex": "0x3FE00000", + "bnf32_bits_int": 1071644672, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "neg_one", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "bnf32_bits_hex": "0xBFE00000", + "bnf32_bits_int": 3219128320, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_two", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "bnf32_bits_hex": "0x40000000", + "bnf32_bits_int": 1073741824, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_three", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "bnf32_bits_hex": "0x40100000", + "bnf32_bits_int": 1074790400, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_half", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "bnf32_bits_hex": "0x3FC00000", + "bnf32_bits_int": 1069547520, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "bnf32_bits_hex": "0x40200000", + "bnf32_bits_int": 1075838976, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "neg_three", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "bnf32_bits_hex": "0xC0100000", + "bnf32_bits_int": 3222274048, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/bnf512_conformance_v0.json b/conformance/vectors/bnf512_conformance_v0.json new file mode 100644 index 0000000000..78095b5c5c --- /dev/null +++ b/conformance/vectors/bnf512_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF512", + "format_name": "BNF512", + "bitexact": false, + "format_notes": "BNF512 -- this work; control for TNF512; width rule 1+E+M=N; exponent sized for range not phi", + "catalog": { + "id": "bnf512", + "bits": 512, + "s": 1, + "e": 16, + "m": 495, + "bias": 32767, + "storage": "u512_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF512; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf512.t27", + "phi_distance": 0.586 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/bnf64_conformance_v0.json b/conformance/vectors/bnf64_conformance_v0.json new file mode 100644 index 0000000000..0705ef2900 --- /dev/null +++ b/conformance/vectors/bnf64_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF64", + "format_name": "BNF64", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E12M51, bias 2047. IEEE-style specials at top exponent", + "catalog": { + "id": "bnf64", + "bits": 64, + "s": 1, + "e": 12, + "m": 51, + "bias": 2047, + "storage": "u64", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF64; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf64.t27", + "phi_distance": 0.383 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "bnf64_bits_hex": "0x4004000000000000" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 8, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "bnf64_bits_hex": "0x0000000000000000", + "bnf64_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "pos_one", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "bnf64_bits_hex": "0x3FF8000000000000", + "bnf64_bits_int": 4609434218613702656, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "neg_one", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "bnf64_bits_hex": "0xBFF8000000000000", + "bnf64_bits_int": 13832806255468478464, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_two", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "bnf64_bits_hex": "0x4000000000000000", + "bnf64_bits_int": 4611686018427387904, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_three", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "bnf64_bits_hex": "0x4004000000000000", + "bnf64_bits_int": 4612811918334230528, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_half", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "bnf64_bits_hex": "0x3FF0000000000000", + "bnf64_bits_int": 4607182418800017408, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "bnf64_bits_hex": "0x4008000000000000", + "bnf64_bits_int": 4613937818241073152, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "neg_three", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "bnf64_bits_hex": "0xC004000000000000", + "bnf64_bits_int": 13836183955189006336, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/bnf8_conformance_v0.json b/conformance/vectors/bnf8_conformance_v0.json new file mode 100644 index 0000000000..5a4f89c406 --- /dev/null +++ b/conformance/vectors/bnf8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BNF8", + "format_name": "BNF8", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E5M2, bias 15. IEEE-style specials at top exponent", + "catalog": { + "id": "bnf8", + "bits": 8, + "s": 1, + "e": 5, + "m": 2, + "bias": 15, + "storage": "u8", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; control for TNF8; width rule 1+E+M=N; exponent sized for range not phi", + "use_case": "control isolating the ternary encoding's contribution", + "gf_relation": "self", + "source": "specs/numeric/bnf8.t27", + "phi_distance": 1.882 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "bnf8_bits_hex": "0x42" + }, + "round_trip_policy": "decode: exact bits->f64 (exhaustive). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "exhaustive", + "n_vectors": 256, + "max_finite": 57344.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "bnf8_bits_hex": "0x00", + "bnf8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 1.52587890625e-05, + "input_f64_hex": "0x3EF0000000000000", + "bnf8_bits_hex": "0x01", + "bnf8_bits_int": 1, + "decoded_f64": 1.52587890625e-05, + "decoded_f64_hex": "0x3EF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 3.0517578125e-05, + "input_f64_hex": "0x3F00000000000000", + "bnf8_bits_hex": "0x02", + "bnf8_bits_int": 2, + "decoded_f64": 3.0517578125e-05, + "decoded_f64_hex": "0x3F00000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 4.57763671875e-05, + "input_f64_hex": "0x3F08000000000000", + "bnf8_bits_hex": "0x03", + "bnf8_bits_int": 3, + "decoded_f64": 4.57763671875e-05, + "decoded_f64_hex": "0x3F08000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 6.103515625e-05, + "input_f64_hex": "0x3F10000000000000", + "bnf8_bits_hex": "0x04", + "bnf8_bits_int": 4, + "decoded_f64": 6.103515625e-05, + "decoded_f64_hex": "0x3F10000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 7.62939453125e-05, + "input_f64_hex": "0x3F14000000000000", + "bnf8_bits_hex": "0x05", + "bnf8_bits_int": 5, + "decoded_f64": 7.62939453125e-05, + "decoded_f64_hex": "0x3F14000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 9.1552734375e-05, + "input_f64_hex": "0x3F18000000000000", + "bnf8_bits_hex": "0x06", + "bnf8_bits_int": 6, + "decoded_f64": 9.1552734375e-05, + "decoded_f64_hex": "0x3F18000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 0.0001068115234375, + "input_f64_hex": "0x3F1C000000000000", + "bnf8_bits_hex": "0x07", + "bnf8_bits_int": 7, + "decoded_f64": 0.0001068115234375, + "decoded_f64_hex": "0x3F1C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": 0.0001220703125, + "input_f64_hex": "0x3F20000000000000", + "bnf8_bits_hex": "0x08", + "bnf8_bits_int": 8, + "decoded_f64": 0.0001220703125, + "decoded_f64_hex": "0x3F20000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 0.000152587890625, + "input_f64_hex": "0x3F24000000000000", + "bnf8_bits_hex": "0x09", + "bnf8_bits_int": 9, + "decoded_f64": 0.000152587890625, + "decoded_f64_hex": "0x3F24000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 0.00018310546875, + "input_f64_hex": "0x3F28000000000000", + "bnf8_bits_hex": "0x0A", + "bnf8_bits_int": 10, + "decoded_f64": 0.00018310546875, + "decoded_f64_hex": "0x3F28000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 0.000213623046875, + "input_f64_hex": "0x3F2C000000000000", + "bnf8_bits_hex": "0x0B", + "bnf8_bits_int": 11, + "decoded_f64": 0.000213623046875, + "decoded_f64_hex": "0x3F2C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 0.000244140625, + "input_f64_hex": "0x3F30000000000000", + "bnf8_bits_hex": "0x0C", + "bnf8_bits_int": 12, + "decoded_f64": 0.000244140625, + "decoded_f64_hex": "0x3F30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 0.00030517578125, + "input_f64_hex": "0x3F34000000000000", + "bnf8_bits_hex": "0x0D", + "bnf8_bits_int": 13, + "decoded_f64": 0.00030517578125, + "decoded_f64_hex": "0x3F34000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 0.0003662109375, + "input_f64_hex": "0x3F38000000000000", + "bnf8_bits_hex": "0x0E", + "bnf8_bits_int": 14, + "decoded_f64": 0.0003662109375, + "decoded_f64_hex": "0x3F38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 0.00042724609375, + "input_f64_hex": "0x3F3C000000000000", + "bnf8_bits_hex": "0x0F", + "bnf8_bits_int": 15, + "decoded_f64": 0.00042724609375, + "decoded_f64_hex": "0x3F3C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 0.00048828125, + "input_f64_hex": "0x3F40000000000000", + "bnf8_bits_hex": "0x10", + "bnf8_bits_int": 16, + "decoded_f64": 0.00048828125, + "decoded_f64_hex": "0x3F40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.0006103515625, + "input_f64_hex": "0x3F44000000000000", + "bnf8_bits_hex": "0x11", + "bnf8_bits_int": 17, + "decoded_f64": 0.0006103515625, + "decoded_f64_hex": "0x3F44000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.000732421875, + "input_f64_hex": "0x3F48000000000000", + "bnf8_bits_hex": "0x12", + "bnf8_bits_int": 18, + "decoded_f64": 0.000732421875, + "decoded_f64_hex": "0x3F48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.0008544921875, + "input_f64_hex": "0x3F4C000000000000", + "bnf8_bits_hex": "0x13", + "bnf8_bits_int": 19, + "decoded_f64": 0.0008544921875, + "decoded_f64_hex": "0x3F4C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.0009765625, + "input_f64_hex": "0x3F50000000000000", + "bnf8_bits_hex": "0x14", + "bnf8_bits_int": 20, + "decoded_f64": 0.0009765625, + "decoded_f64_hex": "0x3F50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.001220703125, + "input_f64_hex": "0x3F54000000000000", + "bnf8_bits_hex": "0x15", + "bnf8_bits_int": 21, + "decoded_f64": 0.001220703125, + "decoded_f64_hex": "0x3F54000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.00146484375, + "input_f64_hex": "0x3F58000000000000", + "bnf8_bits_hex": "0x16", + "bnf8_bits_int": 22, + "decoded_f64": 0.00146484375, + "decoded_f64_hex": "0x3F58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.001708984375, + "input_f64_hex": "0x3F5C000000000000", + "bnf8_bits_hex": "0x17", + "bnf8_bits_int": 23, + "decoded_f64": 0.001708984375, + "decoded_f64_hex": "0x3F5C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.001953125, + "input_f64_hex": "0x3F60000000000000", + "bnf8_bits_hex": "0x18", + "bnf8_bits_int": 24, + "decoded_f64": 0.001953125, + "decoded_f64_hex": "0x3F60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.00244140625, + "input_f64_hex": "0x3F64000000000000", + "bnf8_bits_hex": "0x19", + "bnf8_bits_int": 25, + "decoded_f64": 0.00244140625, + "decoded_f64_hex": "0x3F64000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.0029296875, + "input_f64_hex": "0x3F68000000000000", + "bnf8_bits_hex": "0x1A", + "bnf8_bits_int": 26, + "decoded_f64": 0.0029296875, + "decoded_f64_hex": "0x3F68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.00341796875, + "input_f64_hex": "0x3F6C000000000000", + "bnf8_bits_hex": "0x1B", + "bnf8_bits_int": 27, + "decoded_f64": 0.00341796875, + "decoded_f64_hex": "0x3F6C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.00390625, + "input_f64_hex": "0x3F70000000000000", + "bnf8_bits_hex": "0x1C", + "bnf8_bits_int": 28, + "decoded_f64": 0.00390625, + "decoded_f64_hex": "0x3F70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.0048828125, + "input_f64_hex": "0x3F74000000000000", + "bnf8_bits_hex": "0x1D", + "bnf8_bits_int": 29, + "decoded_f64": 0.0048828125, + "decoded_f64_hex": "0x3F74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.005859375, + "input_f64_hex": "0x3F78000000000000", + "bnf8_bits_hex": "0x1E", + "bnf8_bits_int": 30, + "decoded_f64": 0.005859375, + "decoded_f64_hex": "0x3F78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.0068359375, + "input_f64_hex": "0x3F7C000000000000", + "bnf8_bits_hex": "0x1F", + "bnf8_bits_int": 31, + "decoded_f64": 0.0068359375, + "decoded_f64_hex": "0x3F7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.0078125, + "input_f64_hex": "0x3F80000000000000", + "bnf8_bits_hex": "0x20", + "bnf8_bits_int": 32, + "decoded_f64": 0.0078125, + "decoded_f64_hex": "0x3F80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.009765625, + "input_f64_hex": "0x3F84000000000000", + "bnf8_bits_hex": "0x21", + "bnf8_bits_int": 33, + "decoded_f64": 0.009765625, + "decoded_f64_hex": "0x3F84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.01171875, + "input_f64_hex": "0x3F88000000000000", + "bnf8_bits_hex": "0x22", + "bnf8_bits_int": 34, + "decoded_f64": 0.01171875, + "decoded_f64_hex": "0x3F88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.013671875, + "input_f64_hex": "0x3F8C000000000000", + "bnf8_bits_hex": "0x23", + "bnf8_bits_int": 35, + "decoded_f64": 0.013671875, + "decoded_f64_hex": "0x3F8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.015625, + "input_f64_hex": "0x3F90000000000000", + "bnf8_bits_hex": "0x24", + "bnf8_bits_int": 36, + "decoded_f64": 0.015625, + "decoded_f64_hex": "0x3F90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.01953125, + "input_f64_hex": "0x3F94000000000000", + "bnf8_bits_hex": "0x25", + "bnf8_bits_int": 37, + "decoded_f64": 0.01953125, + "decoded_f64_hex": "0x3F94000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.0234375, + "input_f64_hex": "0x3F98000000000000", + "bnf8_bits_hex": "0x26", + "bnf8_bits_int": 38, + "decoded_f64": 0.0234375, + "decoded_f64_hex": "0x3F98000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.02734375, + "input_f64_hex": "0x3F9C000000000000", + "bnf8_bits_hex": "0x27", + "bnf8_bits_int": 39, + "decoded_f64": 0.02734375, + "decoded_f64_hex": "0x3F9C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.03125, + "input_f64_hex": "0x3FA0000000000000", + "bnf8_bits_hex": "0x28", + "bnf8_bits_int": 40, + "decoded_f64": 0.03125, + "decoded_f64_hex": "0x3FA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.0390625, + "input_f64_hex": "0x3FA4000000000000", + "bnf8_bits_hex": "0x29", + "bnf8_bits_int": 41, + "decoded_f64": 0.0390625, + "decoded_f64_hex": "0x3FA4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.046875, + "input_f64_hex": "0x3FA8000000000000", + "bnf8_bits_hex": "0x2A", + "bnf8_bits_int": 42, + "decoded_f64": 0.046875, + "decoded_f64_hex": "0x3FA8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.0546875, + "input_f64_hex": "0x3FAC000000000000", + "bnf8_bits_hex": "0x2B", + "bnf8_bits_int": 43, + "decoded_f64": 0.0546875, + "decoded_f64_hex": "0x3FAC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "bnf8_bits_hex": "0x2C", + "bnf8_bits_int": 44, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.078125, + "input_f64_hex": "0x3FB4000000000000", + "bnf8_bits_hex": "0x2D", + "bnf8_bits_int": 45, + "decoded_f64": 0.078125, + "decoded_f64_hex": "0x3FB4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.09375, + "input_f64_hex": "0x3FB8000000000000", + "bnf8_bits_hex": "0x2E", + "bnf8_bits_int": 46, + "decoded_f64": 0.09375, + "decoded_f64_hex": "0x3FB8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.109375, + "input_f64_hex": "0x3FBC000000000000", + "bnf8_bits_hex": "0x2F", + "bnf8_bits_int": 47, + "decoded_f64": 0.109375, + "decoded_f64_hex": "0x3FBC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "bnf8_bits_hex": "0x30", + "bnf8_bits_int": 48, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 0.15625, + "input_f64_hex": "0x3FC4000000000000", + "bnf8_bits_hex": "0x31", + "bnf8_bits_int": 49, + "decoded_f64": 0.15625, + "decoded_f64_hex": "0x3FC4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "bnf8_bits_hex": "0x32", + "bnf8_bits_int": 50, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 0.21875, + "input_f64_hex": "0x3FCC000000000000", + "bnf8_bits_hex": "0x33", + "bnf8_bits_int": 51, + "decoded_f64": 0.21875, + "decoded_f64_hex": "0x3FCC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "bnf8_bits_hex": "0x34", + "bnf8_bits_int": 52, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "bnf8_bits_hex": "0x35", + "bnf8_bits_int": 53, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "bnf8_bits_hex": "0x36", + "bnf8_bits_int": 54, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "bnf8_bits_hex": "0x37", + "bnf8_bits_int": 55, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "bnf8_bits_hex": "0x38", + "bnf8_bits_int": 56, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "bnf8_bits_hex": "0x39", + "bnf8_bits_int": 57, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "bnf8_bits_hex": "0x3A", + "bnf8_bits_int": 58, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "bnf8_bits_hex": "0x3B", + "bnf8_bits_int": 59, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "bnf8_bits_hex": "0x3C", + "bnf8_bits_int": 60, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "bnf8_bits_hex": "0x3D", + "bnf8_bits_int": 61, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "bnf8_bits_hex": "0x3E", + "bnf8_bits_int": 62, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "bnf8_bits_hex": "0x3F", + "bnf8_bits_int": 63, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "bnf8_bits_hex": "0x40", + "bnf8_bits_int": 64, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "bnf8_bits_hex": "0x41", + "bnf8_bits_int": 65, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "bnf8_bits_hex": "0x42", + "bnf8_bits_int": 66, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "bnf8_bits_hex": "0x43", + "bnf8_bits_int": 67, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "bnf8_bits_hex": "0x44", + "bnf8_bits_int": 68, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "bnf8_bits_hex": "0x45", + "bnf8_bits_int": 69, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "bnf8_bits_hex": "0x46", + "bnf8_bits_int": 70, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "bnf8_bits_hex": "0x47", + "bnf8_bits_int": 71, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "bnf8_bits_hex": "0x48", + "bnf8_bits_int": 72, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "bnf8_bits_hex": "0x49", + "bnf8_bits_int": 73, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "bnf8_bits_hex": "0x4A", + "bnf8_bits_int": 74, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "bnf8_bits_hex": "0x4B", + "bnf8_bits_int": 75, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "bnf8_bits_hex": "0x4C", + "bnf8_bits_int": 76, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 20.0, + "input_f64_hex": "0x4034000000000000", + "bnf8_bits_hex": "0x4D", + "bnf8_bits_int": 77, + "decoded_f64": 20.0, + "decoded_f64_hex": "0x4034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 24.0, + "input_f64_hex": "0x4038000000000000", + "bnf8_bits_hex": "0x4E", + "bnf8_bits_int": 78, + "decoded_f64": 24.0, + "decoded_f64_hex": "0x4038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 28.0, + "input_f64_hex": "0x403C000000000000", + "bnf8_bits_hex": "0x4F", + "bnf8_bits_int": 79, + "decoded_f64": 28.0, + "decoded_f64_hex": "0x403C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 32.0, + "input_f64_hex": "0x4040000000000000", + "bnf8_bits_hex": "0x50", + "bnf8_bits_int": 80, + "decoded_f64": 32.0, + "decoded_f64_hex": "0x4040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 40.0, + "input_f64_hex": "0x4044000000000000", + "bnf8_bits_hex": "0x51", + "bnf8_bits_int": 81, + "decoded_f64": 40.0, + "decoded_f64_hex": "0x4044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 48.0, + "input_f64_hex": "0x4048000000000000", + "bnf8_bits_hex": "0x52", + "bnf8_bits_int": 82, + "decoded_f64": 48.0, + "decoded_f64_hex": "0x4048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 56.0, + "input_f64_hex": "0x404C000000000000", + "bnf8_bits_hex": "0x53", + "bnf8_bits_int": 83, + "decoded_f64": 56.0, + "decoded_f64_hex": "0x404C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 64.0, + "input_f64_hex": "0x4050000000000000", + "bnf8_bits_hex": "0x54", + "bnf8_bits_int": 84, + "decoded_f64": 64.0, + "decoded_f64_hex": "0x4050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 80.0, + "input_f64_hex": "0x4054000000000000", + "bnf8_bits_hex": "0x55", + "bnf8_bits_int": 85, + "decoded_f64": 80.0, + "decoded_f64_hex": "0x4054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 96.0, + "input_f64_hex": "0x4058000000000000", + "bnf8_bits_hex": "0x56", + "bnf8_bits_int": 86, + "decoded_f64": 96.0, + "decoded_f64_hex": "0x4058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 112.0, + "input_f64_hex": "0x405C000000000000", + "bnf8_bits_hex": "0x57", + "bnf8_bits_int": 87, + "decoded_f64": 112.0, + "decoded_f64_hex": "0x405C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 128.0, + "input_f64_hex": "0x4060000000000000", + "bnf8_bits_hex": "0x58", + "bnf8_bits_int": 88, + "decoded_f64": 128.0, + "decoded_f64_hex": "0x4060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 160.0, + "input_f64_hex": "0x4064000000000000", + "bnf8_bits_hex": "0x59", + "bnf8_bits_int": 89, + "decoded_f64": 160.0, + "decoded_f64_hex": "0x4064000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 192.0, + "input_f64_hex": "0x4068000000000000", + "bnf8_bits_hex": "0x5A", + "bnf8_bits_int": 90, + "decoded_f64": 192.0, + "decoded_f64_hex": "0x4068000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 224.0, + "input_f64_hex": "0x406C000000000000", + "bnf8_bits_hex": "0x5B", + "bnf8_bits_int": 91, + "decoded_f64": 224.0, + "decoded_f64_hex": "0x406C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 256.0, + "input_f64_hex": "0x4070000000000000", + "bnf8_bits_hex": "0x5C", + "bnf8_bits_int": 92, + "decoded_f64": 256.0, + "decoded_f64_hex": "0x4070000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 320.0, + "input_f64_hex": "0x4074000000000000", + "bnf8_bits_hex": "0x5D", + "bnf8_bits_int": 93, + "decoded_f64": 320.0, + "decoded_f64_hex": "0x4074000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 384.0, + "input_f64_hex": "0x4078000000000000", + "bnf8_bits_hex": "0x5E", + "bnf8_bits_int": 94, + "decoded_f64": 384.0, + "decoded_f64_hex": "0x4078000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 448.0, + "input_f64_hex": "0x407C000000000000", + "bnf8_bits_hex": "0x5F", + "bnf8_bits_int": 95, + "decoded_f64": 448.0, + "decoded_f64_hex": "0x407C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 512.0, + "input_f64_hex": "0x4080000000000000", + "bnf8_bits_hex": "0x60", + "bnf8_bits_int": 96, + "decoded_f64": 512.0, + "decoded_f64_hex": "0x4080000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 640.0, + "input_f64_hex": "0x4084000000000000", + "bnf8_bits_hex": "0x61", + "bnf8_bits_int": 97, + "decoded_f64": 640.0, + "decoded_f64_hex": "0x4084000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 768.0, + "input_f64_hex": "0x4088000000000000", + "bnf8_bits_hex": "0x62", + "bnf8_bits_int": 98, + "decoded_f64": 768.0, + "decoded_f64_hex": "0x4088000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 896.0, + "input_f64_hex": "0x408C000000000000", + "bnf8_bits_hex": "0x63", + "bnf8_bits_int": 99, + "decoded_f64": 896.0, + "decoded_f64_hex": "0x408C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 1024.0, + "input_f64_hex": "0x4090000000000000", + "bnf8_bits_hex": "0x64", + "bnf8_bits_int": 100, + "decoded_f64": 1024.0, + "decoded_f64_hex": "0x4090000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 1280.0, + "input_f64_hex": "0x4094000000000000", + "bnf8_bits_hex": "0x65", + "bnf8_bits_int": 101, + "decoded_f64": 1280.0, + "decoded_f64_hex": "0x4094000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 1536.0, + "input_f64_hex": "0x4098000000000000", + "bnf8_bits_hex": "0x66", + "bnf8_bits_int": 102, + "decoded_f64": 1536.0, + "decoded_f64_hex": "0x4098000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 1792.0, + "input_f64_hex": "0x409C000000000000", + "bnf8_bits_hex": "0x67", + "bnf8_bits_int": 103, + "decoded_f64": 1792.0, + "decoded_f64_hex": "0x409C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 2048.0, + "input_f64_hex": "0x40A0000000000000", + "bnf8_bits_hex": "0x68", + "bnf8_bits_int": 104, + "decoded_f64": 2048.0, + "decoded_f64_hex": "0x40A0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 2560.0, + "input_f64_hex": "0x40A4000000000000", + "bnf8_bits_hex": "0x69", + "bnf8_bits_int": 105, + "decoded_f64": 2560.0, + "decoded_f64_hex": "0x40A4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 3072.0, + "input_f64_hex": "0x40A8000000000000", + "bnf8_bits_hex": "0x6A", + "bnf8_bits_int": 106, + "decoded_f64": 3072.0, + "decoded_f64_hex": "0x40A8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 3584.0, + "input_f64_hex": "0x40AC000000000000", + "bnf8_bits_hex": "0x6B", + "bnf8_bits_int": 107, + "decoded_f64": 3584.0, + "decoded_f64_hex": "0x40AC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 4096.0, + "input_f64_hex": "0x40B0000000000000", + "bnf8_bits_hex": "0x6C", + "bnf8_bits_int": 108, + "decoded_f64": 4096.0, + "decoded_f64_hex": "0x40B0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 5120.0, + "input_f64_hex": "0x40B4000000000000", + "bnf8_bits_hex": "0x6D", + "bnf8_bits_int": 109, + "decoded_f64": 5120.0, + "decoded_f64_hex": "0x40B4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 6144.0, + "input_f64_hex": "0x40B8000000000000", + "bnf8_bits_hex": "0x6E", + "bnf8_bits_int": 110, + "decoded_f64": 6144.0, + "decoded_f64_hex": "0x40B8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 7168.0, + "input_f64_hex": "0x40BC000000000000", + "bnf8_bits_hex": "0x6F", + "bnf8_bits_int": 111, + "decoded_f64": 7168.0, + "decoded_f64_hex": "0x40BC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": 8192.0, + "input_f64_hex": "0x40C0000000000000", + "bnf8_bits_hex": "0x70", + "bnf8_bits_int": 112, + "decoded_f64": 8192.0, + "decoded_f64_hex": "0x40C0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x71", + "input_f64": 10240.0, + "input_f64_hex": "0x40C4000000000000", + "bnf8_bits_hex": "0x71", + "bnf8_bits_int": 113, + "decoded_f64": 10240.0, + "decoded_f64_hex": "0x40C4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x72", + "input_f64": 12288.0, + "input_f64_hex": "0x40C8000000000000", + "bnf8_bits_hex": "0x72", + "bnf8_bits_int": 114, + "decoded_f64": 12288.0, + "decoded_f64_hex": "0x40C8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x73", + "input_f64": 14336.0, + "input_f64_hex": "0x40CC000000000000", + "bnf8_bits_hex": "0x73", + "bnf8_bits_int": 115, + "decoded_f64": 14336.0, + "decoded_f64_hex": "0x40CC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x74", + "input_f64": 16384.0, + "input_f64_hex": "0x40D0000000000000", + "bnf8_bits_hex": "0x74", + "bnf8_bits_int": 116, + "decoded_f64": 16384.0, + "decoded_f64_hex": "0x40D0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x75", + "input_f64": 20480.0, + "input_f64_hex": "0x40D4000000000000", + "bnf8_bits_hex": "0x75", + "bnf8_bits_int": 117, + "decoded_f64": 20480.0, + "decoded_f64_hex": "0x40D4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x76", + "input_f64": 24576.0, + "input_f64_hex": "0x40D8000000000000", + "bnf8_bits_hex": "0x76", + "bnf8_bits_int": 118, + "decoded_f64": 24576.0, + "decoded_f64_hex": "0x40D8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x77", + "input_f64": 28672.0, + "input_f64_hex": "0x40DC000000000000", + "bnf8_bits_hex": "0x77", + "bnf8_bits_int": 119, + "decoded_f64": 28672.0, + "decoded_f64_hex": "0x40DC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x78", + "input_f64": 32768.0, + "input_f64_hex": "0x40E0000000000000", + "bnf8_bits_hex": "0x78", + "bnf8_bits_int": 120, + "decoded_f64": 32768.0, + "decoded_f64_hex": "0x40E0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x79", + "input_f64": 40960.0, + "input_f64_hex": "0x40E4000000000000", + "bnf8_bits_hex": "0x79", + "bnf8_bits_int": 121, + "decoded_f64": 40960.0, + "decoded_f64_hex": "0x40E4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7A", + "input_f64": 49152.0, + "input_f64_hex": "0x40E8000000000000", + "bnf8_bits_hex": "0x7A", + "bnf8_bits_int": 122, + "decoded_f64": 49152.0, + "decoded_f64_hex": "0x40E8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7B", + "input_f64": 57344.0, + "input_f64_hex": "0x40EC000000000000", + "bnf8_bits_hex": "0x7B", + "bnf8_bits_int": 123, + "decoded_f64": 57344.0, + "decoded_f64_hex": "0x40EC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7C", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "bnf8_bits_hex": "0x7C", + "bnf8_bits_int": 124, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x7D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "bnf8_bits_hex": "0x7D", + "bnf8_bits_int": 125, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "bnf8_bits_hex": "0x7E", + "bnf8_bits_int": 126, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "bnf8_bits_hex": "0x7F", + "bnf8_bits_int": 127, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x80", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "bnf8_bits_hex": "0x80", + "bnf8_bits_int": 128, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x81", + "input_f64": -1.52587890625e-05, + "input_f64_hex": "0xBEF0000000000000", + "bnf8_bits_hex": "0x81", + "bnf8_bits_int": 129, + "decoded_f64": -1.52587890625e-05, + "decoded_f64_hex": "0xBEF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x82", + "input_f64": -3.0517578125e-05, + "input_f64_hex": "0xBF00000000000000", + "bnf8_bits_hex": "0x82", + "bnf8_bits_int": 130, + "decoded_f64": -3.0517578125e-05, + "decoded_f64_hex": "0xBF00000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x83", + "input_f64": -4.57763671875e-05, + "input_f64_hex": "0xBF08000000000000", + "bnf8_bits_hex": "0x83", + "bnf8_bits_int": 131, + "decoded_f64": -4.57763671875e-05, + "decoded_f64_hex": "0xBF08000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x84", + "input_f64": -6.103515625e-05, + "input_f64_hex": "0xBF10000000000000", + "bnf8_bits_hex": "0x84", + "bnf8_bits_int": 132, + "decoded_f64": -6.103515625e-05, + "decoded_f64_hex": "0xBF10000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x85", + "input_f64": -7.62939453125e-05, + "input_f64_hex": "0xBF14000000000000", + "bnf8_bits_hex": "0x85", + "bnf8_bits_int": 133, + "decoded_f64": -7.62939453125e-05, + "decoded_f64_hex": "0xBF14000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x86", + "input_f64": -9.1552734375e-05, + "input_f64_hex": "0xBF18000000000000", + "bnf8_bits_hex": "0x86", + "bnf8_bits_int": 134, + "decoded_f64": -9.1552734375e-05, + "decoded_f64_hex": "0xBF18000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x87", + "input_f64": -0.0001068115234375, + "input_f64_hex": "0xBF1C000000000000", + "bnf8_bits_hex": "0x87", + "bnf8_bits_int": 135, + "decoded_f64": -0.0001068115234375, + "decoded_f64_hex": "0xBF1C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x88", + "input_f64": -0.0001220703125, + "input_f64_hex": "0xBF20000000000000", + "bnf8_bits_hex": "0x88", + "bnf8_bits_int": 136, + "decoded_f64": -0.0001220703125, + "decoded_f64_hex": "0xBF20000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x89", + "input_f64": -0.000152587890625, + "input_f64_hex": "0xBF24000000000000", + "bnf8_bits_hex": "0x89", + "bnf8_bits_int": 137, + "decoded_f64": -0.000152587890625, + "decoded_f64_hex": "0xBF24000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8A", + "input_f64": -0.00018310546875, + "input_f64_hex": "0xBF28000000000000", + "bnf8_bits_hex": "0x8A", + "bnf8_bits_int": 138, + "decoded_f64": -0.00018310546875, + "decoded_f64_hex": "0xBF28000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8B", + "input_f64": -0.000213623046875, + "input_f64_hex": "0xBF2C000000000000", + "bnf8_bits_hex": "0x8B", + "bnf8_bits_int": 139, + "decoded_f64": -0.000213623046875, + "decoded_f64_hex": "0xBF2C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8C", + "input_f64": -0.000244140625, + "input_f64_hex": "0xBF30000000000000", + "bnf8_bits_hex": "0x8C", + "bnf8_bits_int": 140, + "decoded_f64": -0.000244140625, + "decoded_f64_hex": "0xBF30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8D", + "input_f64": -0.00030517578125, + "input_f64_hex": "0xBF34000000000000", + "bnf8_bits_hex": "0x8D", + "bnf8_bits_int": 141, + "decoded_f64": -0.00030517578125, + "decoded_f64_hex": "0xBF34000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8E", + "input_f64": -0.0003662109375, + "input_f64_hex": "0xBF38000000000000", + "bnf8_bits_hex": "0x8E", + "bnf8_bits_int": 142, + "decoded_f64": -0.0003662109375, + "decoded_f64_hex": "0xBF38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8F", + "input_f64": -0.00042724609375, + "input_f64_hex": "0xBF3C000000000000", + "bnf8_bits_hex": "0x8F", + "bnf8_bits_int": 143, + "decoded_f64": -0.00042724609375, + "decoded_f64_hex": "0xBF3C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x90", + "input_f64": -0.00048828125, + "input_f64_hex": "0xBF40000000000000", + "bnf8_bits_hex": "0x90", + "bnf8_bits_int": 144, + "decoded_f64": -0.00048828125, + "decoded_f64_hex": "0xBF40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -0.0006103515625, + "input_f64_hex": "0xBF44000000000000", + "bnf8_bits_hex": "0x91", + "bnf8_bits_int": 145, + "decoded_f64": -0.0006103515625, + "decoded_f64_hex": "0xBF44000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -0.000732421875, + "input_f64_hex": "0xBF48000000000000", + "bnf8_bits_hex": "0x92", + "bnf8_bits_int": 146, + "decoded_f64": -0.000732421875, + "decoded_f64_hex": "0xBF48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -0.0008544921875, + "input_f64_hex": "0xBF4C000000000000", + "bnf8_bits_hex": "0x93", + "bnf8_bits_int": 147, + "decoded_f64": -0.0008544921875, + "decoded_f64_hex": "0xBF4C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -0.0009765625, + "input_f64_hex": "0xBF50000000000000", + "bnf8_bits_hex": "0x94", + "bnf8_bits_int": 148, + "decoded_f64": -0.0009765625, + "decoded_f64_hex": "0xBF50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -0.001220703125, + "input_f64_hex": "0xBF54000000000000", + "bnf8_bits_hex": "0x95", + "bnf8_bits_int": 149, + "decoded_f64": -0.001220703125, + "decoded_f64_hex": "0xBF54000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -0.00146484375, + "input_f64_hex": "0xBF58000000000000", + "bnf8_bits_hex": "0x96", + "bnf8_bits_int": 150, + "decoded_f64": -0.00146484375, + "decoded_f64_hex": "0xBF58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -0.001708984375, + "input_f64_hex": "0xBF5C000000000000", + "bnf8_bits_hex": "0x97", + "bnf8_bits_int": 151, + "decoded_f64": -0.001708984375, + "decoded_f64_hex": "0xBF5C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -0.001953125, + "input_f64_hex": "0xBF60000000000000", + "bnf8_bits_hex": "0x98", + "bnf8_bits_int": 152, + "decoded_f64": -0.001953125, + "decoded_f64_hex": "0xBF60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -0.00244140625, + "input_f64_hex": "0xBF64000000000000", + "bnf8_bits_hex": "0x99", + "bnf8_bits_int": 153, + "decoded_f64": -0.00244140625, + "decoded_f64_hex": "0xBF64000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -0.0029296875, + "input_f64_hex": "0xBF68000000000000", + "bnf8_bits_hex": "0x9A", + "bnf8_bits_int": 154, + "decoded_f64": -0.0029296875, + "decoded_f64_hex": "0xBF68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -0.00341796875, + "input_f64_hex": "0xBF6C000000000000", + "bnf8_bits_hex": "0x9B", + "bnf8_bits_int": 155, + "decoded_f64": -0.00341796875, + "decoded_f64_hex": "0xBF6C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -0.00390625, + "input_f64_hex": "0xBF70000000000000", + "bnf8_bits_hex": "0x9C", + "bnf8_bits_int": 156, + "decoded_f64": -0.00390625, + "decoded_f64_hex": "0xBF70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -0.0048828125, + "input_f64_hex": "0xBF74000000000000", + "bnf8_bits_hex": "0x9D", + "bnf8_bits_int": 157, + "decoded_f64": -0.0048828125, + "decoded_f64_hex": "0xBF74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -0.005859375, + "input_f64_hex": "0xBF78000000000000", + "bnf8_bits_hex": "0x9E", + "bnf8_bits_int": 158, + "decoded_f64": -0.005859375, + "decoded_f64_hex": "0xBF78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -0.0068359375, + "input_f64_hex": "0xBF7C000000000000", + "bnf8_bits_hex": "0x9F", + "bnf8_bits_int": 159, + "decoded_f64": -0.0068359375, + "decoded_f64_hex": "0xBF7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -0.0078125, + "input_f64_hex": "0xBF80000000000000", + "bnf8_bits_hex": "0xA0", + "bnf8_bits_int": 160, + "decoded_f64": -0.0078125, + "decoded_f64_hex": "0xBF80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -0.009765625, + "input_f64_hex": "0xBF84000000000000", + "bnf8_bits_hex": "0xA1", + "bnf8_bits_int": 161, + "decoded_f64": -0.009765625, + "decoded_f64_hex": "0xBF84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -0.01171875, + "input_f64_hex": "0xBF88000000000000", + "bnf8_bits_hex": "0xA2", + "bnf8_bits_int": 162, + "decoded_f64": -0.01171875, + "decoded_f64_hex": "0xBF88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -0.013671875, + "input_f64_hex": "0xBF8C000000000000", + "bnf8_bits_hex": "0xA3", + "bnf8_bits_int": 163, + "decoded_f64": -0.013671875, + "decoded_f64_hex": "0xBF8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -0.015625, + "input_f64_hex": "0xBF90000000000000", + "bnf8_bits_hex": "0xA4", + "bnf8_bits_int": 164, + "decoded_f64": -0.015625, + "decoded_f64_hex": "0xBF90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -0.01953125, + "input_f64_hex": "0xBF94000000000000", + "bnf8_bits_hex": "0xA5", + "bnf8_bits_int": 165, + "decoded_f64": -0.01953125, + "decoded_f64_hex": "0xBF94000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -0.0234375, + "input_f64_hex": "0xBF98000000000000", + "bnf8_bits_hex": "0xA6", + "bnf8_bits_int": 166, + "decoded_f64": -0.0234375, + "decoded_f64_hex": "0xBF98000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -0.02734375, + "input_f64_hex": "0xBF9C000000000000", + "bnf8_bits_hex": "0xA7", + "bnf8_bits_int": 167, + "decoded_f64": -0.02734375, + "decoded_f64_hex": "0xBF9C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -0.03125, + "input_f64_hex": "0xBFA0000000000000", + "bnf8_bits_hex": "0xA8", + "bnf8_bits_int": 168, + "decoded_f64": -0.03125, + "decoded_f64_hex": "0xBFA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -0.0390625, + "input_f64_hex": "0xBFA4000000000000", + "bnf8_bits_hex": "0xA9", + "bnf8_bits_int": 169, + "decoded_f64": -0.0390625, + "decoded_f64_hex": "0xBFA4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -0.046875, + "input_f64_hex": "0xBFA8000000000000", + "bnf8_bits_hex": "0xAA", + "bnf8_bits_int": 170, + "decoded_f64": -0.046875, + "decoded_f64_hex": "0xBFA8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -0.0546875, + "input_f64_hex": "0xBFAC000000000000", + "bnf8_bits_hex": "0xAB", + "bnf8_bits_int": 171, + "decoded_f64": -0.0546875, + "decoded_f64_hex": "0xBFAC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "bnf8_bits_hex": "0xAC", + "bnf8_bits_int": 172, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -0.078125, + "input_f64_hex": "0xBFB4000000000000", + "bnf8_bits_hex": "0xAD", + "bnf8_bits_int": 173, + "decoded_f64": -0.078125, + "decoded_f64_hex": "0xBFB4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -0.09375, + "input_f64_hex": "0xBFB8000000000000", + "bnf8_bits_hex": "0xAE", + "bnf8_bits_int": 174, + "decoded_f64": -0.09375, + "decoded_f64_hex": "0xBFB8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -0.109375, + "input_f64_hex": "0xBFBC000000000000", + "bnf8_bits_hex": "0xAF", + "bnf8_bits_int": 175, + "decoded_f64": -0.109375, + "decoded_f64_hex": "0xBFBC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "bnf8_bits_hex": "0xB0", + "bnf8_bits_int": 176, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -0.15625, + "input_f64_hex": "0xBFC4000000000000", + "bnf8_bits_hex": "0xB1", + "bnf8_bits_int": 177, + "decoded_f64": -0.15625, + "decoded_f64_hex": "0xBFC4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "bnf8_bits_hex": "0xB2", + "bnf8_bits_int": 178, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -0.21875, + "input_f64_hex": "0xBFCC000000000000", + "bnf8_bits_hex": "0xB3", + "bnf8_bits_int": 179, + "decoded_f64": -0.21875, + "decoded_f64_hex": "0xBFCC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "bnf8_bits_hex": "0xB4", + "bnf8_bits_int": 180, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "bnf8_bits_hex": "0xB5", + "bnf8_bits_int": 181, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "bnf8_bits_hex": "0xB6", + "bnf8_bits_int": 182, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "bnf8_bits_hex": "0xB7", + "bnf8_bits_int": 183, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "bnf8_bits_hex": "0xB8", + "bnf8_bits_int": 184, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "bnf8_bits_hex": "0xB9", + "bnf8_bits_int": 185, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "bnf8_bits_hex": "0xBA", + "bnf8_bits_int": 186, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "bnf8_bits_hex": "0xBB", + "bnf8_bits_int": 187, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "bnf8_bits_hex": "0xBC", + "bnf8_bits_int": 188, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "bnf8_bits_hex": "0xBD", + "bnf8_bits_int": 189, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "bnf8_bits_hex": "0xBE", + "bnf8_bits_int": 190, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "bnf8_bits_hex": "0xBF", + "bnf8_bits_int": 191, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "bnf8_bits_hex": "0xC0", + "bnf8_bits_int": 192, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "bnf8_bits_hex": "0xC1", + "bnf8_bits_int": 193, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "bnf8_bits_hex": "0xC2", + "bnf8_bits_int": 194, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "bnf8_bits_hex": "0xC3", + "bnf8_bits_int": 195, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "bnf8_bits_hex": "0xC4", + "bnf8_bits_int": 196, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "bnf8_bits_hex": "0xC5", + "bnf8_bits_int": 197, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "bnf8_bits_hex": "0xC6", + "bnf8_bits_int": 198, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "bnf8_bits_hex": "0xC7", + "bnf8_bits_int": 199, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "bnf8_bits_hex": "0xC8", + "bnf8_bits_int": 200, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "bnf8_bits_hex": "0xC9", + "bnf8_bits_int": 201, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "bnf8_bits_hex": "0xCA", + "bnf8_bits_int": 202, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "bnf8_bits_hex": "0xCB", + "bnf8_bits_int": 203, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "bnf8_bits_hex": "0xCC", + "bnf8_bits_int": 204, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -20.0, + "input_f64_hex": "0xC034000000000000", + "bnf8_bits_hex": "0xCD", + "bnf8_bits_int": 205, + "decoded_f64": -20.0, + "decoded_f64_hex": "0xC034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -24.0, + "input_f64_hex": "0xC038000000000000", + "bnf8_bits_hex": "0xCE", + "bnf8_bits_int": 206, + "decoded_f64": -24.0, + "decoded_f64_hex": "0xC038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -28.0, + "input_f64_hex": "0xC03C000000000000", + "bnf8_bits_hex": "0xCF", + "bnf8_bits_int": 207, + "decoded_f64": -28.0, + "decoded_f64_hex": "0xC03C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -32.0, + "input_f64_hex": "0xC040000000000000", + "bnf8_bits_hex": "0xD0", + "bnf8_bits_int": 208, + "decoded_f64": -32.0, + "decoded_f64_hex": "0xC040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -40.0, + "input_f64_hex": "0xC044000000000000", + "bnf8_bits_hex": "0xD1", + "bnf8_bits_int": 209, + "decoded_f64": -40.0, + "decoded_f64_hex": "0xC044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -48.0, + "input_f64_hex": "0xC048000000000000", + "bnf8_bits_hex": "0xD2", + "bnf8_bits_int": 210, + "decoded_f64": -48.0, + "decoded_f64_hex": "0xC048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -56.0, + "input_f64_hex": "0xC04C000000000000", + "bnf8_bits_hex": "0xD3", + "bnf8_bits_int": 211, + "decoded_f64": -56.0, + "decoded_f64_hex": "0xC04C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -64.0, + "input_f64_hex": "0xC050000000000000", + "bnf8_bits_hex": "0xD4", + "bnf8_bits_int": 212, + "decoded_f64": -64.0, + "decoded_f64_hex": "0xC050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -80.0, + "input_f64_hex": "0xC054000000000000", + "bnf8_bits_hex": "0xD5", + "bnf8_bits_int": 213, + "decoded_f64": -80.0, + "decoded_f64_hex": "0xC054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -96.0, + "input_f64_hex": "0xC058000000000000", + "bnf8_bits_hex": "0xD6", + "bnf8_bits_int": 214, + "decoded_f64": -96.0, + "decoded_f64_hex": "0xC058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -112.0, + "input_f64_hex": "0xC05C000000000000", + "bnf8_bits_hex": "0xD7", + "bnf8_bits_int": 215, + "decoded_f64": -112.0, + "decoded_f64_hex": "0xC05C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -128.0, + "input_f64_hex": "0xC060000000000000", + "bnf8_bits_hex": "0xD8", + "bnf8_bits_int": 216, + "decoded_f64": -128.0, + "decoded_f64_hex": "0xC060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -160.0, + "input_f64_hex": "0xC064000000000000", + "bnf8_bits_hex": "0xD9", + "bnf8_bits_int": 217, + "decoded_f64": -160.0, + "decoded_f64_hex": "0xC064000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -192.0, + "input_f64_hex": "0xC068000000000000", + "bnf8_bits_hex": "0xDA", + "bnf8_bits_int": 218, + "decoded_f64": -192.0, + "decoded_f64_hex": "0xC068000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -224.0, + "input_f64_hex": "0xC06C000000000000", + "bnf8_bits_hex": "0xDB", + "bnf8_bits_int": 219, + "decoded_f64": -224.0, + "decoded_f64_hex": "0xC06C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -256.0, + "input_f64_hex": "0xC070000000000000", + "bnf8_bits_hex": "0xDC", + "bnf8_bits_int": 220, + "decoded_f64": -256.0, + "decoded_f64_hex": "0xC070000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -320.0, + "input_f64_hex": "0xC074000000000000", + "bnf8_bits_hex": "0xDD", + "bnf8_bits_int": 221, + "decoded_f64": -320.0, + "decoded_f64_hex": "0xC074000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -384.0, + "input_f64_hex": "0xC078000000000000", + "bnf8_bits_hex": "0xDE", + "bnf8_bits_int": 222, + "decoded_f64": -384.0, + "decoded_f64_hex": "0xC078000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -448.0, + "input_f64_hex": "0xC07C000000000000", + "bnf8_bits_hex": "0xDF", + "bnf8_bits_int": 223, + "decoded_f64": -448.0, + "decoded_f64_hex": "0xC07C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -512.0, + "input_f64_hex": "0xC080000000000000", + "bnf8_bits_hex": "0xE0", + "bnf8_bits_int": 224, + "decoded_f64": -512.0, + "decoded_f64_hex": "0xC080000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -640.0, + "input_f64_hex": "0xC084000000000000", + "bnf8_bits_hex": "0xE1", + "bnf8_bits_int": 225, + "decoded_f64": -640.0, + "decoded_f64_hex": "0xC084000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -768.0, + "input_f64_hex": "0xC088000000000000", + "bnf8_bits_hex": "0xE2", + "bnf8_bits_int": 226, + "decoded_f64": -768.0, + "decoded_f64_hex": "0xC088000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -896.0, + "input_f64_hex": "0xC08C000000000000", + "bnf8_bits_hex": "0xE3", + "bnf8_bits_int": 227, + "decoded_f64": -896.0, + "decoded_f64_hex": "0xC08C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -1024.0, + "input_f64_hex": "0xC090000000000000", + "bnf8_bits_hex": "0xE4", + "bnf8_bits_int": 228, + "decoded_f64": -1024.0, + "decoded_f64_hex": "0xC090000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -1280.0, + "input_f64_hex": "0xC094000000000000", + "bnf8_bits_hex": "0xE5", + "bnf8_bits_int": 229, + "decoded_f64": -1280.0, + "decoded_f64_hex": "0xC094000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -1536.0, + "input_f64_hex": "0xC098000000000000", + "bnf8_bits_hex": "0xE6", + "bnf8_bits_int": 230, + "decoded_f64": -1536.0, + "decoded_f64_hex": "0xC098000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -1792.0, + "input_f64_hex": "0xC09C000000000000", + "bnf8_bits_hex": "0xE7", + "bnf8_bits_int": 231, + "decoded_f64": -1792.0, + "decoded_f64_hex": "0xC09C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -2048.0, + "input_f64_hex": "0xC0A0000000000000", + "bnf8_bits_hex": "0xE8", + "bnf8_bits_int": 232, + "decoded_f64": -2048.0, + "decoded_f64_hex": "0xC0A0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -2560.0, + "input_f64_hex": "0xC0A4000000000000", + "bnf8_bits_hex": "0xE9", + "bnf8_bits_int": 233, + "decoded_f64": -2560.0, + "decoded_f64_hex": "0xC0A4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -3072.0, + "input_f64_hex": "0xC0A8000000000000", + "bnf8_bits_hex": "0xEA", + "bnf8_bits_int": 234, + "decoded_f64": -3072.0, + "decoded_f64_hex": "0xC0A8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -3584.0, + "input_f64_hex": "0xC0AC000000000000", + "bnf8_bits_hex": "0xEB", + "bnf8_bits_int": 235, + "decoded_f64": -3584.0, + "decoded_f64_hex": "0xC0AC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -4096.0, + "input_f64_hex": "0xC0B0000000000000", + "bnf8_bits_hex": "0xEC", + "bnf8_bits_int": 236, + "decoded_f64": -4096.0, + "decoded_f64_hex": "0xC0B0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -5120.0, + "input_f64_hex": "0xC0B4000000000000", + "bnf8_bits_hex": "0xED", + "bnf8_bits_int": 237, + "decoded_f64": -5120.0, + "decoded_f64_hex": "0xC0B4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -6144.0, + "input_f64_hex": "0xC0B8000000000000", + "bnf8_bits_hex": "0xEE", + "bnf8_bits_int": 238, + "decoded_f64": -6144.0, + "decoded_f64_hex": "0xC0B8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -7168.0, + "input_f64_hex": "0xC0BC000000000000", + "bnf8_bits_hex": "0xEF", + "bnf8_bits_int": 239, + "decoded_f64": -7168.0, + "decoded_f64_hex": "0xC0BC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": -8192.0, + "input_f64_hex": "0xC0C0000000000000", + "bnf8_bits_hex": "0xF0", + "bnf8_bits_int": 240, + "decoded_f64": -8192.0, + "decoded_f64_hex": "0xC0C0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF1", + "input_f64": -10240.0, + "input_f64_hex": "0xC0C4000000000000", + "bnf8_bits_hex": "0xF1", + "bnf8_bits_int": 241, + "decoded_f64": -10240.0, + "decoded_f64_hex": "0xC0C4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF2", + "input_f64": -12288.0, + "input_f64_hex": "0xC0C8000000000000", + "bnf8_bits_hex": "0xF2", + "bnf8_bits_int": 242, + "decoded_f64": -12288.0, + "decoded_f64_hex": "0xC0C8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF3", + "input_f64": -14336.0, + "input_f64_hex": "0xC0CC000000000000", + "bnf8_bits_hex": "0xF3", + "bnf8_bits_int": 243, + "decoded_f64": -14336.0, + "decoded_f64_hex": "0xC0CC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF4", + "input_f64": -16384.0, + "input_f64_hex": "0xC0D0000000000000", + "bnf8_bits_hex": "0xF4", + "bnf8_bits_int": 244, + "decoded_f64": -16384.0, + "decoded_f64_hex": "0xC0D0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF5", + "input_f64": -20480.0, + "input_f64_hex": "0xC0D4000000000000", + "bnf8_bits_hex": "0xF5", + "bnf8_bits_int": 245, + "decoded_f64": -20480.0, + "decoded_f64_hex": "0xC0D4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF6", + "input_f64": -24576.0, + "input_f64_hex": "0xC0D8000000000000", + "bnf8_bits_hex": "0xF6", + "bnf8_bits_int": 246, + "decoded_f64": -24576.0, + "decoded_f64_hex": "0xC0D8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF7", + "input_f64": -28672.0, + "input_f64_hex": "0xC0DC000000000000", + "bnf8_bits_hex": "0xF7", + "bnf8_bits_int": 247, + "decoded_f64": -28672.0, + "decoded_f64_hex": "0xC0DC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF8", + "input_f64": -32768.0, + "input_f64_hex": "0xC0E0000000000000", + "bnf8_bits_hex": "0xF8", + "bnf8_bits_int": 248, + "decoded_f64": -32768.0, + "decoded_f64_hex": "0xC0E0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF9", + "input_f64": -40960.0, + "input_f64_hex": "0xC0E4000000000000", + "bnf8_bits_hex": "0xF9", + "bnf8_bits_int": 249, + "decoded_f64": -40960.0, + "decoded_f64_hex": "0xC0E4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFA", + "input_f64": -49152.0, + "input_f64_hex": "0xC0E8000000000000", + "bnf8_bits_hex": "0xFA", + "bnf8_bits_int": 250, + "decoded_f64": -49152.0, + "decoded_f64_hex": "0xC0E8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFB", + "input_f64": -57344.0, + "input_f64_hex": "0xC0EC000000000000", + "bnf8_bits_hex": "0xFB", + "bnf8_bits_int": 251, + "decoded_f64": -57344.0, + "decoded_f64_hex": "0xC0EC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFC", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "bnf8_bits_hex": "0xFC", + "bnf8_bits_int": 252, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0xFD", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "bnf8_bits_hex": "0xFD", + "bnf8_bits_int": 253, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFE", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "bnf8_bits_hex": "0xFE", + "bnf8_bits_int": 254, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFF", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "bnf8_bits_hex": "0xFF", + "bnf8_bits_int": 255, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gft1024_conformance_v0.json b/conformance/vectors/gft1024_conformance_v0.json new file mode 100644 index 0000000000..fda941ddaf --- /dev/null +++ b/conformance/vectors/gft1024_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT1024", + "format_name": "GF-T1024", + "bitexact": false, + "format_notes": "GF-T1024 -- this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6187 against 1/phi = 0.6180", + "catalog": { + "id": "gft1024", + "bits": 1024, + "s": 1, + "e": 391, + "m": 632, + "bias": 1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173, + "storage": "u1024_software", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6187 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft1024.t27", + "phi_distance": 0.0006 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/gft128_conformance_v0.json b/conformance/vectors/gft128_conformance_v0.json new file mode 100644 index 0000000000..97f0af7199 --- /dev/null +++ b/conformance/vectors/gft128_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT128", + "format_name": "GF-T128", + "bitexact": false, + "format_notes": "GF-T128 -- this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6282 against 1/phi = 0.6180", + "catalog": { + "id": "gft128", + "bits": 128, + "s": 1, + "e": 49, + "m": 78, + "bias": 119649664615308764795041, + "storage": "u128", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6282 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft128.t27", + "phi_distance": 0.0102 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/gft16_conformance_v0.json b/conformance/vectors/gft16_conformance_v0.json new file mode 100644 index 0000000000..9ddd2e2dca --- /dev/null +++ b/conformance/vectors/gft16_conformance_v0.json @@ -0,0 +1,48 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT16", + "format_name": "GF-T16", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E6M9, bias 364. IEEE-style specials at top exponent", + "catalog": { + "id": "gft16", + "bits": 16, + "s": 1, + "e": 6, + "m": 9, + "bias": 364, + "storage": "u16", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6667 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft16.t27", + "phi_distance": 0.0486 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 1, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gft16_bits_hex": "0x0000", + "gft16_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gft256_conformance_v0.json b/conformance/vectors/gft256_conformance_v0.json new file mode 100644 index 0000000000..3b57333dac --- /dev/null +++ b/conformance/vectors/gft256_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT256", + "format_name": "GF-T256", + "bitexact": false, + "format_notes": "GF-T256 -- this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6139 against 1/phi = 0.6180", + "catalog": { + "id": "gft256", + "bits": 256, + "s": 1, + "e": 97, + "m": 158, + "bias": 9544028161703913537712243143807801346335324481, + "storage": "u256_software", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6139 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft256.t27", + "phi_distance": 0.0041 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/gft32_conformance_v0.json b/conformance/vectors/gft32_conformance_v0.json new file mode 100644 index 0000000000..835847ce1a --- /dev/null +++ b/conformance/vectors/gft32_conformance_v0.json @@ -0,0 +1,48 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT32", + "format_name": "GF-T32", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E12M19, bias 265720. IEEE-style specials at top exponent", + "catalog": { + "id": "gft32", + "bits": 32, + "s": 1, + "e": 12, + "m": 19, + "bias": 265720, + "storage": "u32", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6316 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft32.t27", + "phi_distance": 0.0135 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 1, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gft32_bits_hex": "0x00000000", + "gft32_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gft4_conformance_v0.json b/conformance/vectors/gft4_conformance_v0.json new file mode 100644 index 0000000000..8fa3e2b818 --- /dev/null +++ b/conformance/vectors/gft4_conformance_v0.json @@ -0,0 +1,214 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT4", + "format_name": "GF-T4", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E1M2, bias 1. IEEE-style specials at top exponent", + "catalog": { + "id": "gft4", + "bits": 4, + "s": 1, + "e": 1, + "m": 2, + "bias": 1, + "storage": "u4", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.5000 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft4.t27", + "phi_distance": 0.118 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (exhaustive). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "exhaustive", + "n_vectors": 16, + "max_finite": 0.75, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gft4_bits_hex": "0x0", + "gft4_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "gft4_bits_hex": "0x1", + "gft4_bits_int": 1, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "gft4_bits_hex": "0x2", + "gft4_bits_int": 2, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "gft4_bits_hex": "0x3", + "gft4_bits_int": 3, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "gft4_bits_hex": "0x4", + "gft4_bits_int": 4, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x05", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft4_bits_hex": "0x5", + "gft4_bits_int": 5, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x06", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft4_bits_hex": "0x6", + "gft4_bits_int": 6, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x07", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft4_bits_hex": "0x7", + "gft4_bits_int": 7, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x08", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "gft4_bits_hex": "0x8", + "gft4_bits_int": 8, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x09", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "gft4_bits_hex": "0x9", + "gft4_bits_int": 9, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "gft4_bits_hex": "0xA", + "gft4_bits_int": 10, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "gft4_bits_hex": "0xB", + "gft4_bits_int": 11, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "gft4_bits_hex": "0xC", + "gft4_bits_int": 12, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x0D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft4_bits_hex": "0xD", + "gft4_bits_int": 13, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x0E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft4_bits_hex": "0xE", + "gft4_bits_int": 14, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x0F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft4_bits_hex": "0xF", + "gft4_bits_int": 15, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gft512_conformance_v0.json b/conformance/vectors/gft512_conformance_v0.json new file mode 100644 index 0000000000..0be4240ae5 --- /dev/null +++ b/conformance/vectors/gft512_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT512", + "format_name": "GF-T512", + "bitexact": false, + "format_notes": "GF-T512 -- this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6171 against 1/phi = 0.6180", + "catalog": { + "id": "gft512", + "bits": 512, + "s": 1, + "e": 195, + "m": 316, + "bias": 546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053, + "storage": "u512_software", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6171 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft512.t27", + "phi_distance": 0.0009 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/gft64_conformance_v0.json b/conformance/vectors/gft64_conformance_v0.json new file mode 100644 index 0000000000..ab8c44751f --- /dev/null +++ b/conformance/vectors/gft64_conformance_v0.json @@ -0,0 +1,48 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT64", + "format_name": "GF-T64", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E24M39, bias 141214768240. IEEE-style specials at top exponent", + "catalog": { + "id": "gft64", + "bits": 64, + "s": 1, + "e": 24, + "m": 39, + "bias": 141214768240, + "storage": "u64", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6154 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft64.t27", + "phi_distance": 0.0026 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 1, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gft64_bits_hex": "0x0000000000000000", + "gft64_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gft8_conformance_v0.json b/conformance/vectors/gft8_conformance_v0.json new file mode 100644 index 0000000000..a25c0de1c9 --- /dev/null +++ b/conformance/vectors/gft8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFT8", + "format_name": "GF-T8", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E3M4, bias 13. IEEE-style specials at top exponent", + "catalog": { + "id": "gft8", + "bits": 8, + "s": 1, + "e": 3, + "m": 4, + "bias": 13, + "storage": "u8", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.7500 against 1/phi = 0.6180", + "use_case": "phi-derived ternary ladder; huge range at the cost of mantissa", + "gf_relation": "self", + "source": "specs/numeric/gft8.t27", + "phi_distance": 0.132 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (exhaustive). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "exhaustive", + "n_vectors": 256, + "max_finite": 0.01513671875, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gft8_bits_hex": "0x00", + "gft8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 1.52587890625e-05, + "input_f64_hex": "0x3EF0000000000000", + "gft8_bits_hex": "0x01", + "gft8_bits_int": 1, + "decoded_f64": 1.52587890625e-05, + "decoded_f64_hex": "0x3EF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 3.0517578125e-05, + "input_f64_hex": "0x3F00000000000000", + "gft8_bits_hex": "0x02", + "gft8_bits_int": 2, + "decoded_f64": 3.0517578125e-05, + "decoded_f64_hex": "0x3F00000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 4.57763671875e-05, + "input_f64_hex": "0x3F08000000000000", + "gft8_bits_hex": "0x03", + "gft8_bits_int": 3, + "decoded_f64": 4.57763671875e-05, + "decoded_f64_hex": "0x3F08000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 6.103515625e-05, + "input_f64_hex": "0x3F10000000000000", + "gft8_bits_hex": "0x04", + "gft8_bits_int": 4, + "decoded_f64": 6.103515625e-05, + "decoded_f64_hex": "0x3F10000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 7.62939453125e-05, + "input_f64_hex": "0x3F14000000000000", + "gft8_bits_hex": "0x05", + "gft8_bits_int": 5, + "decoded_f64": 7.62939453125e-05, + "decoded_f64_hex": "0x3F14000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 9.1552734375e-05, + "input_f64_hex": "0x3F18000000000000", + "gft8_bits_hex": "0x06", + "gft8_bits_int": 6, + "decoded_f64": 9.1552734375e-05, + "decoded_f64_hex": "0x3F18000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.0001068115234375, + "input_f64_hex": "0x3F1C000000000000", + "gft8_bits_hex": "0x07", + "gft8_bits_int": 7, + "decoded_f64": 0.0001068115234375, + "decoded_f64_hex": "0x3F1C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 0.0001220703125, + "input_f64_hex": "0x3F20000000000000", + "gft8_bits_hex": "0x08", + "gft8_bits_int": 8, + "decoded_f64": 0.0001220703125, + "decoded_f64_hex": "0x3F20000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x09", + "input_f64": 0.0001373291015625, + "input_f64_hex": "0x3F22000000000000", + "gft8_bits_hex": "0x09", + "gft8_bits_int": 9, + "decoded_f64": 0.0001373291015625, + "decoded_f64_hex": "0x3F22000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": 0.000152587890625, + "input_f64_hex": "0x3F24000000000000", + "gft8_bits_hex": "0x0A", + "gft8_bits_int": 10, + "decoded_f64": 0.000152587890625, + "decoded_f64_hex": "0x3F24000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": 0.0001678466796875, + "input_f64_hex": "0x3F26000000000000", + "gft8_bits_hex": "0x0B", + "gft8_bits_int": 11, + "decoded_f64": 0.0001678466796875, + "decoded_f64_hex": "0x3F26000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": 0.00018310546875, + "input_f64_hex": "0x3F28000000000000", + "gft8_bits_hex": "0x0C", + "gft8_bits_int": 12, + "decoded_f64": 0.00018310546875, + "decoded_f64_hex": "0x3F28000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0D", + "input_f64": 0.0001983642578125, + "input_f64_hex": "0x3F2A000000000000", + "gft8_bits_hex": "0x0D", + "gft8_bits_int": 13, + "decoded_f64": 0.0001983642578125, + "decoded_f64_hex": "0x3F2A000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0E", + "input_f64": 0.000213623046875, + "input_f64_hex": "0x3F2C000000000000", + "gft8_bits_hex": "0x0E", + "gft8_bits_int": 14, + "decoded_f64": 0.000213623046875, + "decoded_f64_hex": "0x3F2C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0F", + "input_f64": 0.0002288818359375, + "input_f64_hex": "0x3F2E000000000000", + "gft8_bits_hex": "0x0F", + "gft8_bits_int": 15, + "decoded_f64": 0.0002288818359375, + "decoded_f64_hex": "0x3F2E000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x10", + "input_f64": 0.000244140625, + "input_f64_hex": "0x3F30000000000000", + "gft8_bits_hex": "0x10", + "gft8_bits_int": 16, + "decoded_f64": 0.000244140625, + "decoded_f64_hex": "0x3F30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.0002593994140625, + "input_f64_hex": "0x3F31000000000000", + "gft8_bits_hex": "0x11", + "gft8_bits_int": 17, + "decoded_f64": 0.0002593994140625, + "decoded_f64_hex": "0x3F31000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.000274658203125, + "input_f64_hex": "0x3F32000000000000", + "gft8_bits_hex": "0x12", + "gft8_bits_int": 18, + "decoded_f64": 0.000274658203125, + "decoded_f64_hex": "0x3F32000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.0002899169921875, + "input_f64_hex": "0x3F33000000000000", + "gft8_bits_hex": "0x13", + "gft8_bits_int": 19, + "decoded_f64": 0.0002899169921875, + "decoded_f64_hex": "0x3F33000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.00030517578125, + "input_f64_hex": "0x3F34000000000000", + "gft8_bits_hex": "0x14", + "gft8_bits_int": 20, + "decoded_f64": 0.00030517578125, + "decoded_f64_hex": "0x3F34000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.0003204345703125, + "input_f64_hex": "0x3F35000000000000", + "gft8_bits_hex": "0x15", + "gft8_bits_int": 21, + "decoded_f64": 0.0003204345703125, + "decoded_f64_hex": "0x3F35000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.000335693359375, + "input_f64_hex": "0x3F36000000000000", + "gft8_bits_hex": "0x16", + "gft8_bits_int": 22, + "decoded_f64": 0.000335693359375, + "decoded_f64_hex": "0x3F36000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.0003509521484375, + "input_f64_hex": "0x3F37000000000000", + "gft8_bits_hex": "0x17", + "gft8_bits_int": 23, + "decoded_f64": 0.0003509521484375, + "decoded_f64_hex": "0x3F37000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.0003662109375, + "input_f64_hex": "0x3F38000000000000", + "gft8_bits_hex": "0x18", + "gft8_bits_int": 24, + "decoded_f64": 0.0003662109375, + "decoded_f64_hex": "0x3F38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.0003814697265625, + "input_f64_hex": "0x3F39000000000000", + "gft8_bits_hex": "0x19", + "gft8_bits_int": 25, + "decoded_f64": 0.0003814697265625, + "decoded_f64_hex": "0x3F39000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.000396728515625, + "input_f64_hex": "0x3F3A000000000000", + "gft8_bits_hex": "0x1A", + "gft8_bits_int": 26, + "decoded_f64": 0.000396728515625, + "decoded_f64_hex": "0x3F3A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.0004119873046875, + "input_f64_hex": "0x3F3B000000000000", + "gft8_bits_hex": "0x1B", + "gft8_bits_int": 27, + "decoded_f64": 0.0004119873046875, + "decoded_f64_hex": "0x3F3B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.00042724609375, + "input_f64_hex": "0x3F3C000000000000", + "gft8_bits_hex": "0x1C", + "gft8_bits_int": 28, + "decoded_f64": 0.00042724609375, + "decoded_f64_hex": "0x3F3C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.0004425048828125, + "input_f64_hex": "0x3F3D000000000000", + "gft8_bits_hex": "0x1D", + "gft8_bits_int": 29, + "decoded_f64": 0.0004425048828125, + "decoded_f64_hex": "0x3F3D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.000457763671875, + "input_f64_hex": "0x3F3E000000000000", + "gft8_bits_hex": "0x1E", + "gft8_bits_int": 30, + "decoded_f64": 0.000457763671875, + "decoded_f64_hex": "0x3F3E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.0004730224609375, + "input_f64_hex": "0x3F3F000000000000", + "gft8_bits_hex": "0x1F", + "gft8_bits_int": 31, + "decoded_f64": 0.0004730224609375, + "decoded_f64_hex": "0x3F3F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.00048828125, + "input_f64_hex": "0x3F40000000000000", + "gft8_bits_hex": "0x20", + "gft8_bits_int": 32, + "decoded_f64": 0.00048828125, + "decoded_f64_hex": "0x3F40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.000518798828125, + "input_f64_hex": "0x3F41000000000000", + "gft8_bits_hex": "0x21", + "gft8_bits_int": 33, + "decoded_f64": 0.000518798828125, + "decoded_f64_hex": "0x3F41000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.00054931640625, + "input_f64_hex": "0x3F42000000000000", + "gft8_bits_hex": "0x22", + "gft8_bits_int": 34, + "decoded_f64": 0.00054931640625, + "decoded_f64_hex": "0x3F42000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.000579833984375, + "input_f64_hex": "0x3F43000000000000", + "gft8_bits_hex": "0x23", + "gft8_bits_int": 35, + "decoded_f64": 0.000579833984375, + "decoded_f64_hex": "0x3F43000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.0006103515625, + "input_f64_hex": "0x3F44000000000000", + "gft8_bits_hex": "0x24", + "gft8_bits_int": 36, + "decoded_f64": 0.0006103515625, + "decoded_f64_hex": "0x3F44000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.000640869140625, + "input_f64_hex": "0x3F45000000000000", + "gft8_bits_hex": "0x25", + "gft8_bits_int": 37, + "decoded_f64": 0.000640869140625, + "decoded_f64_hex": "0x3F45000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.00067138671875, + "input_f64_hex": "0x3F46000000000000", + "gft8_bits_hex": "0x26", + "gft8_bits_int": 38, + "decoded_f64": 0.00067138671875, + "decoded_f64_hex": "0x3F46000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.000701904296875, + "input_f64_hex": "0x3F47000000000000", + "gft8_bits_hex": "0x27", + "gft8_bits_int": 39, + "decoded_f64": 0.000701904296875, + "decoded_f64_hex": "0x3F47000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.000732421875, + "input_f64_hex": "0x3F48000000000000", + "gft8_bits_hex": "0x28", + "gft8_bits_int": 40, + "decoded_f64": 0.000732421875, + "decoded_f64_hex": "0x3F48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.000762939453125, + "input_f64_hex": "0x3F49000000000000", + "gft8_bits_hex": "0x29", + "gft8_bits_int": 41, + "decoded_f64": 0.000762939453125, + "decoded_f64_hex": "0x3F49000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.00079345703125, + "input_f64_hex": "0x3F4A000000000000", + "gft8_bits_hex": "0x2A", + "gft8_bits_int": 42, + "decoded_f64": 0.00079345703125, + "decoded_f64_hex": "0x3F4A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.000823974609375, + "input_f64_hex": "0x3F4B000000000000", + "gft8_bits_hex": "0x2B", + "gft8_bits_int": 43, + "decoded_f64": 0.000823974609375, + "decoded_f64_hex": "0x3F4B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.0008544921875, + "input_f64_hex": "0x3F4C000000000000", + "gft8_bits_hex": "0x2C", + "gft8_bits_int": 44, + "decoded_f64": 0.0008544921875, + "decoded_f64_hex": "0x3F4C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.000885009765625, + "input_f64_hex": "0x3F4D000000000000", + "gft8_bits_hex": "0x2D", + "gft8_bits_int": 45, + "decoded_f64": 0.000885009765625, + "decoded_f64_hex": "0x3F4D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.00091552734375, + "input_f64_hex": "0x3F4E000000000000", + "gft8_bits_hex": "0x2E", + "gft8_bits_int": 46, + "decoded_f64": 0.00091552734375, + "decoded_f64_hex": "0x3F4E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.000946044921875, + "input_f64_hex": "0x3F4F000000000000", + "gft8_bits_hex": "0x2F", + "gft8_bits_int": 47, + "decoded_f64": 0.000946044921875, + "decoded_f64_hex": "0x3F4F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 0.0009765625, + "input_f64_hex": "0x3F50000000000000", + "gft8_bits_hex": "0x30", + "gft8_bits_int": 48, + "decoded_f64": 0.0009765625, + "decoded_f64_hex": "0x3F50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 0.00103759765625, + "input_f64_hex": "0x3F51000000000000", + "gft8_bits_hex": "0x31", + "gft8_bits_int": 49, + "decoded_f64": 0.00103759765625, + "decoded_f64_hex": "0x3F51000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 0.0010986328125, + "input_f64_hex": "0x3F52000000000000", + "gft8_bits_hex": "0x32", + "gft8_bits_int": 50, + "decoded_f64": 0.0010986328125, + "decoded_f64_hex": "0x3F52000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 0.00115966796875, + "input_f64_hex": "0x3F53000000000000", + "gft8_bits_hex": "0x33", + "gft8_bits_int": 51, + "decoded_f64": 0.00115966796875, + "decoded_f64_hex": "0x3F53000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 0.001220703125, + "input_f64_hex": "0x3F54000000000000", + "gft8_bits_hex": "0x34", + "gft8_bits_int": 52, + "decoded_f64": 0.001220703125, + "decoded_f64_hex": "0x3F54000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 0.00128173828125, + "input_f64_hex": "0x3F55000000000000", + "gft8_bits_hex": "0x35", + "gft8_bits_int": 53, + "decoded_f64": 0.00128173828125, + "decoded_f64_hex": "0x3F55000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 0.0013427734375, + "input_f64_hex": "0x3F56000000000000", + "gft8_bits_hex": "0x36", + "gft8_bits_int": 54, + "decoded_f64": 0.0013427734375, + "decoded_f64_hex": "0x3F56000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 0.00140380859375, + "input_f64_hex": "0x3F57000000000000", + "gft8_bits_hex": "0x37", + "gft8_bits_int": 55, + "decoded_f64": 0.00140380859375, + "decoded_f64_hex": "0x3F57000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 0.00146484375, + "input_f64_hex": "0x3F58000000000000", + "gft8_bits_hex": "0x38", + "gft8_bits_int": 56, + "decoded_f64": 0.00146484375, + "decoded_f64_hex": "0x3F58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 0.00152587890625, + "input_f64_hex": "0x3F59000000000000", + "gft8_bits_hex": "0x39", + "gft8_bits_int": 57, + "decoded_f64": 0.00152587890625, + "decoded_f64_hex": "0x3F59000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 0.0015869140625, + "input_f64_hex": "0x3F5A000000000000", + "gft8_bits_hex": "0x3A", + "gft8_bits_int": 58, + "decoded_f64": 0.0015869140625, + "decoded_f64_hex": "0x3F5A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 0.00164794921875, + "input_f64_hex": "0x3F5B000000000000", + "gft8_bits_hex": "0x3B", + "gft8_bits_int": 59, + "decoded_f64": 0.00164794921875, + "decoded_f64_hex": "0x3F5B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 0.001708984375, + "input_f64_hex": "0x3F5C000000000000", + "gft8_bits_hex": "0x3C", + "gft8_bits_int": 60, + "decoded_f64": 0.001708984375, + "decoded_f64_hex": "0x3F5C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 0.00177001953125, + "input_f64_hex": "0x3F5D000000000000", + "gft8_bits_hex": "0x3D", + "gft8_bits_int": 61, + "decoded_f64": 0.00177001953125, + "decoded_f64_hex": "0x3F5D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 0.0018310546875, + "input_f64_hex": "0x3F5E000000000000", + "gft8_bits_hex": "0x3E", + "gft8_bits_int": 62, + "decoded_f64": 0.0018310546875, + "decoded_f64_hex": "0x3F5E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 0.00189208984375, + "input_f64_hex": "0x3F5F000000000000", + "gft8_bits_hex": "0x3F", + "gft8_bits_int": 63, + "decoded_f64": 0.00189208984375, + "decoded_f64_hex": "0x3F5F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 0.001953125, + "input_f64_hex": "0x3F60000000000000", + "gft8_bits_hex": "0x40", + "gft8_bits_int": 64, + "decoded_f64": 0.001953125, + "decoded_f64_hex": "0x3F60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 0.0020751953125, + "input_f64_hex": "0x3F61000000000000", + "gft8_bits_hex": "0x41", + "gft8_bits_int": 65, + "decoded_f64": 0.0020751953125, + "decoded_f64_hex": "0x3F61000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 0.002197265625, + "input_f64_hex": "0x3F62000000000000", + "gft8_bits_hex": "0x42", + "gft8_bits_int": 66, + "decoded_f64": 0.002197265625, + "decoded_f64_hex": "0x3F62000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 0.0023193359375, + "input_f64_hex": "0x3F63000000000000", + "gft8_bits_hex": "0x43", + "gft8_bits_int": 67, + "decoded_f64": 0.0023193359375, + "decoded_f64_hex": "0x3F63000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 0.00244140625, + "input_f64_hex": "0x3F64000000000000", + "gft8_bits_hex": "0x44", + "gft8_bits_int": 68, + "decoded_f64": 0.00244140625, + "decoded_f64_hex": "0x3F64000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 0.0025634765625, + "input_f64_hex": "0x3F65000000000000", + "gft8_bits_hex": "0x45", + "gft8_bits_int": 69, + "decoded_f64": 0.0025634765625, + "decoded_f64_hex": "0x3F65000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 0.002685546875, + "input_f64_hex": "0x3F66000000000000", + "gft8_bits_hex": "0x46", + "gft8_bits_int": 70, + "decoded_f64": 0.002685546875, + "decoded_f64_hex": "0x3F66000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 0.0028076171875, + "input_f64_hex": "0x3F67000000000000", + "gft8_bits_hex": "0x47", + "gft8_bits_int": 71, + "decoded_f64": 0.0028076171875, + "decoded_f64_hex": "0x3F67000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 0.0029296875, + "input_f64_hex": "0x3F68000000000000", + "gft8_bits_hex": "0x48", + "gft8_bits_int": 72, + "decoded_f64": 0.0029296875, + "decoded_f64_hex": "0x3F68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 0.0030517578125, + "input_f64_hex": "0x3F69000000000000", + "gft8_bits_hex": "0x49", + "gft8_bits_int": 73, + "decoded_f64": 0.0030517578125, + "decoded_f64_hex": "0x3F69000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 0.003173828125, + "input_f64_hex": "0x3F6A000000000000", + "gft8_bits_hex": "0x4A", + "gft8_bits_int": 74, + "decoded_f64": 0.003173828125, + "decoded_f64_hex": "0x3F6A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 0.0032958984375, + "input_f64_hex": "0x3F6B000000000000", + "gft8_bits_hex": "0x4B", + "gft8_bits_int": 75, + "decoded_f64": 0.0032958984375, + "decoded_f64_hex": "0x3F6B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 0.00341796875, + "input_f64_hex": "0x3F6C000000000000", + "gft8_bits_hex": "0x4C", + "gft8_bits_int": 76, + "decoded_f64": 0.00341796875, + "decoded_f64_hex": "0x3F6C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 0.0035400390625, + "input_f64_hex": "0x3F6D000000000000", + "gft8_bits_hex": "0x4D", + "gft8_bits_int": 77, + "decoded_f64": 0.0035400390625, + "decoded_f64_hex": "0x3F6D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 0.003662109375, + "input_f64_hex": "0x3F6E000000000000", + "gft8_bits_hex": "0x4E", + "gft8_bits_int": 78, + "decoded_f64": 0.003662109375, + "decoded_f64_hex": "0x3F6E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 0.0037841796875, + "input_f64_hex": "0x3F6F000000000000", + "gft8_bits_hex": "0x4F", + "gft8_bits_int": 79, + "decoded_f64": 0.0037841796875, + "decoded_f64_hex": "0x3F6F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 0.00390625, + "input_f64_hex": "0x3F70000000000000", + "gft8_bits_hex": "0x50", + "gft8_bits_int": 80, + "decoded_f64": 0.00390625, + "decoded_f64_hex": "0x3F70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 0.004150390625, + "input_f64_hex": "0x3F71000000000000", + "gft8_bits_hex": "0x51", + "gft8_bits_int": 81, + "decoded_f64": 0.004150390625, + "decoded_f64_hex": "0x3F71000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 0.00439453125, + "input_f64_hex": "0x3F72000000000000", + "gft8_bits_hex": "0x52", + "gft8_bits_int": 82, + "decoded_f64": 0.00439453125, + "decoded_f64_hex": "0x3F72000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 0.004638671875, + "input_f64_hex": "0x3F73000000000000", + "gft8_bits_hex": "0x53", + "gft8_bits_int": 83, + "decoded_f64": 0.004638671875, + "decoded_f64_hex": "0x3F73000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 0.0048828125, + "input_f64_hex": "0x3F74000000000000", + "gft8_bits_hex": "0x54", + "gft8_bits_int": 84, + "decoded_f64": 0.0048828125, + "decoded_f64_hex": "0x3F74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 0.005126953125, + "input_f64_hex": "0x3F75000000000000", + "gft8_bits_hex": "0x55", + "gft8_bits_int": 85, + "decoded_f64": 0.005126953125, + "decoded_f64_hex": "0x3F75000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 0.00537109375, + "input_f64_hex": "0x3F76000000000000", + "gft8_bits_hex": "0x56", + "gft8_bits_int": 86, + "decoded_f64": 0.00537109375, + "decoded_f64_hex": "0x3F76000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 0.005615234375, + "input_f64_hex": "0x3F77000000000000", + "gft8_bits_hex": "0x57", + "gft8_bits_int": 87, + "decoded_f64": 0.005615234375, + "decoded_f64_hex": "0x3F77000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 0.005859375, + "input_f64_hex": "0x3F78000000000000", + "gft8_bits_hex": "0x58", + "gft8_bits_int": 88, + "decoded_f64": 0.005859375, + "decoded_f64_hex": "0x3F78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 0.006103515625, + "input_f64_hex": "0x3F79000000000000", + "gft8_bits_hex": "0x59", + "gft8_bits_int": 89, + "decoded_f64": 0.006103515625, + "decoded_f64_hex": "0x3F79000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 0.00634765625, + "input_f64_hex": "0x3F7A000000000000", + "gft8_bits_hex": "0x5A", + "gft8_bits_int": 90, + "decoded_f64": 0.00634765625, + "decoded_f64_hex": "0x3F7A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 0.006591796875, + "input_f64_hex": "0x3F7B000000000000", + "gft8_bits_hex": "0x5B", + "gft8_bits_int": 91, + "decoded_f64": 0.006591796875, + "decoded_f64_hex": "0x3F7B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 0.0068359375, + "input_f64_hex": "0x3F7C000000000000", + "gft8_bits_hex": "0x5C", + "gft8_bits_int": 92, + "decoded_f64": 0.0068359375, + "decoded_f64_hex": "0x3F7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 0.007080078125, + "input_f64_hex": "0x3F7D000000000000", + "gft8_bits_hex": "0x5D", + "gft8_bits_int": 93, + "decoded_f64": 0.007080078125, + "decoded_f64_hex": "0x3F7D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 0.00732421875, + "input_f64_hex": "0x3F7E000000000000", + "gft8_bits_hex": "0x5E", + "gft8_bits_int": 94, + "decoded_f64": 0.00732421875, + "decoded_f64_hex": "0x3F7E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 0.007568359375, + "input_f64_hex": "0x3F7F000000000000", + "gft8_bits_hex": "0x5F", + "gft8_bits_int": 95, + "decoded_f64": 0.007568359375, + "decoded_f64_hex": "0x3F7F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 0.0078125, + "input_f64_hex": "0x3F80000000000000", + "gft8_bits_hex": "0x60", + "gft8_bits_int": 96, + "decoded_f64": 0.0078125, + "decoded_f64_hex": "0x3F80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 0.00830078125, + "input_f64_hex": "0x3F81000000000000", + "gft8_bits_hex": "0x61", + "gft8_bits_int": 97, + "decoded_f64": 0.00830078125, + "decoded_f64_hex": "0x3F81000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 0.0087890625, + "input_f64_hex": "0x3F82000000000000", + "gft8_bits_hex": "0x62", + "gft8_bits_int": 98, + "decoded_f64": 0.0087890625, + "decoded_f64_hex": "0x3F82000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 0.00927734375, + "input_f64_hex": "0x3F83000000000000", + "gft8_bits_hex": "0x63", + "gft8_bits_int": 99, + "decoded_f64": 0.00927734375, + "decoded_f64_hex": "0x3F83000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 0.009765625, + "input_f64_hex": "0x3F84000000000000", + "gft8_bits_hex": "0x64", + "gft8_bits_int": 100, + "decoded_f64": 0.009765625, + "decoded_f64_hex": "0x3F84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 0.01025390625, + "input_f64_hex": "0x3F85000000000000", + "gft8_bits_hex": "0x65", + "gft8_bits_int": 101, + "decoded_f64": 0.01025390625, + "decoded_f64_hex": "0x3F85000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 0.0107421875, + "input_f64_hex": "0x3F86000000000000", + "gft8_bits_hex": "0x66", + "gft8_bits_int": 102, + "decoded_f64": 0.0107421875, + "decoded_f64_hex": "0x3F86000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 0.01123046875, + "input_f64_hex": "0x3F87000000000000", + "gft8_bits_hex": "0x67", + "gft8_bits_int": 103, + "decoded_f64": 0.01123046875, + "decoded_f64_hex": "0x3F87000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 0.01171875, + "input_f64_hex": "0x3F88000000000000", + "gft8_bits_hex": "0x68", + "gft8_bits_int": 104, + "decoded_f64": 0.01171875, + "decoded_f64_hex": "0x3F88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 0.01220703125, + "input_f64_hex": "0x3F89000000000000", + "gft8_bits_hex": "0x69", + "gft8_bits_int": 105, + "decoded_f64": 0.01220703125, + "decoded_f64_hex": "0x3F89000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 0.0126953125, + "input_f64_hex": "0x3F8A000000000000", + "gft8_bits_hex": "0x6A", + "gft8_bits_int": 106, + "decoded_f64": 0.0126953125, + "decoded_f64_hex": "0x3F8A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 0.01318359375, + "input_f64_hex": "0x3F8B000000000000", + "gft8_bits_hex": "0x6B", + "gft8_bits_int": 107, + "decoded_f64": 0.01318359375, + "decoded_f64_hex": "0x3F8B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 0.013671875, + "input_f64_hex": "0x3F8C000000000000", + "gft8_bits_hex": "0x6C", + "gft8_bits_int": 108, + "decoded_f64": 0.013671875, + "decoded_f64_hex": "0x3F8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 0.01416015625, + "input_f64_hex": "0x3F8D000000000000", + "gft8_bits_hex": "0x6D", + "gft8_bits_int": 109, + "decoded_f64": 0.01416015625, + "decoded_f64_hex": "0x3F8D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 0.0146484375, + "input_f64_hex": "0x3F8E000000000000", + "gft8_bits_hex": "0x6E", + "gft8_bits_int": 110, + "decoded_f64": 0.0146484375, + "decoded_f64_hex": "0x3F8E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 0.01513671875, + "input_f64_hex": "0x3F8F000000000000", + "gft8_bits_hex": "0x6F", + "gft8_bits_int": 111, + "decoded_f64": 0.01513671875, + "decoded_f64_hex": "0x3F8F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "gft8_bits_hex": "0x70", + "gft8_bits_int": 112, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x71", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x71", + "gft8_bits_int": 113, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x72", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x72", + "gft8_bits_int": 114, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x73", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x73", + "gft8_bits_int": 115, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x74", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x74", + "gft8_bits_int": 116, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x75", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x75", + "gft8_bits_int": 117, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x76", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x76", + "gft8_bits_int": 118, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x77", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x77", + "gft8_bits_int": 119, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x78", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x78", + "gft8_bits_int": 120, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x79", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x79", + "gft8_bits_int": 121, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7A", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x7A", + "gft8_bits_int": 122, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7B", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x7B", + "gft8_bits_int": 123, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7C", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x7C", + "gft8_bits_int": 124, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x7D", + "gft8_bits_int": 125, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x7E", + "gft8_bits_int": 126, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0x7F", + "gft8_bits_int": 127, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x80", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "gft8_bits_hex": "0x80", + "gft8_bits_int": 128, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x81", + "input_f64": -1.52587890625e-05, + "input_f64_hex": "0xBEF0000000000000", + "gft8_bits_hex": "0x81", + "gft8_bits_int": 129, + "decoded_f64": -1.52587890625e-05, + "decoded_f64_hex": "0xBEF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x82", + "input_f64": -3.0517578125e-05, + "input_f64_hex": "0xBF00000000000000", + "gft8_bits_hex": "0x82", + "gft8_bits_int": 130, + "decoded_f64": -3.0517578125e-05, + "decoded_f64_hex": "0xBF00000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x83", + "input_f64": -4.57763671875e-05, + "input_f64_hex": "0xBF08000000000000", + "gft8_bits_hex": "0x83", + "gft8_bits_int": 131, + "decoded_f64": -4.57763671875e-05, + "decoded_f64_hex": "0xBF08000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x84", + "input_f64": -6.103515625e-05, + "input_f64_hex": "0xBF10000000000000", + "gft8_bits_hex": "0x84", + "gft8_bits_int": 132, + "decoded_f64": -6.103515625e-05, + "decoded_f64_hex": "0xBF10000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x85", + "input_f64": -7.62939453125e-05, + "input_f64_hex": "0xBF14000000000000", + "gft8_bits_hex": "0x85", + "gft8_bits_int": 133, + "decoded_f64": -7.62939453125e-05, + "decoded_f64_hex": "0xBF14000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x86", + "input_f64": -9.1552734375e-05, + "input_f64_hex": "0xBF18000000000000", + "gft8_bits_hex": "0x86", + "gft8_bits_int": 134, + "decoded_f64": -9.1552734375e-05, + "decoded_f64_hex": "0xBF18000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x87", + "input_f64": -0.0001068115234375, + "input_f64_hex": "0xBF1C000000000000", + "gft8_bits_hex": "0x87", + "gft8_bits_int": 135, + "decoded_f64": -0.0001068115234375, + "decoded_f64_hex": "0xBF1C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x88", + "input_f64": -0.0001220703125, + "input_f64_hex": "0xBF20000000000000", + "gft8_bits_hex": "0x88", + "gft8_bits_int": 136, + "decoded_f64": -0.0001220703125, + "decoded_f64_hex": "0xBF20000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x89", + "input_f64": -0.0001373291015625, + "input_f64_hex": "0xBF22000000000000", + "gft8_bits_hex": "0x89", + "gft8_bits_int": 137, + "decoded_f64": -0.0001373291015625, + "decoded_f64_hex": "0xBF22000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8A", + "input_f64": -0.000152587890625, + "input_f64_hex": "0xBF24000000000000", + "gft8_bits_hex": "0x8A", + "gft8_bits_int": 138, + "decoded_f64": -0.000152587890625, + "decoded_f64_hex": "0xBF24000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8B", + "input_f64": -0.0001678466796875, + "input_f64_hex": "0xBF26000000000000", + "gft8_bits_hex": "0x8B", + "gft8_bits_int": 139, + "decoded_f64": -0.0001678466796875, + "decoded_f64_hex": "0xBF26000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8C", + "input_f64": -0.00018310546875, + "input_f64_hex": "0xBF28000000000000", + "gft8_bits_hex": "0x8C", + "gft8_bits_int": 140, + "decoded_f64": -0.00018310546875, + "decoded_f64_hex": "0xBF28000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8D", + "input_f64": -0.0001983642578125, + "input_f64_hex": "0xBF2A000000000000", + "gft8_bits_hex": "0x8D", + "gft8_bits_int": 141, + "decoded_f64": -0.0001983642578125, + "decoded_f64_hex": "0xBF2A000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8E", + "input_f64": -0.000213623046875, + "input_f64_hex": "0xBF2C000000000000", + "gft8_bits_hex": "0x8E", + "gft8_bits_int": 142, + "decoded_f64": -0.000213623046875, + "decoded_f64_hex": "0xBF2C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8F", + "input_f64": -0.0002288818359375, + "input_f64_hex": "0xBF2E000000000000", + "gft8_bits_hex": "0x8F", + "gft8_bits_int": 143, + "decoded_f64": -0.0002288818359375, + "decoded_f64_hex": "0xBF2E000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x90", + "input_f64": -0.000244140625, + "input_f64_hex": "0xBF30000000000000", + "gft8_bits_hex": "0x90", + "gft8_bits_int": 144, + "decoded_f64": -0.000244140625, + "decoded_f64_hex": "0xBF30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -0.0002593994140625, + "input_f64_hex": "0xBF31000000000000", + "gft8_bits_hex": "0x91", + "gft8_bits_int": 145, + "decoded_f64": -0.0002593994140625, + "decoded_f64_hex": "0xBF31000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -0.000274658203125, + "input_f64_hex": "0xBF32000000000000", + "gft8_bits_hex": "0x92", + "gft8_bits_int": 146, + "decoded_f64": -0.000274658203125, + "decoded_f64_hex": "0xBF32000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -0.0002899169921875, + "input_f64_hex": "0xBF33000000000000", + "gft8_bits_hex": "0x93", + "gft8_bits_int": 147, + "decoded_f64": -0.0002899169921875, + "decoded_f64_hex": "0xBF33000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -0.00030517578125, + "input_f64_hex": "0xBF34000000000000", + "gft8_bits_hex": "0x94", + "gft8_bits_int": 148, + "decoded_f64": -0.00030517578125, + "decoded_f64_hex": "0xBF34000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -0.0003204345703125, + "input_f64_hex": "0xBF35000000000000", + "gft8_bits_hex": "0x95", + "gft8_bits_int": 149, + "decoded_f64": -0.0003204345703125, + "decoded_f64_hex": "0xBF35000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -0.000335693359375, + "input_f64_hex": "0xBF36000000000000", + "gft8_bits_hex": "0x96", + "gft8_bits_int": 150, + "decoded_f64": -0.000335693359375, + "decoded_f64_hex": "0xBF36000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -0.0003509521484375, + "input_f64_hex": "0xBF37000000000000", + "gft8_bits_hex": "0x97", + "gft8_bits_int": 151, + "decoded_f64": -0.0003509521484375, + "decoded_f64_hex": "0xBF37000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -0.0003662109375, + "input_f64_hex": "0xBF38000000000000", + "gft8_bits_hex": "0x98", + "gft8_bits_int": 152, + "decoded_f64": -0.0003662109375, + "decoded_f64_hex": "0xBF38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -0.0003814697265625, + "input_f64_hex": "0xBF39000000000000", + "gft8_bits_hex": "0x99", + "gft8_bits_int": 153, + "decoded_f64": -0.0003814697265625, + "decoded_f64_hex": "0xBF39000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -0.000396728515625, + "input_f64_hex": "0xBF3A000000000000", + "gft8_bits_hex": "0x9A", + "gft8_bits_int": 154, + "decoded_f64": -0.000396728515625, + "decoded_f64_hex": "0xBF3A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -0.0004119873046875, + "input_f64_hex": "0xBF3B000000000000", + "gft8_bits_hex": "0x9B", + "gft8_bits_int": 155, + "decoded_f64": -0.0004119873046875, + "decoded_f64_hex": "0xBF3B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -0.00042724609375, + "input_f64_hex": "0xBF3C000000000000", + "gft8_bits_hex": "0x9C", + "gft8_bits_int": 156, + "decoded_f64": -0.00042724609375, + "decoded_f64_hex": "0xBF3C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -0.0004425048828125, + "input_f64_hex": "0xBF3D000000000000", + "gft8_bits_hex": "0x9D", + "gft8_bits_int": 157, + "decoded_f64": -0.0004425048828125, + "decoded_f64_hex": "0xBF3D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -0.000457763671875, + "input_f64_hex": "0xBF3E000000000000", + "gft8_bits_hex": "0x9E", + "gft8_bits_int": 158, + "decoded_f64": -0.000457763671875, + "decoded_f64_hex": "0xBF3E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -0.0004730224609375, + "input_f64_hex": "0xBF3F000000000000", + "gft8_bits_hex": "0x9F", + "gft8_bits_int": 159, + "decoded_f64": -0.0004730224609375, + "decoded_f64_hex": "0xBF3F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -0.00048828125, + "input_f64_hex": "0xBF40000000000000", + "gft8_bits_hex": "0xA0", + "gft8_bits_int": 160, + "decoded_f64": -0.00048828125, + "decoded_f64_hex": "0xBF40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -0.000518798828125, + "input_f64_hex": "0xBF41000000000000", + "gft8_bits_hex": "0xA1", + "gft8_bits_int": 161, + "decoded_f64": -0.000518798828125, + "decoded_f64_hex": "0xBF41000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -0.00054931640625, + "input_f64_hex": "0xBF42000000000000", + "gft8_bits_hex": "0xA2", + "gft8_bits_int": 162, + "decoded_f64": -0.00054931640625, + "decoded_f64_hex": "0xBF42000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -0.000579833984375, + "input_f64_hex": "0xBF43000000000000", + "gft8_bits_hex": "0xA3", + "gft8_bits_int": 163, + "decoded_f64": -0.000579833984375, + "decoded_f64_hex": "0xBF43000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -0.0006103515625, + "input_f64_hex": "0xBF44000000000000", + "gft8_bits_hex": "0xA4", + "gft8_bits_int": 164, + "decoded_f64": -0.0006103515625, + "decoded_f64_hex": "0xBF44000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -0.000640869140625, + "input_f64_hex": "0xBF45000000000000", + "gft8_bits_hex": "0xA5", + "gft8_bits_int": 165, + "decoded_f64": -0.000640869140625, + "decoded_f64_hex": "0xBF45000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -0.00067138671875, + "input_f64_hex": "0xBF46000000000000", + "gft8_bits_hex": "0xA6", + "gft8_bits_int": 166, + "decoded_f64": -0.00067138671875, + "decoded_f64_hex": "0xBF46000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -0.000701904296875, + "input_f64_hex": "0xBF47000000000000", + "gft8_bits_hex": "0xA7", + "gft8_bits_int": 167, + "decoded_f64": -0.000701904296875, + "decoded_f64_hex": "0xBF47000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -0.000732421875, + "input_f64_hex": "0xBF48000000000000", + "gft8_bits_hex": "0xA8", + "gft8_bits_int": 168, + "decoded_f64": -0.000732421875, + "decoded_f64_hex": "0xBF48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -0.000762939453125, + "input_f64_hex": "0xBF49000000000000", + "gft8_bits_hex": "0xA9", + "gft8_bits_int": 169, + "decoded_f64": -0.000762939453125, + "decoded_f64_hex": "0xBF49000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -0.00079345703125, + "input_f64_hex": "0xBF4A000000000000", + "gft8_bits_hex": "0xAA", + "gft8_bits_int": 170, + "decoded_f64": -0.00079345703125, + "decoded_f64_hex": "0xBF4A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -0.000823974609375, + "input_f64_hex": "0xBF4B000000000000", + "gft8_bits_hex": "0xAB", + "gft8_bits_int": 171, + "decoded_f64": -0.000823974609375, + "decoded_f64_hex": "0xBF4B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -0.0008544921875, + "input_f64_hex": "0xBF4C000000000000", + "gft8_bits_hex": "0xAC", + "gft8_bits_int": 172, + "decoded_f64": -0.0008544921875, + "decoded_f64_hex": "0xBF4C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -0.000885009765625, + "input_f64_hex": "0xBF4D000000000000", + "gft8_bits_hex": "0xAD", + "gft8_bits_int": 173, + "decoded_f64": -0.000885009765625, + "decoded_f64_hex": "0xBF4D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -0.00091552734375, + "input_f64_hex": "0xBF4E000000000000", + "gft8_bits_hex": "0xAE", + "gft8_bits_int": 174, + "decoded_f64": -0.00091552734375, + "decoded_f64_hex": "0xBF4E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -0.000946044921875, + "input_f64_hex": "0xBF4F000000000000", + "gft8_bits_hex": "0xAF", + "gft8_bits_int": 175, + "decoded_f64": -0.000946044921875, + "decoded_f64_hex": "0xBF4F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -0.0009765625, + "input_f64_hex": "0xBF50000000000000", + "gft8_bits_hex": "0xB0", + "gft8_bits_int": 176, + "decoded_f64": -0.0009765625, + "decoded_f64_hex": "0xBF50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -0.00103759765625, + "input_f64_hex": "0xBF51000000000000", + "gft8_bits_hex": "0xB1", + "gft8_bits_int": 177, + "decoded_f64": -0.00103759765625, + "decoded_f64_hex": "0xBF51000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -0.0010986328125, + "input_f64_hex": "0xBF52000000000000", + "gft8_bits_hex": "0xB2", + "gft8_bits_int": 178, + "decoded_f64": -0.0010986328125, + "decoded_f64_hex": "0xBF52000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -0.00115966796875, + "input_f64_hex": "0xBF53000000000000", + "gft8_bits_hex": "0xB3", + "gft8_bits_int": 179, + "decoded_f64": -0.00115966796875, + "decoded_f64_hex": "0xBF53000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -0.001220703125, + "input_f64_hex": "0xBF54000000000000", + "gft8_bits_hex": "0xB4", + "gft8_bits_int": 180, + "decoded_f64": -0.001220703125, + "decoded_f64_hex": "0xBF54000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -0.00128173828125, + "input_f64_hex": "0xBF55000000000000", + "gft8_bits_hex": "0xB5", + "gft8_bits_int": 181, + "decoded_f64": -0.00128173828125, + "decoded_f64_hex": "0xBF55000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -0.0013427734375, + "input_f64_hex": "0xBF56000000000000", + "gft8_bits_hex": "0xB6", + "gft8_bits_int": 182, + "decoded_f64": -0.0013427734375, + "decoded_f64_hex": "0xBF56000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -0.00140380859375, + "input_f64_hex": "0xBF57000000000000", + "gft8_bits_hex": "0xB7", + "gft8_bits_int": 183, + "decoded_f64": -0.00140380859375, + "decoded_f64_hex": "0xBF57000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -0.00146484375, + "input_f64_hex": "0xBF58000000000000", + "gft8_bits_hex": "0xB8", + "gft8_bits_int": 184, + "decoded_f64": -0.00146484375, + "decoded_f64_hex": "0xBF58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -0.00152587890625, + "input_f64_hex": "0xBF59000000000000", + "gft8_bits_hex": "0xB9", + "gft8_bits_int": 185, + "decoded_f64": -0.00152587890625, + "decoded_f64_hex": "0xBF59000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -0.0015869140625, + "input_f64_hex": "0xBF5A000000000000", + "gft8_bits_hex": "0xBA", + "gft8_bits_int": 186, + "decoded_f64": -0.0015869140625, + "decoded_f64_hex": "0xBF5A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -0.00164794921875, + "input_f64_hex": "0xBF5B000000000000", + "gft8_bits_hex": "0xBB", + "gft8_bits_int": 187, + "decoded_f64": -0.00164794921875, + "decoded_f64_hex": "0xBF5B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -0.001708984375, + "input_f64_hex": "0xBF5C000000000000", + "gft8_bits_hex": "0xBC", + "gft8_bits_int": 188, + "decoded_f64": -0.001708984375, + "decoded_f64_hex": "0xBF5C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -0.00177001953125, + "input_f64_hex": "0xBF5D000000000000", + "gft8_bits_hex": "0xBD", + "gft8_bits_int": 189, + "decoded_f64": -0.00177001953125, + "decoded_f64_hex": "0xBF5D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -0.0018310546875, + "input_f64_hex": "0xBF5E000000000000", + "gft8_bits_hex": "0xBE", + "gft8_bits_int": 190, + "decoded_f64": -0.0018310546875, + "decoded_f64_hex": "0xBF5E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -0.00189208984375, + "input_f64_hex": "0xBF5F000000000000", + "gft8_bits_hex": "0xBF", + "gft8_bits_int": 191, + "decoded_f64": -0.00189208984375, + "decoded_f64_hex": "0xBF5F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -0.001953125, + "input_f64_hex": "0xBF60000000000000", + "gft8_bits_hex": "0xC0", + "gft8_bits_int": 192, + "decoded_f64": -0.001953125, + "decoded_f64_hex": "0xBF60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -0.0020751953125, + "input_f64_hex": "0xBF61000000000000", + "gft8_bits_hex": "0xC1", + "gft8_bits_int": 193, + "decoded_f64": -0.0020751953125, + "decoded_f64_hex": "0xBF61000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -0.002197265625, + "input_f64_hex": "0xBF62000000000000", + "gft8_bits_hex": "0xC2", + "gft8_bits_int": 194, + "decoded_f64": -0.002197265625, + "decoded_f64_hex": "0xBF62000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -0.0023193359375, + "input_f64_hex": "0xBF63000000000000", + "gft8_bits_hex": "0xC3", + "gft8_bits_int": 195, + "decoded_f64": -0.0023193359375, + "decoded_f64_hex": "0xBF63000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -0.00244140625, + "input_f64_hex": "0xBF64000000000000", + "gft8_bits_hex": "0xC4", + "gft8_bits_int": 196, + "decoded_f64": -0.00244140625, + "decoded_f64_hex": "0xBF64000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -0.0025634765625, + "input_f64_hex": "0xBF65000000000000", + "gft8_bits_hex": "0xC5", + "gft8_bits_int": 197, + "decoded_f64": -0.0025634765625, + "decoded_f64_hex": "0xBF65000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -0.002685546875, + "input_f64_hex": "0xBF66000000000000", + "gft8_bits_hex": "0xC6", + "gft8_bits_int": 198, + "decoded_f64": -0.002685546875, + "decoded_f64_hex": "0xBF66000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -0.0028076171875, + "input_f64_hex": "0xBF67000000000000", + "gft8_bits_hex": "0xC7", + "gft8_bits_int": 199, + "decoded_f64": -0.0028076171875, + "decoded_f64_hex": "0xBF67000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -0.0029296875, + "input_f64_hex": "0xBF68000000000000", + "gft8_bits_hex": "0xC8", + "gft8_bits_int": 200, + "decoded_f64": -0.0029296875, + "decoded_f64_hex": "0xBF68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -0.0030517578125, + "input_f64_hex": "0xBF69000000000000", + "gft8_bits_hex": "0xC9", + "gft8_bits_int": 201, + "decoded_f64": -0.0030517578125, + "decoded_f64_hex": "0xBF69000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -0.003173828125, + "input_f64_hex": "0xBF6A000000000000", + "gft8_bits_hex": "0xCA", + "gft8_bits_int": 202, + "decoded_f64": -0.003173828125, + "decoded_f64_hex": "0xBF6A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -0.0032958984375, + "input_f64_hex": "0xBF6B000000000000", + "gft8_bits_hex": "0xCB", + "gft8_bits_int": 203, + "decoded_f64": -0.0032958984375, + "decoded_f64_hex": "0xBF6B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -0.00341796875, + "input_f64_hex": "0xBF6C000000000000", + "gft8_bits_hex": "0xCC", + "gft8_bits_int": 204, + "decoded_f64": -0.00341796875, + "decoded_f64_hex": "0xBF6C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -0.0035400390625, + "input_f64_hex": "0xBF6D000000000000", + "gft8_bits_hex": "0xCD", + "gft8_bits_int": 205, + "decoded_f64": -0.0035400390625, + "decoded_f64_hex": "0xBF6D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -0.003662109375, + "input_f64_hex": "0xBF6E000000000000", + "gft8_bits_hex": "0xCE", + "gft8_bits_int": 206, + "decoded_f64": -0.003662109375, + "decoded_f64_hex": "0xBF6E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -0.0037841796875, + "input_f64_hex": "0xBF6F000000000000", + "gft8_bits_hex": "0xCF", + "gft8_bits_int": 207, + "decoded_f64": -0.0037841796875, + "decoded_f64_hex": "0xBF6F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -0.00390625, + "input_f64_hex": "0xBF70000000000000", + "gft8_bits_hex": "0xD0", + "gft8_bits_int": 208, + "decoded_f64": -0.00390625, + "decoded_f64_hex": "0xBF70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -0.004150390625, + "input_f64_hex": "0xBF71000000000000", + "gft8_bits_hex": "0xD1", + "gft8_bits_int": 209, + "decoded_f64": -0.004150390625, + "decoded_f64_hex": "0xBF71000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -0.00439453125, + "input_f64_hex": "0xBF72000000000000", + "gft8_bits_hex": "0xD2", + "gft8_bits_int": 210, + "decoded_f64": -0.00439453125, + "decoded_f64_hex": "0xBF72000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -0.004638671875, + "input_f64_hex": "0xBF73000000000000", + "gft8_bits_hex": "0xD3", + "gft8_bits_int": 211, + "decoded_f64": -0.004638671875, + "decoded_f64_hex": "0xBF73000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -0.0048828125, + "input_f64_hex": "0xBF74000000000000", + "gft8_bits_hex": "0xD4", + "gft8_bits_int": 212, + "decoded_f64": -0.0048828125, + "decoded_f64_hex": "0xBF74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -0.005126953125, + "input_f64_hex": "0xBF75000000000000", + "gft8_bits_hex": "0xD5", + "gft8_bits_int": 213, + "decoded_f64": -0.005126953125, + "decoded_f64_hex": "0xBF75000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -0.00537109375, + "input_f64_hex": "0xBF76000000000000", + "gft8_bits_hex": "0xD6", + "gft8_bits_int": 214, + "decoded_f64": -0.00537109375, + "decoded_f64_hex": "0xBF76000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -0.005615234375, + "input_f64_hex": "0xBF77000000000000", + "gft8_bits_hex": "0xD7", + "gft8_bits_int": 215, + "decoded_f64": -0.005615234375, + "decoded_f64_hex": "0xBF77000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -0.005859375, + "input_f64_hex": "0xBF78000000000000", + "gft8_bits_hex": "0xD8", + "gft8_bits_int": 216, + "decoded_f64": -0.005859375, + "decoded_f64_hex": "0xBF78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -0.006103515625, + "input_f64_hex": "0xBF79000000000000", + "gft8_bits_hex": "0xD9", + "gft8_bits_int": 217, + "decoded_f64": -0.006103515625, + "decoded_f64_hex": "0xBF79000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -0.00634765625, + "input_f64_hex": "0xBF7A000000000000", + "gft8_bits_hex": "0xDA", + "gft8_bits_int": 218, + "decoded_f64": -0.00634765625, + "decoded_f64_hex": "0xBF7A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -0.006591796875, + "input_f64_hex": "0xBF7B000000000000", + "gft8_bits_hex": "0xDB", + "gft8_bits_int": 219, + "decoded_f64": -0.006591796875, + "decoded_f64_hex": "0xBF7B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -0.0068359375, + "input_f64_hex": "0xBF7C000000000000", + "gft8_bits_hex": "0xDC", + "gft8_bits_int": 220, + "decoded_f64": -0.0068359375, + "decoded_f64_hex": "0xBF7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -0.007080078125, + "input_f64_hex": "0xBF7D000000000000", + "gft8_bits_hex": "0xDD", + "gft8_bits_int": 221, + "decoded_f64": -0.007080078125, + "decoded_f64_hex": "0xBF7D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -0.00732421875, + "input_f64_hex": "0xBF7E000000000000", + "gft8_bits_hex": "0xDE", + "gft8_bits_int": 222, + "decoded_f64": -0.00732421875, + "decoded_f64_hex": "0xBF7E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -0.007568359375, + "input_f64_hex": "0xBF7F000000000000", + "gft8_bits_hex": "0xDF", + "gft8_bits_int": 223, + "decoded_f64": -0.007568359375, + "decoded_f64_hex": "0xBF7F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -0.0078125, + "input_f64_hex": "0xBF80000000000000", + "gft8_bits_hex": "0xE0", + "gft8_bits_int": 224, + "decoded_f64": -0.0078125, + "decoded_f64_hex": "0xBF80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -0.00830078125, + "input_f64_hex": "0xBF81000000000000", + "gft8_bits_hex": "0xE1", + "gft8_bits_int": 225, + "decoded_f64": -0.00830078125, + "decoded_f64_hex": "0xBF81000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -0.0087890625, + "input_f64_hex": "0xBF82000000000000", + "gft8_bits_hex": "0xE2", + "gft8_bits_int": 226, + "decoded_f64": -0.0087890625, + "decoded_f64_hex": "0xBF82000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -0.00927734375, + "input_f64_hex": "0xBF83000000000000", + "gft8_bits_hex": "0xE3", + "gft8_bits_int": 227, + "decoded_f64": -0.00927734375, + "decoded_f64_hex": "0xBF83000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -0.009765625, + "input_f64_hex": "0xBF84000000000000", + "gft8_bits_hex": "0xE4", + "gft8_bits_int": 228, + "decoded_f64": -0.009765625, + "decoded_f64_hex": "0xBF84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -0.01025390625, + "input_f64_hex": "0xBF85000000000000", + "gft8_bits_hex": "0xE5", + "gft8_bits_int": 229, + "decoded_f64": -0.01025390625, + "decoded_f64_hex": "0xBF85000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -0.0107421875, + "input_f64_hex": "0xBF86000000000000", + "gft8_bits_hex": "0xE6", + "gft8_bits_int": 230, + "decoded_f64": -0.0107421875, + "decoded_f64_hex": "0xBF86000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -0.01123046875, + "input_f64_hex": "0xBF87000000000000", + "gft8_bits_hex": "0xE7", + "gft8_bits_int": 231, + "decoded_f64": -0.01123046875, + "decoded_f64_hex": "0xBF87000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -0.01171875, + "input_f64_hex": "0xBF88000000000000", + "gft8_bits_hex": "0xE8", + "gft8_bits_int": 232, + "decoded_f64": -0.01171875, + "decoded_f64_hex": "0xBF88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -0.01220703125, + "input_f64_hex": "0xBF89000000000000", + "gft8_bits_hex": "0xE9", + "gft8_bits_int": 233, + "decoded_f64": -0.01220703125, + "decoded_f64_hex": "0xBF89000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -0.0126953125, + "input_f64_hex": "0xBF8A000000000000", + "gft8_bits_hex": "0xEA", + "gft8_bits_int": 234, + "decoded_f64": -0.0126953125, + "decoded_f64_hex": "0xBF8A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -0.01318359375, + "input_f64_hex": "0xBF8B000000000000", + "gft8_bits_hex": "0xEB", + "gft8_bits_int": 235, + "decoded_f64": -0.01318359375, + "decoded_f64_hex": "0xBF8B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -0.013671875, + "input_f64_hex": "0xBF8C000000000000", + "gft8_bits_hex": "0xEC", + "gft8_bits_int": 236, + "decoded_f64": -0.013671875, + "decoded_f64_hex": "0xBF8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -0.01416015625, + "input_f64_hex": "0xBF8D000000000000", + "gft8_bits_hex": "0xED", + "gft8_bits_int": 237, + "decoded_f64": -0.01416015625, + "decoded_f64_hex": "0xBF8D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -0.0146484375, + "input_f64_hex": "0xBF8E000000000000", + "gft8_bits_hex": "0xEE", + "gft8_bits_int": 238, + "decoded_f64": -0.0146484375, + "decoded_f64_hex": "0xBF8E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -0.01513671875, + "input_f64_hex": "0xBF8F000000000000", + "gft8_bits_hex": "0xEF", + "gft8_bits_int": 239, + "decoded_f64": -0.01513671875, + "decoded_f64_hex": "0xBF8F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "gft8_bits_hex": "0xF0", + "gft8_bits_int": 240, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0xF1", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF1", + "gft8_bits_int": 241, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF2", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF2", + "gft8_bits_int": 242, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF3", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF3", + "gft8_bits_int": 243, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF4", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF4", + "gft8_bits_int": 244, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF5", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF5", + "gft8_bits_int": 245, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF6", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF6", + "gft8_bits_int": 246, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF7", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF7", + "gft8_bits_int": 247, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF8", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF8", + "gft8_bits_int": 248, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF9", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xF9", + "gft8_bits_int": 249, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFA", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xFA", + "gft8_bits_int": 250, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFB", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xFB", + "gft8_bits_int": 251, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFC", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xFC", + "gft8_bits_int": 252, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFD", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xFD", + "gft8_bits_int": 253, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFE", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xFE", + "gft8_bits_int": 254, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFF", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gft8_bits_hex": "0xFF", + "gft8_bits_int": 255, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/tef1024_conformance_v0.json b/conformance/vectors/tef1024_conformance_v0.json deleted file mode 100644 index 9db9434c08..0000000000 --- a/conformance/vectors/tef1024_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF1024", - "ssot": "specs/numeric/tef1024.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 11, - "mant_bits": 1012, - "exp_offset": 88573, - "offset_max": 177146, - "width_rule": "1 + 11 + 1012 = 1024", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef1024_bits_int": 0, - "tef1024_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-1000", - "input_f64": 9.332636185032189e-302, - "input_f64_hex": "0x0170000000000000", - "tef1024_bits_int": 3843490744611757592470176842601739819265798290452016931007346801080596586502718712016767452283983191400769466016107795534729784283297096406632355479343424681185123957738219028833401923129864306719449422207749074754507658619330200663895261921238247959010276921919256810489965861467403368155113930628462446379008, - "tef1024_bits_hex": "0x156150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 9.332636185032189e-302, - "decoded_f64_hex": "0x0170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1000", - "input_f64": -9.332636185032189e-302, - "input_f64_hex": "0x8170000000000000", - "tef1024_bits_int": 15348726807730579401937730063651498114420850955682778996506871995175487838054780352510110000918065496752456754327876970424892329487419760246174591040269768641362269136929610086516743977609614330364446731141189443960149302289247825078225700995851191137464709605732779897846589601530105211664576735724412791160832, - "tef1024_bits_hex": "0x556150000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -9.332636185032189e-302, - "decoded_f64_hex": "0x8170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1000", - "input_f64": 1.3998954277548283e-301, - "input_f64_hex": "0x0178000000000000", - "tef1024_bits_int": 3843512689108032767224909866346744568102878588022560660335627249088550411292245750708556112986781336851943919155009147023176764116032547385223968375758297663866322415733021868858460065490655474455547988257914124193688424995145916296571223092272249524835125963729643112528325230027698592729858173225670652461056, - "tef1024_bits_hex": "0x156158000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.3998954277548283e-301, - "decoded_f64_hex": "0x0178000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-500", - "input_f64": 3.054936363499605e-151, - "input_f64_hex": "0x20b0000000000000", - "tef1024_bits_int": 3865435240886932347203200587606488656346095860995746259287794809034421376029757403805428155082128642575222604917459283981709617018748074998245251894216407362383581952541059053891544283921032042818015472372798513935274034435045833339856432955239813783859318732305558848849334421762627942899356527836668528427008, - "tef1024_bits_hex": "0x158090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.054936363499605e-151, - "decoded_f64_hex": "0x20b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-500", - "input_f64": -3.054936363499605e-151, - "input_f64_hex": "0xa0b0000000000000", - "tef1024_bits_int": 15370671304005754156670753808656246951501148526226508324787320003129312627581819044298770703716210947926909893229228458871872162222870738837787487455142751322560727131732450111574886338400782066463012781306238883140915678104963457754186872029852756962313751416119081936205958161825329786408819332932618873208832, - "tef1024_bits_hex": "0x558090000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -3.054936363499605e-151, - "decoded_f64_hex": "0xa0b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-500", - "input_f64": 4.582404545249407e-151, - "input_f64_hex": "0x20b8000000000000", - "tef1024_bits_int": 3865457185383207521957933611351493405183176158566289988616075257042375200819284442497216815784926788026397058056360635470156596851483525976836864790631280345064780410535861893916602426281823210554114038422963563374454800810861548972532394126273815349684167774115945150887693790322923167474100770433876734509056, - "tef1024_bits_hex": "0x158098000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 4.582404545249407e-151, - "decoded_f64_hex": "0x20b8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef1024_bits_int": 3887335848169556752426758285121227995752232836398388128911681920972338515977742018210511536474677802847326837541008069451795490088728151632674922516259644078219643031354293398899570359990617443444384390437517854237678877499130034750465681647173376477058662459071088283131984244937262068494110639850458198310912, - "tef1024_bits_hex": "0x159fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef1024_bits_int": 15392571911288378561894311506170986290907285501629150194411207115067229767529803658703854085108760108199014125852777244341958035292850815472217158077185988038396788210545684456582912414470367467089381699370958223443320521169047659164796120721786319655513095142884611370488607984999963912003573444946408543092736, - "tef1024_bits_hex": "0x559fc0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef1024_bits_int": 3887357792665831927181491308866232744589313133968931858239962368980292340767269056902300197177475948298501290679909420940242469921463602611266535412674517060900841489349096238924628502351408611180482956487682903676859643874945750383141642818207378042883511500881474585170343613497557293068854882447666404392960, - "tef1024_bits_hex": "0x159fc8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef1024_bits_int": 3887379737162107101936224332611237493426393431539475587568242816988246165556796095594088857880274093749675743818810772428689449754199053589858148309089390043582039947343899078949686644712199778916581522537847953116040410250761466015817603989241379608708360542691860887208702982057852517643599125044874610475008, - "tef1024_bits_hex": "0x159fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef1024_bits_int": 15392615800280928911403777553660995788581446096770237653067768011083137417108857736087431406514356399101363032130579947318851994958321717429400383870015734003759185126535290136633028699191949802561578831471288322321682053920679090430148043063854322787162793226505383974565326722120554361153061930140824955256832, - "tef1024_bits_hex": "0x559fd0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef1024_bits_int": 3887401681658382276690957356356242242263473729110019316896523264996199990346323134285877518583072239200850196957712123917136429586934504568449761205504263026263238405338701918974744787072990946652680088588013002555221176626577181648493565160275381174533209584502247189247062350618147742218343367642082816557056, - "tef1024_bits_hex": "0x159fd8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef1024_bits_int": 3887423626154657451445690380101246991100554026680563046224803713004153815135850172977666179285870384652024650096613475405583409419669955547041374101919136008944436863333504758999802929433782114388778654638178051994401943002392897281169526331309382740358058626312633491285421719178442966793087610239291022639104, - "tef1024_bits_hex": "0x159fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef1024_bits_int": 15392659689273479260913243601151005286255606691911325111724328907099045066687911813471008727919952690003711938408382650295745954623792619386583609662845479969121582042524895816683144983913532138033775963571618421200043586672310521695499965405922325918812491310126156578642045459241144810302550415335241367420928, - "tef1024_bits_hex": "0x559fe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef1024_bits_int": 3887445570650932626200423403846251739937634324251106775553084161012107639925377211669454839988668530103199103235514826894030389252405406525632986998334008991625635321328307599024861071794573282124877220688343101433582709378208612913845487502343384306182907668123019793323781087738738191367831852836499228721152, - "tef1024_bits_hex": "0x159fe8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_500", - "input_f64": 3.273390607896142e+150, - "input_f64_hex": "0x5f30000000000000", - "tef1024_bits_int": 3909324233437281856669248077615986330506691002083204915848690824942070955083834787382749560678419544924128882720162260875669282489650032181471044723962372724780497942146739104007829005503367515015147572702897392296806786066477098691778775023242945433557402353078162925568071542353077092387841722253080692523008, - "tef1024_bits_hex": "0x15bf10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.273390607896142e+150, - "decoded_f64_hex": "0x5f30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_500", - "input_f64": -3.273390607896142e+150, - "input_f64_hex": "0xdf30000000000000", - "tef1024_bits_int": 15414560296556103666136801298665744625661743667313966981348216019036962206635896427876092109312501850275816171031931435765831827693772696021013280284888716684957643121338130161691171059983117538660144881636337761502448429736394723106109214097855888612011835036891686012924695282415778935897304527349031037304832, - "tef1024_bits_hex": "0x55bf10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -3.273390607896142e+150, - "decoded_f64_hex": "0xdf30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e500", - "input_f64": 4.910085911844213e+150, - "input_f64_hex": "0x5f38000000000000", - "tef1024_bits_int": 3909346177933557031423981101360991079343771299653748645176971272950024779873361826074538221381217690375303335859063612364116262322385483160062657620377245707461696400141541944032887147864158682751246138753062441735987552442292814324454736194276946999382251394888549227606430910913372316962585964850288898605056, - "tef1024_bits_hex": "0x15bf18000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 4.910085911844213e+150, - "decoded_f64_hex": "0x5f38000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1000", - "input_f64": 1.0715086071862673e+301, - "input_f64_hex": "0x7e70000000000000", - "tef1024_bits_int": 3931268729712456611402271822620735167586988572626934244129138832895895744610873479171410263476564996098582021621513749322649115225101010773083941138835355405978955936949579129065971366294535251113713622867946831477573161882192731367739946057244511258406444163464464963927440102648301667132084319461286774571008, - "tef1024_bits_hex": "0x15de50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.0715086071862673e+301, - "decoded_f64_hex": "0x7e70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1000", - "input_f64": -1.0715086071862673e+301, - "input_f64_hex": "0xfe70000000000000", - "tef1024_bits_int": 15436504792831278420869825043670493462742041237857696309628664026990786996162935119664752812110647301450269309933282924212811660429223674612626176699761699366156101116140970186749313420774285274758710931801387200683214805552110355782070385131857454436860876847277988051284063842711003510641547124557237119352832, - "tef1024_bits_hex": "0x55de50000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -1.0715086071862673e+301, - "decoded_f64_hex": "0xfe70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1000", - "input_f64": 1.607262910779401e+301, - "input_f64_hex": "0x7e78000000000000", - "tef1024_bits_int": 3931290674208731786157004846365739916424068870197477973457419280903849569400400517863198924179363141549756474760415100811096095057836461751675554035250228388660154394944381969091029508655326418849812188918111880916753928258008447000415907228278512824231293205274851265965799471208596891706828562058494980653056, - "tef1024_bits_hex": "0x15de58000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.607262910779401e+301, - "decoded_f64_hex": "0x7e78000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef128_conformance_v0.json b/conformance/vectors/tef128_conformance_v0.json deleted file mode 100644 index 9efec19c68..0000000000 --- a/conformance/vectors/tef128_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF128", - "ssot": "specs/numeric/tef128.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 8, - "mant_bits": 119, - "exp_offset": 3280, - "offset_max": 6560, - "width_rule": "1 + 8 + 119 = 128", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef128_bits_int": 0, - "tef128_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-1000", - "input_f64": 9.332636185032189e-302, - "input_f64_hex": "0x0170000000000000", - "tef128_bits_int": 1515319915194804095110340048719592816640, - "tef128_bits_hex": "0x474000000000000000000000000000000", - "decoded_f64": 9.332636185032189e-302, - "decoded_f64_hex": "0x0170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1000", - "input_f64": -9.332636185032189e-302, - "input_f64_hex": "0x8170000000000000", - "tef128_bits_int": 6959837785929819510524333767627884199936, - "tef128_bits_hex": "0x1474000000000000000000000000000000", - "decoded_f64": -9.332636185032189e-302, - "decoded_f64_hex": "0x8170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1000", - "input_f64": 1.3998954277548283e-301, - "input_f64_hex": "0x0178000000000000", - "tef128_bits_int": 1515652222193750324078566000484662902784, - "tef128_bits_hex": "0x474400000000000000000000000000000", - "decoded_f64": 1.3998954277548283e-301, - "decoded_f64_hex": "0x0178000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-500", - "input_f64": 3.054936363499605e-151, - "input_f64_hex": "0x20b0000000000000", - "tef128_bits_int": 1847626914141033063336291813789678960640, - "tef128_bits_hex": "0x56e000000000000000000000000000000", - "decoded_f64": 3.054936363499605e-151, - "decoded_f64_hex": "0x20b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-500", - "input_f64": -3.054936363499605e-151, - "input_f64_hex": "0xa0b0000000000000", - "tef128_bits_int": 7292144784876048478750285532697970343936, - "tef128_bits_hex": "0x156e000000000000000000000000000000", - "decoded_f64": -3.054936363499605e-151, - "decoded_f64_hex": "0xa0b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-500", - "input_f64": 4.582404545249407e-151, - "input_f64_hex": "0x20b8000000000000", - "tef128_bits_int": 1847959221139979292304517765554749046784, - "tef128_bits_hex": "0x56e400000000000000000000000000000", - "decoded_f64": 4.582404545249407e-151, - "decoded_f64_hex": "0x20b8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef128_bits_int": 2179269299089369573625791675329624932352, - "tef128_bits_hex": "0x667800000000000000000000000000000", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef128_bits_int": 7623787169824384989039785394237916315648, - "tef128_bits_hex": "0x1667800000000000000000000000000000", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef128_bits_int": 2179601606088315802594017627094695018496, - "tef128_bits_hex": "0x667c00000000000000000000000000000", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef128_bits_int": 2179933913087262031562243578859765104640, - "tef128_bits_hex": "0x668000000000000000000000000000000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef128_bits_int": 7624451783822277446976237297768056487936, - "tef128_bits_hex": "0x1668000000000000000000000000000000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef128_bits_int": 2180266220086208260530469530624835190784, - "tef128_bits_hex": "0x668400000000000000000000000000000", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef128_bits_int": 2180598527085154489498695482389905276928, - "tef128_bits_hex": "0x668800000000000000000000000000000", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef128_bits_int": 7625116397820169904912689201298196660224, - "tef128_bits_hex": "0x1668800000000000000000000000000000", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef128_bits_int": 2180930834084100718466921434154975363072, - "tef128_bits_hex": "0x668c00000000000000000000000000000", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_500", - "input_f64": 3.273390607896142e+150, - "input_f64_hex": "0x5f30000000000000", - "tef128_bits_int": 2512240912033490999788195343929851248640, - "tef128_bits_hex": "0x762000000000000000000000000000000", - "decoded_f64": 3.273390607896142e+150, - "decoded_f64_hex": "0x5f30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_500", - "input_f64": -3.273390607896142e+150, - "input_f64_hex": "0xdf30000000000000", - "tef128_bits_int": 7956758782768506415202189062838142631936, - "tef128_bits_hex": "0x1762000000000000000000000000000000", - "decoded_f64": -3.273390607896142e+150, - "decoded_f64_hex": "0xdf30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e500", - "input_f64": 4.910085911844213e+150, - "input_f64_hex": "0x5f38000000000000", - "tef128_bits_int": 2512573219032437228756421295694921334784, - "tef128_bits_hex": "0x762400000000000000000000000000000", - "decoded_f64": 4.910085911844213e+150, - "decoded_f64_hex": "0x5f38000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1000", - "input_f64": 1.0715086071862673e+301, - "input_f64_hex": "0x7e70000000000000", - "tef128_bits_int": 2844547910979719968014147108999937392640, - "tef128_bits_hex": "0x85c000000000000000000000000000000", - "decoded_f64": 1.0715086071862673e+301, - "decoded_f64_hex": "0x7e70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1000", - "input_f64": -1.0715086071862673e+301, - "input_f64_hex": "0xfe70000000000000", - "tef128_bits_int": 8289065781714735383428140827908228775936, - "tef128_bits_hex": "0x185c000000000000000000000000000000", - "decoded_f64": -1.0715086071862673e+301, - "decoded_f64_hex": "0xfe70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1000", - "input_f64": 1.607262910779401e+301, - "input_f64_hex": "0x7e78000000000000", - "tef128_bits_int": 2844880217978666196982373060765007478784, - "tef128_bits_hex": "0x85c400000000000000000000000000000", - "decoded_f64": 1.607262910779401e+301, - "decoded_f64_hex": "0x7e78000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef16_conformance_v0.json b/conformance/vectors/tef16_conformance_v0.json deleted file mode 100644 index 2dfa220ba8..0000000000 --- a/conformance/vectors/tef16_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF16", - "ssot": "specs/numeric/tef16.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 4, - "mant_bits": 11, - "exp_offset": 40, - "offset_max": 80, - "width_rule": "1 + 4 + 11 = 16", - "note": "M = 11 as of 2026-08-09 (was 9); probes are exactly representable in both the rung and f64, so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef16_bits_int": 0, - "tef16_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-39", - "input_f64": 1.8189894035458565e-12, - "input_f64_hex": "0x3d80000000000000", - "tef16_bits_int": 2048, - "tef16_bits_hex": "0x800", - "decoded_f64": 1.8189894035458565e-12, - "decoded_f64_hex": "0x3d80000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-39", - "input_f64": -1.8189894035458565e-12, - "input_f64_hex": "0xbd80000000000000", - "tef16_bits_int": 264192, - "tef16_bits_hex": "0x40800", - "decoded_f64": -1.8189894035458565e-12, - "decoded_f64_hex": "0xbd80000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-39", - "input_f64": 2.7284841053187847e-12, - "input_f64_hex": "0x3d88000000000000", - "tef16_bits_int": 3072, - "tef16_bits_hex": "0xc00", - "decoded_f64": 2.7284841053187847e-12, - "decoded_f64_hex": "0x3d88000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-19", - "input_f64": 1.9073486328125e-06, - "input_f64_hex": "0x3ec0000000000000", - "tef16_bits_int": 43008, - "tef16_bits_hex": "0xa800", - "decoded_f64": 1.9073486328125e-06, - "decoded_f64_hex": "0x3ec0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-19", - "input_f64": -1.9073486328125e-06, - "input_f64_hex": "0xbec0000000000000", - "tef16_bits_int": 305152, - "tef16_bits_hex": "0x4a800", - "decoded_f64": -1.9073486328125e-06, - "decoded_f64_hex": "0xbec0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-19", - "input_f64": 2.86102294921875e-06, - "input_f64_hex": "0x3ec8000000000000", - "tef16_bits_int": 44032, - "tef16_bits_hex": "0xac00", - "decoded_f64": 2.86102294921875e-06, - "decoded_f64_hex": "0x3ec8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef16_bits_int": 79872, - "tef16_bits_hex": "0x13800", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef16_bits_int": 342016, - "tef16_bits_hex": "0x53800", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef16_bits_int": 80896, - "tef16_bits_hex": "0x13c00", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef16_bits_int": 81920, - "tef16_bits_hex": "0x14000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef16_bits_int": 344064, - "tef16_bits_hex": "0x54000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef16_bits_int": 82944, - "tef16_bits_hex": "0x14400", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef16_bits_int": 83968, - "tef16_bits_hex": "0x14800", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef16_bits_int": 346112, - "tef16_bits_hex": "0x54800", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef16_bits_int": 84992, - "tef16_bits_hex": "0x14c00", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_19", - "input_f64": 524288.0, - "input_f64_hex": "0x4120000000000000", - "tef16_bits_int": 120832, - "tef16_bits_hex": "0x1d800", - "decoded_f64": 524288.0, - "decoded_f64_hex": "0x4120000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_19", - "input_f64": -524288.0, - "input_f64_hex": "0xc120000000000000", - "tef16_bits_int": 382976, - "tef16_bits_hex": "0x5d800", - "decoded_f64": -524288.0, - "decoded_f64_hex": "0xc120000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e19", - "input_f64": 786432.0, - "input_f64_hex": "0x4128000000000000", - "tef16_bits_int": 121856, - "tef16_bits_hex": "0x1dc00", - "decoded_f64": 786432.0, - "decoded_f64_hex": "0x4128000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_39", - "input_f64": 549755813888.0, - "input_f64_hex": "0x4260000000000000", - "tef16_bits_int": 161792, - "tef16_bits_hex": "0x27800", - "decoded_f64": 549755813888.0, - "decoded_f64_hex": "0x4260000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_39", - "input_f64": -549755813888.0, - "input_f64_hex": "0xc260000000000000", - "tef16_bits_int": 423936, - "tef16_bits_hex": "0x67800", - "decoded_f64": -549755813888.0, - "decoded_f64_hex": "0xc260000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e39", - "input_f64": 824633720832.0, - "input_f64_hex": "0x4268000000000000", - "tef16_bits_int": 162816, - "tef16_bits_hex": "0x27c00", - "decoded_f64": 824633720832.0, - "decoded_f64_hex": "0x4268000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef256_conformance_v0.json b/conformance/vectors/tef256_conformance_v0.json deleted file mode 100644 index b8a8a0982b..0000000000 --- a/conformance/vectors/tef256_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF256", - "ssot": "specs/numeric/tef256.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 9, - "mant_bits": 246, - "exp_offset": 9841, - "offset_max": 19682, - "width_rule": "1 + 9 + 246 = 256", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef256_bits_int": 0, - "tef256_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-1000", - "input_f64": 9.332636185032189e-302, - "input_f64_hex": "0x0170000000000000", - "tef256_bits_int": 999724473581164534902139725060361126299570248465750221360199707240195292135424, - "tef256_bits_hex": "0x8a240000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 9.332636185032189e-302, - "decoded_f64_hex": "0x0170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1000", - "input_f64": -9.332636185032189e-302, - "input_f64_hex": "0x8170000000000000", - "tef256_bits_int": 4705071329175282788456411245338374177604209757766248270622842395493415440613376, - "tef256_bits_hex": "0x28a240000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -9.332636185032189e-302, - "decoded_f64_hex": "0x8170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1000", - "input_f64": 1.3998954277548283e-301, - "input_f64_hex": "0x0178000000000000", - "tef256_bits_int": 999781012687237443200686390580384899692076727950450241166859598638636655968256, - "tef256_bits_hex": "0x8a260000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.3998954277548283e-301, - "decoded_f64_hex": "0x0178000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-500", - "input_f64": 3.054936363499605e-151, - "input_f64_hex": "0x20b0000000000000", - "tef256_bits_int": 1056263579654072833448805245084134518806049733165770028020091105681559124967424, - "tef256_bits_hex": "0x91f40000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.054936363499605e-151, - "decoded_f64_hex": "0x20b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-500", - "input_f64": -3.054936363499605e-151, - "input_f64_hex": "0xa0b0000000000000", - "tef256_bits_int": 4761610435248191087003076765362147570110689242466268077282733793934779273445376, - "tef256_bits_hex": "0x291f40000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -3.054936363499605e-151, - "decoded_f64_hex": "0xa0b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-500", - "input_f64": 4.582404545249407e-151, - "input_f64_hex": "0x20b8000000000000", - "tef256_bits_int": 1056320118760145741747351910604158292198556212650470047826750997080000488800256, - "tef256_bits_hex": "0x91f60000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 4.582404545249407e-151, - "decoded_f64_hex": "0x20b8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef256_bits_int": 1112689607514835315398377434067860364527516258896389795066662721326040230133760, - "tef256_bits_hex": "0x99c00000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef256_bits_int": 4818036463108953568952648954345873415832155768196887844329305409579260378611712, - "tef256_bits_hex": "0x299c00000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef256_bits_int": 1112746146620908223696924099587884137920022738381089814873322612724481593966592, - "tef256_bits_hex": "0x99c20000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef256_bits_int": 1112802685726981131995470765107907911312529217865789834679982504122922957799424, - "tef256_bits_hex": "0x99c40000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef256_bits_int": 4818149541321099385549742285385920962617168727166287883942625192376143106277376, - "tef256_bits_hex": "0x299c40000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef256_bits_int": 1112859224833054040294017430627931684705035697350489854486642395521364321632256, - "tef256_bits_hex": "0x99c60000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef256_bits_int": 1112915763939126948592564096147955458097542176835189874293302286919805685465088, - "tef256_bits_hex": "0x99c80000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef256_bits_int": 4818262619533245202146835616425968509402181686135687923555944975173025833943040, - "tef256_bits_hex": "0x299c80000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef256_bits_int": 1112972303045199856891110761667979231490048656319889894099962178318247049297920, - "tef256_bits_hex": "0x99ca0000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_500", - "input_f64": 3.273390607896142e+150, - "input_f64_hex": "0x5f30000000000000", - "tef256_bits_int": 1169341791799889430542136285131681303819008702565809641339873902564286790631424, - "tef256_bits_hex": "0xa1940000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.273390607896142e+150, - "decoded_f64_hex": "0x5f30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_500", - "input_f64": -3.273390607896142e+150, - "input_f64_hex": "0xdf30000000000000", - "tef256_bits_int": 4874688647394007684096407805409694355123648211866307690602516590817506939109376, - "tef256_bits_hex": "0x2a1940000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -3.273390607896142e+150, - "decoded_f64_hex": "0xdf30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e500", - "input_f64": 4.910085911844213e+150, - "input_f64_hex": "0x5f38000000000000", - "tef256_bits_int": 1169398330905962338840682950651705077211515182050509661146533793962728154464256, - "tef256_bits_hex": "0xa1960000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 4.910085911844213e+150, - "decoded_f64_hex": "0x5f38000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1000", - "input_f64": 1.0715086071862673e+301, - "input_f64_hex": "0x7e70000000000000", - "tef256_bits_int": 1225880897872797729088801805155454696325488187265829447999765301005650623463424, - "tef256_bits_hex": "0xa9640000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.0715086071862673e+301, - "decoded_f64_hex": "0x7e70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1000", - "input_f64": -1.0715086071862673e+301, - "input_f64_hex": "0xfe70000000000000", - "tef256_bits_int": 4931227753466915982643073325433467747630127696566327497262407989258870771941376, - "tef256_bits_hex": "0x2a9640000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -1.0715086071862673e+301, - "decoded_f64_hex": "0xfe70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1000", - "input_f64": 1.607262910779401e+301, - "input_f64_hex": "0x7e78000000000000", - "tef256_bits_int": 1225937436978870637387348470675478469717994666750529467806425192404091987296256, - "tef256_bits_hex": "0xa9660000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.607262910779401e+301, - "decoded_f64_hex": "0x7e78000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef32_conformance_v0.json b/conformance/vectors/tef32_conformance_v0.json deleted file mode 100644 index b609e13ddc..0000000000 --- a/conformance/vectors/tef32_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF32", - "ssot": "specs/numeric/tef32.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 6, - "mant_bits": 25, - "exp_offset": 364, - "offset_max": 728, - "width_rule": "1 + 6 + 25 = 32", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef32_bits_int": 0, - "tef32_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-363", - "input_f64": 5.3224498000101884e-110, - "input_f64_hex": "0x2940000000000000", - "tef32_bits_int": 33554432, - "tef32_bits_hex": "0x2000000", - "decoded_f64": 5.3224498000101884e-110, - "decoded_f64_hex": "0x2940000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-363", - "input_f64": -5.3224498000101884e-110, - "input_f64_hex": "0xa940000000000000", - "tef32_bits_int": 34393292800, - "tef32_bits_hex": "0x802000000", - "decoded_f64": -5.3224498000101884e-110, - "decoded_f64_hex": "0xa940000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-363", - "input_f64": 7.983674700015283e-110, - "input_f64_hex": "0x2948000000000000", - "tef32_bits_int": 50331648, - "tef32_bits_hex": "0x3000000", - "decoded_f64": 7.983674700015283e-110, - "decoded_f64_hex": "0x2948000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-181", - "input_f64": 3.2626522339992623e-55, - "input_f64_hex": "0x34a0000000000000", - "tef32_bits_int": 6140461056, - "tef32_bits_hex": "0x16e000000", - "decoded_f64": 3.2626522339992623e-55, - "decoded_f64_hex": "0x34a0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-181", - "input_f64": -3.2626522339992623e-55, - "input_f64_hex": "0xb4a0000000000000", - "tef32_bits_int": 40500199424, - "tef32_bits_hex": "0x96e000000", - "decoded_f64": -3.2626522339992623e-55, - "decoded_f64_hex": "0xb4a0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-181", - "input_f64": 4.8939783509988934e-55, - "input_f64_hex": "0x34a8000000000000", - "tef32_bits_int": 6157238272, - "tef32_bits_hex": "0x16f000000", - "decoded_f64": 4.8939783509988934e-55, - "decoded_f64_hex": "0x34a8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef32_bits_int": 12180258816, - "tef32_bits_hex": "0x2d6000000", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef32_bits_int": 46539997184, - "tef32_bits_hex": "0xad6000000", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef32_bits_int": 12197036032, - "tef32_bits_hex": "0x2d7000000", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef32_bits_int": 12213813248, - "tef32_bits_hex": "0x2d8000000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef32_bits_int": 46573551616, - "tef32_bits_hex": "0xad8000000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef32_bits_int": 12230590464, - "tef32_bits_hex": "0x2d9000000", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef32_bits_int": 12247367680, - "tef32_bits_hex": "0x2da000000", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef32_bits_int": 46607106048, - "tef32_bits_hex": "0xada000000", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef32_bits_int": 12264144896, - "tef32_bits_hex": "0x2db000000", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_181", - "input_f64": 3.064991081731778e+54, - "input_f64_hex": "0x4b40000000000000", - "tef32_bits_int": 18287165440, - "tef32_bits_hex": "0x442000000", - "decoded_f64": 3.064991081731778e+54, - "decoded_f64_hex": "0x4b40000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_181", - "input_f64": -3.064991081731778e+54, - "input_f64_hex": "0xcb40000000000000", - "tef32_bits_int": 52646903808, - "tef32_bits_hex": "0xc42000000", - "decoded_f64": -3.064991081731778e+54, - "decoded_f64_hex": "0xcb40000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e181", - "input_f64": 4.5974866225976666e+54, - "input_f64_hex": "0x4b48000000000000", - "tef32_bits_int": 18303942656, - "tef32_bits_hex": "0x443000000", - "decoded_f64": 4.5974866225976666e+54, - "decoded_f64_hex": "0x4b48000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_363", - "input_f64": 1.8788340662190666e+109, - "input_f64_hex": "0x56a0000000000000", - "tef32_bits_int": 24394072064, - "tef32_bits_hex": "0x5ae000000", - "decoded_f64": 1.8788340662190666e+109, - "decoded_f64_hex": "0x56a0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_363", - "input_f64": -1.8788340662190666e+109, - "input_f64_hex": "0xd6a0000000000000", - "tef32_bits_int": 58753810432, - "tef32_bits_hex": "0xdae000000", - "decoded_f64": -1.8788340662190666e+109, - "decoded_f64_hex": "0xd6a0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e363", - "input_f64": 2.8182510993286e+109, - "input_f64_hex": "0x56a8000000000000", - "tef32_bits_int": 24410849280, - "tef32_bits_hex": "0x5af000000", - "decoded_f64": 2.8182510993286e+109, - "decoded_f64_hex": "0x56a8000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef4_conformance_v0.json b/conformance/vectors/tef4_conformance_v0.json deleted file mode 100644 index cca003ff72..0000000000 --- a/conformance/vectors/tef4_conformance_v0.json +++ /dev/null @@ -1,196 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF4", - "ssot": "specs/numeric/tef4.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 2, - "mant_bits": 1, - "exp_offset": 4, - "offset_max": 8, - "width_rule": "1 + 2 + 1 = 4", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 16, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef4_bits_int": 0, - "tef4_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-3", - "input_f64": 0.125, - "input_f64_hex": "0x3fc0000000000000", - "tef4_bits_int": 2, - "tef4_bits_hex": "0x2", - "decoded_f64": 0.125, - "decoded_f64_hex": "0x3fc0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-3", - "input_f64": -0.125, - "input_f64_hex": "0xbfc0000000000000", - "tef4_bits_int": 34, - "tef4_bits_hex": "0x22", - "decoded_f64": -0.125, - "decoded_f64_hex": "0xbfc0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-3", - "input_f64": 0.1875, - "input_f64_hex": "0x3fc8000000000000", - "tef4_bits_int": 3, - "tef4_bits_hex": "0x3", - "decoded_f64": 0.1875, - "decoded_f64_hex": "0x3fc8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef4_bits_int": 6, - "tef4_bits_hex": "0x6", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef4_bits_int": 38, - "tef4_bits_hex": "0x26", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef4_bits_int": 7, - "tef4_bits_hex": "0x7", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef4_bits_int": 8, - "tef4_bits_hex": "0x8", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef4_bits_int": 40, - "tef4_bits_hex": "0x28", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef4_bits_int": 9, - "tef4_bits_hex": "0x9", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef4_bits_int": 10, - "tef4_bits_hex": "0xa", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef4_bits_int": 42, - "tef4_bits_hex": "0x2a", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef4_bits_int": 11, - "tef4_bits_hex": "0xb", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_3", - "input_f64": 8.0, - "input_f64_hex": "0x4020000000000000", - "tef4_bits_int": 14, - "tef4_bits_hex": "0xe", - "decoded_f64": 8.0, - "decoded_f64_hex": "0x4020000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_3", - "input_f64": -8.0, - "input_f64_hex": "0xc020000000000000", - "tef4_bits_int": 46, - "tef4_bits_hex": "0x2e", - "decoded_f64": -8.0, - "decoded_f64_hex": "0xc020000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e3", - "input_f64": 12.0, - "input_f64_hex": "0x4028000000000000", - "tef4_bits_int": 15, - "tef4_bits_hex": "0xf", - "decoded_f64": 12.0, - "decoded_f64_hex": "0x4028000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef512_conformance_v0.json b/conformance/vectors/tef512_conformance_v0.json deleted file mode 100644 index 7ede4ec8e7..0000000000 --- a/conformance/vectors/tef512_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF512", - "ssot": "specs/numeric/tef512.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 10, - "mant_bits": 501, - "exp_offset": 29524, - "offset_max": 59048, - "width_rule": "1 + 10 + 501 = 512", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef512_bits_int": 0, - "tef512_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-1000", - "input_f64": 9.332636185032189e-302, - "input_f64_hex": "0x0170000000000000", - "tef512_bits_int": 186740387399259101400512445824620876435654995442664760110442805967148240817293874006980792227008180357143783556109046930933826051429669902906285841918722048, - "tef512_bits_hex": "0xded800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 9.332636185032189e-302, - "decoded_f64_hex": "0x0170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1000", - "input_f64": -9.332636185032189e-302, - "input_f64_hex": "0x8170000000000000", - "tef512_bits_int": 615790241157422208586881245767207952514994701701621348197596772166244689779647377264640769768349090043224803018076600558253950301411960141192162610113413120, - "tef512_bits_hex": "0x2ded800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -9.332636185032189e-302, - "decoded_f64_hex": "0x8170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1000", - "input_f64": 1.3998954277548283e-301, - "input_f64_hex": "0x0178000000000000", - "tef512_bits_int": 186743660789866997542382459014317704034807212084710803175232289258516336951090278681535675497100506261300934442793174491004835268686215788299339170446311424, - "tef512_bits_hex": "0xded900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.3998954277548283e-301, - "decoded_f64_hex": "0x0178000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-500", - "input_f64": 3.054936363499605e-151, - "input_f64_hex": "0x20b0000000000000", - "tef512_bits_int": 190013778007155243270525635521448475587871637488707824899926097335244374613698548561864062319334084514294670240236607001943043307975555295959614369508098048, - "tef512_bits_hex": "0xe2c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.054936363499605e-151, - "decoded_f64_hex": "0x20b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-500", - "input_f64": -3.054936363499605e-151, - "input_f64_hex": "0xa0b0000000000000", - "tef512_bits_int": 619063631765318350456894435464035551667211343747664412987080063534340823576052051819524039860674994200375689702204160629263167557957845534245491137702789120, - "tef512_bits_hex": "0x2e2c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -3.054936363499605e-151, - "decoded_f64_hex": "0xa0b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-500", - "input_f64": 4.582404545249407e-151, - "input_f64_hex": "0x20b8000000000000", - "tef512_bits_int": 190017051397763139412395648711145303187023854130753867964715580626612470747494953236418945589426410418451821126920734562014052525232101181352667698035687424, - "tef512_bits_hex": "0xe2c100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 4.582404545249407e-151, - "decoded_f64_hex": "0x20b8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef512_bits_int": 193280621833835592856798798838882419541783846250658803559830422120604316142510413767637565871475336863131255150995911952810242130008348918226836240042295296, - "tef512_bits_hex": "0xe6a600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef512_bits_int": 622330475591998700043167598781469495621123552509615391646984388319700765104863917025297543412816246549212274612963465580130366379990639156512713008236986368, - "tef512_bits_hex": "0x2e6a600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef512_bits_int": 193283895224443488998668812028579247140936062892704846624619905411972412276306818442192449141567662767288406037680039512881251347264894803619889568569884672, - "tef512_bits_hex": "0xe6a700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef512_bits_int": 193287168615051385140538825218276074740088279534750889689409388703340508410103223116747332411659988671445556924364167072952260564521440689012942897097474048, - "tef512_bits_hex": "0xe6a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef512_bits_int": 622337022373214492326907625160863150819427985793707477776563354902436957372456726374407309953000898357526576386331720700272384814503730927298819665292165120, - "tef512_bits_hex": "0x2e6a800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef512_bits_int": 193290442005659281282408838407972902339240496176796932754198871994708604543899627791302215681752314575602707811048294633023269781777986574405996225625063424, - "tef512_bits_hex": "0xe6a900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef512_bits_int": 193293715396267177424278851597669729938392712818842975818988355286076700677696032465857098951844640479759858697732422193094278999034532459799049554152652800, - "tef512_bits_hex": "0xe6aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef512_bits_int": 622343569154430284610647651540256806017732419077799563906142321485173149640049535723517076493185550165840878159699975820414403249016822698084926322347343872, - "tef512_bits_hex": "0x2e6aa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef512_bits_int": 193296988786875073566148864787366557537544929460889018883777838577444796811492437140411982221936966383917009584416549753165288216291078345192102882680242176, - "tef512_bits_hex": "0xe6ab00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_500", - "input_f64": 3.273390607896142e+150, - "input_f64_hex": "0x5f30000000000000", - "tef512_bits_int": 196560559222947527010552014915103673892304921580793954478892680071436642206507897671630602503985892828596443608491727143961477821067326082066271424686850048, - "tef512_bits_hex": "0xea9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 3.273390607896142e+150, - "decoded_f64_hex": "0x5f30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_500", - "input_f64": -3.273390607896142e+150, - "input_f64_hex": "0xdf30000000000000", - "tef512_bits_int": 625610412981110634196920814857690749971644627839750542566046646270533091168861400929290580045326802514677463070459280771281602071049616320352148192881541120, - "tef512_bits_hex": "0x2ea9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -3.273390607896142e+150, - "decoded_f64_hex": "0xdf30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e500", - "input_f64": 4.910085911844213e+150, - "input_f64_hex": "0x5f38000000000000", - "tef512_bits_int": 196563832613555423152422028104800501491457138222839997543682163362804738340304302346185485774078218732753594495175854704032487038323871967459324753214439424, - "tef512_bits_hex": "0xea9100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 4.910085911844213e+150, - "decoded_f64_hex": "0x5f38000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1000", - "input_f64": 1.0715086071862673e+301, - "input_f64_hex": "0x7e70000000000000", - "tef512_bits_int": 199833949830843668880565204611931273044521563626837019268375971439532776002912572226513872596311796985747330292619287214970695077613211475119599952276226048, - "tef512_bits_hex": "0xee7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.0715086071862673e+301, - "decoded_f64_hex": "0x7e70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1000", - "input_f64": -1.0715086071862673e+301, - "input_f64_hex": "0xfe70000000000000", - "tef512_bits_int": 628883803589006776066934004554518349123861269885793607355529937638629224965266075484173850137652706671828349754586840842290819327595501713405476720470917120, - "tef512_bits_hex": "0x2ee7800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": -1.0715086071862673e+301, - "decoded_f64_hex": "0xfe70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1000", - "input_f64": 1.607262910779401e+301, - "input_f64_hex": "0x7e78000000000000", - "tef512_bits_int": 199837223221451565022435217801628100643673780268883062333165454730900872136708976901068755866404122889904481179303414775041704294869757360512653280803815424, - "tef512_bits_hex": "0xee7900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "decoded_f64": 1.607262910779401e+301, - "decoded_f64_hex": "0x7e78000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef64_conformance_v0.json b/conformance/vectors/tef64_conformance_v0.json deleted file mode 100644 index fc9f235838..0000000000 --- a/conformance/vectors/tef64_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF64", - "ssot": "specs/numeric/tef64.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 7, - "mant_bits": 56, - "exp_offset": 1093, - "offset_max": 2186, - "width_rule": "1 + 7 + 56 = 64", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef64_bits_int": 0, - "tef64_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-1000", - "input_f64": 9.332636185032189e-302, - "input_f64_hex": "0x0170000000000000", - "tef64_bits_int": 6701356245527298048, - "tef64_bits_hex": "0x5d00000000000000", - "decoded_f64": 9.332636185032189e-302, - "decoded_f64_hex": "0x0170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1000", - "input_f64": -9.332636185032189e-302, - "input_f64_hex": "0x8170000000000000", - "tef64_bits_int": 301849261424880123904, - "tef64_bits_hex": "0x105d00000000000000", - "decoded_f64": -9.332636185032189e-302, - "decoded_f64_hex": "0x8170000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1000", - "input_f64": 1.3998954277548283e-301, - "input_f64_hex": "0x0178000000000000", - "tef64_bits_int": 6737385042546262016, - "tef64_bits_hex": "0x5d80000000000000", - "decoded_f64": 1.3998954277548283e-301, - "decoded_f64_hex": "0x0178000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-500", - "input_f64": 3.054936363499605e-151, - "input_f64_hex": "0x20b0000000000000", - "tef64_bits_int": 42730153264491266048, - "tef64_bits_hex": "0x25100000000000000", - "decoded_f64": 3.054936363499605e-151, - "decoded_f64_hex": "0x20b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-500", - "input_f64": -3.054936363499605e-151, - "input_f64_hex": "0xa0b0000000000000", - "tef64_bits_int": 337878058443844091904, - "tef64_bits_hex": "0x125100000000000000", - "decoded_f64": -3.054936363499605e-151, - "decoded_f64_hex": "0xa0b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-500", - "input_f64": 4.582404545249407e-151, - "input_f64_hex": "0x20b8000000000000", - "tef64_bits_int": 42766182061510230016, - "tef64_bits_hex": "0x25180000000000000", - "decoded_f64": 4.582404545249407e-151, - "decoded_f64_hex": "0x20b8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef64_bits_int": 78686892689417306112, - "tef64_bits_hex": "0x44400000000000000", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef64_bits_int": 373834797868770131968, - "tef64_bits_hex": "0x144400000000000000", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef64_bits_int": 78722921486436270080, - "tef64_bits_hex": "0x44480000000000000", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef64_bits_int": 78758950283455234048, - "tef64_bits_hex": "0x44500000000000000", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef64_bits_int": 373906855462808059904, - "tef64_bits_hex": "0x144500000000000000", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef64_bits_int": 78794979080474198016, - "tef64_bits_hex": "0x44580000000000000", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef64_bits_int": 78831007877493161984, - "tef64_bits_hex": "0x44600000000000000", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef64_bits_int": 373978913056845987840, - "tef64_bits_hex": "0x144600000000000000", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef64_bits_int": 78867036674512125952, - "tef64_bits_hex": "0x44680000000000000", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_500", - "input_f64": 3.273390607896142e+150, - "input_f64_hex": "0x5f30000000000000", - "tef64_bits_int": 114787747302419202048, - "tef64_bits_hex": "0x63900000000000000", - "decoded_f64": 3.273390607896142e+150, - "decoded_f64_hex": "0x5f30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_500", - "input_f64": -3.273390607896142e+150, - "input_f64_hex": "0xdf30000000000000", - "tef64_bits_int": 409935652481772027904, - "tef64_bits_hex": "0x163900000000000000", - "decoded_f64": -3.273390607896142e+150, - "decoded_f64_hex": "0xdf30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e500", - "input_f64": 4.910085911844213e+150, - "input_f64_hex": "0x5f38000000000000", - "tef64_bits_int": 114823776099438166016, - "tef64_bits_hex": "0x63980000000000000", - "decoded_f64": 4.910085911844213e+150, - "decoded_f64_hex": "0x5f38000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1000", - "input_f64": 1.0715086071862673e+301, - "input_f64_hex": "0x7e70000000000000", - "tef64_bits_int": 150816544321383170048, - "tef64_bits_hex": "0x82d00000000000000", - "decoded_f64": 1.0715086071862673e+301, - "decoded_f64_hex": "0x7e70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1000", - "input_f64": -1.0715086071862673e+301, - "input_f64_hex": "0xfe70000000000000", - "tef64_bits_int": 445964449500735995904, - "tef64_bits_hex": "0x182d00000000000000", - "decoded_f64": -1.0715086071862673e+301, - "decoded_f64_hex": "0xfe70000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1000", - "input_f64": 1.607262910779401e+301, - "input_f64_hex": "0x7e78000000000000", - "tef64_bits_int": 150852573118402134016, - "tef64_bits_hex": "0x82d80000000000000", - "decoded_f64": 1.607262910779401e+301, - "decoded_f64_hex": "0x7e78000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tef8_conformance_v0.json b/conformance/vectors/tef8_conformance_v0.json deleted file mode 100644 index 9769d8f665..0000000000 --- a/conformance/vectors/tef8_conformance_v0.json +++ /dev/null @@ -1,262 +0,0 @@ -{ - "schema": "t27-conformance/v0.1", - "format": "TEF8", - "ssot": "specs/numeric/tef8.t27", - "anchor_identity": "phi^2 + 1/phi^2 = 3", - "anchor_check": { - "value": 3.0, - "expected": 3.0, - "ieee754_exact": true - }, - "exp_trits": 3, - "mant_bits": 4, - "exp_offset": 13, - "offset_max": 26, - "width_rule": "1 + 3 + 4 = 8", - "note": "probes are exactly representable in both the rung and f64 (powers of two and 1.5*2^e within range), so every abs_error is exactly zero by construction", - "n_vectors": 22, - "vectors": [ - { - "name": "pos_zero", - "input_f64": 0.0, - "input_f64_hex": "0x0000000000000000", - "tef8_bits_int": 0, - "tef8_bits_hex": "0x0", - "decoded_f64": 0.0, - "decoded_f64_hex": "0x0000000000000000", - "abs_error": 0.0, - "category": "zero" - }, - { - "name": "pow2_-12", - "input_f64": 0.000244140625, - "input_f64_hex": "0x3f30000000000000", - "tef8_bits_int": 16, - "tef8_bits_hex": "0x10", - "decoded_f64": 0.000244140625, - "decoded_f64_hex": "0x3f30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-12", - "input_f64": -0.000244140625, - "input_f64_hex": "0xbf30000000000000", - "tef8_bits_int": 528, - "tef8_bits_hex": "0x210", - "decoded_f64": -0.000244140625, - "decoded_f64_hex": "0xbf30000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-12", - "input_f64": 0.0003662109375, - "input_f64_hex": "0x3f38000000000000", - "tef8_bits_int": 24, - "tef8_bits_hex": "0x18", - "decoded_f64": 0.0003662109375, - "decoded_f64_hex": "0x3f38000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-6", - "input_f64": 0.015625, - "input_f64_hex": "0x3f90000000000000", - "tef8_bits_int": 112, - "tef8_bits_hex": "0x70", - "decoded_f64": 0.015625, - "decoded_f64_hex": "0x3f90000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-6", - "input_f64": -0.015625, - "input_f64_hex": "0xbf90000000000000", - "tef8_bits_int": 624, - "tef8_bits_hex": "0x270", - "decoded_f64": -0.015625, - "decoded_f64_hex": "0xbf90000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-6", - "input_f64": 0.0234375, - "input_f64_hex": "0x3f98000000000000", - "tef8_bits_int": 120, - "tef8_bits_hex": "0x78", - "decoded_f64": 0.0234375, - "decoded_f64_hex": "0x3f98000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_-1", - "input_f64": 0.5, - "input_f64_hex": "0x3fe0000000000000", - "tef8_bits_int": 192, - "tef8_bits_hex": "0xc0", - "decoded_f64": 0.5, - "decoded_f64_hex": "0x3fe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_-1", - "input_f64": -0.5, - "input_f64_hex": "0xbfe0000000000000", - "tef8_bits_int": 704, - "tef8_bits_hex": "0x2c0", - "decoded_f64": -0.5, - "decoded_f64_hex": "0xbfe0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e-1", - "input_f64": 0.75, - "input_f64_hex": "0x3fe8000000000000", - "tef8_bits_int": 200, - "tef8_bits_hex": "0xc8", - "decoded_f64": 0.75, - "decoded_f64_hex": "0x3fe8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_0", - "input_f64": 1.0, - "input_f64_hex": "0x3ff0000000000000", - "tef8_bits_int": 208, - "tef8_bits_hex": "0xd0", - "decoded_f64": 1.0, - "decoded_f64_hex": "0x3ff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "neg_pow2_0", - "input_f64": -1.0, - "input_f64_hex": "0xbff0000000000000", - "tef8_bits_int": 720, - "tef8_bits_hex": "0x2d0", - "decoded_f64": -1.0, - "decoded_f64_hex": "0xbff0000000000000", - "abs_error": 0.0, - "category": "unity" - }, - { - "name": "onehalf_2e0", - "input_f64": 1.5, - "input_f64_hex": "0x3ff8000000000000", - "tef8_bits_int": 216, - "tef8_bits_hex": "0xd8", - "decoded_f64": 1.5, - "decoded_f64_hex": "0x3ff8000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_1", - "input_f64": 2.0, - "input_f64_hex": "0x4000000000000000", - "tef8_bits_int": 224, - "tef8_bits_hex": "0xe0", - "decoded_f64": 2.0, - "decoded_f64_hex": "0x4000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_1", - "input_f64": -2.0, - "input_f64_hex": "0xc000000000000000", - "tef8_bits_int": 736, - "tef8_bits_hex": "0x2e0", - "decoded_f64": -2.0, - "decoded_f64_hex": "0xc000000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e1", - "input_f64": 3.0, - "input_f64_hex": "0x4008000000000000", - "tef8_bits_int": 232, - "tef8_bits_hex": "0xe8", - "decoded_f64": 3.0, - "decoded_f64_hex": "0x4008000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_6", - "input_f64": 64.0, - "input_f64_hex": "0x4050000000000000", - "tef8_bits_int": 304, - "tef8_bits_hex": "0x130", - "decoded_f64": 64.0, - "decoded_f64_hex": "0x4050000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_6", - "input_f64": -64.0, - "input_f64_hex": "0xc050000000000000", - "tef8_bits_int": 816, - "tef8_bits_hex": "0x330", - "decoded_f64": -64.0, - "decoded_f64_hex": "0xc050000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e6", - "input_f64": 96.0, - "input_f64_hex": "0x4058000000000000", - "tef8_bits_int": 312, - "tef8_bits_hex": "0x138", - "decoded_f64": 96.0, - "decoded_f64_hex": "0x4058000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "pow2_12", - "input_f64": 4096.0, - "input_f64_hex": "0x40b0000000000000", - "tef8_bits_int": 400, - "tef8_bits_hex": "0x190", - "decoded_f64": 4096.0, - "decoded_f64_hex": "0x40b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "neg_pow2_12", - "input_f64": -4096.0, - "input_f64_hex": "0xc0b0000000000000", - "tef8_bits_int": 912, - "tef8_bits_hex": "0x390", - "decoded_f64": -4096.0, - "decoded_f64_hex": "0xc0b0000000000000", - "abs_error": 0.0, - "category": "normal" - }, - { - "name": "onehalf_2e12", - "input_f64": 6144.0, - "input_f64_hex": "0x40b8000000000000", - "tef8_bits_int": 408, - "tef8_bits_hex": "0x198", - "decoded_f64": 6144.0, - "decoded_f64_hex": "0x40b8000000000000", - "abs_error": 0.0, - "category": "normal" - } - ] -} diff --git a/conformance/vectors/tnf1024_conformance_v0.json b/conformance/vectors/tnf1024_conformance_v0.json new file mode 100644 index 0000000000..8899082960 --- /dev/null +++ b/conformance/vectors/tnf1024_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF1024", + "format_name": "TNF1024", + "bitexact": false, + "format_notes": "TNF1024 -- this work; e is 11 balanced-ternary TRITS not bits (17.43 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "catalog": { + "id": "tnf1024", + "bits": 1024, + "s": 1, + "e": 11, + "m": 1012, + "bias": 88573, + "storage": "u1024_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; e is 11 balanced-ternary TRITS not bits (17.43 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf1024.t27", + "phi_distance": 0.601 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/tnf128_conformance_v0.json b/conformance/vectors/tnf128_conformance_v0.json new file mode 100644 index 0000000000..eaed5d8185 --- /dev/null +++ b/conformance/vectors/tnf128_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF128", + "format_name": "TNF128", + "bitexact": false, + "format_notes": "TNF128 -- this work; e is 8 balanced-ternary TRITS not bits (12.68 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "catalog": { + "id": "tnf128", + "bits": 128, + "s": 1, + "e": 8, + "m": 119, + "bias": 3280, + "storage": "u128", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; e is 8 balanced-ternary TRITS not bits (12.68 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf128.t27", + "phi_distance": 0.511 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/tnf16_conformance_v0.json b/conformance/vectors/tnf16_conformance_v0.json new file mode 100644 index 0000000000..344cd10761 --- /dev/null +++ b/conformance/vectors/tnf16_conformance_v0.json @@ -0,0 +1,48 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF16", + "format_name": "TNF16", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E4M11, bias 40. IEEE-style specials at top exponent", + "catalog": { + "id": "tnf16", + "bits": 16, + "s": 1, + "e": 4, + "m": 11, + "bias": 40, + "storage": "u16", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; e is 4 balanced-ternary TRITS not bits (6.34 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 212 LUT 131.7 MHz, no DSP, 1 cycle", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf16.t27", + "phi_distance": 0.086 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 1, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "tnf16_bits_hex": "0x0000", + "tnf16_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/tnf256_conformance_v0.json b/conformance/vectors/tnf256_conformance_v0.json new file mode 100644 index 0000000000..2a410bf249 --- /dev/null +++ b/conformance/vectors/tnf256_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF256", + "format_name": "TNF256", + "bitexact": false, + "format_notes": "TNF256 -- this work; e is 9 balanced-ternary TRITS not bits (14.26 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "catalog": { + "id": "tnf256", + "bits": 256, + "s": 1, + "e": 9, + "m": 246, + "bias": 9841, + "storage": "u256_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; e is 9 balanced-ternary TRITS not bits (14.26 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf256.t27", + "phi_distance": 0.56 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/tnf32_conformance_v0.json b/conformance/vectors/tnf32_conformance_v0.json new file mode 100644 index 0000000000..ea7bbf9a29 --- /dev/null +++ b/conformance/vectors/tnf32_conformance_v0.json @@ -0,0 +1,48 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF32", + "format_name": "TNF32", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E6M25, bias 364. IEEE-style specials at top exponent", + "catalog": { + "id": "tnf32", + "bits": 32, + "s": 1, + "e": 6, + "m": 25, + "bias": 364, + "storage": "u32", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; e is 6 balanced-ternary TRITS not bits (9.51 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 1477 LUT 83.3 MHz, no DSP, 1 cycle", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf32.t27", + "phi_distance": 0.238 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 1, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "tnf32_bits_hex": "0x00000000", + "tnf32_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/tnf4_conformance_v0.json b/conformance/vectors/tnf4_conformance_v0.json new file mode 100644 index 0000000000..5109ced3bd --- /dev/null +++ b/conformance/vectors/tnf4_conformance_v0.json @@ -0,0 +1,214 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF4", + "format_name": "TNF4", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E2M1, bias 4. IEEE-style specials at top exponent", + "catalog": { + "id": "tnf4", + "bits": 4, + "s": 1, + "e": 2, + "m": 1, + "bias": 4, + "storage": "u4", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; e is 2 balanced-ternary TRITS not bits (3.17 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 12 LUT 161.1 MHz, no DSP, 1 cycle", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf4.t27", + "phi_distance": 2.552 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (exhaustive). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "exhaustive", + "n_vectors": 16, + "max_finite": 0.375, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "tnf4_bits_hex": "0x0", + "tnf4_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "tnf4_bits_hex": "0x1", + "tnf4_bits_int": 1, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "tnf4_bits_hex": "0x2", + "tnf4_bits_int": 2, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x03", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "tnf4_bits_hex": "0x3", + "tnf4_bits_int": 3, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x04", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "tnf4_bits_hex": "0x4", + "tnf4_bits_int": 4, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "tnf4_bits_hex": "0x5", + "tnf4_bits_int": 5, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "tnf4_bits_hex": "0x6", + "tnf4_bits_int": 6, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x07", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf4_bits_hex": "0x7", + "tnf4_bits_int": 7, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x08", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "tnf4_bits_hex": "0x8", + "tnf4_bits_int": 8, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x09", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "tnf4_bits_hex": "0x9", + "tnf4_bits_int": 9, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "tnf4_bits_hex": "0xA", + "tnf4_bits_int": 10, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "tnf4_bits_hex": "0xB", + "tnf4_bits_int": 11, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "tnf4_bits_hex": "0xC", + "tnf4_bits_int": 12, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "tnf4_bits_hex": "0xD", + "tnf4_bits_int": 13, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "tnf4_bits_hex": "0xE", + "tnf4_bits_int": 14, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x0F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf4_bits_hex": "0xF", + "tnf4_bits_int": 15, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/tnf512_conformance_v0.json b/conformance/vectors/tnf512_conformance_v0.json new file mode 100644 index 0000000000..5ce8b14109 --- /dev/null +++ b/conformance/vectors/tnf512_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF512", + "format_name": "TNF512", + "bitexact": false, + "format_notes": "TNF512 -- this work; e is 10 balanced-ternary TRITS not bits (15.85 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "catalog": { + "id": "tnf512", + "bits": 512, + "s": 1, + "e": 10, + "m": 501, + "bias": 29524, + "storage": "u512_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; e is 10 balanced-ternary TRITS not bits (15.85 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf512.t27", + "phi_distance": 0.586 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "structural_reason": "No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata.", + "anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/tnf64_conformance_v0.json b/conformance/vectors/tnf64_conformance_v0.json new file mode 100644 index 0000000000..8b5b75e477 --- /dev/null +++ b/conformance/vectors/tnf64_conformance_v0.json @@ -0,0 +1,48 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF64", + "format_name": "TNF64", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E7M56, bias 1093. IEEE-style specials at top exponent", + "catalog": { + "id": "tnf64", + "bits": 64, + "s": 1, + "e": 7, + "m": 56, + "bias": 1093, + "storage": "u64", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; e is 7 balanced-ternary TRITS not bits (11.09 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 7479 LUT 48.2 MHz, no DSP, 1 cycle", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf64.t27", + "phi_distance": 0.42 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (curated_named). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "curated_named", + "n_vectors": 1, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "tnf64_bits_hex": "0x0000000000000000", + "tnf64_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/tnf8_conformance_v0.json b/conformance/vectors/tnf8_conformance_v0.json new file mode 100644 index 0000000000..e8e24c2b6f --- /dev/null +++ b/conformance/vectors/tnf8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TNF8", + "format_name": "TNF8", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E3M4, bias 13. IEEE-style specials at top exponent", + "catalog": { + "id": "tnf8", + "bits": 8, + "s": 1, + "e": 3, + "m": 4, + "bias": 13, + "storage": "u8", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; e is 3 balanced-ternary TRITS not bits (4.75 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 50 LUT 153.2 MHz, no DSP, 1 cycle", + "use_case": "fixed-field ternary-exponent ladder; no regime codec", + "gf_relation": "self", + "source": "specs/numeric/tnf8.t27", + "phi_distance": 0.571 + }, + "ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json", + "preprint": "https://arxiv.org/abs/2606.05017", + "anchor_identity": "phi^2 + 1/phi^2 = 3", + "anchor_check": { + "value": null, + "expected": 3.0, + "ieee754_exact": false, + "note": "3.0 is not an exact grid point of this format at this width" + }, + "round_trip_policy": "decode: exact bits->f64 (exhaustive). encode (reference): round-nearest-ties-even; overflow per format convention. abs_error 0 for representable values.", + "vector_mode": "exhaustive", + "n_vectors": 256, + "max_finite": 0.01513671875, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "tnf8_bits_hex": "0x00", + "tnf8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 1.52587890625e-05, + "input_f64_hex": "0x3EF0000000000000", + "tnf8_bits_hex": "0x01", + "tnf8_bits_int": 1, + "decoded_f64": 1.52587890625e-05, + "decoded_f64_hex": "0x3EF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 3.0517578125e-05, + "input_f64_hex": "0x3F00000000000000", + "tnf8_bits_hex": "0x02", + "tnf8_bits_int": 2, + "decoded_f64": 3.0517578125e-05, + "decoded_f64_hex": "0x3F00000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 4.57763671875e-05, + "input_f64_hex": "0x3F08000000000000", + "tnf8_bits_hex": "0x03", + "tnf8_bits_int": 3, + "decoded_f64": 4.57763671875e-05, + "decoded_f64_hex": "0x3F08000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 6.103515625e-05, + "input_f64_hex": "0x3F10000000000000", + "tnf8_bits_hex": "0x04", + "tnf8_bits_int": 4, + "decoded_f64": 6.103515625e-05, + "decoded_f64_hex": "0x3F10000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 7.62939453125e-05, + "input_f64_hex": "0x3F14000000000000", + "tnf8_bits_hex": "0x05", + "tnf8_bits_int": 5, + "decoded_f64": 7.62939453125e-05, + "decoded_f64_hex": "0x3F14000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 9.1552734375e-05, + "input_f64_hex": "0x3F18000000000000", + "tnf8_bits_hex": "0x06", + "tnf8_bits_int": 6, + "decoded_f64": 9.1552734375e-05, + "decoded_f64_hex": "0x3F18000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.0001068115234375, + "input_f64_hex": "0x3F1C000000000000", + "tnf8_bits_hex": "0x07", + "tnf8_bits_int": 7, + "decoded_f64": 0.0001068115234375, + "decoded_f64_hex": "0x3F1C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 0.0001220703125, + "input_f64_hex": "0x3F20000000000000", + "tnf8_bits_hex": "0x08", + "tnf8_bits_int": 8, + "decoded_f64": 0.0001220703125, + "decoded_f64_hex": "0x3F20000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x09", + "input_f64": 0.0001373291015625, + "input_f64_hex": "0x3F22000000000000", + "tnf8_bits_hex": "0x09", + "tnf8_bits_int": 9, + "decoded_f64": 0.0001373291015625, + "decoded_f64_hex": "0x3F22000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": 0.000152587890625, + "input_f64_hex": "0x3F24000000000000", + "tnf8_bits_hex": "0x0A", + "tnf8_bits_int": 10, + "decoded_f64": 0.000152587890625, + "decoded_f64_hex": "0x3F24000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": 0.0001678466796875, + "input_f64_hex": "0x3F26000000000000", + "tnf8_bits_hex": "0x0B", + "tnf8_bits_int": 11, + "decoded_f64": 0.0001678466796875, + "decoded_f64_hex": "0x3F26000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": 0.00018310546875, + "input_f64_hex": "0x3F28000000000000", + "tnf8_bits_hex": "0x0C", + "tnf8_bits_int": 12, + "decoded_f64": 0.00018310546875, + "decoded_f64_hex": "0x3F28000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0D", + "input_f64": 0.0001983642578125, + "input_f64_hex": "0x3F2A000000000000", + "tnf8_bits_hex": "0x0D", + "tnf8_bits_int": 13, + "decoded_f64": 0.0001983642578125, + "decoded_f64_hex": "0x3F2A000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0E", + "input_f64": 0.000213623046875, + "input_f64_hex": "0x3F2C000000000000", + "tnf8_bits_hex": "0x0E", + "tnf8_bits_int": 14, + "decoded_f64": 0.000213623046875, + "decoded_f64_hex": "0x3F2C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0F", + "input_f64": 0.0002288818359375, + "input_f64_hex": "0x3F2E000000000000", + "tnf8_bits_hex": "0x0F", + "tnf8_bits_int": 15, + "decoded_f64": 0.0002288818359375, + "decoded_f64_hex": "0x3F2E000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x10", + "input_f64": 0.000244140625, + "input_f64_hex": "0x3F30000000000000", + "tnf8_bits_hex": "0x10", + "tnf8_bits_int": 16, + "decoded_f64": 0.000244140625, + "decoded_f64_hex": "0x3F30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.0002593994140625, + "input_f64_hex": "0x3F31000000000000", + "tnf8_bits_hex": "0x11", + "tnf8_bits_int": 17, + "decoded_f64": 0.0002593994140625, + "decoded_f64_hex": "0x3F31000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.000274658203125, + "input_f64_hex": "0x3F32000000000000", + "tnf8_bits_hex": "0x12", + "tnf8_bits_int": 18, + "decoded_f64": 0.000274658203125, + "decoded_f64_hex": "0x3F32000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.0002899169921875, + "input_f64_hex": "0x3F33000000000000", + "tnf8_bits_hex": "0x13", + "tnf8_bits_int": 19, + "decoded_f64": 0.0002899169921875, + "decoded_f64_hex": "0x3F33000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.00030517578125, + "input_f64_hex": "0x3F34000000000000", + "tnf8_bits_hex": "0x14", + "tnf8_bits_int": 20, + "decoded_f64": 0.00030517578125, + "decoded_f64_hex": "0x3F34000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.0003204345703125, + "input_f64_hex": "0x3F35000000000000", + "tnf8_bits_hex": "0x15", + "tnf8_bits_int": 21, + "decoded_f64": 0.0003204345703125, + "decoded_f64_hex": "0x3F35000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.000335693359375, + "input_f64_hex": "0x3F36000000000000", + "tnf8_bits_hex": "0x16", + "tnf8_bits_int": 22, + "decoded_f64": 0.000335693359375, + "decoded_f64_hex": "0x3F36000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.0003509521484375, + "input_f64_hex": "0x3F37000000000000", + "tnf8_bits_hex": "0x17", + "tnf8_bits_int": 23, + "decoded_f64": 0.0003509521484375, + "decoded_f64_hex": "0x3F37000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.0003662109375, + "input_f64_hex": "0x3F38000000000000", + "tnf8_bits_hex": "0x18", + "tnf8_bits_int": 24, + "decoded_f64": 0.0003662109375, + "decoded_f64_hex": "0x3F38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.0003814697265625, + "input_f64_hex": "0x3F39000000000000", + "tnf8_bits_hex": "0x19", + "tnf8_bits_int": 25, + "decoded_f64": 0.0003814697265625, + "decoded_f64_hex": "0x3F39000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.000396728515625, + "input_f64_hex": "0x3F3A000000000000", + "tnf8_bits_hex": "0x1A", + "tnf8_bits_int": 26, + "decoded_f64": 0.000396728515625, + "decoded_f64_hex": "0x3F3A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.0004119873046875, + "input_f64_hex": "0x3F3B000000000000", + "tnf8_bits_hex": "0x1B", + "tnf8_bits_int": 27, + "decoded_f64": 0.0004119873046875, + "decoded_f64_hex": "0x3F3B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.00042724609375, + "input_f64_hex": "0x3F3C000000000000", + "tnf8_bits_hex": "0x1C", + "tnf8_bits_int": 28, + "decoded_f64": 0.00042724609375, + "decoded_f64_hex": "0x3F3C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.0004425048828125, + "input_f64_hex": "0x3F3D000000000000", + "tnf8_bits_hex": "0x1D", + "tnf8_bits_int": 29, + "decoded_f64": 0.0004425048828125, + "decoded_f64_hex": "0x3F3D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.000457763671875, + "input_f64_hex": "0x3F3E000000000000", + "tnf8_bits_hex": "0x1E", + "tnf8_bits_int": 30, + "decoded_f64": 0.000457763671875, + "decoded_f64_hex": "0x3F3E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.0004730224609375, + "input_f64_hex": "0x3F3F000000000000", + "tnf8_bits_hex": "0x1F", + "tnf8_bits_int": 31, + "decoded_f64": 0.0004730224609375, + "decoded_f64_hex": "0x3F3F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.00048828125, + "input_f64_hex": "0x3F40000000000000", + "tnf8_bits_hex": "0x20", + "tnf8_bits_int": 32, + "decoded_f64": 0.00048828125, + "decoded_f64_hex": "0x3F40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.000518798828125, + "input_f64_hex": "0x3F41000000000000", + "tnf8_bits_hex": "0x21", + "tnf8_bits_int": 33, + "decoded_f64": 0.000518798828125, + "decoded_f64_hex": "0x3F41000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.00054931640625, + "input_f64_hex": "0x3F42000000000000", + "tnf8_bits_hex": "0x22", + "tnf8_bits_int": 34, + "decoded_f64": 0.00054931640625, + "decoded_f64_hex": "0x3F42000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.000579833984375, + "input_f64_hex": "0x3F43000000000000", + "tnf8_bits_hex": "0x23", + "tnf8_bits_int": 35, + "decoded_f64": 0.000579833984375, + "decoded_f64_hex": "0x3F43000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.0006103515625, + "input_f64_hex": "0x3F44000000000000", + "tnf8_bits_hex": "0x24", + "tnf8_bits_int": 36, + "decoded_f64": 0.0006103515625, + "decoded_f64_hex": "0x3F44000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.000640869140625, + "input_f64_hex": "0x3F45000000000000", + "tnf8_bits_hex": "0x25", + "tnf8_bits_int": 37, + "decoded_f64": 0.000640869140625, + "decoded_f64_hex": "0x3F45000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.00067138671875, + "input_f64_hex": "0x3F46000000000000", + "tnf8_bits_hex": "0x26", + "tnf8_bits_int": 38, + "decoded_f64": 0.00067138671875, + "decoded_f64_hex": "0x3F46000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.000701904296875, + "input_f64_hex": "0x3F47000000000000", + "tnf8_bits_hex": "0x27", + "tnf8_bits_int": 39, + "decoded_f64": 0.000701904296875, + "decoded_f64_hex": "0x3F47000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.000732421875, + "input_f64_hex": "0x3F48000000000000", + "tnf8_bits_hex": "0x28", + "tnf8_bits_int": 40, + "decoded_f64": 0.000732421875, + "decoded_f64_hex": "0x3F48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.000762939453125, + "input_f64_hex": "0x3F49000000000000", + "tnf8_bits_hex": "0x29", + "tnf8_bits_int": 41, + "decoded_f64": 0.000762939453125, + "decoded_f64_hex": "0x3F49000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.00079345703125, + "input_f64_hex": "0x3F4A000000000000", + "tnf8_bits_hex": "0x2A", + "tnf8_bits_int": 42, + "decoded_f64": 0.00079345703125, + "decoded_f64_hex": "0x3F4A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.000823974609375, + "input_f64_hex": "0x3F4B000000000000", + "tnf8_bits_hex": "0x2B", + "tnf8_bits_int": 43, + "decoded_f64": 0.000823974609375, + "decoded_f64_hex": "0x3F4B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.0008544921875, + "input_f64_hex": "0x3F4C000000000000", + "tnf8_bits_hex": "0x2C", + "tnf8_bits_int": 44, + "decoded_f64": 0.0008544921875, + "decoded_f64_hex": "0x3F4C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.000885009765625, + "input_f64_hex": "0x3F4D000000000000", + "tnf8_bits_hex": "0x2D", + "tnf8_bits_int": 45, + "decoded_f64": 0.000885009765625, + "decoded_f64_hex": "0x3F4D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.00091552734375, + "input_f64_hex": "0x3F4E000000000000", + "tnf8_bits_hex": "0x2E", + "tnf8_bits_int": 46, + "decoded_f64": 0.00091552734375, + "decoded_f64_hex": "0x3F4E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.000946044921875, + "input_f64_hex": "0x3F4F000000000000", + "tnf8_bits_hex": "0x2F", + "tnf8_bits_int": 47, + "decoded_f64": 0.000946044921875, + "decoded_f64_hex": "0x3F4F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 0.0009765625, + "input_f64_hex": "0x3F50000000000000", + "tnf8_bits_hex": "0x30", + "tnf8_bits_int": 48, + "decoded_f64": 0.0009765625, + "decoded_f64_hex": "0x3F50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 0.00103759765625, + "input_f64_hex": "0x3F51000000000000", + "tnf8_bits_hex": "0x31", + "tnf8_bits_int": 49, + "decoded_f64": 0.00103759765625, + "decoded_f64_hex": "0x3F51000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 0.0010986328125, + "input_f64_hex": "0x3F52000000000000", + "tnf8_bits_hex": "0x32", + "tnf8_bits_int": 50, + "decoded_f64": 0.0010986328125, + "decoded_f64_hex": "0x3F52000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 0.00115966796875, + "input_f64_hex": "0x3F53000000000000", + "tnf8_bits_hex": "0x33", + "tnf8_bits_int": 51, + "decoded_f64": 0.00115966796875, + "decoded_f64_hex": "0x3F53000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 0.001220703125, + "input_f64_hex": "0x3F54000000000000", + "tnf8_bits_hex": "0x34", + "tnf8_bits_int": 52, + "decoded_f64": 0.001220703125, + "decoded_f64_hex": "0x3F54000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 0.00128173828125, + "input_f64_hex": "0x3F55000000000000", + "tnf8_bits_hex": "0x35", + "tnf8_bits_int": 53, + "decoded_f64": 0.00128173828125, + "decoded_f64_hex": "0x3F55000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 0.0013427734375, + "input_f64_hex": "0x3F56000000000000", + "tnf8_bits_hex": "0x36", + "tnf8_bits_int": 54, + "decoded_f64": 0.0013427734375, + "decoded_f64_hex": "0x3F56000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 0.00140380859375, + "input_f64_hex": "0x3F57000000000000", + "tnf8_bits_hex": "0x37", + "tnf8_bits_int": 55, + "decoded_f64": 0.00140380859375, + "decoded_f64_hex": "0x3F57000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 0.00146484375, + "input_f64_hex": "0x3F58000000000000", + "tnf8_bits_hex": "0x38", + "tnf8_bits_int": 56, + "decoded_f64": 0.00146484375, + "decoded_f64_hex": "0x3F58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 0.00152587890625, + "input_f64_hex": "0x3F59000000000000", + "tnf8_bits_hex": "0x39", + "tnf8_bits_int": 57, + "decoded_f64": 0.00152587890625, + "decoded_f64_hex": "0x3F59000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 0.0015869140625, + "input_f64_hex": "0x3F5A000000000000", + "tnf8_bits_hex": "0x3A", + "tnf8_bits_int": 58, + "decoded_f64": 0.0015869140625, + "decoded_f64_hex": "0x3F5A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 0.00164794921875, + "input_f64_hex": "0x3F5B000000000000", + "tnf8_bits_hex": "0x3B", + "tnf8_bits_int": 59, + "decoded_f64": 0.00164794921875, + "decoded_f64_hex": "0x3F5B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 0.001708984375, + "input_f64_hex": "0x3F5C000000000000", + "tnf8_bits_hex": "0x3C", + "tnf8_bits_int": 60, + "decoded_f64": 0.001708984375, + "decoded_f64_hex": "0x3F5C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 0.00177001953125, + "input_f64_hex": "0x3F5D000000000000", + "tnf8_bits_hex": "0x3D", + "tnf8_bits_int": 61, + "decoded_f64": 0.00177001953125, + "decoded_f64_hex": "0x3F5D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 0.0018310546875, + "input_f64_hex": "0x3F5E000000000000", + "tnf8_bits_hex": "0x3E", + "tnf8_bits_int": 62, + "decoded_f64": 0.0018310546875, + "decoded_f64_hex": "0x3F5E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 0.00189208984375, + "input_f64_hex": "0x3F5F000000000000", + "tnf8_bits_hex": "0x3F", + "tnf8_bits_int": 63, + "decoded_f64": 0.00189208984375, + "decoded_f64_hex": "0x3F5F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 0.001953125, + "input_f64_hex": "0x3F60000000000000", + "tnf8_bits_hex": "0x40", + "tnf8_bits_int": 64, + "decoded_f64": 0.001953125, + "decoded_f64_hex": "0x3F60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 0.0020751953125, + "input_f64_hex": "0x3F61000000000000", + "tnf8_bits_hex": "0x41", + "tnf8_bits_int": 65, + "decoded_f64": 0.0020751953125, + "decoded_f64_hex": "0x3F61000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 0.002197265625, + "input_f64_hex": "0x3F62000000000000", + "tnf8_bits_hex": "0x42", + "tnf8_bits_int": 66, + "decoded_f64": 0.002197265625, + "decoded_f64_hex": "0x3F62000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 0.0023193359375, + "input_f64_hex": "0x3F63000000000000", + "tnf8_bits_hex": "0x43", + "tnf8_bits_int": 67, + "decoded_f64": 0.0023193359375, + "decoded_f64_hex": "0x3F63000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 0.00244140625, + "input_f64_hex": "0x3F64000000000000", + "tnf8_bits_hex": "0x44", + "tnf8_bits_int": 68, + "decoded_f64": 0.00244140625, + "decoded_f64_hex": "0x3F64000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 0.0025634765625, + "input_f64_hex": "0x3F65000000000000", + "tnf8_bits_hex": "0x45", + "tnf8_bits_int": 69, + "decoded_f64": 0.0025634765625, + "decoded_f64_hex": "0x3F65000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 0.002685546875, + "input_f64_hex": "0x3F66000000000000", + "tnf8_bits_hex": "0x46", + "tnf8_bits_int": 70, + "decoded_f64": 0.002685546875, + "decoded_f64_hex": "0x3F66000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 0.0028076171875, + "input_f64_hex": "0x3F67000000000000", + "tnf8_bits_hex": "0x47", + "tnf8_bits_int": 71, + "decoded_f64": 0.0028076171875, + "decoded_f64_hex": "0x3F67000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 0.0029296875, + "input_f64_hex": "0x3F68000000000000", + "tnf8_bits_hex": "0x48", + "tnf8_bits_int": 72, + "decoded_f64": 0.0029296875, + "decoded_f64_hex": "0x3F68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 0.0030517578125, + "input_f64_hex": "0x3F69000000000000", + "tnf8_bits_hex": "0x49", + "tnf8_bits_int": 73, + "decoded_f64": 0.0030517578125, + "decoded_f64_hex": "0x3F69000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 0.003173828125, + "input_f64_hex": "0x3F6A000000000000", + "tnf8_bits_hex": "0x4A", + "tnf8_bits_int": 74, + "decoded_f64": 0.003173828125, + "decoded_f64_hex": "0x3F6A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 0.0032958984375, + "input_f64_hex": "0x3F6B000000000000", + "tnf8_bits_hex": "0x4B", + "tnf8_bits_int": 75, + "decoded_f64": 0.0032958984375, + "decoded_f64_hex": "0x3F6B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 0.00341796875, + "input_f64_hex": "0x3F6C000000000000", + "tnf8_bits_hex": "0x4C", + "tnf8_bits_int": 76, + "decoded_f64": 0.00341796875, + "decoded_f64_hex": "0x3F6C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 0.0035400390625, + "input_f64_hex": "0x3F6D000000000000", + "tnf8_bits_hex": "0x4D", + "tnf8_bits_int": 77, + "decoded_f64": 0.0035400390625, + "decoded_f64_hex": "0x3F6D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 0.003662109375, + "input_f64_hex": "0x3F6E000000000000", + "tnf8_bits_hex": "0x4E", + "tnf8_bits_int": 78, + "decoded_f64": 0.003662109375, + "decoded_f64_hex": "0x3F6E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 0.0037841796875, + "input_f64_hex": "0x3F6F000000000000", + "tnf8_bits_hex": "0x4F", + "tnf8_bits_int": 79, + "decoded_f64": 0.0037841796875, + "decoded_f64_hex": "0x3F6F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 0.00390625, + "input_f64_hex": "0x3F70000000000000", + "tnf8_bits_hex": "0x50", + "tnf8_bits_int": 80, + "decoded_f64": 0.00390625, + "decoded_f64_hex": "0x3F70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 0.004150390625, + "input_f64_hex": "0x3F71000000000000", + "tnf8_bits_hex": "0x51", + "tnf8_bits_int": 81, + "decoded_f64": 0.004150390625, + "decoded_f64_hex": "0x3F71000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 0.00439453125, + "input_f64_hex": "0x3F72000000000000", + "tnf8_bits_hex": "0x52", + "tnf8_bits_int": 82, + "decoded_f64": 0.00439453125, + "decoded_f64_hex": "0x3F72000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 0.004638671875, + "input_f64_hex": "0x3F73000000000000", + "tnf8_bits_hex": "0x53", + "tnf8_bits_int": 83, + "decoded_f64": 0.004638671875, + "decoded_f64_hex": "0x3F73000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 0.0048828125, + "input_f64_hex": "0x3F74000000000000", + "tnf8_bits_hex": "0x54", + "tnf8_bits_int": 84, + "decoded_f64": 0.0048828125, + "decoded_f64_hex": "0x3F74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 0.005126953125, + "input_f64_hex": "0x3F75000000000000", + "tnf8_bits_hex": "0x55", + "tnf8_bits_int": 85, + "decoded_f64": 0.005126953125, + "decoded_f64_hex": "0x3F75000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 0.00537109375, + "input_f64_hex": "0x3F76000000000000", + "tnf8_bits_hex": "0x56", + "tnf8_bits_int": 86, + "decoded_f64": 0.00537109375, + "decoded_f64_hex": "0x3F76000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 0.005615234375, + "input_f64_hex": "0x3F77000000000000", + "tnf8_bits_hex": "0x57", + "tnf8_bits_int": 87, + "decoded_f64": 0.005615234375, + "decoded_f64_hex": "0x3F77000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 0.005859375, + "input_f64_hex": "0x3F78000000000000", + "tnf8_bits_hex": "0x58", + "tnf8_bits_int": 88, + "decoded_f64": 0.005859375, + "decoded_f64_hex": "0x3F78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 0.006103515625, + "input_f64_hex": "0x3F79000000000000", + "tnf8_bits_hex": "0x59", + "tnf8_bits_int": 89, + "decoded_f64": 0.006103515625, + "decoded_f64_hex": "0x3F79000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 0.00634765625, + "input_f64_hex": "0x3F7A000000000000", + "tnf8_bits_hex": "0x5A", + "tnf8_bits_int": 90, + "decoded_f64": 0.00634765625, + "decoded_f64_hex": "0x3F7A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 0.006591796875, + "input_f64_hex": "0x3F7B000000000000", + "tnf8_bits_hex": "0x5B", + "tnf8_bits_int": 91, + "decoded_f64": 0.006591796875, + "decoded_f64_hex": "0x3F7B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 0.0068359375, + "input_f64_hex": "0x3F7C000000000000", + "tnf8_bits_hex": "0x5C", + "tnf8_bits_int": 92, + "decoded_f64": 0.0068359375, + "decoded_f64_hex": "0x3F7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 0.007080078125, + "input_f64_hex": "0x3F7D000000000000", + "tnf8_bits_hex": "0x5D", + "tnf8_bits_int": 93, + "decoded_f64": 0.007080078125, + "decoded_f64_hex": "0x3F7D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 0.00732421875, + "input_f64_hex": "0x3F7E000000000000", + "tnf8_bits_hex": "0x5E", + "tnf8_bits_int": 94, + "decoded_f64": 0.00732421875, + "decoded_f64_hex": "0x3F7E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 0.007568359375, + "input_f64_hex": "0x3F7F000000000000", + "tnf8_bits_hex": "0x5F", + "tnf8_bits_int": 95, + "decoded_f64": 0.007568359375, + "decoded_f64_hex": "0x3F7F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 0.0078125, + "input_f64_hex": "0x3F80000000000000", + "tnf8_bits_hex": "0x60", + "tnf8_bits_int": 96, + "decoded_f64": 0.0078125, + "decoded_f64_hex": "0x3F80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 0.00830078125, + "input_f64_hex": "0x3F81000000000000", + "tnf8_bits_hex": "0x61", + "tnf8_bits_int": 97, + "decoded_f64": 0.00830078125, + "decoded_f64_hex": "0x3F81000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 0.0087890625, + "input_f64_hex": "0x3F82000000000000", + "tnf8_bits_hex": "0x62", + "tnf8_bits_int": 98, + "decoded_f64": 0.0087890625, + "decoded_f64_hex": "0x3F82000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 0.00927734375, + "input_f64_hex": "0x3F83000000000000", + "tnf8_bits_hex": "0x63", + "tnf8_bits_int": 99, + "decoded_f64": 0.00927734375, + "decoded_f64_hex": "0x3F83000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 0.009765625, + "input_f64_hex": "0x3F84000000000000", + "tnf8_bits_hex": "0x64", + "tnf8_bits_int": 100, + "decoded_f64": 0.009765625, + "decoded_f64_hex": "0x3F84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 0.01025390625, + "input_f64_hex": "0x3F85000000000000", + "tnf8_bits_hex": "0x65", + "tnf8_bits_int": 101, + "decoded_f64": 0.01025390625, + "decoded_f64_hex": "0x3F85000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 0.0107421875, + "input_f64_hex": "0x3F86000000000000", + "tnf8_bits_hex": "0x66", + "tnf8_bits_int": 102, + "decoded_f64": 0.0107421875, + "decoded_f64_hex": "0x3F86000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 0.01123046875, + "input_f64_hex": "0x3F87000000000000", + "tnf8_bits_hex": "0x67", + "tnf8_bits_int": 103, + "decoded_f64": 0.01123046875, + "decoded_f64_hex": "0x3F87000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 0.01171875, + "input_f64_hex": "0x3F88000000000000", + "tnf8_bits_hex": "0x68", + "tnf8_bits_int": 104, + "decoded_f64": 0.01171875, + "decoded_f64_hex": "0x3F88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 0.01220703125, + "input_f64_hex": "0x3F89000000000000", + "tnf8_bits_hex": "0x69", + "tnf8_bits_int": 105, + "decoded_f64": 0.01220703125, + "decoded_f64_hex": "0x3F89000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 0.0126953125, + "input_f64_hex": "0x3F8A000000000000", + "tnf8_bits_hex": "0x6A", + "tnf8_bits_int": 106, + "decoded_f64": 0.0126953125, + "decoded_f64_hex": "0x3F8A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 0.01318359375, + "input_f64_hex": "0x3F8B000000000000", + "tnf8_bits_hex": "0x6B", + "tnf8_bits_int": 107, + "decoded_f64": 0.01318359375, + "decoded_f64_hex": "0x3F8B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 0.013671875, + "input_f64_hex": "0x3F8C000000000000", + "tnf8_bits_hex": "0x6C", + "tnf8_bits_int": 108, + "decoded_f64": 0.013671875, + "decoded_f64_hex": "0x3F8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 0.01416015625, + "input_f64_hex": "0x3F8D000000000000", + "tnf8_bits_hex": "0x6D", + "tnf8_bits_int": 109, + "decoded_f64": 0.01416015625, + "decoded_f64_hex": "0x3F8D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 0.0146484375, + "input_f64_hex": "0x3F8E000000000000", + "tnf8_bits_hex": "0x6E", + "tnf8_bits_int": 110, + "decoded_f64": 0.0146484375, + "decoded_f64_hex": "0x3F8E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 0.01513671875, + "input_f64_hex": "0x3F8F000000000000", + "tnf8_bits_hex": "0x6F", + "tnf8_bits_int": 111, + "decoded_f64": 0.01513671875, + "decoded_f64_hex": "0x3F8F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "tnf8_bits_hex": "0x70", + "tnf8_bits_int": 112, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x71", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x71", + "tnf8_bits_int": 113, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x72", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x72", + "tnf8_bits_int": 114, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x73", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x73", + "tnf8_bits_int": 115, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x74", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x74", + "tnf8_bits_int": 116, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x75", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x75", + "tnf8_bits_int": 117, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x76", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x76", + "tnf8_bits_int": 118, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x77", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x77", + "tnf8_bits_int": 119, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x78", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x78", + "tnf8_bits_int": 120, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x79", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x79", + "tnf8_bits_int": 121, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7A", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x7A", + "tnf8_bits_int": 122, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7B", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x7B", + "tnf8_bits_int": 123, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7C", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x7C", + "tnf8_bits_int": 124, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x7D", + "tnf8_bits_int": 125, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x7E", + "tnf8_bits_int": 126, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x7F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0x7F", + "tnf8_bits_int": 127, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x80", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "tnf8_bits_hex": "0x80", + "tnf8_bits_int": 128, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x81", + "input_f64": -1.52587890625e-05, + "input_f64_hex": "0xBEF0000000000000", + "tnf8_bits_hex": "0x81", + "tnf8_bits_int": 129, + "decoded_f64": -1.52587890625e-05, + "decoded_f64_hex": "0xBEF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x82", + "input_f64": -3.0517578125e-05, + "input_f64_hex": "0xBF00000000000000", + "tnf8_bits_hex": "0x82", + "tnf8_bits_int": 130, + "decoded_f64": -3.0517578125e-05, + "decoded_f64_hex": "0xBF00000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x83", + "input_f64": -4.57763671875e-05, + "input_f64_hex": "0xBF08000000000000", + "tnf8_bits_hex": "0x83", + "tnf8_bits_int": 131, + "decoded_f64": -4.57763671875e-05, + "decoded_f64_hex": "0xBF08000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x84", + "input_f64": -6.103515625e-05, + "input_f64_hex": "0xBF10000000000000", + "tnf8_bits_hex": "0x84", + "tnf8_bits_int": 132, + "decoded_f64": -6.103515625e-05, + "decoded_f64_hex": "0xBF10000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x85", + "input_f64": -7.62939453125e-05, + "input_f64_hex": "0xBF14000000000000", + "tnf8_bits_hex": "0x85", + "tnf8_bits_int": 133, + "decoded_f64": -7.62939453125e-05, + "decoded_f64_hex": "0xBF14000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x86", + "input_f64": -9.1552734375e-05, + "input_f64_hex": "0xBF18000000000000", + "tnf8_bits_hex": "0x86", + "tnf8_bits_int": 134, + "decoded_f64": -9.1552734375e-05, + "decoded_f64_hex": "0xBF18000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x87", + "input_f64": -0.0001068115234375, + "input_f64_hex": "0xBF1C000000000000", + "tnf8_bits_hex": "0x87", + "tnf8_bits_int": 135, + "decoded_f64": -0.0001068115234375, + "decoded_f64_hex": "0xBF1C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x88", + "input_f64": -0.0001220703125, + "input_f64_hex": "0xBF20000000000000", + "tnf8_bits_hex": "0x88", + "tnf8_bits_int": 136, + "decoded_f64": -0.0001220703125, + "decoded_f64_hex": "0xBF20000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x89", + "input_f64": -0.0001373291015625, + "input_f64_hex": "0xBF22000000000000", + "tnf8_bits_hex": "0x89", + "tnf8_bits_int": 137, + "decoded_f64": -0.0001373291015625, + "decoded_f64_hex": "0xBF22000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8A", + "input_f64": -0.000152587890625, + "input_f64_hex": "0xBF24000000000000", + "tnf8_bits_hex": "0x8A", + "tnf8_bits_int": 138, + "decoded_f64": -0.000152587890625, + "decoded_f64_hex": "0xBF24000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8B", + "input_f64": -0.0001678466796875, + "input_f64_hex": "0xBF26000000000000", + "tnf8_bits_hex": "0x8B", + "tnf8_bits_int": 139, + "decoded_f64": -0.0001678466796875, + "decoded_f64_hex": "0xBF26000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8C", + "input_f64": -0.00018310546875, + "input_f64_hex": "0xBF28000000000000", + "tnf8_bits_hex": "0x8C", + "tnf8_bits_int": 140, + "decoded_f64": -0.00018310546875, + "decoded_f64_hex": "0xBF28000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8D", + "input_f64": -0.0001983642578125, + "input_f64_hex": "0xBF2A000000000000", + "tnf8_bits_hex": "0x8D", + "tnf8_bits_int": 141, + "decoded_f64": -0.0001983642578125, + "decoded_f64_hex": "0xBF2A000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8E", + "input_f64": -0.000213623046875, + "input_f64_hex": "0xBF2C000000000000", + "tnf8_bits_hex": "0x8E", + "tnf8_bits_int": 142, + "decoded_f64": -0.000213623046875, + "decoded_f64_hex": "0xBF2C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8F", + "input_f64": -0.0002288818359375, + "input_f64_hex": "0xBF2E000000000000", + "tnf8_bits_hex": "0x8F", + "tnf8_bits_int": 143, + "decoded_f64": -0.0002288818359375, + "decoded_f64_hex": "0xBF2E000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x90", + "input_f64": -0.000244140625, + "input_f64_hex": "0xBF30000000000000", + "tnf8_bits_hex": "0x90", + "tnf8_bits_int": 144, + "decoded_f64": -0.000244140625, + "decoded_f64_hex": "0xBF30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -0.0002593994140625, + "input_f64_hex": "0xBF31000000000000", + "tnf8_bits_hex": "0x91", + "tnf8_bits_int": 145, + "decoded_f64": -0.0002593994140625, + "decoded_f64_hex": "0xBF31000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -0.000274658203125, + "input_f64_hex": "0xBF32000000000000", + "tnf8_bits_hex": "0x92", + "tnf8_bits_int": 146, + "decoded_f64": -0.000274658203125, + "decoded_f64_hex": "0xBF32000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -0.0002899169921875, + "input_f64_hex": "0xBF33000000000000", + "tnf8_bits_hex": "0x93", + "tnf8_bits_int": 147, + "decoded_f64": -0.0002899169921875, + "decoded_f64_hex": "0xBF33000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -0.00030517578125, + "input_f64_hex": "0xBF34000000000000", + "tnf8_bits_hex": "0x94", + "tnf8_bits_int": 148, + "decoded_f64": -0.00030517578125, + "decoded_f64_hex": "0xBF34000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -0.0003204345703125, + "input_f64_hex": "0xBF35000000000000", + "tnf8_bits_hex": "0x95", + "tnf8_bits_int": 149, + "decoded_f64": -0.0003204345703125, + "decoded_f64_hex": "0xBF35000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -0.000335693359375, + "input_f64_hex": "0xBF36000000000000", + "tnf8_bits_hex": "0x96", + "tnf8_bits_int": 150, + "decoded_f64": -0.000335693359375, + "decoded_f64_hex": "0xBF36000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -0.0003509521484375, + "input_f64_hex": "0xBF37000000000000", + "tnf8_bits_hex": "0x97", + "tnf8_bits_int": 151, + "decoded_f64": -0.0003509521484375, + "decoded_f64_hex": "0xBF37000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -0.0003662109375, + "input_f64_hex": "0xBF38000000000000", + "tnf8_bits_hex": "0x98", + "tnf8_bits_int": 152, + "decoded_f64": -0.0003662109375, + "decoded_f64_hex": "0xBF38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -0.0003814697265625, + "input_f64_hex": "0xBF39000000000000", + "tnf8_bits_hex": "0x99", + "tnf8_bits_int": 153, + "decoded_f64": -0.0003814697265625, + "decoded_f64_hex": "0xBF39000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -0.000396728515625, + "input_f64_hex": "0xBF3A000000000000", + "tnf8_bits_hex": "0x9A", + "tnf8_bits_int": 154, + "decoded_f64": -0.000396728515625, + "decoded_f64_hex": "0xBF3A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -0.0004119873046875, + "input_f64_hex": "0xBF3B000000000000", + "tnf8_bits_hex": "0x9B", + "tnf8_bits_int": 155, + "decoded_f64": -0.0004119873046875, + "decoded_f64_hex": "0xBF3B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -0.00042724609375, + "input_f64_hex": "0xBF3C000000000000", + "tnf8_bits_hex": "0x9C", + "tnf8_bits_int": 156, + "decoded_f64": -0.00042724609375, + "decoded_f64_hex": "0xBF3C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -0.0004425048828125, + "input_f64_hex": "0xBF3D000000000000", + "tnf8_bits_hex": "0x9D", + "tnf8_bits_int": 157, + "decoded_f64": -0.0004425048828125, + "decoded_f64_hex": "0xBF3D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -0.000457763671875, + "input_f64_hex": "0xBF3E000000000000", + "tnf8_bits_hex": "0x9E", + "tnf8_bits_int": 158, + "decoded_f64": -0.000457763671875, + "decoded_f64_hex": "0xBF3E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -0.0004730224609375, + "input_f64_hex": "0xBF3F000000000000", + "tnf8_bits_hex": "0x9F", + "tnf8_bits_int": 159, + "decoded_f64": -0.0004730224609375, + "decoded_f64_hex": "0xBF3F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -0.00048828125, + "input_f64_hex": "0xBF40000000000000", + "tnf8_bits_hex": "0xA0", + "tnf8_bits_int": 160, + "decoded_f64": -0.00048828125, + "decoded_f64_hex": "0xBF40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -0.000518798828125, + "input_f64_hex": "0xBF41000000000000", + "tnf8_bits_hex": "0xA1", + "tnf8_bits_int": 161, + "decoded_f64": -0.000518798828125, + "decoded_f64_hex": "0xBF41000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -0.00054931640625, + "input_f64_hex": "0xBF42000000000000", + "tnf8_bits_hex": "0xA2", + "tnf8_bits_int": 162, + "decoded_f64": -0.00054931640625, + "decoded_f64_hex": "0xBF42000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -0.000579833984375, + "input_f64_hex": "0xBF43000000000000", + "tnf8_bits_hex": "0xA3", + "tnf8_bits_int": 163, + "decoded_f64": -0.000579833984375, + "decoded_f64_hex": "0xBF43000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -0.0006103515625, + "input_f64_hex": "0xBF44000000000000", + "tnf8_bits_hex": "0xA4", + "tnf8_bits_int": 164, + "decoded_f64": -0.0006103515625, + "decoded_f64_hex": "0xBF44000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -0.000640869140625, + "input_f64_hex": "0xBF45000000000000", + "tnf8_bits_hex": "0xA5", + "tnf8_bits_int": 165, + "decoded_f64": -0.000640869140625, + "decoded_f64_hex": "0xBF45000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -0.00067138671875, + "input_f64_hex": "0xBF46000000000000", + "tnf8_bits_hex": "0xA6", + "tnf8_bits_int": 166, + "decoded_f64": -0.00067138671875, + "decoded_f64_hex": "0xBF46000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -0.000701904296875, + "input_f64_hex": "0xBF47000000000000", + "tnf8_bits_hex": "0xA7", + "tnf8_bits_int": 167, + "decoded_f64": -0.000701904296875, + "decoded_f64_hex": "0xBF47000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -0.000732421875, + "input_f64_hex": "0xBF48000000000000", + "tnf8_bits_hex": "0xA8", + "tnf8_bits_int": 168, + "decoded_f64": -0.000732421875, + "decoded_f64_hex": "0xBF48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -0.000762939453125, + "input_f64_hex": "0xBF49000000000000", + "tnf8_bits_hex": "0xA9", + "tnf8_bits_int": 169, + "decoded_f64": -0.000762939453125, + "decoded_f64_hex": "0xBF49000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -0.00079345703125, + "input_f64_hex": "0xBF4A000000000000", + "tnf8_bits_hex": "0xAA", + "tnf8_bits_int": 170, + "decoded_f64": -0.00079345703125, + "decoded_f64_hex": "0xBF4A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -0.000823974609375, + "input_f64_hex": "0xBF4B000000000000", + "tnf8_bits_hex": "0xAB", + "tnf8_bits_int": 171, + "decoded_f64": -0.000823974609375, + "decoded_f64_hex": "0xBF4B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -0.0008544921875, + "input_f64_hex": "0xBF4C000000000000", + "tnf8_bits_hex": "0xAC", + "tnf8_bits_int": 172, + "decoded_f64": -0.0008544921875, + "decoded_f64_hex": "0xBF4C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -0.000885009765625, + "input_f64_hex": "0xBF4D000000000000", + "tnf8_bits_hex": "0xAD", + "tnf8_bits_int": 173, + "decoded_f64": -0.000885009765625, + "decoded_f64_hex": "0xBF4D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -0.00091552734375, + "input_f64_hex": "0xBF4E000000000000", + "tnf8_bits_hex": "0xAE", + "tnf8_bits_int": 174, + "decoded_f64": -0.00091552734375, + "decoded_f64_hex": "0xBF4E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -0.000946044921875, + "input_f64_hex": "0xBF4F000000000000", + "tnf8_bits_hex": "0xAF", + "tnf8_bits_int": 175, + "decoded_f64": -0.000946044921875, + "decoded_f64_hex": "0xBF4F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -0.0009765625, + "input_f64_hex": "0xBF50000000000000", + "tnf8_bits_hex": "0xB0", + "tnf8_bits_int": 176, + "decoded_f64": -0.0009765625, + "decoded_f64_hex": "0xBF50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -0.00103759765625, + "input_f64_hex": "0xBF51000000000000", + "tnf8_bits_hex": "0xB1", + "tnf8_bits_int": 177, + "decoded_f64": -0.00103759765625, + "decoded_f64_hex": "0xBF51000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -0.0010986328125, + "input_f64_hex": "0xBF52000000000000", + "tnf8_bits_hex": "0xB2", + "tnf8_bits_int": 178, + "decoded_f64": -0.0010986328125, + "decoded_f64_hex": "0xBF52000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -0.00115966796875, + "input_f64_hex": "0xBF53000000000000", + "tnf8_bits_hex": "0xB3", + "tnf8_bits_int": 179, + "decoded_f64": -0.00115966796875, + "decoded_f64_hex": "0xBF53000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -0.001220703125, + "input_f64_hex": "0xBF54000000000000", + "tnf8_bits_hex": "0xB4", + "tnf8_bits_int": 180, + "decoded_f64": -0.001220703125, + "decoded_f64_hex": "0xBF54000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -0.00128173828125, + "input_f64_hex": "0xBF55000000000000", + "tnf8_bits_hex": "0xB5", + "tnf8_bits_int": 181, + "decoded_f64": -0.00128173828125, + "decoded_f64_hex": "0xBF55000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -0.0013427734375, + "input_f64_hex": "0xBF56000000000000", + "tnf8_bits_hex": "0xB6", + "tnf8_bits_int": 182, + "decoded_f64": -0.0013427734375, + "decoded_f64_hex": "0xBF56000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -0.00140380859375, + "input_f64_hex": "0xBF57000000000000", + "tnf8_bits_hex": "0xB7", + "tnf8_bits_int": 183, + "decoded_f64": -0.00140380859375, + "decoded_f64_hex": "0xBF57000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -0.00146484375, + "input_f64_hex": "0xBF58000000000000", + "tnf8_bits_hex": "0xB8", + "tnf8_bits_int": 184, + "decoded_f64": -0.00146484375, + "decoded_f64_hex": "0xBF58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -0.00152587890625, + "input_f64_hex": "0xBF59000000000000", + "tnf8_bits_hex": "0xB9", + "tnf8_bits_int": 185, + "decoded_f64": -0.00152587890625, + "decoded_f64_hex": "0xBF59000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -0.0015869140625, + "input_f64_hex": "0xBF5A000000000000", + "tnf8_bits_hex": "0xBA", + "tnf8_bits_int": 186, + "decoded_f64": -0.0015869140625, + "decoded_f64_hex": "0xBF5A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -0.00164794921875, + "input_f64_hex": "0xBF5B000000000000", + "tnf8_bits_hex": "0xBB", + "tnf8_bits_int": 187, + "decoded_f64": -0.00164794921875, + "decoded_f64_hex": "0xBF5B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -0.001708984375, + "input_f64_hex": "0xBF5C000000000000", + "tnf8_bits_hex": "0xBC", + "tnf8_bits_int": 188, + "decoded_f64": -0.001708984375, + "decoded_f64_hex": "0xBF5C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -0.00177001953125, + "input_f64_hex": "0xBF5D000000000000", + "tnf8_bits_hex": "0xBD", + "tnf8_bits_int": 189, + "decoded_f64": -0.00177001953125, + "decoded_f64_hex": "0xBF5D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -0.0018310546875, + "input_f64_hex": "0xBF5E000000000000", + "tnf8_bits_hex": "0xBE", + "tnf8_bits_int": 190, + "decoded_f64": -0.0018310546875, + "decoded_f64_hex": "0xBF5E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -0.00189208984375, + "input_f64_hex": "0xBF5F000000000000", + "tnf8_bits_hex": "0xBF", + "tnf8_bits_int": 191, + "decoded_f64": -0.00189208984375, + "decoded_f64_hex": "0xBF5F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -0.001953125, + "input_f64_hex": "0xBF60000000000000", + "tnf8_bits_hex": "0xC0", + "tnf8_bits_int": 192, + "decoded_f64": -0.001953125, + "decoded_f64_hex": "0xBF60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -0.0020751953125, + "input_f64_hex": "0xBF61000000000000", + "tnf8_bits_hex": "0xC1", + "tnf8_bits_int": 193, + "decoded_f64": -0.0020751953125, + "decoded_f64_hex": "0xBF61000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -0.002197265625, + "input_f64_hex": "0xBF62000000000000", + "tnf8_bits_hex": "0xC2", + "tnf8_bits_int": 194, + "decoded_f64": -0.002197265625, + "decoded_f64_hex": "0xBF62000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -0.0023193359375, + "input_f64_hex": "0xBF63000000000000", + "tnf8_bits_hex": "0xC3", + "tnf8_bits_int": 195, + "decoded_f64": -0.0023193359375, + "decoded_f64_hex": "0xBF63000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -0.00244140625, + "input_f64_hex": "0xBF64000000000000", + "tnf8_bits_hex": "0xC4", + "tnf8_bits_int": 196, + "decoded_f64": -0.00244140625, + "decoded_f64_hex": "0xBF64000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -0.0025634765625, + "input_f64_hex": "0xBF65000000000000", + "tnf8_bits_hex": "0xC5", + "tnf8_bits_int": 197, + "decoded_f64": -0.0025634765625, + "decoded_f64_hex": "0xBF65000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -0.002685546875, + "input_f64_hex": "0xBF66000000000000", + "tnf8_bits_hex": "0xC6", + "tnf8_bits_int": 198, + "decoded_f64": -0.002685546875, + "decoded_f64_hex": "0xBF66000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -0.0028076171875, + "input_f64_hex": "0xBF67000000000000", + "tnf8_bits_hex": "0xC7", + "tnf8_bits_int": 199, + "decoded_f64": -0.0028076171875, + "decoded_f64_hex": "0xBF67000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -0.0029296875, + "input_f64_hex": "0xBF68000000000000", + "tnf8_bits_hex": "0xC8", + "tnf8_bits_int": 200, + "decoded_f64": -0.0029296875, + "decoded_f64_hex": "0xBF68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -0.0030517578125, + "input_f64_hex": "0xBF69000000000000", + "tnf8_bits_hex": "0xC9", + "tnf8_bits_int": 201, + "decoded_f64": -0.0030517578125, + "decoded_f64_hex": "0xBF69000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -0.003173828125, + "input_f64_hex": "0xBF6A000000000000", + "tnf8_bits_hex": "0xCA", + "tnf8_bits_int": 202, + "decoded_f64": -0.003173828125, + "decoded_f64_hex": "0xBF6A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -0.0032958984375, + "input_f64_hex": "0xBF6B000000000000", + "tnf8_bits_hex": "0xCB", + "tnf8_bits_int": 203, + "decoded_f64": -0.0032958984375, + "decoded_f64_hex": "0xBF6B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -0.00341796875, + "input_f64_hex": "0xBF6C000000000000", + "tnf8_bits_hex": "0xCC", + "tnf8_bits_int": 204, + "decoded_f64": -0.00341796875, + "decoded_f64_hex": "0xBF6C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -0.0035400390625, + "input_f64_hex": "0xBF6D000000000000", + "tnf8_bits_hex": "0xCD", + "tnf8_bits_int": 205, + "decoded_f64": -0.0035400390625, + "decoded_f64_hex": "0xBF6D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -0.003662109375, + "input_f64_hex": "0xBF6E000000000000", + "tnf8_bits_hex": "0xCE", + "tnf8_bits_int": 206, + "decoded_f64": -0.003662109375, + "decoded_f64_hex": "0xBF6E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -0.0037841796875, + "input_f64_hex": "0xBF6F000000000000", + "tnf8_bits_hex": "0xCF", + "tnf8_bits_int": 207, + "decoded_f64": -0.0037841796875, + "decoded_f64_hex": "0xBF6F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -0.00390625, + "input_f64_hex": "0xBF70000000000000", + "tnf8_bits_hex": "0xD0", + "tnf8_bits_int": 208, + "decoded_f64": -0.00390625, + "decoded_f64_hex": "0xBF70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -0.004150390625, + "input_f64_hex": "0xBF71000000000000", + "tnf8_bits_hex": "0xD1", + "tnf8_bits_int": 209, + "decoded_f64": -0.004150390625, + "decoded_f64_hex": "0xBF71000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -0.00439453125, + "input_f64_hex": "0xBF72000000000000", + "tnf8_bits_hex": "0xD2", + "tnf8_bits_int": 210, + "decoded_f64": -0.00439453125, + "decoded_f64_hex": "0xBF72000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -0.004638671875, + "input_f64_hex": "0xBF73000000000000", + "tnf8_bits_hex": "0xD3", + "tnf8_bits_int": 211, + "decoded_f64": -0.004638671875, + "decoded_f64_hex": "0xBF73000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -0.0048828125, + "input_f64_hex": "0xBF74000000000000", + "tnf8_bits_hex": "0xD4", + "tnf8_bits_int": 212, + "decoded_f64": -0.0048828125, + "decoded_f64_hex": "0xBF74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -0.005126953125, + "input_f64_hex": "0xBF75000000000000", + "tnf8_bits_hex": "0xD5", + "tnf8_bits_int": 213, + "decoded_f64": -0.005126953125, + "decoded_f64_hex": "0xBF75000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -0.00537109375, + "input_f64_hex": "0xBF76000000000000", + "tnf8_bits_hex": "0xD6", + "tnf8_bits_int": 214, + "decoded_f64": -0.00537109375, + "decoded_f64_hex": "0xBF76000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -0.005615234375, + "input_f64_hex": "0xBF77000000000000", + "tnf8_bits_hex": "0xD7", + "tnf8_bits_int": 215, + "decoded_f64": -0.005615234375, + "decoded_f64_hex": "0xBF77000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -0.005859375, + "input_f64_hex": "0xBF78000000000000", + "tnf8_bits_hex": "0xD8", + "tnf8_bits_int": 216, + "decoded_f64": -0.005859375, + "decoded_f64_hex": "0xBF78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -0.006103515625, + "input_f64_hex": "0xBF79000000000000", + "tnf8_bits_hex": "0xD9", + "tnf8_bits_int": 217, + "decoded_f64": -0.006103515625, + "decoded_f64_hex": "0xBF79000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -0.00634765625, + "input_f64_hex": "0xBF7A000000000000", + "tnf8_bits_hex": "0xDA", + "tnf8_bits_int": 218, + "decoded_f64": -0.00634765625, + "decoded_f64_hex": "0xBF7A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -0.006591796875, + "input_f64_hex": "0xBF7B000000000000", + "tnf8_bits_hex": "0xDB", + "tnf8_bits_int": 219, + "decoded_f64": -0.006591796875, + "decoded_f64_hex": "0xBF7B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -0.0068359375, + "input_f64_hex": "0xBF7C000000000000", + "tnf8_bits_hex": "0xDC", + "tnf8_bits_int": 220, + "decoded_f64": -0.0068359375, + "decoded_f64_hex": "0xBF7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -0.007080078125, + "input_f64_hex": "0xBF7D000000000000", + "tnf8_bits_hex": "0xDD", + "tnf8_bits_int": 221, + "decoded_f64": -0.007080078125, + "decoded_f64_hex": "0xBF7D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -0.00732421875, + "input_f64_hex": "0xBF7E000000000000", + "tnf8_bits_hex": "0xDE", + "tnf8_bits_int": 222, + "decoded_f64": -0.00732421875, + "decoded_f64_hex": "0xBF7E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -0.007568359375, + "input_f64_hex": "0xBF7F000000000000", + "tnf8_bits_hex": "0xDF", + "tnf8_bits_int": 223, + "decoded_f64": -0.007568359375, + "decoded_f64_hex": "0xBF7F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -0.0078125, + "input_f64_hex": "0xBF80000000000000", + "tnf8_bits_hex": "0xE0", + "tnf8_bits_int": 224, + "decoded_f64": -0.0078125, + "decoded_f64_hex": "0xBF80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -0.00830078125, + "input_f64_hex": "0xBF81000000000000", + "tnf8_bits_hex": "0xE1", + "tnf8_bits_int": 225, + "decoded_f64": -0.00830078125, + "decoded_f64_hex": "0xBF81000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -0.0087890625, + "input_f64_hex": "0xBF82000000000000", + "tnf8_bits_hex": "0xE2", + "tnf8_bits_int": 226, + "decoded_f64": -0.0087890625, + "decoded_f64_hex": "0xBF82000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -0.00927734375, + "input_f64_hex": "0xBF83000000000000", + "tnf8_bits_hex": "0xE3", + "tnf8_bits_int": 227, + "decoded_f64": -0.00927734375, + "decoded_f64_hex": "0xBF83000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -0.009765625, + "input_f64_hex": "0xBF84000000000000", + "tnf8_bits_hex": "0xE4", + "tnf8_bits_int": 228, + "decoded_f64": -0.009765625, + "decoded_f64_hex": "0xBF84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -0.01025390625, + "input_f64_hex": "0xBF85000000000000", + "tnf8_bits_hex": "0xE5", + "tnf8_bits_int": 229, + "decoded_f64": -0.01025390625, + "decoded_f64_hex": "0xBF85000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -0.0107421875, + "input_f64_hex": "0xBF86000000000000", + "tnf8_bits_hex": "0xE6", + "tnf8_bits_int": 230, + "decoded_f64": -0.0107421875, + "decoded_f64_hex": "0xBF86000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -0.01123046875, + "input_f64_hex": "0xBF87000000000000", + "tnf8_bits_hex": "0xE7", + "tnf8_bits_int": 231, + "decoded_f64": -0.01123046875, + "decoded_f64_hex": "0xBF87000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -0.01171875, + "input_f64_hex": "0xBF88000000000000", + "tnf8_bits_hex": "0xE8", + "tnf8_bits_int": 232, + "decoded_f64": -0.01171875, + "decoded_f64_hex": "0xBF88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -0.01220703125, + "input_f64_hex": "0xBF89000000000000", + "tnf8_bits_hex": "0xE9", + "tnf8_bits_int": 233, + "decoded_f64": -0.01220703125, + "decoded_f64_hex": "0xBF89000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -0.0126953125, + "input_f64_hex": "0xBF8A000000000000", + "tnf8_bits_hex": "0xEA", + "tnf8_bits_int": 234, + "decoded_f64": -0.0126953125, + "decoded_f64_hex": "0xBF8A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -0.01318359375, + "input_f64_hex": "0xBF8B000000000000", + "tnf8_bits_hex": "0xEB", + "tnf8_bits_int": 235, + "decoded_f64": -0.01318359375, + "decoded_f64_hex": "0xBF8B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -0.013671875, + "input_f64_hex": "0xBF8C000000000000", + "tnf8_bits_hex": "0xEC", + "tnf8_bits_int": 236, + "decoded_f64": -0.013671875, + "decoded_f64_hex": "0xBF8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -0.01416015625, + "input_f64_hex": "0xBF8D000000000000", + "tnf8_bits_hex": "0xED", + "tnf8_bits_int": 237, + "decoded_f64": -0.01416015625, + "decoded_f64_hex": "0xBF8D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -0.0146484375, + "input_f64_hex": "0xBF8E000000000000", + "tnf8_bits_hex": "0xEE", + "tnf8_bits_int": 238, + "decoded_f64": -0.0146484375, + "decoded_f64_hex": "0xBF8E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -0.01513671875, + "input_f64_hex": "0xBF8F000000000000", + "tnf8_bits_hex": "0xEF", + "tnf8_bits_int": 239, + "decoded_f64": -0.01513671875, + "decoded_f64_hex": "0xBF8F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "tnf8_bits_hex": "0xF0", + "tnf8_bits_int": 240, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0xF1", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF1", + "tnf8_bits_int": 241, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF2", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF2", + "tnf8_bits_int": 242, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF3", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF3", + "tnf8_bits_int": 243, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF4", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF4", + "tnf8_bits_int": 244, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF5", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF5", + "tnf8_bits_int": 245, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF6", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF6", + "tnf8_bits_int": 246, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF7", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF7", + "tnf8_bits_int": 247, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF8", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF8", + "tnf8_bits_int": 248, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xF9", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xF9", + "tnf8_bits_int": 249, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFA", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xFA", + "tnf8_bits_int": 250, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFB", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xFB", + "tnf8_bits_int": 251, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFC", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xFC", + "tnf8_bits_int": 252, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFD", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xFD", + "tnf8_bits_int": 253, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFE", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xFE", + "tnf8_bits_int": 254, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0xFF", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "tnf8_bits_hex": "0xFF", + "tnf8_bits_int": 255, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/docs/FOUR_FAMILIES.md b/docs/FOUR_FAMILIES.md new file mode 100644 index 0000000000..874977bd3d --- /dev/null +++ b/docs/FOUR_FAMILIES.md @@ -0,0 +1,78 @@ +# Четыре семейства, две оси + +| | **ось золотого сечения** | **ось теорем** | +|---|---|---| +| **двоичная** | **GF** — `e = round((N−1)/φ²)` | **BNF** — контроль | +| **тернарная** | **GF-T** — `Eₜ = round((N−1)/φ²)` | **TNF** — оптимум под тернарные сети | + +Это не переименования. Четыре формата, отвечающие на разные вопросы. + +## Ось золотого сечения: GF и GF-T + +Золотое сечение здесь — **материальная ось**, привнесённая из геометрии и +физического мира, как Евклид связал число с отрезком. Правило делит полезную +нагрузку в отношении `1/φ`, и оно **одно и то же** в обоих семействах: + +``` +GF: e = round((N−1)/φ²) бит M = N − 1 − e +GF-T: Eₜ = round((N−1)/φ²) тритов M = N − 1 − Eₜ +``` + +**Трит — это позиция**, поэтому правило переносится дословно. Все девять ступеней +укладываются точно, ни одна позиция не пропадает: + +| N | Eₜ | M | 1+Eₜ+M | Eₜ/M | \|Eₜ/M − 1/φ\| | диапазон, бинад | +|---|---|---|---|---|---|---| +| 4 | 1 | 2 | 4 | 0.5000 | 0.1180 | ±1 | +| 8 | 3 | 4 | 8 | 0.7500 | 0.1320 | ±13 | +| 16 | 6 | 9 | 16 | 0.6667 | 0.0486 | ±364 | +| 32 | 12 | 19 | 32 | 0.6316 | 0.0135 | ±265 720 | +| 64 | 24 | 39 | 64 | 0.6154 | **0.0026** | ±1.4×10¹¹ | +| 128 | 49 | 78 | 128 | 0.6282 | 0.0102 | ±(3⁴⁹−1)/2 | +| 512 | 195 | 316 | 512 | 0.6171 | 0.0009 | ±(3¹⁹⁵−1)/2 | +| 1024 | 391 | 632 | 1024 | 0.6187 | **0.0006** | ±(3³⁹¹−1)/2 | + +φ-расстояние сходится к нулю вверх по лестнице — **по построению**, как и у GF. + +## Ось теорем: BNF и TNF + +Выводятся не из пропорции, а из **оптимизации под тернарные сети.** В сети с весом +из `{−1, 0, +1}` умножения нет, тракт — декод → сложение, и по закону точности +ошибка зависит **только** от `M`. Отсюда правило: подобрать экспоненту под диапазон, +который нагрузка **реально посещает**, и отдать мантиссе все остальные позиции. + +**BNF — контроль.** Отличается от TNF ровно одним: радиксом кодировки экспоненты. +Пара измеряет вклад тернарности, а не заявляет его: **1.00× на двоичной ткани, +ровно 2× на тернарной фабрике**, на каждой ширине. + +## Размен между осями — измерен + +| N | GF-T (φ) | диапазон | ошибка | TNF (теорема) | диапазон | ошибка | +|---|---|---|---|---|---|---| +| 16 | 6/9 | ±364 | 3.24e-4 | 4/11 | ±40 | **8.85e-5** | +| 32 | 12/19 | ±265 720 | 3.36e-7 | 6/25 | ±364 | **5.14e-9** | +| 64 | 24/39 | **±1.4×10¹¹** | 2.99e-13 | 7/56 | ±1093 | **2.45e-18** | + +На 64 битах φ-лестница берёт диапазона в **1.3×10⁸ раз больше** ценой ошибки в +1.2×10⁵ раз. + +**Ни одна не доминирует.** Это разные точки одного фронта, и следствие о паре +`(M_eff, число бинад)` прямо запрещает ранжировать их без названной нагрузки. φ +решает **сколько** диапазона; теорема решает **сколько нужно**. + +## Что заявлять можно + +- **φ-ось:** GF-T укладывается точно на всех девяти ступенях, `Eₜ/M` сходится к + `1/φ` с расстоянием 0.0006 на 1024 битах. Правило одно с GF, перенесено на + позиции. +- **Ось теорем:** тернарная кодировка стоит **ровно 2×** на тернарной фабрике и + **ровно ничего** на двоичной — доказано контролем BNF, обе половины. +- **Размен между осями** измерен и не сводится к «лучше/хуже». + +## Чего заявлять нельзя + +- «TNF лучший формат» — на измеренной тернарной сети он в середине группы + фиксированных полей, 21 формат, один тракт. +- «2× лучше всех» — 2× это против **собственного контроля** и только на фабрике, + которой не продают. +- «GF-T устарел» — он на другой точке фронта, а не ниже. diff --git a/docs/NOW.md b/docs/NOW.md index 5ea7b310cd..1d3be3f13f 100644 --- a/docs/NOW.md +++ b/docs/NOW.md @@ -1,3 +1,28 @@ +# NOW -- BNF: the control that measures what ternary is worth (2026-08-09) + +Last updated: 2026-08-09 + +## numeric: add BNF, and state the four families as two axes (Refs #2001) + +- **GF, GF-T, BNF and TNF are four formats, not renamings.** Two axes: phi-derived against theorem-derived, binary against ternary. GF sizes its exponent by `round((N-1)/phi^2)`, which is about the PROPORTION of the fields; BNF and TNF size it for the range the workload visits and then spend every remaining position, which follows from the precision law where the exponent cancels +- **GF-T leaves positions unspent by construction, and that is what it is rather than a defect.** Converting a binary exponent to trits frees positions and the phi rule does not reclaim them: 1, 2, 4, 8, 18 free at N = 8, 16, 32, 64, 128. TNF takes them, and the precision law makes the gain exactly `2^k` -- 4x at 16 bits, 16x at 32, 256x at 64 +- **BNF is the control.** It differs from TNF in exactly one thing, the radix the exponent field is encoded in, so the pair measures the ternary encoding instead of asserting it. Measured: identical at every width on a binary fabric, exactly as the no-free-range theorem requires, and exactly 2x on a ternary one -- one mantissa bit, the same at every rung, because the packing loss is one position regardless of width +- Eight BNF rungs added, all typechecking. Catalog 92 -> 100, so the erratum needs a third amendment +- What may be claimed and what may not is written down in `docs/FOUR_FAMILIES.md`: the 2x is against our own control on a fabric nobody sells, and on a real ternary network TNF measures mid-pack among fixed fields + +# NOW -- the ladder is TNF: Ternary Network Float (2026-08-09) + +Last updated: 2026-08-09 + +## numeric: TEF -> TNF, and the lineage stated correctly (Refs #2001) + +- **GF and this ladder are not the same lineage, and conflating them was the error behind two earlier names.** GF is built on the golden ratio: it sizes its exponent by `e = round((N-1)/phi^2)`, which puts `e/m` at `1/phi` by construction. This ladder **deliberately left phi** to become a reference for ternary networks, and its phi-distance therefore RISES with N -- measured, and structural rather than a defect +- Named **TNF, Ternary Network Float**, for what it is built for: networks whose weights are in `{-1, 0, +1}`, where `w*a` is a select and the multiply disappears, so the decoder stops being overhead and becomes the body of the datapath +- Renamed by explicit rung list, never by glob: `specs/numeric/tnf*.t27`, catalog ids `tnfN`, modules `triformat_tnfN`, packs, the integrity gate's neighbour check, the SSOT document and the erratum +- Former names carried in `former_name=`: **GF-T** through 2026, then **TEF** for one day on 2026-08-09 +- Neighbours verified present after the rename: `gfternary.t27` and `gf16.t27`. A `gft*` glob has already deleted the first one once +- Gates: catalog count 92, integrity CLEAN, `t27c` clean on all nine TNF specs + # NOW -- correction: GF-T was never published (2026-08-09) Last updated: 2026-08-09 diff --git a/docs/NUMERIC_FORMATS_SSOT.md b/docs/NUMERIC_FORMATS_SSOT.md index 52f9be0545..2aca14daf9 100644 --- a/docs/NUMERIC_FORMATS_SSOT.md +++ b/docs/NUMERIC_FORMATS_SSOT.md @@ -163,7 +163,7 @@ quantised over `[1,r)` the mean relative error is `kappa(r) * 2^-M` with buys 0.42 of range, a net loss of 0.33 positions per number. **Width rule:** `1 + E_t + M = N`, counting one position per trit. Eight of the -nine rungs satisfy it exactly. TEF16 does not — it inherits GF16's phi-optimal +nine rungs satisfy it exactly. TNF16 does not — it inherits GF16's phi-optimal `M = 9` and replaces GF16's six-bit exponent with four trits, leaving two positions unallocated. Spending them as `M = 11` divides the error by 4.00 at unchanged range for 19% more LUTs and no loss of frequency (measured, XC7A200T). @@ -173,15 +173,15 @@ decision stays explicit. | Format | S+E+M | Bits | \|e\| max | Decades | E_t bits-equiv | φ-distance | Fits rule | Post-route XC7A200T | Spec | |---|---|---|---|---|---|---|---|---|---| -| TEF4 | 1+2t+1 | 4 | 4 | 2 | 3.17 | 2.552 | **yes** | 12 LUT / 161.1 MHz | [`tef4.t27`](../specs/numeric/tef4.t27) | -| TEF8 | 1+3t+4 | 8 | 13 | 8 | 4.75 | 0.571 | **yes** | 50 / 153.2 | [`tef8.t27`](../specs/numeric/tef8.t27) | -| TEF16 | 1+4t+9 | 16 | 40 | 24 | 6.34 | 0.086 | **no (2 unallocated)** | 212 / 131.7 | [`tef16.t27`](../specs/numeric/tef16.t27) | -| TEF32 | 1+6t+25 | 32 | 364 | 219 | 9.51 | 0.238 | **yes** | 1477 / 83.3 | [`tef32.t27`](../specs/numeric/tef32.t27) | -| TEF64 | 1+7t+56 | 64 | 1093 | 658 | 11.09 | 0.420 | **yes** | 7479 / 48.2 | [`tef64.t27`](../specs/numeric/tef64.t27) | -| TEF128 | 1+8t+119 | 128 | 3280 | 1975 | 12.68 | 0.511 | **yes** | — | [`tef128.t27`](../specs/numeric/tef128.t27) | -| TEF256 | 1+9t+246 | 256 | 9841 | 5925 | 14.26 | 0.560 | **yes** | — | [`tef256.t27`](../specs/numeric/tef256.t27) | -| TEF512 | 1+10t+501 | 512 | 29524 | 17775 | 15.85 | 0.586 | **yes** | — | [`tef512.t27`](../specs/numeric/tef512.t27) | -| TEF1024 | 1+11t+1012 | 1024 | 88573 | 53326 | 17.43 | 0.601 | **yes** | — | [`tef1024.t27`](../specs/numeric/tef1024.t27) | +| TNF4 | 1+2t+1 | 4 | 4 | 2 | 3.17 | 2.552 | **yes** | 12 LUT / 161.1 MHz | [`tnf4.t27`](../specs/numeric/tnf4.t27) | +| TNF8 | 1+3t+4 | 8 | 13 | 8 | 4.75 | 0.571 | **yes** | 50 / 153.2 | [`tnf8.t27`](../specs/numeric/tnf8.t27) | +| TNF16 | 1+4t+9 | 16 | 40 | 24 | 6.34 | 0.086 | **no (2 unallocated)** | 212 / 131.7 | [`tnf16.t27`](../specs/numeric/tnf16.t27) | +| TNF32 | 1+6t+25 | 32 | 364 | 219 | 9.51 | 0.238 | **yes** | 1477 / 83.3 | [`tnf32.t27`](../specs/numeric/tnf32.t27) | +| TNF64 | 1+7t+56 | 64 | 1093 | 658 | 11.09 | 0.420 | **yes** | 7479 / 48.2 | [`tnf64.t27`](../specs/numeric/tnf64.t27) | +| TNF128 | 1+8t+119 | 128 | 3280 | 1975 | 12.68 | 0.511 | **yes** | — | [`tnf128.t27`](../specs/numeric/tnf128.t27) | +| TNF256 | 1+9t+246 | 256 | 9841 | 5925 | 14.26 | 0.560 | **yes** | — | [`tnf256.t27`](../specs/numeric/tnf256.t27) | +| TNF512 | 1+10t+501 | 512 | 29524 | 17775 | 15.85 | 0.586 | **yes** | — | [`tnf512.t27`](../specs/numeric/tnf512.t27) | +| TNF1024 | 1+11t+1012 | 1024 | 88573 | 53326 | 17.43 | 0.601 | **yes** | — | [`tnf1024.t27`](../specs/numeric/tnf1024.t27) | **Reading the φ-distance column.** It is the catalog's own `|E/M - 1/φ|` computed on the exponent's bit-equivalent `E_t*log2(3)`, and it **rises toward 1/φ as N @@ -196,7 +196,7 @@ costs 438 LUTs round trip and a length-prefixed one (takum class) 40, against 0 here. Converting through the measured area law `A(M) = 141 + 2.4455*M^2`, whose derivative `λ = 4.891*M` is the marginal LUT cost of a mantissa bit, the unary regime is **9.95 mantissa bits of silicon** at the 16-bit class — more than -TEF16's entire mantissa — and 1.00 at `M = 90`. The length-prefixed regime is +TNF16's entire mantissa — and 1.00 at `M = 90`. The length-prefixed regime is 0.91 bits and 0.09. The area argument is therefore decisive against posit and weak against takum, and is stated that way rather than averaged. diff --git a/docs/TERNARY_LANDSCAPE.md b/docs/TERNARY_LANDSCAPE.md new file mode 100644 index 0000000000..21ced231c1 --- /dev/null +++ b/docs/TERNARY_LANDSCAPE.md @@ -0,0 +1,105 @@ +# Тернарные форматы: полная карта — наши и конкуренты + +## Различие, без которого карта бессмысленна + +**Почти всё, что рынок называет «тернарным форматом», — это тернарный КВАНТОВАТЕЛЬ +ВЕСОВ, а не тернарное ЧИСЛО.** BitNet, TWN, TernaryBERT кладут `{−1, 0, +1}` в веса +и продолжают считать активации и накопление обычными двоичными числами. + +Настоящих тернарных *числовых форматов* на рынке единицы. + +## Наши + +| формат | что это | разрядность | статус | +|---|---|---|---| +| **TNF4…TNF1024** | float с **тернарной ЭКСПОНЕНТОЙ**, радикс шкалы **двоичный** | 4…1024 | 9 ступеней в SSOT, 6 измерены на кремнии | +| прежнее имя | **GF-T4…GF-T1024** | | `former_name=` в каждой строке каталога | +| **GFTernary** | 2-битный **АЛФАВИТ** `{−φ, 0, +φ}` — не число с плавающей точкой | 2 | в каталоге, есть RTL и конформанс | +| **TF3** | 8-битный **контейнер** для тернарных весов, `[S1 E3 M4]` | 8 | спека есть, **в каталоге отсутствует** | + +⚠️ Три объекта, которые постоянно путают. `gft*` как глоб матчит `gfternary` — это +уже стоило удалённой спеки. Матчить `tef[0-9]+`. + +## Конкуренты: квантователи весов (не числовые форматы) + +| название | веса | ключевое | ссылка | +|---|---|---|---| +| **BitNet b1.58** | `{−1,0,+1}` | лидер рынка; умножение → сложение; ≥3B параметров держит уровень fp | [обзор](https://www.emergentmind.com/topics/bitnet-b1-58) | +| **TWN** | `{−1,0,+1}` × α | масштаб α обучается послойно; предполагает гауссовы веса | — | +| **TernaryBERT** | `{−1,0,+1}` | тернаризация + дистилляция знаний | [EMNLP 2020](https://aclanthology.org/2020.emnlp-main.37.pdf) | +| **PTQTP** | трит-плоскости | структурное разложение, инференс без умножений | [OpenReview](https://openreview.net/forum?id=0mqsIlMtfm) | +| **Sherry** | 1.25 бита | тернар + мелкозернистая разрежённость | [arXiv:2601.07892](https://arxiv.org/pdf/2601.07892) | +| **CAT-Q**, **TWLA**, **BitNet v2**, **RobuQ**, **PT2-LLM** | `{−1,0,+1}` | послетренировочная тернаризация, 2025–2026 | [CAT-Q](https://arxiv.org/pdf/2606.26650), [TWLA](https://arxiv.org/html/2606.13054v1) | + +**Ни один из них не определяет тернарное число.** Все они — про то, как загнать +веса в три состояния, и все оставляют активации двоичными. **Это наш рынок, а не +наши конкуренты:** они создают спрос на формат активаций, которым сами не +занимаются. + +## Конкуренты: настоящие тернарные числа + +| название | радикс шкалы | раскладка | наша оценка | +|---|---|---|---| +| **Ternary27** | **3** (`s·3^e`) | 2 трита типа + 1 знак + 5 экспонента + 19 мантисса = 27 | по Т8 радикс 3 **хуже на 0.331 позиции на число** при равной ширине | +| **TNF** (наш) | **2** (`s·2^e`) | 1 + Et тритов + M бит | тернарна только кодировка экспоненты | + +**Это единственное прямое сравнение числовых форматов в тернарном мире**, и оно +измерено: `κ(r) = (r−1)²/(r·ln r)`, `κ(2) = 0.721`, `κ(3) = 1.214`. Радикс 3 даёт +диапазон ×1.585 ценой ошибки ×1.683 — чистый убыток 0.331 позиции. + +## Что из этого следует для позиционирования + +1. **Рынок тернарных весов огромен и растёт** — BitNet и все производные. Умножения + в них нет по построению. +2. **Формата активаций для него нет.** Все перечисленные держат активации в fp16 или + int8, то есть в двоичном формате, спроектированном не под этот тракт. +3. **Наш измеренный результат бьёт ровно туда:** на тернарной сети фиксированное + поле опережает тейперное в **2.4–6.4×** по пропускной способности на площадь. +4. **Но не «TNF лучший»:** при честном сравнении он в середине группы фиксированных + полей. Продавать надо границу групп, а не место внутри группы. + +## Оговорка + +Список квантователей собран по обзорам и аннотациям, а не по прочитанным целиком +статьям — кроме BlockDialect, прочитанного полностью в другой линии работы. Перед +любой публичной заявкой о «единственном» или «первом» этот список надо проверять +статья за статьёй. + +--- + +## Прямое сравнение доведено до числа (2026-08-09) + +Раньше строка про Ternary27 говорила «хуже на 0.331 позиции по Т8». Это оценка +механизма, а не результат сравнения. Теперь сравнение сделано при **равном +хранении в битах** (сравнивать по позициям нельзя: тритовая позиция несёт +log₂3 = 1.585 бита, и Ternary27 при равном числе позиций выигрывал бы даром). + +| | хранение | m, бит | бинад | вердикт | +|---|---:|---:|---:|---| +| **Ternary27** | 43 бита (27 тритов) | 30.11 | 385 | **доминирован** семейством TNF43 | + +Семейству нужно `Eₜ = 6` при `11` доступных — запас в пять позиций. + +**Почему:** радикс шкалы 3 даёт диапазон ×1.585, но ошибку ×1.682 +(`κ(3)/κ(2)`). Чистый убыток и есть те 0.331 позиции. Вывод, который стоит +формулировать как закон: **тернарной должна быть КОДИРОВКА экспоненты, а не +РАДИКС шкалы.** + +## GF-T на этом фоне + +GF-T — наша ось золотого сечения — лежит **на фронте с равенством** при 8, 16, +32 и 64 (правило φ тратит все позиции), и доминирован только при 128, где +округление `round((N−1)/φ²)` оставляет позиции непотраченными. Это ровно то, +что должно происходить: φ-правило и правило ширины совпадают всюду, где +округление φ-доли попадает в целое. + +## Оговорка, которая снимается и которая остаётся + +Снимается: сравнение с Ternary27 больше не оценочное. + +Остаётся: **квантователи весов (BitNet и производные) конкурентами не являются +вообще.** У тернарного веса нет формата — 1.58 бита, ни экспоненты, ни +мантиссы, ни умножения. Формат в тернарной сети описывает аккумулятор, и там +закон выведен и измерен отдельно (`trinity-fpga/research/block/TERNARY_ACCUMULATOR_2026-08-09.md`). +Путать эти две категории — ошибка, и я её однажды сделал в устном отчёте, +сказав «в тернарных мы никого не побили»: побили, среди числовых форматов. diff --git a/specs/numeric/bnf1024.t27 b/specs/numeric/bnf1024.t27 new file mode 100644 index 0000000000..e2efe4f45a --- /dev/null +++ b/specs/numeric/bnf1024.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf1024.t27 -- BNF1024: Binary Network Float, 1024-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF1024 and +// TNF1024 both land on M = 1011. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 11 positions against BNF's 12, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 18 bits | M = 1005 bits ] +// value = (-1)^sign * (1 + M/2^1005) * 2^e, e in [-131071, 131072] + +module triformat_bnf1024 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 18; // spans 177147 exponent values + const MANT_BITS: u32 = 1005; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 131071; + + fn exp_values() -> u32 { return 262144; } + + fn is_finite(biased: u32) -> bool { return biased != 262143; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 1024, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 18, "exponent sized for the range, not by phi"); + assert(exp_values() >= 177147, "covers the required range"); + } +} diff --git a/specs/numeric/bnf128.t27 b/specs/numeric/bnf128.t27 new file mode 100644 index 0000000000..eea2201642 --- /dev/null +++ b/specs/numeric/bnf128.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf128.t27 -- BNF128: Binary Network Float, 128-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF128 and +// TNF128 both land on M = 118. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 8 positions against BNF's 9, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 13 bits | M = 114 bits ] +// value = (-1)^sign * (1 + M/2^114) * 2^e, e in [-4095, 4096] + +module triformat_bnf128 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 13; // spans 6561 exponent values + const MANT_BITS: u32 = 114; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 4095; + + fn exp_values() -> u32 { return 8192; } + + fn is_finite(biased: u32) -> bool { return biased != 8191; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 128, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 13, "exponent sized for the range, not by phi"); + assert(exp_values() >= 6561, "covers the required range"); + } +} diff --git a/specs/numeric/bnf16.t27 b/specs/numeric/bnf16.t27 new file mode 100644 index 0000000000..df19b71689 --- /dev/null +++ b/specs/numeric/bnf16.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf16.t27 -- BNF16: Binary Network Float, 16-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF16 and +// TNF16 both land on M = 10. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 4 positions against BNF's 5, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 7 bits | M = 8 bits ] +// value = (-1)^sign * (1 + M/2^8) * 2^e, e in [-63, 64] + +module triformat_bnf16 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 7; // spans 81 exponent values + const MANT_BITS: u32 = 8; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 63; + + fn exp_values() -> u32 { return 128; } + + fn is_finite(biased: u32) -> bool { return biased != 127; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 16, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 7, "exponent sized for the range, not by phi"); + assert(exp_values() >= 81, "covers the required range"); + } +} diff --git a/specs/numeric/bnf256.t27 b/specs/numeric/bnf256.t27 new file mode 100644 index 0000000000..997783aee4 --- /dev/null +++ b/specs/numeric/bnf256.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf256.t27 -- BNF256: Binary Network Float, 256-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF256 and +// TNF256 both land on M = 245. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 9 positions against BNF's 10, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 15 bits | M = 240 bits ] +// value = (-1)^sign * (1 + M/2^240) * 2^e, e in [-16383, 16384] + +module triformat_bnf256 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 15; // spans 19683 exponent values + const MANT_BITS: u32 = 240; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 16383; + + fn exp_values() -> u32 { return 32768; } + + fn is_finite(biased: u32) -> bool { return biased != 32767; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 256, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 15, "exponent sized for the range, not by phi"); + assert(exp_values() >= 19683, "covers the required range"); + } +} diff --git a/specs/numeric/bnf32.t27 b/specs/numeric/bnf32.t27 new file mode 100644 index 0000000000..467d76e8bd --- /dev/null +++ b/specs/numeric/bnf32.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf32.t27 -- BNF32: Binary Network Float, 32-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF32 and +// TNF32 both land on M = 24. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 6 positions against BNF's 7, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 10 bits | M = 21 bits ] +// value = (-1)^sign * (1 + M/2^21) * 2^e, e in [-511, 512] + +module triformat_bnf32 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 10; // spans 729 exponent values + const MANT_BITS: u32 = 21; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 511; + + fn exp_values() -> u32 { return 1024; } + + fn is_finite(biased: u32) -> bool { return biased != 1023; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 32, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 10, "exponent sized for the range, not by phi"); + assert(exp_values() >= 729, "covers the required range"); + } +} diff --git a/specs/numeric/bnf512.t27 b/specs/numeric/bnf512.t27 new file mode 100644 index 0000000000..343e5b331b --- /dev/null +++ b/specs/numeric/bnf512.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf512.t27 -- BNF512: Binary Network Float, 512-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF512 and +// TNF512 both land on M = 500. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 10 positions against BNF's 11, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 16 bits | M = 495 bits ] +// value = (-1)^sign * (1 + M/2^495) * 2^e, e in [-32767, 32768] + +module triformat_bnf512 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 16; // spans 59049 exponent values + const MANT_BITS: u32 = 495; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 32767; + + fn exp_values() -> u32 { return 65536; } + + fn is_finite(biased: u32) -> bool { return biased != 65535; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 512, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 16, "exponent sized for the range, not by phi"); + assert(exp_values() >= 59049, "covers the required range"); + } +} diff --git a/specs/numeric/bnf64.t27 b/specs/numeric/bnf64.t27 new file mode 100644 index 0000000000..5b8992052d --- /dev/null +++ b/specs/numeric/bnf64.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf64.t27 -- BNF64: Binary Network Float, 64-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF64 and +// TNF64 both land on M = 55. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 7 positions against BNF's 8, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 12 bits | M = 51 bits ] +// value = (-1)^sign * (1 + M/2^51) * 2^e, e in [-2047, 2048] + +module triformat_bnf64 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 12; // spans 2187 exponent values + const MANT_BITS: u32 = 51; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 2047; + + fn exp_values() -> u32 { return 4096; } + + fn is_finite(biased: u32) -> bool { return biased != 4095; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 64, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 12, "exponent sized for the range, not by phi"); + assert(exp_values() >= 2187, "covers the required range"); + } +} diff --git a/specs/numeric/bnf8.t27 b/specs/numeric/bnf8.t27 new file mode 100644 index 0000000000..20136fc4fe --- /dev/null +++ b/specs/numeric/bnf8.t27 @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: Apache-2.0 +// bnf8.t27 -- BNF8: Binary Network Float, 8-bit class. +// +// The CONTROL for TNF. BNF and TNF are derived from the same theorem and differ in +// exactly one thing: the radix in which the exponent field is encoded. BNF uses +// bits, TNF uses balanced-ternary trits. Everything else -- the width rule +// 1 + exponent + M = N, the binary radix of the SCALE, the uniform mantissa -- is +// identical. +// +// That makes the pair a measurement rather than an argument. On a binary fabric the +// two are identical, exactly as the no-free-range theorem requires: BNF8 and +// TNF8 both land on M = 3. On a +// ternary fabric, where one position holds one trit, TNF's exponent costs +// 3 positions against BNF's 4, and the +// position it saves goes to the mantissa -- worth exactly 2x in error by the +// precision law. +// +// NOT the golden-ratio ladder. GF sizes its exponent by e = round((N-1)/phi^2); +// BNF sizes it by the range the workload actually needs and then takes every +// remaining position. Different rule, different family. +// +// layout: [ sign(1) | E = 5 bits | M = 2 bits ] +// value = (-1)^sign * (1 + M/2^2) * 2^e, e in [-15, 16] + +module triformat_bnf8 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_BITS: u32 = 5; // spans 27 exponent values + const MANT_BITS: u32 = 2; // M = N - 1 - E, every position spent + const EXP_BIAS: u32 = 15; + + fn exp_values() -> u32 { return 32; } + + fn is_finite(biased: u32) -> bool { return biased != 31; } + + // ---- Tests / invariants ---- + + test width_rule { + assert(SIGN_BITS + EXP_BITS + MANT_BITS == 8, "1 + E + M = N, every position spent"); + } + + test control_for_tnf { + // The pair differs only in the exponent's radix; this asserts BNF's half. + assert(EXP_BITS == 5, "exponent sized for the range, not by phi"); + assert(exp_values() >= 27, "covers the required range"); + } +} diff --git a/specs/numeric/formats_catalog.t27 b/specs/numeric/formats_catalog.t27 index 028666f959..ef2a83e79f 100644 --- a/specs/numeric/formats_catalog.t27 +++ b/specs/numeric/formats_catalog.t27 @@ -270,8 +270,72 @@ module FormatsCatalog { // CATALOG: id=gf1024 name="GF1024 (rule-derived)" bits=1024 s=1 e=391 m=632 bias=2^390-1 phi_distance=0.0006 storage=u1024_software cluster=GoldenFloat status=Open standard="this work; rule e=round(1023/phi^2)=391; lowest phi-distance in the ladder" use_case="OPEN R&D: limit-of-ladder phi alignment (extrapolation, no RTL)" gf_relation=experimental source="specs/numeric/gf1024.t27" + + + // --------------------------------------------------------------------- + // GF-T -- the phi-lineage ternary ladder. NOT an old name for TNF. + // + // Four families, two axes: phi-derived vs theorem-derived, binary vs ternary. + // GF phi, binary e = round((N-1)/phi^2) + // GF-T phi, ternary mantissa from the phi lineage, exponent in trits + // BNF theorem, binary 1 + E + M = N, exponent sized for range + // TNF theorem, ternary 1 + E_t + M = N, exponent sized for range + // + // GF-T applies GF's rule to POSITIONS, and a trit is a position: the golden + // section divides the payload the way it divides a segment. E_t = round((N-1)/phi^2), + // M takes the rest. Every rung lands exactly and E_t/M converges on 1/phi. + // + // What it buys is range and what it costs is mantissa. At 64 bits GF-T spans + // 1.3e8 times TNF's range for 1.2e5 times the error -- neither dominates, and the + // corollary on the pair (M_eff, binades) forbids ranking them without a workload. + // + // This supersedes ad-hoc parameters the family carried until 2026-08-09, where + // exponents were sized at roughly log2(N) trits with no rule and positions were + // left unspent. + // --------------------------------------------------------------------- + // CATALOG: id=gft4 name="GF-T4" bits=4 s=1 e=1 m=2 bias=1 phi_distance=0.1180 storage=u4 cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.5000 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft4.t27" + // CATALOG: id=gft8 name="GF-T8" bits=8 s=1 e=3 m=4 bias=13 phi_distance=0.1320 storage=u8 cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.7500 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft8.t27" + // CATALOG: id=gft16 name="GF-T16" bits=16 s=1 e=6 m=9 bias=364 phi_distance=0.0486 storage=u16 cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6667 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft16.t27" + // CATALOG: id=gft32 name="GF-T32" bits=32 s=1 e=12 m=19 bias=265720 phi_distance=0.0135 storage=u32 cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6316 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft32.t27" + // CATALOG: id=gft64 name="GF-T64" bits=64 s=1 e=24 m=39 bias=141214768240 phi_distance=0.0026 storage=u64 cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6154 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft64.t27" + // CATALOG: id=gft128 name="GF-T128" bits=128 s=1 e=49 m=78 bias=119649664615308764795041 phi_distance=0.0102 storage=u128 cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6282 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft128.t27" + // CATALOG: id=gft256 name="GF-T256" bits=256 s=1 e=97 m=158 bias=9544028161703913537712243143807801346335324481 phi_distance=0.0041 storage=u256_software cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6139 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft256.t27" + // CATALOG: id=gft512 name="GF-T512" bits=512 s=1 e=195 m=316 bias=546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053 phi_distance=0.0009 storage=u512_software cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6171 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft512.t27" + // CATALOG: id=gft1024 name="GF-T1024" bits=1024 s=1 e=391 m=632 bias=1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173 phi_distance=0.0006 storage=u1024_software cluster=GoldenFloat status=Verified standard="this work; GOLDEN RATIO axis: E_t = round((N-1)/phi^2), a trit is a position; every position spent; E_t/M = 0.6187 against 1/phi = 0.6180" use_case="phi-derived ternary ladder; huge range at the cost of mantissa" gf_relation=self source="specs/numeric/gft1024.t27" + + // --------------------------------------------------------------------- + // BNF -- Binary Network Float. The CONTROL for TNF. + // + // BNF and TNF are derived from the same theorem and differ in exactly one + // thing: the radix the exponent FIELD is encoded in. Everything else is + // identical -- the width rule 1 + E + M = N, the binary radix of the SCALE, + // the uniform mantissa. The pair therefore measures what the ternary encoding + // is worth instead of asserting it. + // + // Measured: on a binary fabric the two are identical at every width, exactly + // as the no-free-range theorem requires. On a ternary fabric TNF's exponent + // costs one position fewer, which goes to the mantissa and is worth exactly 2x + // in error by the precision law. Not more, not less, and the same at every rung. + // + // NOT the golden-ratio family. GF sizes its exponent by e = round((N-1)/phi^2) + // and GF-T inherits that mantissa into trits, leaving positions unspent. BNF + // and TNF size the exponent for the range the workload needs and then spend + // every position that remains. Four formats, two axes: phi vs theorem-derived, + // binary vs ternary. + // --------------------------------------------------------------------- + // CATALOG: id=bnf8 name="BNF8" bits=8 s=1 e=5 m=2 bias=15 phi_distance=1.882 storage=u8 cluster=GoldenFloat status=Open standard="this work; control for TNF8; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf8.t27" + // CATALOG: id=bnf16 name="BNF16" bits=16 s=1 e=7 m=8 bias=63 phi_distance=0.257 storage=u16 cluster=GoldenFloat status=Open standard="this work; control for TNF16; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf16.t27" + // CATALOG: id=bnf32 name="BNF32" bits=32 s=1 e=10 m=21 bias=511 phi_distance=0.142 storage=u32 cluster=GoldenFloat status=Open standard="this work; control for TNF32; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf32.t27" + // CATALOG: id=bnf64 name="BNF64" bits=64 s=1 e=12 m=51 bias=2047 phi_distance=0.383 storage=u64 cluster=GoldenFloat status=Open standard="this work; control for TNF64; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf64.t27" + // CATALOG: id=bnf128 name="BNF128" bits=128 s=1 e=13 m=114 bias=4095 phi_distance=0.504 storage=u128 cluster=GoldenFloat status=Open standard="this work; control for TNF128; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf128.t27" + // CATALOG: id=bnf256 name="BNF256" bits=256 s=1 e=15 m=240 bias=16383 phi_distance=0.556 storage=u256_software cluster=GoldenFloat status=Open standard="this work; control for TNF256; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf256.t27" + // CATALOG: id=bnf512 name="BNF512" bits=512 s=1 e=16 m=495 bias=32767 phi_distance=0.586 storage=u512_software cluster=GoldenFloat status=Open standard="this work; control for TNF512; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf512.t27" + // CATALOG: id=bnf1024 name="BNF1024" bits=1024 s=1 e=18 m=1005 bias=131071 phi_distance=0.600 storage=u1024_software cluster=GoldenFloat status=Open standard="this work; control for TNF1024; width rule 1+E+M=N; exponent sized for range not phi" use_case="control isolating the ternary encoding's contribution" gf_relation=self source="specs/numeric/bnf1024.t27" + // --------------------------------------------------------------------- - // TEF -- Ternary-Exponent Float. The exponent FIELD is balanced ternary; the + // TNF -- Ternary Network Float. Built as a reference for TERNARY NETWORKS, + // where the weight is in {-1,0,+1} and the multiply disappears. The exponent + // FIELD is balanced ternary; the // RADIX is binary. A genuine ternary-radix float (scaling by 3^e, as Ternary27 // does) measures 0.331 positions per number worse at equal width, so the name // deliberately claims the encoding and not the radix. @@ -281,7 +345,7 @@ module FormatsCatalog { // it has already cost this repository a deleted spec and a dropped pack index // entry. Match tef[0-9]+ or gft[0-9]+, never a bare prefix. // - // FORMER NAME: GF-T (GF-T4 .. GF-T1024), renamed 2026-08-09, carried in + // FORMER NAMES: GF-T (2026 and earlier), then TEF for one day on 2026-08-09, renamed 2026-08-09, carried in // former_name= on every row. The ladder has NEVER been published under either // name -- arXiv:2606.05017 is the binary GF family and contains no occurrence // of "GF-T", and arXiv:2606.09686 is this catalog, which had zero GF-T rows @@ -298,18 +362,18 @@ module FormatsCatalog { // bit-equivalent. It rises toward 1/phi = 0.618 as N grows, and that // is structural rather than a defect: GF sizes its exponent by // e = round((N-1)/phi^2), which puts e/m at 1/phi by construction, - // while TEF sizes its exponent for RANGE and takes M = N-1-Et. + // while TNF sizes its exponent for RANGE and takes M = N-1-Et. // The two ladders optimise different axes; the field makes it visible. // --------------------------------------------------------------------- - // CATALOG: id=tef4 name="TEF4" bits=4 s=1 e=2 m=1 bias=4 phi_distance=2.552 storage=u4 cluster=GoldenFloat status=Verified standard="this work; e is 2 balanced-ternary TRITS not bits (3.17 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 12 LUT 161.1 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef4.t27" - // CATALOG: id=tef8 name="TEF8" bits=8 s=1 e=3 m=4 bias=13 phi_distance=0.571 storage=u8 cluster=GoldenFloat status=Verified standard="this work; e is 3 balanced-ternary TRITS not bits (4.75 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 50 LUT 153.2 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef8.t27" - // CATALOG: id=tef16 name="TEF16" former_name="GF-T16" bits=16 s=1 e=4 m=11 bias=40 phi_distance=0.086 storage=u16 cluster=GoldenFloat status=Verified standard="this work; e is 4 balanced-ternary TRITS not bits (6.34 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 212 LUT 131.7 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef16.t27" - // CATALOG: id=tef32 name="TEF32" bits=32 s=1 e=6 m=25 bias=364 phi_distance=0.238 storage=u32 cluster=GoldenFloat status=Verified standard="this work; e is 6 balanced-ternary TRITS not bits (9.51 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 1477 LUT 83.3 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef32.t27" - // CATALOG: id=tef64 name="TEF64" bits=64 s=1 e=7 m=56 bias=1093 phi_distance=0.420 storage=u64 cluster=GoldenFloat status=Verified standard="this work; e is 7 balanced-ternary TRITS not bits (11.09 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 7479 LUT 48.2 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef64.t27" - // CATALOG: id=tef128 name="TEF128" bits=128 s=1 e=8 m=119 bias=3280 phi_distance=0.511 storage=u128 cluster=GoldenFloat status=Open standard="this work; e is 8 balanced-ternary TRITS not bits (12.68 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef128.t27" - // CATALOG: id=tef256 name="TEF256" bits=256 s=1 e=9 m=246 bias=9841 phi_distance=0.560 storage=u256_software cluster=GoldenFloat status=Open standard="this work; e is 9 balanced-ternary TRITS not bits (14.26 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef256.t27" - // CATALOG: id=tef512 name="TEF512" bits=512 s=1 e=10 m=501 bias=29524 phi_distance=0.586 storage=u512_software cluster=GoldenFloat status=Open standard="this work; e is 10 balanced-ternary TRITS not bits (15.85 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef512.t27" - // CATALOG: id=tef1024 name="TEF1024" bits=1024 s=1 e=11 m=1012 bias=88573 phi_distance=0.601 storage=u1024_software cluster=GoldenFloat status=Open standard="this work; e is 11 balanced-ternary TRITS not bits (17.43 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tef1024.t27" + // CATALOG: id=tnf4 name="TNF4" former_name="GF-T4" bits=4 s=1 e=2 m=1 bias=4 phi_distance=2.552 storage=u4 cluster=GoldenFloat status=Verified standard="this work; e is 2 balanced-ternary TRITS not bits (3.17 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 12 LUT 161.1 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf4.t27" + // CATALOG: id=tnf8 name="TNF8" former_name="GF-T8" bits=8 s=1 e=3 m=4 bias=13 phi_distance=0.571 storage=u8 cluster=GoldenFloat status=Verified standard="this work; e is 3 balanced-ternary TRITS not bits (4.75 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 50 LUT 153.2 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf8.t27" + // CATALOG: id=tnf16 name="TNF16" former_name="GF-T16" bits=16 s=1 e=4 m=11 bias=40 phi_distance=0.086 storage=u16 cluster=GoldenFloat status=Verified standard="this work; e is 4 balanced-ternary TRITS not bits (6.34 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 212 LUT 131.7 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf16.t27" + // CATALOG: id=tnf32 name="TNF32" former_name="GF-T32" bits=32 s=1 e=6 m=25 bias=364 phi_distance=0.238 storage=u32 cluster=GoldenFloat status=Verified standard="this work; e is 6 balanced-ternary TRITS not bits (9.51 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 1477 LUT 83.3 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf32.t27" + // CATALOG: id=tnf64 name="TNF64" former_name="GF-T64" bits=64 s=1 e=7 m=56 bias=1093 phi_distance=0.420 storage=u64 cluster=GoldenFloat status=Verified standard="this work; e is 7 balanced-ternary TRITS not bits (11.09 bits equivalent); width rule 1+Et+M=N; post-route XC7A200T 7479 LUT 48.2 MHz, no DSP, 1 cycle" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf64.t27" + // CATALOG: id=tnf128 name="TNF128" former_name="GF-T128" bits=128 s=1 e=8 m=119 bias=3280 phi_distance=0.511 storage=u128 cluster=GoldenFloat status=Open standard="this work; e is 8 balanced-ternary TRITS not bits (12.68 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf128.t27" + // CATALOG: id=tnf256 name="TNF256" former_name="GF-T256" bits=256 s=1 e=9 m=246 bias=9841 phi_distance=0.560 storage=u256_software cluster=GoldenFloat status=Open standard="this work; e is 9 balanced-ternary TRITS not bits (14.26 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf256.t27" + // CATALOG: id=tnf512 name="TNF512" former_name="GF-T512" bits=512 s=1 e=10 m=501 bias=29524 phi_distance=0.586 storage=u512_software cluster=GoldenFloat status=Open standard="this work; e is 10 balanced-ternary TRITS not bits (15.85 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf512.t27" + // CATALOG: id=tnf1024 name="TNF1024" former_name="GF-T1024" bits=1024 s=1 e=11 m=1012 bias=88573 phi_distance=0.601 storage=u1024_software cluster=GoldenFloat status=Open standard="this work; e is 11 balanced-ternary TRITS not bits (17.43 bits equivalent); width rule 1+Et+M=N; derived from the width rule; not synthesised" use_case="fixed-field ternary-exponent ladder; no regime codec" gf_relation=self source="specs/numeric/tnf1024.t27" fn gf1024() -> str { return "gf1024"; } // GF hybrids / experimental compositions (Section 12.5). diff --git a/specs/numeric/gft1024.t27 b/specs/numeric/gft1024.t27 new file mode 100644 index 0000000000..c1abc2797d --- /dev/null +++ b/specs/numeric/gft1024.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft1024.t27 -- GF-T1024: the golden-ratio ternary ladder, 1024-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 391, M = N - 1 - E_t = 632 +// +// Every rung lands exactly: 1 + 391 + 632 = 1024, no position unspent. The ratio +// E_t/M = 0.6187 against 1/phi = 0.6180, a phi-distance of 0.0006 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF1024 on the reference +// oracle: GF-T's exponent spans 1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 391 balanced-ternary trits | M = 632 binary bits ] +// value = (-1)^sign * (1 + M/2^632) * 2^e, e in [-1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173,+1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173] + +module triformat_gft1024 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 391; // round((N-1)/phi^2) + const MANT_BITS: u32 = 632; // the remaining positions, all of them + const EXP_OFFSET: u32 = 1792175763007502050309004510896072657026569872803620275437464390826146561794008386845991427359831686179824019072939996745082807322862992600064651843076138216429413334444960452990989263173; + const OFFSET_MAX: u32 = 3584351526015004100618009021792145314053139745607240550874928781652293123588016773691982854719663372359648038145879993490165614645725985200129303686152276432858826668889920905981978526346; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 1024, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 618, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft128.t27 b/specs/numeric/gft128.t27 new file mode 100644 index 0000000000..44fb5029d0 --- /dev/null +++ b/specs/numeric/gft128.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft128.t27 -- GF-T128: the golden-ratio ternary ladder, 128-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 49, M = N - 1 - E_t = 78 +// +// Every rung lands exactly: 1 + 49 + 78 = 128, no position unspent. The ratio +// E_t/M = 0.6282 against 1/phi = 0.6180, a phi-distance of 0.0102 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF128 on the reference +// oracle: GF-T's exponent spans 119649664615308764795041 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 49 balanced-ternary trits | M = 78 binary bits ] +// value = (-1)^sign * (1 + M/2^78) * 2^e, e in [-119649664615308764795041,+119649664615308764795041] + +module triformat_gft128 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 49; // round((N-1)/phi^2) + const MANT_BITS: u32 = 78; // the remaining positions, all of them + const EXP_OFFSET: u32 = 119649664615308764795041; + const OFFSET_MAX: u32 = 239299329230617529590082; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 128, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 628, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft16.t27 b/specs/numeric/gft16.t27 new file mode 100644 index 0000000000..864cf95d22 --- /dev/null +++ b/specs/numeric/gft16.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft16.t27 -- GF-T16: the golden-ratio ternary ladder, 16-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 6, M = N - 1 - E_t = 9 +// +// Every rung lands exactly: 1 + 6 + 9 = 16, no position unspent. The ratio +// E_t/M = 0.6667 against 1/phi = 0.6180, a phi-distance of 0.0486 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF16 on the reference +// oracle: GF-T's exponent spans 364 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 6 balanced-ternary trits | M = 9 binary bits ] +// value = (-1)^sign * (1 + M/2^9) * 2^e, e in [-364,+364] + +module triformat_gft16 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 6; // round((N-1)/phi^2) + const MANT_BITS: u32 = 9; // the remaining positions, all of them + const EXP_OFFSET: u32 = 364; + const OFFSET_MAX: u32 = 728; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 729; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 16, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 666, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft256.t27 b/specs/numeric/gft256.t27 new file mode 100644 index 0000000000..c31fccae4c --- /dev/null +++ b/specs/numeric/gft256.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft256.t27 -- GF-T256: the golden-ratio ternary ladder, 256-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 97, M = N - 1 - E_t = 158 +// +// Every rung lands exactly: 1 + 97 + 158 = 256, no position unspent. The ratio +// E_t/M = 0.6139 against 1/phi = 0.6180, a phi-distance of 0.0041 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF256 on the reference +// oracle: GF-T's exponent spans 9544028161703913537712243143807801346335324481 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 97 balanced-ternary trits | M = 158 binary bits ] +// value = (-1)^sign * (1 + M/2^158) * 2^e, e in [-9544028161703913537712243143807801346335324481,+9544028161703913537712243143807801346335324481] + +module triformat_gft256 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 97; // round((N-1)/phi^2) + const MANT_BITS: u32 = 158; // the remaining positions, all of them + const EXP_OFFSET: u32 = 9544028161703913537712243143807801346335324481; + const OFFSET_MAX: u32 = 19088056323407827075424486287615602692670648962; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 256, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 613, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft32.t27 b/specs/numeric/gft32.t27 new file mode 100644 index 0000000000..6a6ad8a8d6 --- /dev/null +++ b/specs/numeric/gft32.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft32.t27 -- GF-T32: the golden-ratio ternary ladder, 32-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 12, M = N - 1 - E_t = 19 +// +// Every rung lands exactly: 1 + 12 + 19 = 32, no position unspent. The ratio +// E_t/M = 0.6316 against 1/phi = 0.6180, a phi-distance of 0.0135 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF32 on the reference +// oracle: GF-T's exponent spans 265720 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 12 balanced-ternary trits | M = 19 binary bits ] +// value = (-1)^sign * (1 + M/2^19) * 2^e, e in [-265720,+265720] + +module triformat_gft32 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 12; // round((N-1)/phi^2) + const MANT_BITS: u32 = 19; // the remaining positions, all of them + const EXP_OFFSET: u32 = 265720; + const OFFSET_MAX: u32 = 531440; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 531441; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 32, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 631, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft4.t27 b/specs/numeric/gft4.t27 new file mode 100644 index 0000000000..89c1a1f392 --- /dev/null +++ b/specs/numeric/gft4.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft4.t27 -- GF-T4: the golden-ratio ternary ladder, 4-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 1, M = N - 1 - E_t = 2 +// +// Every rung lands exactly: 1 + 1 + 2 = 4, no position unspent. The ratio +// E_t/M = 0.5000 against 1/phi = 0.6180, a phi-distance of 0.1180 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF4 on the reference +// oracle: GF-T's exponent spans 1 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 1 balanced-ternary trits | M = 2 binary bits ] +// value = (-1)^sign * (1 + M/2^2) * 2^e, e in [-1,+1] + +module triformat_gft4 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 1; // round((N-1)/phi^2) + const MANT_BITS: u32 = 2; // the remaining positions, all of them + const EXP_OFFSET: u32 = 1; + const OFFSET_MAX: u32 = 2; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 3; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 4, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 500, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft512.t27 b/specs/numeric/gft512.t27 new file mode 100644 index 0000000000..dd9c7dcc19 --- /dev/null +++ b/specs/numeric/gft512.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft512.t27 -- GF-T512: the golden-ratio ternary ladder, 512-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 195, M = N - 1 - E_t = 316 +// +// Every rung lands exactly: 1 + 195 + 316 = 512, no position unspent. The ratio +// E_t/M = 0.6171 against 1/phi = 0.6180, a phi-distance of 0.0009 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF512 on the reference +// oracle: GF-T's exponent spans 546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 195 balanced-ternary trits | M = 316 binary bits ] +// value = (-1)^sign * (1 + M/2^316) * 2^e, e in [-546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053,+546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053] + +module triformat_gft512 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 195; // round((N-1)/phi^2) + const MANT_BITS: u32 = 316; // the remaining positions, all of them + const EXP_OFFSET: u32 = 546530841308384299050990374559217339154801342908219127519701567364387841360704080235359463053; + const OFFSET_MAX: u32 = 1093061682616768598101980749118434678309602685816438255039403134728775682721408160470718926106; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 512, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 617, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft64.t27 b/specs/numeric/gft64.t27 new file mode 100644 index 0000000000..4a0486eded --- /dev/null +++ b/specs/numeric/gft64.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft64.t27 -- GF-T64: the golden-ratio ternary ladder, 64-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 24, M = N - 1 - E_t = 39 +// +// Every rung lands exactly: 1 + 24 + 39 = 64, no position unspent. The ratio +// E_t/M = 0.6154 against 1/phi = 0.6180, a phi-distance of 0.0026 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF64 on the reference +// oracle: GF-T's exponent spans 141214768240 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 24 balanced-ternary trits | M = 39 binary bits ] +// value = (-1)^sign * (1 + M/2^39) * 2^e, e in [-141214768240,+141214768240] + +module triformat_gft64 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 24; // round((N-1)/phi^2) + const MANT_BITS: u32 = 39; // the remaining positions, all of them + const EXP_OFFSET: u32 = 141214768240; + const OFFSET_MAX: u32 = 282429536480; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 0; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 64, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 615, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/gft8.t27 b/specs/numeric/gft8.t27 new file mode 100644 index 0000000000..b65b21f489 --- /dev/null +++ b/specs/numeric/gft8.t27 @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: Apache-2.0 +// gft8.t27 -- GF-T8: the golden-ratio ternary ladder, 8-bit class. +// +// TWO AXES, FOUR FAMILIES. GF and GF-T are derived from the golden ratio; BNF and +// TNF are derived from the theorems, as the optimisation result for ternary +// networks. They are not renamings of each other and they answer different +// questions. +// +// GF-T applies GF's rule to POSITIONS, and a trit is a position -- the golden +// section divides the payload the way it divides a segment: +// +// E_t = round((N-1)/phi^2) = 3, M = N - 1 - E_t = 4 +// +// Every rung lands exactly: 1 + 3 + 4 = 8, no position unspent. The ratio +// E_t/M = 0.7500 against 1/phi = 0.6180, a phi-distance of 0.1320 +// which falls toward zero up the ladder, by construction, exactly as in GF. +// +// What this buys and what it costs, measured against TNF8 on the reference +// oracle: GF-T's exponent spans 13 binades either side where TNF sizes its own +// for the range a workload actually visits. GF-T pays for that in mantissa. At 64 +// bits GF-T takes 1.3e8 times the range for 1.2e5 times the error -- neither +// dominates, and the corollary on the pair (M_eff, binades) forbids ranking them +// without naming a workload. +// +// Supersedes the ad-hoc parameters this rung carried before 2026-08-09, where the +// exponent was sized at roughly log2(N) trits with no documented rule and left +// positions unspent. +// +// layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 binary bits ] +// value = (-1)^sign * (1 + M/2^4) * 2^e, e in [-13,+13] + +module triformat_gft8 { + use base::types; + + const SIGN_BITS: u32 = 1; + const EXP_TRITS: u32 = 3; // round((N-1)/phi^2) + const MANT_BITS: u32 = 4; // the remaining positions, all of them + const EXP_OFFSET: u32 = 13; + const OFFSET_MAX: u32 = 26; + + fn is_finite(offset: u32) -> bool { return offset != OFFSET_MAX; } + fn exp_values() -> u32 { return 27; } + + // ---- Tests / invariants ---- + + // The golden section is the rule; this asserts it rather than remembering it. + test golden_section { + assert(SIGN_BITS + EXP_TRITS + MANT_BITS == 8, "1 + E_t + M = N, every position spent"); + assert(EXP_TRITS * 1000 / MANT_BITS == 750, "E_t/M holds the golden section"); + } + + test balanced_offsets { + assert(EXP_OFFSET * 2 == OFFSET_MAX, "balanced: offset_max = 2 * exp_offset"); + } +} diff --git a/specs/numeric/tef1024.t27 b/specs/numeric/tnf1024.t27 similarity index 96% rename from specs/numeric/tef1024.t27 rename to specs/numeric/tnf1024.t27 index 0d2db2fae7..b840445101 100644 --- a/specs/numeric/tef1024.t27 +++ b/specs/numeric/tnf1024.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef1024.t27 -- TEF1024: Ternary-Exponent Float, 1024-bit class. +// tnf1024.t27 -- TNF1024: Ternary Network Float, 1024-bit class. // // Derived from the ladder's width rule 1 + E_t + M = N, counting one position // per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A @@ -14,7 +14,7 @@ // unsigned OFFSET in [0,177146]; balanced exponent e = offset - 88573. // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef1024 { +module triformat_tnf1024 { use base::types; const SIGN_BITS: u32 = 1; diff --git a/specs/numeric/tef128.t27 b/specs/numeric/tnf128.t27 similarity index 96% rename from specs/numeric/tef128.t27 rename to specs/numeric/tnf128.t27 index 96b705dee7..2b09f0d400 100644 --- a/specs/numeric/tef128.t27 +++ b/specs/numeric/tnf128.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef128.t27 -- TEF128: Ternary-Exponent Float, 128-bit class. +// tnf128.t27 -- TNF128: Ternary Network Float, 128-bit class. // // Derived from the ladder's width rule 1 + E_t + M = N, counting one position // per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A @@ -14,7 +14,7 @@ // unsigned OFFSET in [0,6560]; balanced exponent e = offset - 3280. // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef128 { +module triformat_tnf128 { use base::types; const SIGN_BITS: u32 = 1; diff --git a/specs/numeric/tef16.t27 b/specs/numeric/tnf16.t27 similarity index 97% rename from specs/numeric/tef16.t27 rename to specs/numeric/tnf16.t27 index 12ace58ff6..8c07df2460 100644 --- a/specs/numeric/tef16.t27 +++ b/specs/numeric/tnf16.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef16.t27 -- TEF16: Ternary-Exponent Float. +// tnf16.t27 -- TNF16: Ternary Network Float. // // A fixed-field GoldenFloat whose EXPONENT is a balanced-ternary number, built to // beat tekum16 on a ternary fabric: no regime decode (tekum16's main cost), the @@ -14,7 +14,7 @@ // 2026-08-05): beats tekum16 3x at mid range and 5.5x at far range, 0 clipping. // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef16 { +module triformat_tnf16 { use base::types; const SIGN_BITS: u32 = 1; diff --git a/specs/numeric/tef256.t27 b/specs/numeric/tnf256.t27 similarity index 96% rename from specs/numeric/tef256.t27 rename to specs/numeric/tnf256.t27 index c99ba5b6a6..b12919e9db 100644 --- a/specs/numeric/tef256.t27 +++ b/specs/numeric/tnf256.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef256.t27 -- TEF256: Ternary-Exponent Float, 256-bit class. +// tnf256.t27 -- TNF256: Ternary Network Float, 256-bit class. // // Derived from the ladder's width rule 1 + E_t + M = N, counting one position // per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A @@ -14,7 +14,7 @@ // unsigned OFFSET in [0,19682]; balanced exponent e = offset - 9841. // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef256 { +module triformat_tnf256 { use base::types; const SIGN_BITS: u32 = 1; diff --git a/specs/numeric/tef32.t27 b/specs/numeric/tnf32.t27 similarity index 95% rename from specs/numeric/tef32.t27 rename to specs/numeric/tnf32.t27 index c2005c7205..b4fbf79189 100644 --- a/specs/numeric/tef32.t27 +++ b/specs/numeric/tnf32.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef32.t27 -- TEF32: Ternary-Exponent Float, 32-bit class. +// tnf32.t27 -- TNF32: Ternary Network Float, 32-bit class. // Top practical rung of the TF ladder. Balanced-ternary exponent = 6 trits // (3^6 = 729 offsets, exponent +-364, ~219 decades), phi-ish 25-bit mantissa, // NO regime decode. The direct ternary rival to tekum-32 / takum32: fixed fields, @@ -8,7 +8,7 @@ // layout: [ sign(1) | E = 6 balanced-ternary trits | M = 25 bits ] // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef32 { +module triformat_tnf32 { use base::types; const EXP_TRITS: u32 = 6; diff --git a/specs/numeric/tef4.t27 b/specs/numeric/tnf4.t27 similarity index 91% rename from specs/numeric/tef4.t27 rename to specs/numeric/tnf4.t27 index 718a206fbf..e9ecea0cab 100644 --- a/specs/numeric/tef4.t27 +++ b/specs/numeric/tnf4.t27 @@ -1,18 +1,18 @@ // SPDX-License-Identifier: Apache-2.0 -// tef4.t27 -- TEF4: Ternary-Exponent Float, 4-bit class (bottom rung). +// tnf4.t27 -- TNF4: Ternary Network Float, 4-bit class (bottom rung). // Balanced-ternary exponent = 2 trits (3^2 = 9 offsets, exponent +-4, ~2.4 // decades), 1-bit mantissa, NO regime decode. // layout: [ sign(1) | E = 2 balanced-ternary trits | M = 1 bit ] // // Positioning (the 4-bit rung is unique): the format-to-beat here is NOT tekum // but **BitNet-1.58 ternary WEIGHTS** {-1,0,+1} -- a weight quantizer, not a real -// format. TEF4 is a genuine 4-bit REAL number (magnitude + ~2.4-decade range), +// format. TNF4 is a genuine 4-bit REAL number (magnitude + ~2.4-decade range), // so it plays the ACTIVATION/value role next to BitNet's weight role, exactly as // tri_compute_bitnet.t27 attests (ternary weights x GF/TF activations). Against // the binary 4-bit leader MXFP4 it trades block-scale range for a native ternary // exponent and no block-decode. phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef4 { +module triformat_tnf4 { use base::types; const EXP_TRITS: u32 = 2; diff --git a/specs/numeric/tef512.t27 b/specs/numeric/tnf512.t27 similarity index 96% rename from specs/numeric/tef512.t27 rename to specs/numeric/tnf512.t27 index 1123403f1d..7a3dc04360 100644 --- a/specs/numeric/tef512.t27 +++ b/specs/numeric/tnf512.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef512.t27 -- TEF512: Ternary-Exponent Float, 512-bit class. +// tnf512.t27 -- TNF512: Ternary Network Float, 512-bit class. // // Derived from the ladder's width rule 1 + E_t + M = N, counting one position // per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A @@ -14,7 +14,7 @@ // unsigned OFFSET in [0,59048]; balanced exponent e = offset - 29524. // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef512 { +module triformat_tnf512 { use base::types; const SIGN_BITS: u32 = 1; diff --git a/specs/numeric/tef64.t27 b/specs/numeric/tnf64.t27 similarity index 96% rename from specs/numeric/tef64.t27 rename to specs/numeric/tnf64.t27 index 8627fe9d74..7598e2e3e1 100644 --- a/specs/numeric/tef64.t27 +++ b/specs/numeric/tnf64.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef64.t27 -- TEF64: Ternary-Exponent Float, 64-bit class. +// tnf64.t27 -- TNF64: Ternary Network Float, 64-bit class. // // Derived from the ladder's width rule 1 + E_t + M = N, counting one position // per trit -- the rule TF4, TF8 and TF32 already satisfy exactly. A @@ -14,7 +14,7 @@ // unsigned OFFSET in [0,2186]; balanced exponent e = offset - 1093. // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef64 { +module triformat_tnf64 { use base::types; const SIGN_BITS: u32 = 1; diff --git a/specs/numeric/tef8.t27 b/specs/numeric/tnf8.t27 similarity index 94% rename from specs/numeric/tef8.t27 rename to specs/numeric/tnf8.t27 index 5ccac9857b..f341fd268b 100644 --- a/specs/numeric/tef8.t27 +++ b/specs/numeric/tnf8.t27 @@ -1,5 +1,5 @@ // SPDX-License-Identifier: Apache-2.0 -// tef8.t27 -- TEF8: Ternary-Exponent Float, 8-bit class. +// tnf8.t27 -- TNF8: Ternary Network Float, 8-bit class. // Rung of the TF ladder (TF4/8/16/32). Balanced-ternary exponent = 3 trits // (3^3 = 27 offsets, exponent +-13, ~8 decades), phi-ish 4-bit mantissa, NO // regime decode. Beats tekum-8 by the same structural argument as TF16 beats @@ -7,7 +7,7 @@ // layout: [ sign(1) | E = 3 balanced-ternary trits | M = 4 bits ] // phi^2 + 1/phi^2 = 3 | TRINITY -module triformat_tef8 { +module triformat_tnf8 { use base::types; const EXP_TRITS: u32 = 3; diff --git a/tools/check_catalog_integrity.py b/tools/check_catalog_integrity.py index 2055c30eaa..baa9d70679 100644 --- a/tools/check_catalog_integrity.py +++ b/tools/check_catalog_integrity.py @@ -31,10 +31,16 @@ def main(): # 2. The three neighbours that share a prefix must all be present. ids = set(re.findall(r"id=(\S+)", text)) + # Four families on two axes -- phi-derived against theorem-derived, binary + # against ternary -- plus the 2-bit alphabet that shares their prefix. Each has + # been lost at least once to a glob or to being mistaken for a rename of + # another, so each is named here explicitly. for want, spec, why in [ - ("gfternary", "gfternary.t27", "2-bit {-phi, 0, +phi} alphabet"), - ("gf16", "gf16.t27", "binary GoldenFloat ladder"), - ("tef16", "tef16.t27", "ternary-exponent float ladder"), + ("gf16", "gf16.t27", "phi axis, binary"), + ("gft16", "gft16.t27", "phi axis, ternary"), + ("bnf16", "bnf16.t27", "theorem axis, binary -- the control for TNF"), + ("tnf16", "tnf16.t27", "theorem axis, ternary"), + ("gfternary", "gfternary.t27", "2-bit {-phi, 0, +phi} alphabet, not a float"), ]: if want not in ids: problems.append(f"MISSING id={want} from the catalog ({why})") @@ -44,25 +50,36 @@ def main(): problems.append(f"MISSING specs/numeric/{spec} on disk ({why})") # 3. They must be distinct families, not aliases of one another. - tef = {i for i in ids if re.fullmatch(r"tef\d+", i)} - gf = {i for i in ids if re.fullmatch(r"gf\d+", i)} - if not tef or not gf or tef & gf: - problems.append(f"COLLAPSED tef={len(tef)} gf={len(gf)} overlap={sorted(tef & gf)}") + fam = {name: {i for i in ids if re.fullmatch(pat, i)} + for name, pat in [("gf", r"gf\d+"), ("gft", r"gft\d+"), + ("bnf", r"bnf\d+"), ("tnf", r"tnf\d+")]} + for name, members in fam.items(): + if not members: + problems.append(f"COLLAPSED family {name} has no rungs left") + # No family may be a subset of another: that is what "these are the same + # format under two names" looks like from the outside, and it has happened. + for a in fam: + for b in fam: + if a < b and fam[a] & fam[b]: + problems.append(f"OVERLAP {a} and {b} share ids {sorted(fam[a] & fam[b])}") # 4. The former name must stay searchable. Not for citation reasons -- the # ladder has never been published under either name -- but because research # notes, prior branches and the author's own profile still use it, and every # measurement against takum/tekum/posit was recorded under the old label. - if 'former_name="GF-T16"' not in text: - problems.append('LOST former_name="GF-T16" (internal continuity)') + # The phi families must keep their rule visible: it is what distinguishes them + # from the theorem-derived pair, and it was ad hoc once already. + if "round((N-1)/phi^2)" not in text: + problems.append("LOST the golden-section rule from the GF-T block") if problems: for p in problems: print(p) print(f"FAIL: {len(problems)} problem(s)") return 1 + fam_sizes = " + ".join(f"{len(v)} {k.upper()}" for k, v in fam.items()) print(f"OK: {len(rows)} catalog rows, every source= resolves, " - f"{len(gf)} GF + {len(tef)} TEF + gfternary all present and distinct") + f"{fam_sizes} + gfternary, four families present and distinct") return 0