diff --git a/conformance/vectors/INDEX_all_formats.json b/conformance/vectors/INDEX_all_formats.json index c5f283c22..b93f5e9b3 100644 --- a/conformance/vectors/INDEX_all_formats.json +++ b/conformance/vectors/INDEX_all_formats.json @@ -1,667 +1,753 @@ { - "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": 83, - "total_packs": 83, - "bitexact_packs": 75, - "selfconsistent_packs": 0, - "structural_packs": 8, - "packs": [ - { - "id": "binary16", - "file": "binary16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "84fd7629430b06d761ac3b92fc85208c472a4582040b1ac2001cc87a6612f7b4" - }, - { - "id": "binary32", - "file": "binary32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "9dc16a1c3b65b7f7a5d59c546886ed12e99fb37cbfc9f3d5d45813921e6a70ff" - }, - { - "id": "binary64", - "file": "binary64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "1d3e3d6daee576ae3b2b4dca6f26560390535fb7441a54b389f98a4238e58bec" - }, - { - "id": "binary128", - "file": "binary128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "9d08a8a6a10f94e875f73e5f44643f088435a570bfafaef9991464d5377b26e0" - }, - { - "id": "binary256", - "file": "binary256_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "43d39ae4c4808276ba1ed5b2d8c221c17983a53570da2fc161996b0f7ea3aee3" - }, - { - "id": "decimal32", - "file": "decimal32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "e13bc9cd6bc33545ab55f575e23d2343418ded5eddf1395b61f31321dc7d272e" - }, - { - "id": "decimal64", - "file": "decimal64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "fedef68cfe1b910e737574bbe331dc19fbe1724edbd35ec8beac89b1595bea0d" - }, - { - "id": "decimal128", - "file": "decimal128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "84dbc594340717415385b3bd86eb20432f5430aba047557579f2e2a96de0dc2d" - }, - { - "id": "x87_fp80", - "file": "x87_fp80_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "e9be37c939c7108081bd2190e949f4d01be7ad12511d82bb8849f337c94e7e0c" - }, - { - "id": "double_double", - "file": "double_double_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "f8dc9608093afada65df94852a9b78c3a4a5466415389c5ec359afd19d3b208c" - }, - { - "id": "quad_double", - "file": "quad_double_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "62ef8067fd1d70ef0abac77d4b0252a3686b9cd698ee4806e0bc1e01bcfe7cfa" - }, - { - "id": "bfloat16", - "file": "bf16_golden_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "98bbddcbb8a520dc45a6dfed7209c50a0acc0fabc4d3b430359969467eee4e13" - }, - { - "id": "tf32", - "file": "tf32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "b35c334092b49dad9a944d37a91697f08f442b633142e81c69296c12bac0055d" - }, - { - "id": "fp8_e4m3", - "file": "fp8_e4m3fn_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "7193ccd0d330d3e05154432abcec5da4a4c170e11004d4ffa44ff5cbbff9cba9" - }, - { - "id": "fp8_e5m2", - "file": "fp8_e5m2_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "9c31fbd03923bd6555304848a092504dfbc02f72d2be82d2b80f49243e925a18" - }, - { - "id": "fp6_e3m2", - "file": "fp6_e3m2_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "17a80f0a3b5b2495dbcd6de6062d8c1f8ce19b9746d1e370e6d16897ef5f9c02" - }, - { - "id": "fp6_e2m3", - "file": "fp6_e2m3_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "de70d6aacf0ac2d47decae0866d14f126058176428315d4c767e460c0a9ae5e5" - }, - { - "id": "fp4_e2m1", - "file": "fp4_e2m1_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "8ded6625c4644139320dd89b2b7815d6ba27177c35b7d645b2d93b8cfdc63fd9" - }, - { - "id": "mxfp8", - "file": "mxfp8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "16eedca7e82c4e6753f8248dce0000ba9a50ba09bab9be747b0dcac3efc21b6b" - }, - { - "id": "mxfp6", - "file": "mxfp6_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "3db420779597b673a691d409b1fc11aee8168549c55be1c8ebfb70dc8330e0c7" - }, - { - "id": "mxfp4", - "file": "mxfp4_e2m1_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "b5795fed0c0f2b580174b443d2c54519c4953916525237bb7ea7d6831f14fde7" - }, - { - "id": "nf4", - "file": "nf4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "723ddd4237153c7c0cc6a9c3436ba071f8affcef8ad0c384070a3e1a3bf13f45" - }, - { - "id": "afp", - "file": "afp_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "384a16af29fe5305d07a2eb07f9056cf0b6fe0d97b83eb3f04fcba90f2397f32" - }, - { - "id": "posit8", - "file": "posit8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "0c638ef95b6537e4dc0e256dc1ca2d9363152b3d5a800501472230ce98a84b76" - }, - { - "id": "posit16", - "file": "posit16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "7cc2edfeb0f52769b1a536dcbe04945a301cdcc3799a23267380b0c4fb0b82d5" - }, - { - "id": "posit32", - "file": "posit32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "aee6cc72691a0ae211e39bf6315ac68a5fe74e87190e0c27088871c6ccc87f52" - }, - { - "id": "posit64", - "file": "posit64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "66b14056938549c1aaa522097ee8744246581cf6d3bb6002cef3b2f3f6ea0ff6" - }, - { - "id": "takum8", - "file": "takum8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "e81b280fbd1a30381c169760b24b5686db82eff8debcc5412cb43d1a0be9a05f" - }, - { - "id": "takum16", - "file": "takum16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 3, - "source": "generated by gen_all_formats.py", - "sha256": "924a2e5626df001d2780f542f5aff0c0152a8c819f35866dce2e2152409c1a11" - }, - { - "id": "takum32", - "file": "takum32_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "c5b034ff12169e921ce3a9411a0317ccd85003dde6c71c8461ced3fd73b3c80f" - }, - { - "id": "takum64", - "file": "takum64_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "1c4fc6d0579626ed364e9044aa455df4f1a1984b8b14cd370004498d86f73a0c" - }, - { - "id": "lns8", - "file": "lns8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "1cb3ca966b7564b15d6b64b37efb4548fa4b6ff26686576cf5da9ac7657379b8" - }, - { - "id": "lns16", - "file": "lns16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 5, - "source": "generated by gen_all_formats.py", - "sha256": "0b4b9d4ce2162e079239aa05e742c7f699453b96f6a8abd90c17bca95d88eff6" - }, - { - "id": "lns32", - "file": "lns32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 5, - "source": "generated by gen_all_formats.py", - "sha256": "7877795b137b599bafb64e8c4b114e128a2ef5af433db222b2875e0df6919872" - }, - { - "id": "lns64", - "file": "lns64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 5, - "source": "generated by gen_all_formats.py", - "sha256": "9969a97f62be45bc120cc2310b5be5c0e6c83d3151a51d6fbb5173db54581ec0" - }, - { - "id": "gfternary", - "file": "gfternary_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 4, - "source": "generated by gen_all_formats.py", - "sha256": "9f246d24511fbff6fb9e83e60e1bedfce401052537f7c8929fe205d0f6e57b81" - }, - { - "id": "gf4", - "file": "gf4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "25471b7a0e3dc3633118191e722ced2f450a3ed8a6228ad2492f92084f556f96" - }, - { - "id": "gf8", - "file": "gf8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "6dccbc6628cbc051e06a006a0731499970c1d99e65fc0d42d9007d8f0ed1402d" - }, - { - "id": "gf12", - "file": "gf12_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "ea00efde4825931a421ec9feb5910f3ad9ab7ab5d38a77d2c364ea9fa49a7f96" - }, - { - "id": "gf16", - "file": "gf16_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "d1c0eb5bd66247b3c5db9a00a95e29cf4359653aec56f2f9e6827f96898d1509" - }, - { - "id": "gf20", - "file": "gf20_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "76c7814558901d5633cb16ffead7468583de5577c4ccf0378c296c73ae08acc5" - }, - { - "id": "gf24", - "file": "gf24_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "983642c7aea54b7e6c5b6e41edcf20828bfc3a1f2707307eaa713ca5a45e612c" - }, - { - "id": "gf32", - "file": "gf32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "f7222e2442f2c106e7f3590e5dbe8ed177603fc2324560987af138ae9abeceb4" - }, - { - "id": "gf64", - "file": "gf64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "887223d0bc8b00d76b70238ddbc8933e3a773ed6a9fbc10264d9fdbebca76cd3" - }, - { - "id": "gf6", - "file": "gf6_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "9c9fc955db5f6c9b185bdd5d88bd92f3f21a71ad4d784b944330d5cba85fb724" - }, - { - "id": "gf10", - "file": "gf10_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "af62499491faf340d7940b0b10ab0208745e57faa97bbe19588fe1d879db485b" - }, - { - "id": "gf14", - "file": "gf14_conformance_v0.json", - "kind": "bitexact", - "source": "pre-existing pack + recorded independent witness", - "n_vectors": 14, - "sha256": "e2364f36a4cb5812b81d2f8f4253688b4d269201463c8481e18568438114a718" - }, - { - "id": "gf48", - "file": "gf48_conformance_v0.json", - "kind": "bitexact", - "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" - }, - { - "id": "gf96", - "file": "gf96_conformance_v0.json", - "kind": "bitexact", - "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" - }, - { - "id": "gf128", - "file": "gf128_conformance_v0.json", - "kind": "bitexact", - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf128 PR)", - "sha256": "cda05a8e608038f3ebb53757ecbe0f78a650f959cf34a54b0cf26d80730e54d3", - "n_vectors": 15 - }, - { - "id": "gf256", - "file": "gf256_conformance_v0.json", - "kind": "bitexact", - "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", - "n_vectors": 2021 - }, - { - "id": "gf512", - "file": "gf512_conformance_v0.json", - "kind": "bitexact", - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf512 paired PR)", - "sha256": "08d32005ba118c4d0d4a61cb47e074ffd7131a41ca84d4debcac4ebfdfcef9cd", - "n_vectors": 15 - }, - { - "id": "gf1024", - "file": "gf1024_conformance_v0.json", - "kind": "bitexact", - "source": "promoted selfconsistent->strict bitexact (dual exact path + separation-bound; gf1024 paired PR)", - "sha256": "1e1613e3e1d1a11deae5c99408a2581244c2cb98c203d429b24247905d188df4", - "n_vectors": 15 - }, - { - "id": "gf8_bfp", - "file": "gf8_bfp_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "fe600234cab0e589b69d84e673d74729cff153f9e4e63e871e285fa82ad2cc70" - }, - { - "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" - }, - { - "id": "mxgf6", - "file": "mxgf6_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 64, - "source": "generated by gen_all_formats.py", - "sha256": "9d77d8be5522942e9276b723915b3223123b7741a076a1bfd819cc73ab29f1ec" - }, - { - "id": "mxgf4", - "file": "mxgf4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "5e8d03fe80c59b458dc4bbd3fba3213dbc00626d8bc73b2cfcc09836539e89fb" - }, - { - "id": "int4", - "file": "int4_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 16, - "source": "generated by gen_all_formats.py", - "sha256": "ec35d81224f9635c21b53165e123d1b6b0ed13ad3c1d7ec830e018df22c46ad1" - }, - { - "id": "int8", - "file": "int8_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 256, - "source": "generated by gen_all_formats.py", - "sha256": "3e7358f28f5d242e24a46fcf0359e24e21bb4f54834e88b38235fc6332e86978" - }, - { - "id": "int16", - "file": "int16_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "a14f51cd6b29bef2215573bc7f1d299559d5d34af36fd0ffceb513f0659765b9" - }, - { - "id": "int32", - "file": "int32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "e7f8ddbc4f8606a83febb5c8836f38a143c28f650d73330af5650ea698d91570" - }, - { - "id": "int64", - "file": "int64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "15e7ae6bd373de5b4f755c71877d6bb662c241526f3a5f4ead22307764f754f5" - }, - { - "id": "int128", - "file": "int128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 7, - "source": "generated by gen_all_formats.py", - "sha256": "df77519366e4c59888dcfafa66c20db4389e162f7dae96767684f46d8427d9fc" - }, - { - "id": "q_format", - "file": "q_format_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "2bc0c114aecd1d0dbfa7925efe298cea80efd510022ee0734cf9450af8027b63" - }, - { - "id": "bcd", - "file": "bcd_conformance_v0.json", - "kind": "bitexact", - "source": "hand-curated (pre-existing)", - "sha256": "637912a0b8d1a4a1e5a50ddafa2c6dbc8e44c7e96218fb8c70763bc69de505cb" - }, - { - "id": "ibm_hfp32", - "file": "ibm_hfp32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "8e35040e30d3a0091ecca5fdb08d1dd1ce98031e5d655239c7196bc667fc3876" - }, - { - "id": "ibm_hfp64", - "file": "ibm_hfp64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "fbe42a167c13f226fe8eaf876c9e17109fb32dbddd76d3a677cc0b9aef2626a1" - }, - { - "id": "ibm_hfp128", - "file": "ibm_hfp128_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "2f02899d621a8a7aebfdf2a69a2484d7616c61ac7cebdc483f643e8109c4e31f" - }, - { - "id": "ms_mbf32", - "file": "ms_mbf32_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "260382da8c40576d046d6d044753522e1c3730e55a4712f21e91b21ad918c365" - }, - { - "id": "ms_mbf64", - "file": "ms_mbf64_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "8d750f03d47a4113548a5e57be2201d4b7f5689143b3605a9a51a60b49988ec9" - }, - { - "id": "vax_f", - "file": "vax_f_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "a7f45aec8da42931da5ad9f24c3ee369419ec58a783abe657a275210ae9b1e4d" - }, - { - "id": "vax_d", - "file": "vax_d_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "b87494ddee38fe68f77dd8082e8a9811530cc346526b80e59c81b17665677792" - }, - { - "id": "vax_g", - "file": "vax_g_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "9a6372bbf85a50457e0b66db8849845333582e3fef28934047963e89dd95e65a" - }, - { - "id": "vax_h", - "file": "vax_h_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "eaaa44e4ce2e5454da2cc83571bf3261a84a1b6fabb0dc8064c04cd71fa581f0" - }, - { - "id": "cray_float", - "file": "cray_float_conformance_v0.json", - "kind": "bitexact", - "n_vectors": 8, - "source": "generated by gen_all_formats.py", - "sha256": "b1a8f6652112be3f49949bafe9f6cd7f46f0271e8f4e19cadb55c2a0e972f503" - }, - { - "id": "minifloat", - "file": "minifloat_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "d42d1d167c5aa9f504de5ca9ebc04cbd863ff5ebb300fbcb09306413d7b334c3" - }, - { - "id": "unum_i", - "file": "unum_i_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "2b28ce1eca1f39623122fbdd853945d05c73adc47e132c250e6ccb56217d689b" - }, - { - "id": "unum_ii", - "file": "unum_ii_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "a79c4cdca84fc702a4ce25fd36040912f841dc9d75f35476e78dbbdfc6fb12f8" - }, - { - "id": "tapered_fp", - "file": "tapered_fp_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "e20d828fda7d3d6b86d047b390fae2964622b83fb8200220f5a4283bc5ae2b4b" - }, - { - "id": "block_fp", - "file": "block_fp_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "3129fa92145096e55527c2fc22d9e6bed23db1a6d88148e8b711a3b6641a43c1" - }, - { - "id": "shared_exp", - "file": "shared_exp_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "ca139ebd7bc5c139357c533bb0a6509e4edd05044d7869fcea57cf34d052c3c7" - }, - { - "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" - }, - { - "id": "stochastic_rounding", - "file": "stochastic_rounding_conformance_v0.json", - "kind": "structural", - "n_vectors": 0, - "source": "generated by gen_all_formats.py", - "sha256": "fc2a0a6dcce7bbb0eccc1e23ebdacb9abbd81cd54111796be6dc7e6a87a2071a" - } - ] -} + "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": 83, + "total_packs": 83, + "bitexact_packs": 75, + "selfconsistent_packs": 0, + "structural_packs": 8, + "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": "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/gen_all_formats.py b/conformance/vectors/gen_all_formats.py index 6744da92e..299ed5f3e 100644 --- a/conformance/vectors/gen_all_formats.py +++ b/conformance/vectors/gen_all_formats.py @@ -31,7 +31,18 @@ HERE = os.path.dirname(os.path.abspath(__file__)) OUT = HERE # write packs next to the existing ones -CATALOG_LINES = "/tmp/catalog_lines.txt" +# The catalog SSOT: specs/numeric/formats_catalog.t27, whose trailing +# `// CATALOG: id=... ` comments are the canonical machine-readable rows (the same +# lines catalog-count-gate.yml counts to enforce the 83-format invariant). +# +# This used to read /tmp/catalog_lines.txt, which was never in the repository, so +# on a clean checkout the generator raised FileNotFoundError before producing +# anything: the corpus could be read but not regenerated. Reading the committed +# SSOT instead makes the corpus reproducible and removes the second, unversioned +# copy of the catalog that the /tmp file amounted to. +CATALOG_LINES = os.path.join( + os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))), + "specs", "numeric", "formats_catalog.t27") SSOT = "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json" PREPRINT = "https://arxiv.org/abs/2606.05017" @@ -103,6 +114,33 @@ "gf256": "gf256_conformance_v0.json", } +# Why each wide rung was promoted out of the self-consistent tier on 2026-07-05. +# These strings were written by hand into INDEX_all_formats.json at promotion time +# and say considerably more than any string the generator could compose -- which +# decoder, which cross-check, how many codes. Keeping them in the generator means a +# regeneration preserves the reasoning instead of flattening it to a generic line. +PROMOTION_SOURCE = { + "gf48": "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)", + "gf96": "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", + "gf128": "promoted selfconsistent->strict bitexact (dual exact path + " + "separation-bound; gf128 PR)", + "gf256": "promoted selfconsistent->strict bitexact (dual exact path + " + "separation-bound; bias audit resolved decode-bias=2^96-1 closed " + "form; gf256 promote PR)", + "gf512": "promoted selfconsistent->strict bitexact (dual exact path + " + "separation-bound; gf512 paired PR)", + "gf1024": "promoted selfconsistent->strict bitexact (dual exact path + " + "separation-bound; gf1024 paired PR)", +} + + def f64_hex(x): return "0x" + struct.pack(">d", x).hex().upper() @@ -114,6 +152,14 @@ def parse_catalog(path): kv = re.compile(r'(\w+)=("[^"]*"|\S+)') for line in open(path): line = line.strip() + # In the SSOT spec the rows are trailing comments: `// CATALOG: id=...`. + # A bare `id=...` line is still accepted so the parser keeps working on a + # plain catalog dump. + if line.startswith("//"): + _, sep, rest = line.partition("CATALOG:") + if not sep: + continue + line = rest.strip() if not line.startswith("id="): continue d = {} @@ -1148,12 +1194,27 @@ def main(): continue if cid in SELFCONSISTENT: - # externally-generated wide-rung pack kept verbatim; NOT regenerated, - # NOT promoted to bitexact (no independent second witness). + # Externally-generated wide-rung pack kept verbatim, never regenerated. + # + # Its tier is read from the pack rather than asserted here. These rungs + # were self-consistent when this branch was written, then acquired + # independent second witnesses on 2026-07-05 and were promoted in the + # pack files. A hardcoded "bitexact_selfconsistent" meant that re-running + # the generator silently DEMOTED all six back, reverting an honesty-rule + # #10 promotion that the packs themselves record. + # + # The pack is the artefact of record for its own status, so a future + # promotion or demotion now flows into the index by itself. sc_file = SELFCONSISTENT[cid] - index.append({"id": cid, "file": sc_file, "kind": "bitexact_selfconsistent", - "source": "wide-rung GoldenFloat oracle (single decode law, " - "dyadic-exact, no independent second witness)"}) + sc_pack = json.load(open(os.path.join(OUT, sc_file))) + promoted = bool(sc_pack.get("bitexact")) and bool(sc_pack.get("witnesses")) + default_src = ("wide-rung GoldenFloat oracle (single decode law, " + "dyadic-exact), no independent second witness") + index.append({"id": cid, "file": sc_file, + "kind": "bitexact" if promoted else "bitexact_selfconsistent", + "n_vectors": len(sc_pack.get("vectors", [])), + "source": (PROMOTION_SOURCE[cid] if promoted and cid in PROMOTION_SOURCE + else default_src)}) continue # posit/takum cluster @@ -1263,11 +1324,19 @@ def main(): "n_vectors": pack.get("n_vectors", 0), "source": "generated by gen_all_formats.py"}) - # SHA-256 for every pack file in the index + # SHA-256 for every pack file in the index, plus the witness count. + # + # The witness count is in the index because honesty rule #10 -- a pack is not + # promoted to bit-precise without an independent second witness -- is the + # corpus's central claim, and until now a consumer could not see which packs + # carry a witness record without opening all 83 pack files. The data was + # already in the packs; this only makes it reachable from the summary a tool + # actually reads. for entry in index: path = os.path.join(OUT, entry["file"]) - h = hashlib.sha256(open(path, "rb").read()).hexdigest() - entry["sha256"] = h + blob = open(path, "rb").read() + entry["sha256"] = hashlib.sha256(blob).hexdigest() + entry["witnesses"] = len(json.loads(blob).get("witnesses", []) or []) idx = { "schema": "t27-conformance-index/v0.1", @@ -1279,6 +1348,7 @@ def main(): "bitexact_packs": sum(1 for e in index if e["kind"] == "bitexact"), "selfconsistent_packs": sum(1 for e in index if e["kind"] == "bitexact_selfconsistent"), "structural_packs": sum(1 for e in index if e["kind"] == "structural"), + "witnessed_packs": sum(1 for e in index if e.get("witnesses")), "packs": index, } with open(os.path.join(OUT, "INDEX_all_formats.json"), "w") as f: diff --git a/conformance/vectors/verify_regeneration.py b/conformance/vectors/verify_regeneration.py new file mode 100644 index 000000000..b4eb86a8e --- /dev/null +++ b/conformance/vectors/verify_regeneration.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +"""Check that regenerating the corpus reproduces what is committed. + +gen_all_formats.py used to read its catalog from /tmp/catalog_lines.txt, which was +never in the repository: on a clean checkout it raised FileNotFoundError, so the +corpus could be read but not regenerated. It now reads the committed SSOT, +specs/numeric/formats_catalog.t27, whose `// CATALOG:` rows are the same lines +catalog-count-gate.yml counts. + +This script is the falsifiable half of that claim. If the SSOT and the generator +had drifted apart in any field, the regenerated packs would not match the SHA-256 +digests already recorded in INDEX_all_formats.json. + +Run from a clean checkout: + + python3 gen_all_formats.py # regenerate from the SSOT + python3 verify_regeneration.py # digests still match + +Exit 0 if every pack's digest and tier is unchanged. Exit 1 naming what moved. + +What this does NOT establish: that any format is specified correctly -- only that +the pipeline runs from committed inputs and lands where it landed before. +""" +from __future__ import annotations + +import hashlib +import json +import os +import subprocess +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +INDEX = os.path.join(HERE, "INDEX_all_formats.json") + + +def committed_index() -> dict: + """The index as of HEAD, so a regenerated working tree can be compared to it.""" + rel = os.path.relpath(INDEX, subprocess.check_output( + ["git", "rev-parse", "--show-toplevel"], cwd=HERE, text=True).strip()) + blob = subprocess.check_output(["git", "show", f"HEAD:{rel}"], cwd=HERE) + return json.loads(blob) + + +def main() -> int: + live = json.load(open(INDEX)) + try: + base = committed_index() + except subprocess.CalledProcessError: + print("cannot read the committed index from git; run inside a checkout") + return 2 + + base_by_id = {e["id"]: e for e in base["packs"]} + live_by_id = {e["id"]: e for e in live["packs"]} + + moved, missing, retiered = [], [], [] + for cid, be in base_by_id.items(): + le = live_by_id.get(cid) + if le is None: + missing.append(cid) + continue + # digest of the file on disk now, not the recorded one + path = os.path.join(HERE, le["file"]) + if not os.path.exists(path): + missing.append(cid) + continue + disk = hashlib.sha256(open(path, "rb").read()).hexdigest() + if disk != be.get("sha256"): + moved.append((cid, be.get("sha256", "")[:12], disk[:12])) + if le.get("kind") != be.get("kind"): + retiered.append((cid, be.get("kind"), le.get("kind"))) + + added = sorted(set(live_by_id) - set(base_by_id)) + + print(f"packs compared: {len(base_by_id)}") + print(f" digests unchanged : {len(base_by_id) - len(moved) - len(missing)}") + print(f" digests changed : {len(moved)}") + print(f" missing on disk : {len(missing)}") + print(f" tier changed : {len(retiered)}") + print(f" new packs : {len(added)}") + + for cid, was, now in moved: + print(f" CHANGED {cid}: {was}... -> {now}...") + for cid in missing: + print(f" MISSING {cid}") + for cid, was, now in retiered: + print(f" RETIERED {cid}: {was} -> {now}") + for cid in added: + print(f" NEW {cid}") + + ok = not (moved or missing or retiered) + print("\n" + ("OK: regeneration reproduces the committed corpus." + if ok else + "FAIL: regeneration does not reproduce the committed corpus.")) + if ok: + print("The committed SSOT is sufficient to rebuild the corpus from scratch.") + return 0 if ok else 1 + + +if __name__ == "__main__": + raise SystemExit(main())