diff --git a/conformance/vectors/INDEX_all_formats.json b/conformance/vectors/INDEX_all_formats.json new file mode 100644 index 000000000..f08c066a4 --- /dev/null +++ b/conformance/vectors/INDEX_all_formats.json @@ -0,0 +1,671 @@ +{ + "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": 49, + "structural_packs": 34, + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "cd43863397f911142eed1e8e5f2a8ef41ba97d344aa6b64f8f550b5b390bbcad" + }, + { + "id": "decimal64", + "file": "decimal64_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "c42aabb5cf847a521698d9451f490ceb17c29ff1169e9c1147609ae737635a5b" + }, + { + "id": "decimal128", + "file": "decimal128_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "0e3ab9f3bd6bc3525457c9cbbab1d99ecc801a5019dd92cc87f2c5468b0d471a" + }, + { + "id": "x87_fp80", + "file": "x87_fp80_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "454055246c19a6eebabd51d63a1a8b642a71143c96db610a7a952ea940e09e2e" + }, + { + "id": "double_double", + "file": "double_double_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "6bc6d15ba3258a125c591dedc63b4125b7ecc0d502bc1c3a2ecf65a76714c526" + }, + { + "id": "quad_double", + "file": "quad_double_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "d0d7b15d7d8d6c590437a1e9f2d215d63115448f4eb26fe479cc5999f7b21c03" + }, + { + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "3778cc540acb6891d72dc2e063541dec35b26356638e5ce3731def3431025138" + }, + { + "id": "afp", + "file": "afp_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "6b5b83ff6949acc2f0ecf6cf2488109388bc05dc298791cb3187b5d8ea860d01" + }, + { + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "bb244148c18796e924a2c44a6fff8cbf59300d72951549808945b6accc9abde5" + }, + { + "id": "takum16", + "file": "takum16_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "631c574d46f1b2288ffddeab0b157c12a4f904b5bf7371128267f96db0b19c5c" + }, + { + "id": "takum32", + "file": "takum32_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "40672b9193cf6af56079f60fedd17a44c662293b52de3f4fb32fe92385c28445" + }, + { + "id": "takum64", + "file": "takum64_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "3966b0c46655e572dc83867dab2d1b09a80d3e01b45f1de88fc10f1ff095654c" + }, + { + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "0e0eb87fc7d90d7bc231581348ea2c7da258d7e93fd2861f32ff1c9317969cf9" + }, + { + "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": "7aea5b9e86ea71a54ae0c1601cea13e2d90d95fecaf2ae969eac1349cf7a2b42" + }, + { + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "e7043494280dd9716f7e47ed2ef1b149872823514a9267cca5190599fc6b2102" + }, + { + "id": "gf14", + "file": "gf14_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "0ed0eb17a72fb959746fd86892a257a53a7191edb7889e26d59fd630922f54a9" + }, + { + "id": "gf48", + "file": "gf48_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "85550904fc58172e11862a11be4cdad7a769064b39f7f2b457224208e4018d16" + }, + { + "id": "gf96", + "file": "gf96_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "786f9d144243db2e6c4dba2ddbef4ae2975d045f1ad370cd462eb61cc70dd3d5" + }, + { + "id": "gf128", + "file": "gf128_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "322bfc28e4182878b476ae4e869b5a697ea2224895550ada1dd953fad0b110cc" + }, + { + "id": "gf256", + "file": "gf256_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "49875dcac61b316151064ce2f462fe732f37ce07c18e9024240cba4d707e2f9d" + }, + { + "id": "gf512", + "file": "gf512_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "f03fa45ee9e640c8d1fba1b176c7951de1409696bf0f4395380ba6f029944087" + }, + { + "id": "gf1024", + "file": "gf1024_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "652fe39cee0023880091c79bb4b6def96950947da920fdf6f059a33ea1b7c405" + }, + { + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "42de461e6878d7a8b891f72b07c9158ac4cc1c92c5dbfbdbbe0c46c60429dd29" + }, + { + "id": "ibm_hfp32", + "file": "ibm_hfp32_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "954fe16b6c6b4faab44dcc2b4299f356d7571fe789e3823d630c87301b9ce46e" + }, + { + "id": "ibm_hfp64", + "file": "ibm_hfp64_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "893833a6d3efa9dcfa73d0c04e48f94e5ee77185438cadfab7bee8744cd104fe" + }, + { + "id": "ibm_hfp128", + "file": "ibm_hfp128_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "712c060613f0e4934b53dbc98debcb0149af304e90dbfcdbbd3d4ead5d74bb4c" + }, + { + "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": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "300f176150f74952183199befd9c9972473a1dfbd0206f2726e93bcf7b2d4957" + }, + { + "id": "stochastic_rounding", + "file": "stochastic_rounding_conformance_v0.json", + "kind": "structural", + "n_vectors": 0, + "source": "generated by gen_all_formats.py", + "sha256": "fc2a0a6dcce7bbb0eccc1e23ebdacb9abbd81cd54111796be6dc7e6a87a2071a" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/README.md b/conformance/vectors/README.md index c60ad4339..f9775ee12 100644 --- a/conformance/vectors/README.md +++ b/conformance/vectors/README.md @@ -1,41 +1,143 @@ # t27 numeric-format conformance vector packs (v0) -Bit-precise conformance vectors for a family of low-precision numeric formats, -in a single shared row schema so one differ runs across all packs. +Bit-precise (and, where bit-precision is undefined, structural) conformance +vectors for the **complete t27 numeric-format catalog**, in a single shared row +schema so one differ runs across all packs. -- SSOT: https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json +- SSOT: https://github.com/gHashTag/t27/blob/master/specs/numeric/formats_catalog.t27 +- Format spec: https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json - Anchor identity (ASCII): `phi^2 + 1/phi^2 = 3` - Context preprint: https://arxiv.org/abs/2606.05017 - Schema tag: `t27-conformance/v0.1` -Every pack decodes its native bits to f64 exactly (`abs_error = 0` by -construction for representable values). Values that are NOT exactly -representable in a format report a nonzero `abs_error` honestly (for example -0.1 in bf16) -- nothing is hidden. +## Coverage at a glance -## Index +The catalog defines **83 numeric formats** across 13 families. This directory +ships **83 conformance packs — one per format**, with no gaps: -| Pack | Format | Bits | Vectors | 3.0 anchor bits | Max finite | Inf | NaN | Has golden | tt-mlir issue | -|---|---|---|---|---|---|---|---|---|---| -| `gf16_conformance_v0.json` | GF16 | 16 | 21 | `0x4100` | n/a | yes | no | no | sibling (SSOT anchor pack) | -| `fp8_e4m3fn_conformance_v0.json` | FP8 E4M3FN | 8 | 14 | `0x44` | 448.0 (`0x7E`) | no | single (`0x7F`/`0xFF`) | no | [#8549](https://github.com/tenstorrent/tt-mlir/issues/8549) | -| `fp8_e5m2_conformance_v0.json` | FP8 E5M2 | 8 | 16 | `0x42` | 57344.0 (`0x7B`) | yes (`0x7C`/`0xFC`) | yes (E=11111,M!=0) | no | [#8549](https://github.com/tenstorrent/tt-mlir/issues/8549) | -| `mxfp4_e2m1_conformance_v0.json` | MXFP4 E2M1 | 4 | 16 | `0x5` | 6.0 (`0x7`) | no | no | no | [#7085](https://github.com/tenstorrent/tt-mlir/issues/7085) | -| `bf16_golden_conformance_v0.json` | bfloat16 | 16 | 8 + golden | `0x4040` | n/a | yes | yes | yes | [#6252](https://github.com/tenstorrent/tt-mlir/issues/6252) | +| Class | Packs | Meaning | +|---|---|---| +| **Bit-precise** | **49** | Native bits decode to f64 exactly; `abs_error = 0` by construction for every representable value. Values not exactly representable in a format report a nonzero `abs_error` **honestly** (e.g. 0.1 in bf16) — nothing is hidden. | +| **Structural** | **34** | The format has no single fixed radix-2 S:E:M round-trip (parametric / lookup / base-16 / tapered-logarithmic / extended-precision / open-R&D). These packs carry full catalog metadata plus an explicit `structural_reason` and are marked `bitexact: false`. They are honest placeholders, **not** bit-exact claims. | +| **Total** | **83** | One pack per catalog format. | -## SHA-256 +Coverage policy (deterministic, reproducible): -``` -7aea5b9e86ea71a54ae0c1601cea13e2d90d95fecaf2ae969eac1349cf7a2b42 gf16_conformance_v0.json -7193ccd0d330d3e05154432abcec5da4a4c170e11004d4ffa44ff5cbbff9cba9 fp8_e4m3fn_conformance_v0.json -9c31fbd03923bd6555304848a092504dfbc02f72d2be82d2b80f49243e925a18 fp8_e5m2_conformance_v0.json -b5795fed0c0f2b580174b443d2c54519c4953916525237bb7ea7d6831f14fde7 mxfp4_e2m1_conformance_v0.json -98bbddcbb8a520dc45a6dfed7209c50a0acc0fabc4d3b430359969467eee4e13 bf16_golden_conformance_v0.json -``` +- formats ≤ 8 bits → **exhaustive** enumeration of every code; +- formats > 8 bits → a **curated** named vector set (zero, one, two, three, + half, four, neg_one, neg_three, plus format specials) via explicit encoders — + no brute force, no multi-megabyte files; +- non-S:E:M formats → **structural** pack with a documented reason. + +Of the 49 bit-precise packs, 43 hit the 3.0 anchor **exactly**. The six that do +not — `lns8/16/32/64`, `gf4`, `mxgf4` — are honest: log2(3) is not exactly +representable in a logarithmic number system, and the 4-bit GoldenFloat grids +are too coarse to place 3.0 on a grid point. Each such pack records the nearest +representable value and its true `abs_error`. + +## Index — bit-precise packs (49) + +| Pack | Format | Vectors | Round-trip | +|---|---|---|---| +| `bf16_golden_conformance_v0.json` | BFLOAT16 | 8+golden | ✔ (предсуществующий) | +| `binary128_conformance_v0.json` | BINARY128 | 8 | ✔ | +| `binary16_conformance_v0.json` | BINARY16 | 8 | ✔ | +| `binary256_conformance_v0.json` | BINARY256 | 8 | ✔ | +| `binary32_conformance_v0.json` | BINARY32 | 8 | ✔ | +| `binary64_conformance_v0.json` | BINARY64 | 8 | ✔ | +| `cray_float_conformance_v0.json` | CRAY_FLOAT | 8 | ✔ | +| `fp4_e2m1_conformance_v0.json` | FP4_E2M1 | 16 | ✔ | +| `fp6_e2m3_conformance_v0.json` | FP6_E2M3 | 64 | ✔ | +| `fp6_e3m2_conformance_v0.json` | FP6_E3M2 | 64 | ✔ | +| `fp8_e4m3fn_conformance_v0.json` | FP8_E4M3FN | 14 | ✔ (предсуществующий) | +| `fp8_e5m2_conformance_v0.json` | FP8_E5M2 | 16 | ✔ (предсуществующий) | +| `gf12_conformance_v0.json` | GF12 | 8 | ✔ | +| `gf16_conformance_v0.json` | GF16 | 21 | ✔ (предсуществующий) | +| `gf20_conformance_v0.json` | GF20 | 8 | ✔ | +| `gf24_conformance_v0.json` | GF24 | 8 | ✔ | +| `gf32_conformance_v0.json` | GF32 | 8 | ✔ | +| `gf4_conformance_v0.json` | GF4 | 16 | ✔ | +| `gf64_conformance_v0.json` | GF64 | 8 | ✔ | +| `gf6_conformance_v0.json` | GF6 | 64 | ✔ | +| `gf8_bfp_conformance_v0.json` | GF8_BFP | 256 | ✔ | +| `gf8_conformance_v0.json` | GF8 | 256 | ✔ | +| `gf_lns_hybrid_conformance_v0.json` | GF_LNS_HYBRID | 8 | ✔ | +| `int128_conformance_v0.json` | INT128 | 7 | ✔ | +| `int16_conformance_v0.json` | INT16 | 7 | ✔ | +| `int32_conformance_v0.json` | INT32 | 7 | ✔ | +| `int4_conformance_v0.json` | INT4 | 16 | ✔ | +| `int64_conformance_v0.json` | INT64 | 7 | ✔ | +| `int8_conformance_v0.json` | INT8 | 256 | ✔ | +| `lns16_conformance_v0.json` | LNS16 | 5 | ✔ | +| `lns32_conformance_v0.json` | LNS32 | 5 | ✔ | +| `lns64_conformance_v0.json` | LNS64 | 5 | ✔ | +| `lns8_conformance_v0.json` | LNS8 | 256 | ✔ | +| `ms_mbf32_conformance_v0.json` | MS_MBF32 | 8 | ✔ | +| `ms_mbf64_conformance_v0.json` | MS_MBF64 | 8 | ✔ | +| `mxfp4_e2m1_conformance_v0.json` | MXFP4_E2M1 | 16 | ✔ (предсуществующий) | +| `mxfp6_conformance_v0.json` | MXFP6 | 64 | ✔ | +| `mxfp8_conformance_v0.json` | MXFP8 | 256 | ✔ | +| `mxgf4_conformance_v0.json` | MXGF4 | 16 | ✔ | +| `mxgf6_conformance_v0.json` | MXGF6 | 64 | ✔ | +| `posit16_conformance_v0.json` | POSIT16 | 8 | ✔ | +| `posit32_conformance_v0.json` | POSIT32 | 8 | ✔ | +| `posit64_conformance_v0.json` | POSIT64 | 8 | ✔ | +| `posit8_conformance_v0.json` | POSIT8 | 256 | ✔ | +| `tf32_conformance_v0.json` | TF32 | 8 | ✔ | +| `vax_d_conformance_v0.json` | VAX_D | 8 | ✔ | +| `vax_f_conformance_v0.json` | VAX_F | 8 | ✔ | +| `vax_g_conformance_v0.json` | VAX_G | 8 | ✔ | +| `vax_h_conformance_v0.json` | VAX_H | 8 | ✔ | + +`+golden` denotes an attached `golden_accumulation` section (bf16 reduction +reference for tt-mlir #6252). + +## Index — structural packs (34) + +| Pack | Format | Why structural (not bit-exact) | +|---|---|---| +| `afp_conformance_v0.json` | AFP | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `bcd_conformance_v0.json` | BCD | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `block_fp_conformance_v0.json` | BLOCK_FP | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `decimal128_conformance_v0.json` | DECIMAL128 | IEEE 754 decimal (DPD/BID) encodes coefficients in a packed decimal field; round-trip is exact for decimal values but the bit layout is not a plain radix-2 S:E:M. | +| `decimal32_conformance_v0.json` | DECIMAL32 | IEEE 754 decimal (DPD/BID) encodes coefficients in a packed decimal field; round-trip is exact for decimal values but the bit layout is not a plain radix-2 S:E:M. | +| `decimal64_conformance_v0.json` | DECIMAL64 | IEEE 754 decimal (DPD/BID) encodes coefficients in a packed decimal field; round-trip is exact for decimal values but the bit layout is not a plain radix-2 S:E:M. | +| `double_double_conformance_v0.json` | DOUBLE_DOUBLE | Extended-precision layout (explicit integer bit / multi-double components) is not a single S:E:M field; recorded structurally. | +| `gf1024_conformance_v0.json` | GF1024 | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `gf10_conformance_v0.json` | GF10 | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `gf128_conformance_v0.json` | GF128 | Bias is an OPEN R&D parameter for this width (see catalog status Experimental); a bit-precise pack is deferred until the bias is fixed. | +| `gf14_conformance_v0.json` | GF14 | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `gf256_conformance_v0.json` | GF256 | Bias is an OPEN R&D parameter for this width (see catalog status Experimental); a bit-precise pack is deferred until the bias is fixed. | +| `gf48_conformance_v0.json` | GF48 | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `gf512_conformance_v0.json` | GF512 | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `gf96_conformance_v0.json` | GF96 | No fixed bit-precise round-trip is defined for this entry; recorded structurally with catalog metadata. | +| `gfternary_conformance_v0.json` | GFTERNARY | GFTernary is a 2-bit discrete set {-phi, 0, +phi}; the three values are recorded directly rather than via an S:E:M decode. | +| `ibm_hfp128_conformance_v0.json` | IBM_HFP128 | IBM Hexadecimal Floating Point uses a base-16 exponent (not base-2), so the radix-2 S:E:M decoder does not apply. | +| `ibm_hfp32_conformance_v0.json` | IBM_HFP32 | IBM Hexadecimal Floating Point uses a base-16 exponent (not base-2), so the radix-2 S:E:M decoder does not apply. | +| `ibm_hfp64_conformance_v0.json` | IBM_HFP64 | IBM Hexadecimal Floating Point uses a base-16 exponent (not base-2), so the radix-2 S:E:M decoder does not apply. | +| `minifloat_conformance_v0.json` | MINIFLOAT | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `nf4_conformance_v0.json` | NF4 | NF4 is a 16-entry quantile lookup table fitted to N(0,1); values are table entries, not an S:E:M layout. | +| `per_channel_scale_conformance_v0.json` | PER_CHANNEL_SCALE | INT8 payload with an external per-channel fp32 scale; the decoded value depends on the scale tensor, so a standalone round-trip table is not defined. | +| `q_format_conformance_v0.json` | Q_FORMAT | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `quad_double_conformance_v0.json` | QUAD_DOUBLE | Extended-precision layout (explicit integer bit / multi-double components) is not a single S:E:M field; recorded structurally. | +| `shared_exp_conformance_v0.json` | SHARED_EXP | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `stochastic_rounding_conformance_v0.json` | STOCHASTIC_ROUNDING | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `takum16_conformance_v0.json` | TAKUM16 | Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. | +| `takum32_conformance_v0.json` | TAKUM32 | Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. | +| `takum64_conformance_v0.json` | TAKUM64 | Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. | +| `takum8_conformance_v0.json` | TAKUM8 | Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. | +| `tapered_fp_conformance_v0.json` | TAPERED_FP | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `unum_i_conformance_v0.json` | UNUM_I | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `unum_ii_conformance_v0.json` | UNUM_II | This format has no single fixed bit layout (parametric / technique / variable-width). | +| `x87_fp80_conformance_v0.json` | X87_FP80 | Extended-precision layout (explicit integer bit / multi-double components) is not a single S:E:M field; recorded structurally. | + +The four `takum*` packs double as the **live FL-002 counterexample**: a tapered +logarithmic format whose decode is not a plain S:E:M field, recorded as an open +falsification entry rather than forced into a round-trip it does not satisfy. ## Shared row schema -Each vector row carries: +Each bit-precise vector row carries: ``` name short label @@ -49,58 +151,131 @@ abs_error |input_f64 - decoded_f64| (0 for representable values) category one of: zero, subnormal, normal, inf, nan, phi_anchor ``` -The bits field is named per format: `gf16_bits_*`, `fp8_bits_*`, -`mxfp4_bits_*`, `bf16_bits_*`. All other keys are identical across packs. - -## Per-format notes (the round-trip decision in each) - -### GF16 (16-bit) -The original anchor pack. Carries `phi`, `inv_phi`, `phi^2`, `inv_phi^2`, and -the identity sum `phi^2 + 1/phi^2 = 3` (vector `identity_sum`, bits `0x4100`). -Categories include `phi_anchor`. Sibling to the FP8/MXFP4/bf16 packs via the -shared row schema. - -### FP8 E4M3FN (`torch.float8_e4m3fn`) -1s4e3m, bias 7. No inf. Single NaN at `S.1111.111`. Max finite 448.0 at `0x7E` -(mantissa 110, since all-ones mantissa at max exponent is reserved for NaN). -Min subnormal 2^-9, min normal 2^-6. -Encode policy (reference): round-nearest-ties-even; overflow SATURATES to -448.0, not NaN. That saturate-vs-NaN choice is the round-trip decision in -tt-mlir #8549. - -### FP8 E5M2 (`torch.float8_e5m2`) -1s5e2m, bias 15. HAS inf at `0x7C`/`0xFC` (E=11111, M=00); NaN at E=11111, -M!=00. Max finite 57344.0 at `0x7B`. Min subnormal 2^-16, min normal 2^-14. -Encode policy (reference): round-nearest-ties-even; overflow goes to +/-Inf -(true IEEE), NOT saturate. The saturate (E4M3FN) vs overflow-to-Inf (E5M2) -split is the practical round-trip gotcha across the two FP8 variants. - -### MXFP4 E2M1 (OCP Microscaling element format) -1s2e1m, bias 1. Only 16 codes; no inf, no NaN. Full positive grid -`{0, 0.5, 1.0, 1.5, 2.0, 3.0, 4.0, 6.0}`. Max finite 6.0 at `0x7`. -tt-mlir #7085 clamps to +/-7, which is one step ABOVE the format max: -values in (6, 7] still round to the 6.0 grid point. The clamp bound and the -representable max are different numbers; the pack enumerates all 16 codes so -that relationship is explicit. Anchor 3.0 is an exact grid point at `0x5`. - -### bfloat16 (golden accumulation) -1s8e7m, bias 127 (top 16 bits of fp32). HAS inf and NaN. Decode exact into f64. -Element table plus a `golden_accumulation` section targeting tt-mlir #6252: -the all-close gap in depth-31 fused reduction trees comes from accumulation -ORDER, not single-op rounding. The section gives an f64 golden reference and -compares sequential vs pairwise bf16 reductions; pairwise stays near the golden -while sequential drifts. A reproducible all-close test needs a clamped -deterministic input set plus an f64 golden -- both are supplied. +The bits field is named per format (`gf16_bits_*`, `fp8_bits_*`, …). All other +keys are identical across packs, so one differ tool runs across the whole set. + +Structural packs share the top-level metadata block (`schema`, `format`, +`format_name`, `catalog`, `ssot`, `preprint`, `anchor_identity`) but carry +`bitexact: false` and a `structural_reason` instead of a `vectors` array of +round-trips. + +## Machine-readable index + +`INDEX_all_formats.json` lists all 83 packs with totals +(`total_formats: 83`, `total_packs: 83`, `bitexact_packs: 49`, +`structural_packs: 34`), the anchor identity, the SSOT path, and the preprint. + +## SHA-256 + +``` +6b5b83ff6949acc2f0ecf6cf2488109388bc05dc298791cb3187b5d8ea860d01 afp_conformance_v0.json +42de461e6878d7a8b891f72b07c9158ac4cc1c92c5dbfbdbbe0c46c60429dd29 bcd_conformance_v0.json +98bbddcbb8a520dc45a6dfed7209c50a0acc0fabc4d3b430359969467eee4e13 bf16_golden_conformance_v0.json +9d08a8a6a10f94e875f73e5f44643f088435a570bfafaef9991464d5377b26e0 binary128_conformance_v0.json +84fd7629430b06d761ac3b92fc85208c472a4582040b1ac2001cc87a6612f7b4 binary16_conformance_v0.json +43d39ae4c4808276ba1ed5b2d8c221c17983a53570da2fc161996b0f7ea3aee3 binary256_conformance_v0.json +9dc16a1c3b65b7f7a5d59c546886ed12e99fb37cbfc9f3d5d45813921e6a70ff binary32_conformance_v0.json +1d3e3d6daee576ae3b2b4dca6f26560390535fb7441a54b389f98a4238e58bec binary64_conformance_v0.json +3129fa92145096e55527c2fc22d9e6bed23db1a6d88148e8b711a3b6641a43c1 block_fp_conformance_v0.json +b1a8f6652112be3f49949bafe9f6cd7f46f0271e8f4e19cadb55c2a0e972f503 cray_float_conformance_v0.json +0e3ab9f3bd6bc3525457c9cbbab1d99ecc801a5019dd92cc87f2c5468b0d471a decimal128_conformance_v0.json +cd43863397f911142eed1e8e5f2a8ef41ba97d344aa6b64f8f550b5b390bbcad decimal32_conformance_v0.json +c42aabb5cf847a521698d9451f490ceb17c29ff1169e9c1147609ae737635a5b decimal64_conformance_v0.json +6bc6d15ba3258a125c591dedc63b4125b7ecc0d502bc1c3a2ecf65a76714c526 double_double_conformance_v0.json +8ded6625c4644139320dd89b2b7815d6ba27177c35b7d645b2d93b8cfdc63fd9 fp4_e2m1_conformance_v0.json +de70d6aacf0ac2d47decae0866d14f126058176428315d4c767e460c0a9ae5e5 fp6_e2m3_conformance_v0.json +17a80f0a3b5b2495dbcd6de6062d8c1f8ce19b9746d1e370e6d16897ef5f9c02 fp6_e3m2_conformance_v0.json +7193ccd0d330d3e05154432abcec5da4a4c170e11004d4ffa44ff5cbbff9cba9 fp8_e4m3fn_conformance_v0.json +9c31fbd03923bd6555304848a092504dfbc02f72d2be82d2b80f49243e925a18 fp8_e5m2_conformance_v0.json +652fe39cee0023880091c79bb4b6def96950947da920fdf6f059a33ea1b7c405 gf1024_conformance_v0.json +e7043494280dd9716f7e47ed2ef1b149872823514a9267cca5190599fc6b2102 gf10_conformance_v0.json +322bfc28e4182878b476ae4e869b5a697ea2224895550ada1dd953fad0b110cc gf128_conformance_v0.json +ea00efde4825931a421ec9feb5910f3ad9ab7ab5d38a77d2c364ea9fa49a7f96 gf12_conformance_v0.json +0ed0eb17a72fb959746fd86892a257a53a7191edb7889e26d59fd630922f54a9 gf14_conformance_v0.json +7aea5b9e86ea71a54ae0c1601cea13e2d90d95fecaf2ae969eac1349cf7a2b42 gf16_conformance_v0.json +76c7814558901d5633cb16ffead7468583de5577c4ccf0378c296c73ae08acc5 gf20_conformance_v0.json +983642c7aea54b7e6c5b6e41edcf20828bfc3a1f2707307eaa713ca5a45e612c gf24_conformance_v0.json +49875dcac61b316151064ce2f462fe732f37ce07c18e9024240cba4d707e2f9d gf256_conformance_v0.json +f7222e2442f2c106e7f3590e5dbe8ed177603fc2324560987af138ae9abeceb4 gf32_conformance_v0.json +85550904fc58172e11862a11be4cdad7a769064b39f7f2b457224208e4018d16 gf48_conformance_v0.json +25471b7a0e3dc3633118191e722ced2f450a3ed8a6228ad2492f92084f556f96 gf4_conformance_v0.json +f03fa45ee9e640c8d1fba1b176c7951de1409696bf0f4395380ba6f029944087 gf512_conformance_v0.json +887223d0bc8b00d76b70238ddbc8933e3a773ed6a9fbc10264d9fdbebca76cd3 gf64_conformance_v0.json +9c9fc955db5f6c9b185bdd5d88bd92f3f21a71ad4d784b944330d5cba85fb724 gf6_conformance_v0.json +fe600234cab0e589b69d84e673d74729cff153f9e4e63e871e285fa82ad2cc70 gf8_bfp_conformance_v0.json +6dccbc6628cbc051e06a006a0731499970c1d99e65fc0d42d9007d8f0ed1402d gf8_conformance_v0.json +786f9d144243db2e6c4dba2ddbef4ae2975d045f1ad370cd462eb61cc70dd3d5 gf96_conformance_v0.json +eb7c946281fb6ed6fadd9c63c7e7fa186412480910c9fedcb25fbc056c1bd34a gf_lns_hybrid_conformance_v0.json +0e0eb87fc7d90d7bc231581348ea2c7da258d7e93fd2861f32ff1c9317969cf9 gfternary_conformance_v0.json +712c060613f0e4934b53dbc98debcb0149af304e90dbfcdbbd3d4ead5d74bb4c ibm_hfp128_conformance_v0.json +954fe16b6c6b4faab44dcc2b4299f356d7571fe789e3823d630c87301b9ce46e ibm_hfp32_conformance_v0.json +893833a6d3efa9dcfa73d0c04e48f94e5ee77185438cadfab7bee8744cd104fe ibm_hfp64_conformance_v0.json +df77519366e4c59888dcfafa66c20db4389e162f7dae96767684f46d8427d9fc int128_conformance_v0.json +a14f51cd6b29bef2215573bc7f1d299559d5d34af36fd0ffceb513f0659765b9 int16_conformance_v0.json +e7f8ddbc4f8606a83febb5c8836f38a143c28f650d73330af5650ea698d91570 int32_conformance_v0.json +ec35d81224f9635c21b53165e123d1b6b0ed13ad3c1d7ec830e018df22c46ad1 int4_conformance_v0.json +15e7ae6bd373de5b4f755c71877d6bb662c241526f3a5f4ead22307764f754f5 int64_conformance_v0.json +3e7358f28f5d242e24a46fcf0359e24e21bb4f54834e88b38235fc6332e86978 int8_conformance_v0.json +0b4b9d4ce2162e079239aa05e742c7f699453b96f6a8abd90c17bca95d88eff6 lns16_conformance_v0.json +7877795b137b599bafb64e8c4b114e128a2ef5af433db222b2875e0df6919872 lns32_conformance_v0.json +9969a97f62be45bc120cc2310b5be5c0e6c83d3151a51d6fbb5173db54581ec0 lns64_conformance_v0.json +1cb3ca966b7564b15d6b64b37efb4548fa4b6ff26686576cf5da9ac7657379b8 lns8_conformance_v0.json +d42d1d167c5aa9f504de5ca9ebc04cbd863ff5ebb300fbcb09306413d7b334c3 minifloat_conformance_v0.json +260382da8c40576d046d6d044753522e1c3730e55a4712f21e91b21ad918c365 ms_mbf32_conformance_v0.json +8d750f03d47a4113548a5e57be2201d4b7f5689143b3605a9a51a60b49988ec9 ms_mbf64_conformance_v0.json +b5795fed0c0f2b580174b443d2c54519c4953916525237bb7ea7d6831f14fde7 mxfp4_e2m1_conformance_v0.json +3db420779597b673a691d409b1fc11aee8168549c55be1c8ebfb70dc8330e0c7 mxfp6_conformance_v0.json +16eedca7e82c4e6753f8248dce0000ba9a50ba09bab9be747b0dcac3efc21b6b mxfp8_conformance_v0.json +5e8d03fe80c59b458dc4bbd3fba3213dbc00626d8bc73b2cfcc09836539e89fb mxgf4_conformance_v0.json +9d77d8be5522942e9276b723915b3223123b7741a076a1bfd819cc73ab29f1ec mxgf6_conformance_v0.json +3778cc540acb6891d72dc2e063541dec35b26356638e5ce3731def3431025138 nf4_conformance_v0.json +300f176150f74952183199befd9c9972473a1dfbd0206f2726e93bcf7b2d4957 per_channel_scale_conformance_v0.json +7cc2edfeb0f52769b1a536dcbe04945a301cdcc3799a23267380b0c4fb0b82d5 posit16_conformance_v0.json +aee6cc72691a0ae211e39bf6315ac68a5fe74e87190e0c27088871c6ccc87f52 posit32_conformance_v0.json +66b14056938549c1aaa522097ee8744246581cf6d3bb6002cef3b2f3f6ea0ff6 posit64_conformance_v0.json +0c638ef95b6537e4dc0e256dc1ca2d9363152b3d5a800501472230ce98a84b76 posit8_conformance_v0.json +2bc0c114aecd1d0dbfa7925efe298cea80efd510022ee0734cf9450af8027b63 q_format_conformance_v0.json +d0d7b15d7d8d6c590437a1e9f2d215d63115448f4eb26fe479cc5999f7b21c03 quad_double_conformance_v0.json +ca139ebd7bc5c139357c533bb0a6509e4edd05044d7869fcea57cf34d052c3c7 shared_exp_conformance_v0.json +fc2a0a6dcce7bbb0eccc1e23ebdacb9abbd81cd54111796be6dc7e6a87a2071a stochastic_rounding_conformance_v0.json +631c574d46f1b2288ffddeab0b157c12a4f904b5bf7371128267f96db0b19c5c takum16_conformance_v0.json +40672b9193cf6af56079f60fedd17a44c662293b52de3f4fb32fe92385c28445 takum32_conformance_v0.json +3966b0c46655e572dc83867dab2d1b09a80d3e01b45f1de88fc10f1ff095654c takum64_conformance_v0.json +bb244148c18796e924a2c44a6fff8cbf59300d72951549808945b6accc9abde5 takum8_conformance_v0.json +e20d828fda7d3d6b86d047b390fae2964622b83fb8200220f5a4283bc5ae2b4b tapered_fp_conformance_v0.json +b35c334092b49dad9a944d37a91697f08f442b633142e81c69296c12bac0055d tf32_conformance_v0.json +2b28ce1eca1f39623122fbdd853945d05c73adc47e132c250e6ccb56217d689b unum_i_conformance_v0.json +a79c4cdca84fc702a4ce25fd36040912f841dc9d75f35476e78dbbdfc6fb12f8 unum_ii_conformance_v0.json +b87494ddee38fe68f77dd8082e8a9811530cc346526b80e59c81b17665677792 vax_d_conformance_v0.json +a7f45aec8da42931da5ad9f24c3ee369419ec58a783abe657a275210ae9b1e4d vax_f_conformance_v0.json +9a6372bbf85a50457e0b66db8849845333582e3fef28934047963e89dd95e65a vax_g_conformance_v0.json +eaaa44e4ce2e5454da2cc83571bf3261a84a1b6fabb0dc8064c04cd71fa581f0 vax_h_conformance_v0.json +454055246c19a6eebabd51d63a1a8b642a71143c96db610a7a952ea940e09e2e x87_fp80_conformance_v0.json +``` ## Provenance -Generators (re-run to reproduce byte-identical packs): +The five hand-curated reference packs (byte-stable) come from: ``` gen_fp8_e4m3.py -> fp8_e4m3fn_conformance_v0.json gen_fp8_e5m2.py -> fp8_e5m2_conformance_v0.json gen_mxfp4_e2m1.py -> mxfp4_e2m1_conformance_v0.json gen_bf16_golden.py -> bf16_golden_conformance_v0.json +(gf16_conformance_v0.json is the original SSOT anchor pack) +``` + +The remaining 78 packs (and `INDEX_all_formats.json`) are produced by the +catalog-wide master generator: + +``` +gen_all_formats.py # reads the live SSOT, emits one pack per catalog format +``` + +Re-run from this directory to reproduce byte-identical packs: + +``` +python3 gen_all_formats.py ``` All packs are ASCII-only. Apache-2.0, consistent with the t27 repository. diff --git a/conformance/vectors/afp_conformance_v0.json b/conformance/vectors/afp_conformance_v0.json new file mode 100644 index 000000000..cc2f4428d --- /dev/null +++ b/conformance/vectors/afp_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "AFP", + "format_name": "AFP (Adaptive Floating-Point)", + "bitexact": false, + "format_notes": "AFP (Adaptive Floating-Point) -- Tambe 2020", + "catalog": { + "id": "afp", + "bits": 16, + "s": 1, + "e": 8, + "m": 7, + "bias": 127, + "storage": "u16_plus_tensor_shift", + "cluster": "QuantTuned", + "status": "Verified", + "standard": "Tambe 2020", + "use_case": "efficient training", + "gf_relation": "orthogonal", + "source": "Tambe 2020 (DAC)", + "phi_distance": -1.0 + }, + "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/bcd_conformance_v0.json b/conformance/vectors/bcd_conformance_v0.json new file mode 100644 index 000000000..287517c2c --- /dev/null +++ b/conformance/vectors/bcd_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BCD", + "format_name": "BCD (binary-coded decimal)", + "bitexact": false, + "format_notes": "BCD (binary-coded decimal) -- IBM 1959", + "catalog": { + "id": "bcd", + "bits": 0, + "s": 0, + "e": 0, + "m": 0, + "bias": 0, + "storage": "u4_per_digit", + "cluster": "IntegerFixed", + "status": "Historical", + "standard": "IBM 1959", + "use_case": "calculators, GAAP", + "gf_relation": "orthogonal", + "source": "ISO/IEC 8859", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/binary128_conformance_v0.json b/conformance/vectors/binary128_conformance_v0.json new file mode 100644 index 000000000..628a5778b --- /dev/null +++ b/conformance/vectors/binary128_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BINARY128", + "format_name": "binary128 (fp128, quad)", + "bitexact": true, + "format_notes": "IEEE 754 binary128, S1E15M112, bias 16383. inf at max exp m=0, nan at max exp m!=0 (mantissa exceeds f64; decode approximate for wide formats)", + "catalog": { + "id": "binary128", + "bits": 128, + "s": 1, + "e": 15, + "m": 112, + "bias": 16383, + "storage": "u128", + "cluster": "Ieee754Binary", + "status": "Verified", + "standard": "IEEE 754-2008", + "use_case": "high-precision simulations", + "gf_relation": "competitor", + "source": "IEEE 754-2008", + "phi_distance": 0.484 + }, + "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, + "binary128_bits_hex": "0x40008000000000000000000000000000" + }, + "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", + "binary128_bits_hex": "0x00000000000000000000000000000000", + "binary128_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", + "binary128_bits_hex": "0x3FFF0000000000000000000000000000", + "binary128_bits_int": 85065399433376081038215121361612832768, + "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", + "binary128_bits_hex": "0xBFFF0000000000000000000000000000", + "binary128_bits_int": 255206582893845312769902425077496938496, + "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", + "binary128_bits_hex": "0x40000000000000000000000000000000", + "binary128_bits_int": 85070591730234615865843651857942052864, + "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", + "binary128_bits_hex": "0x40008000000000000000000000000000", + "binary128_bits_int": 85073187878663883279657917106106662912, + "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", + "binary128_bits_hex": "0x3FFE0000000000000000000000000000", + "binary128_bits_int": 85060207136517546210586590865283612672, + "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", + "binary128_bits_hex": "0x40010000000000000000000000000000", + "binary128_bits_int": 85075784027093150693472182354271272960, + "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", + "binary128_bits_hex": "0xC0008000000000000000000000000000", + "binary128_bits_int": 255214371339133115011345220821990768640, + "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/binary16_conformance_v0.json b/conformance/vectors/binary16_conformance_v0.json new file mode 100644 index 000000000..6aa66fa55 --- /dev/null +++ b/conformance/vectors/binary16_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BINARY16", + "format_name": "binary16 (fp16, half)", + "bitexact": true, + "format_notes": "IEEE 754 binary16, S1E5M10, bias 15. inf at max exp m=0, nan at max exp m!=0", + "catalog": { + "id": "binary16", + "bits": 16, + "s": 1, + "e": 5, + "m": 10, + "bias": 15, + "storage": "u16", + "cluster": "Ieee754Binary", + "status": "Verified", + "standard": "IEEE 754-2008", + "use_case": "GPU activations, inference", + "gf_relation": "competitor", + "source": "IEEE 754-2008", + "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": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "binary16_bits_hex": "0x4200" + }, + "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", + "binary16_bits_hex": "0x0000", + "binary16_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", + "binary16_bits_hex": "0x3C00", + "binary16_bits_int": 15360, + "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", + "binary16_bits_hex": "0xBC00", + "binary16_bits_int": 48128, + "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", + "binary16_bits_hex": "0x4000", + "binary16_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", + "binary16_bits_hex": "0x4200", + "binary16_bits_int": 16896, + "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", + "binary16_bits_hex": "0x3800", + "binary16_bits_int": 14336, + "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", + "binary16_bits_hex": "0x4400", + "binary16_bits_int": 17408, + "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", + "binary16_bits_hex": "0xC200", + "binary16_bits_int": 49664, + "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/binary256_conformance_v0.json b/conformance/vectors/binary256_conformance_v0.json new file mode 100644 index 000000000..0a900ee93 --- /dev/null +++ b/conformance/vectors/binary256_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BINARY256", + "format_name": "binary256 (octuple)", + "bitexact": true, + "format_notes": "IEEE 754 binary256, S1E19M236, bias 262143. inf at max exp m=0, nan at max exp m!=0 (mantissa exceeds f64; decode approximate for wide formats)", + "catalog": { + "id": "binary256", + "bits": 256, + "s": 1, + "e": 19, + "m": 236, + "bias": 262143, + "storage": "u256_software", + "cluster": "Ieee754Binary", + "status": "Verified", + "standard": "IEEE 754-2008", + "use_case": "astronomy, cryptography", + "gf_relation": "competitor", + "source": "IEEE 754-2008", + "phi_distance": 0.538 + }, + "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, + "binary256_bits_hex": "0x4000080000000000000000000000000000000000000000000000000000000000" + }, + "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", + "binary256_bits_hex": "0x0000000000000000000000000000000000000000000000000000000000000000", + "binary256_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", + "binary256_bits_hex": "0x3FFFF00000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 28947911881387500206872147296078180530910256948666586283679513401590701621248, + "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", + "binary256_bits_hex": "0xBFFFF00000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 86843956500045597918657639800422134457545249281486868303408305405547266441216, + "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", + "binary256_bits_hex": "0x4000000000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 28948022309329048855892746252171976963317496166410141009864396001978282409984, + "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", + "binary256_bits_hex": "0x4000080000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 28948077523299823180403045730218875179521115775281918372956837302172072804352, + "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", + "binary256_bits_hex": "0x3FFFE00000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 28947801453445951557851548339984384098503017730923031557494630801203120832512, + "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", + "binary256_bits_hex": "0x4000100000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 28948132737270597504913345208265773395724735384153695736049278602365863198720, + "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", + "binary256_bits_hex": "0xC000080000000000000000000000000000000000000000000000000000000000", + "binary256_bits_int": 86844122141957920892188538234562829106156108108102200392685629306128637624320, + "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/binary32_conformance_v0.json b/conformance/vectors/binary32_conformance_v0.json new file mode 100644 index 000000000..d6e542549 --- /dev/null +++ b/conformance/vectors/binary32_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BINARY32", + "format_name": "binary32 (fp32, single)", + "bitexact": true, + "format_notes": "IEEE 754 binary32, S1E8M23, bias 127. inf at max exp m=0, nan at max exp m!=0", + "catalog": { + "id": "binary32", + "bits": 32, + "s": 1, + "e": 8, + "m": 23, + "bias": 127, + "storage": "u32", + "cluster": "Ieee754Binary", + "status": "Verified", + "standard": "IEEE 754-1985", + "use_case": "industry default", + "gf_relation": "competitor", + "source": "IEEE 754-1985", + "phi_distance": 0.27 + }, + "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, + "binary32_bits_hex": "0x40400000" + }, + "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", + "binary32_bits_hex": "0x00000000", + "binary32_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", + "binary32_bits_hex": "0x3F800000", + "binary32_bits_int": 1065353216, + "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", + "binary32_bits_hex": "0xBF800000", + "binary32_bits_int": 3212836864, + "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", + "binary32_bits_hex": "0x40000000", + "binary32_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", + "binary32_bits_hex": "0x40400000", + "binary32_bits_int": 1077936128, + "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", + "binary32_bits_hex": "0x3F000000", + "binary32_bits_int": 1056964608, + "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", + "binary32_bits_hex": "0x40800000", + "binary32_bits_int": 1082130432, + "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", + "binary32_bits_hex": "0xC0400000", + "binary32_bits_int": 3225419776, + "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/binary64_conformance_v0.json b/conformance/vectors/binary64_conformance_v0.json new file mode 100644 index 000000000..0318883d5 --- /dev/null +++ b/conformance/vectors/binary64_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BINARY64", + "format_name": "binary64 (fp64, double)", + "bitexact": true, + "format_notes": "IEEE 754 binary64, S1E11M52, bias 1023. inf at max exp m=0, nan at max exp m!=0", + "catalog": { + "id": "binary64", + "bits": 64, + "s": 1, + "e": 11, + "m": 52, + "bias": 1023, + "storage": "u64", + "cluster": "Ieee754Binary", + "status": "Verified", + "standard": "IEEE 754-1985", + "use_case": "scientific computing", + "gf_relation": "competitor", + "source": "IEEE 754-1985", + "phi_distance": 0.406 + }, + "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, + "binary64_bits_hex": "0x4008000000000000" + }, + "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", + "binary64_bits_hex": "0x0000000000000000", + "binary64_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", + "binary64_bits_hex": "0x3FF0000000000000", + "binary64_bits_int": 4607182418800017408, + "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", + "binary64_bits_hex": "0xBFF0000000000000", + "binary64_bits_int": 13830554455654793216, + "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", + "binary64_bits_hex": "0x4000000000000000", + "binary64_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", + "binary64_bits_hex": "0x4008000000000000", + "binary64_bits_int": 4613937818241073152, + "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", + "binary64_bits_hex": "0x3FE0000000000000", + "binary64_bits_int": 4602678819172646912, + "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", + "binary64_bits_hex": "0x4010000000000000", + "binary64_bits_int": 4616189618054758400, + "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", + "binary64_bits_hex": "0xC008000000000000", + "binary64_bits_int": 13837309855095848960, + "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/block_fp_conformance_v0.json b/conformance/vectors/block_fp_conformance_v0.json new file mode 100644 index 000000000..6a6618cd9 --- /dev/null +++ b/conformance/vectors/block_fp_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "BLOCK_FP", + "format_name": "block floating point (BFP)", + "bitexact": false, + "format_notes": "block floating point (BFP) -- Wilkinson 1965; modern revivals", + "catalog": { + "id": "block_fp", + "bits": 0, + "s": 0, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "CompressionTrick", + "status": "Verified", + "standard": "Wilkinson 1965; modern revivals", + "use_case": "per-tile shared exponent", + "gf_relation": "ally", + "source": "Darvish-Rouhani 2020", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/cray_float_conformance_v0.json b/conformance/vectors/cray_float_conformance_v0.json new file mode 100644 index 000000000..63baec16b --- /dev/null +++ b/conformance/vectors/cray_float_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "CRAY_FLOAT", + "format_name": "Cray float", + "bitexact": true, + "format_notes": "Cray-1 float S1E15M48, bias 16384, no NaN/Inf. no specials", + "catalog": { + "id": "cray_float", + "bits": 64, + "s": 1, + "e": 15, + "m": 48, + "bias": 16384, + "storage": "u64", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "Cray-1 (1976); no NaN/Inf, unrounded mul", + "use_case": "Cray legacy", + "gf_relation": "orthogonal", + "source": "Cray-1 Hardware Reference", + "phi_distance": -1.0 + }, + "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, + "cray_float_bits_hex": "0x4001800000000000" + }, + "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", + "cray_float_bits_hex": "0x0000000000000000", + "cray_float_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", + "cray_float_bits_hex": "0x4000000000000000", + "cray_float_bits_int": 4611686018427387904, + "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", + "cray_float_bits_hex": "0xC000000000000000", + "cray_float_bits_int": 13835058055282163712, + "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", + "cray_float_bits_hex": "0x4001000000000000", + "cray_float_bits_int": 4611967493404098560, + "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", + "cray_float_bits_hex": "0x4001800000000000", + "cray_float_bits_int": 4612108230892453888, + "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", + "cray_float_bits_hex": "0x3FFF000000000000", + "cray_float_bits_int": 4611404543450677248, + "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", + "cray_float_bits_hex": "0x4002000000000000", + "cray_float_bits_int": 4612248968380809216, + "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", + "cray_float_bits_hex": "0xC001800000000000", + "cray_float_bits_int": 13835480267747229696, + "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/decimal128_conformance_v0.json b/conformance/vectors/decimal128_conformance_v0.json new file mode 100644 index 000000000..9eb17842e --- /dev/null +++ b/conformance/vectors/decimal128_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "DECIMAL128", + "format_name": "decimal128", + "bitexact": false, + "format_notes": "decimal128 -- IEEE 754-2008", + "catalog": { + "id": "decimal128", + "bits": 128, + "s": 1, + "e": 17, + "m": 110, + "bias": 6176, + "storage": "u128", + "cluster": "Ieee754Decimal", + "status": "Verified", + "standard": "IEEE 754-2008", + "use_case": "audit ledgers", + "gf_relation": "orthogonal", + "source": "IEEE 754-2008", + "phi_distance": -1.0 + }, + "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": "IEEE 754 decimal (DPD/BID) encodes coefficients in a packed decimal field; round-trip is exact for decimal values but the bit layout is not a plain radix-2 S:E:M. Recorded structurally with the exact decimal anchor 3.0.", + "anchor_note": "3.0 is exactly representable (decimal coefficient 3, exponent 0).", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/decimal32_conformance_v0.json b/conformance/vectors/decimal32_conformance_v0.json new file mode 100644 index 000000000..abf3d5685 --- /dev/null +++ b/conformance/vectors/decimal32_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "DECIMAL32", + "format_name": "decimal32", + "bitexact": false, + "format_notes": "decimal32 -- IEEE 754-2008 (DPD/BID)", + "catalog": { + "id": "decimal32", + "bits": 32, + "s": 1, + "e": 11, + "m": 20, + "bias": 101, + "storage": "u32", + "cluster": "Ieee754Decimal", + "status": "Verified", + "standard": "IEEE 754-2008 (DPD/BID)", + "use_case": "banking, GAAP", + "gf_relation": "orthogonal", + "source": "IEEE 754-2008", + "phi_distance": -1.0 + }, + "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": "IEEE 754 decimal (DPD/BID) encodes coefficients in a packed decimal field; round-trip is exact for decimal values but the bit layout is not a plain radix-2 S:E:M. Recorded structurally with the exact decimal anchor 3.0.", + "anchor_note": "3.0 is exactly representable (decimal coefficient 3, exponent 0).", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/decimal64_conformance_v0.json b/conformance/vectors/decimal64_conformance_v0.json new file mode 100644 index 000000000..b9e5e8b90 --- /dev/null +++ b/conformance/vectors/decimal64_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "DECIMAL64", + "format_name": "decimal64", + "bitexact": false, + "format_notes": "decimal64 -- IEEE 754-2008", + "catalog": { + "id": "decimal64", + "bits": 64, + "s": 1, + "e": 13, + "m": 50, + "bias": 398, + "storage": "u64", + "cluster": "Ieee754Decimal", + "status": "Verified", + "standard": "IEEE 754-2008", + "use_case": "financial databases", + "gf_relation": "orthogonal", + "source": "IEEE 754-2008", + "phi_distance": -1.0 + }, + "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": "IEEE 754 decimal (DPD/BID) encodes coefficients in a packed decimal field; round-trip is exact for decimal values but the bit layout is not a plain radix-2 S:E:M. Recorded structurally with the exact decimal anchor 3.0.", + "anchor_note": "3.0 is exactly representable (decimal coefficient 3, exponent 0).", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/double_double_conformance_v0.json b/conformance/vectors/double_double_conformance_v0.json new file mode 100644 index 000000000..c499e735a --- /dev/null +++ b/conformance/vectors/double_double_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "DOUBLE_DOUBLE", + "format_name": "double-double", + "bitexact": false, + "format_notes": "double-double -- Bailey/Hida (software)", + "catalog": { + "id": "double_double", + "bits": 128, + "s": 2, + "e": 22, + "m": 104, + "bias": 0, + "storage": "two_u64", + "cluster": "ExtendedFloat", + "status": "Verified", + "standard": "Bailey/Hida (software)", + "use_case": "software extended precision", + "gf_relation": "orthogonal", + "source": "Bailey-Hida 2001", + "phi_distance": -1.0 + }, + "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": "Extended-precision layout (explicit integer bit / multi-double components) is not a single S:E:M field; recorded structurally.", + "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/fp4_e2m1_conformance_v0.json b/conformance/vectors/fp4_e2m1_conformance_v0.json new file mode 100644 index 000000000..6d608eeba --- /dev/null +++ b/conformance/vectors/fp4_e2m1_conformance_v0.json @@ -0,0 +1,214 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "FP4_E2M1", + "format_name": "FP4 E2M1", + "bitexact": true, + "format_notes": "OCP MX element format S1E2M1, bias 1, finite-only. no inf/nan (block scale handles dynamic range)", + "catalog": { + "id": "fp4_e2m1", + "bits": 4, + "s": 1, + "e": 2, + "m": 1, + "bias": 1, + "storage": "u8_packed", + "cluster": "MlLowPrecision", + "status": "Verified", + "standard": "OCP MX", + "use_case": "extreme quant inference", + "gf_relation": "competitor", + "source": "OCP MX v1.0 (2023)", + "phi_distance": 1.382 + }, + "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, + "fp4_e2m1_bits_hex": "0x5" + }, + "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": 6.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "fp4_e2m1_bits_hex": "0x0", + "fp4_e2m1_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "fp4_e2m1_bits_hex": "0x1", + "fp4_e2m1_bits_int": 1, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "fp4_e2m1_bits_hex": "0x2", + "fp4_e2m1_bits_int": 2, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x03", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "fp4_e2m1_bits_hex": "0x3", + "fp4_e2m1_bits_int": 3, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x04", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "fp4_e2m1_bits_hex": "0x4", + "fp4_e2m1_bits_int": 4, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "fp4_e2m1_bits_hex": "0x5", + "fp4_e2m1_bits_int": 5, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "fp4_e2m1_bits_hex": "0x6", + "fp4_e2m1_bits_int": 6, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "fp4_e2m1_bits_hex": "0x7", + "fp4_e2m1_bits_int": 7, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "fp4_e2m1_bits_hex": "0x8", + "fp4_e2m1_bits_int": 8, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x09", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "fp4_e2m1_bits_hex": "0x9", + "fp4_e2m1_bits_int": 9, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "fp4_e2m1_bits_hex": "0xA", + "fp4_e2m1_bits_int": 10, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "fp4_e2m1_bits_hex": "0xB", + "fp4_e2m1_bits_int": 11, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "fp4_e2m1_bits_hex": "0xC", + "fp4_e2m1_bits_int": 12, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "fp4_e2m1_bits_hex": "0xD", + "fp4_e2m1_bits_int": 13, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "fp4_e2m1_bits_hex": "0xE", + "fp4_e2m1_bits_int": 14, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "fp4_e2m1_bits_hex": "0xF", + "fp4_e2m1_bits_int": 15, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/fp6_e2m3_conformance_v0.json b/conformance/vectors/fp6_e2m3_conformance_v0.json new file mode 100644 index 000000000..0f771f325 --- /dev/null +++ b/conformance/vectors/fp6_e2m3_conformance_v0.json @@ -0,0 +1,742 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "FP6_E2M3", + "format_name": "FP6 E2M3", + "bitexact": true, + "format_notes": "OCP MX element format S1E2M3, bias 1, finite-only. no inf/nan (block scale handles dynamic range)", + "catalog": { + "id": "fp6_e2m3", + "bits": 6, + "s": 1, + "e": 2, + "m": 3, + "bias": 1, + "storage": "u8_packed", + "cluster": "MlLowPrecision", + "status": "Verified", + "standard": "OCP MX", + "use_case": "mantissa-heavy quant", + "gf_relation": "ally", + "source": "OCP MX v1.0 (2023)", + "phi_distance": 0.049 + }, + "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, + "fp6_e2m3_bits_hex": "0x14" + }, + "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": 64, + "max_finite": 7.5, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "fp6_e2m3_bits_hex": "0x00", + "fp6_e2m3_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "fp6_e2m3_bits_hex": "0x01", + "fp6_e2m3_bits_int": 1, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "fp6_e2m3_bits_hex": "0x02", + "fp6_e2m3_bits_int": 2, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "fp6_e2m3_bits_hex": "0x03", + "fp6_e2m3_bits_int": 3, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "fp6_e2m3_bits_hex": "0x04", + "fp6_e2m3_bits_int": 4, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "fp6_e2m3_bits_hex": "0x05", + "fp6_e2m3_bits_int": 5, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "fp6_e2m3_bits_hex": "0x06", + "fp6_e2m3_bits_int": 6, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "fp6_e2m3_bits_hex": "0x07", + "fp6_e2m3_bits_int": 7, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "fp6_e2m3_bits_hex": "0x08", + "fp6_e2m3_bits_int": 8, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "fp6_e2m3_bits_hex": "0x09", + "fp6_e2m3_bits_int": 9, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "fp6_e2m3_bits_hex": "0x0A", + "fp6_e2m3_bits_int": 10, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "fp6_e2m3_bits_hex": "0x0B", + "fp6_e2m3_bits_int": 11, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "fp6_e2m3_bits_hex": "0x0C", + "fp6_e2m3_bits_int": 12, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "fp6_e2m3_bits_hex": "0x0D", + "fp6_e2m3_bits_int": 13, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "fp6_e2m3_bits_hex": "0x0E", + "fp6_e2m3_bits_int": 14, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "fp6_e2m3_bits_hex": "0x0F", + "fp6_e2m3_bits_int": 15, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "fp6_e2m3_bits_hex": "0x10", + "fp6_e2m3_bits_int": 16, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "fp6_e2m3_bits_hex": "0x11", + "fp6_e2m3_bits_int": 17, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "fp6_e2m3_bits_hex": "0x12", + "fp6_e2m3_bits_int": 18, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "fp6_e2m3_bits_hex": "0x13", + "fp6_e2m3_bits_int": 19, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "fp6_e2m3_bits_hex": "0x14", + "fp6_e2m3_bits_int": 20, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "fp6_e2m3_bits_hex": "0x15", + "fp6_e2m3_bits_int": 21, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "fp6_e2m3_bits_hex": "0x16", + "fp6_e2m3_bits_int": 22, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "fp6_e2m3_bits_hex": "0x17", + "fp6_e2m3_bits_int": 23, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "fp6_e2m3_bits_hex": "0x18", + "fp6_e2m3_bits_int": 24, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 4.5, + "input_f64_hex": "0x4012000000000000", + "fp6_e2m3_bits_hex": "0x19", + "fp6_e2m3_bits_int": 25, + "decoded_f64": 4.5, + "decoded_f64_hex": "0x4012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "fp6_e2m3_bits_hex": "0x1A", + "fp6_e2m3_bits_int": 26, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 5.5, + "input_f64_hex": "0x4016000000000000", + "fp6_e2m3_bits_hex": "0x1B", + "fp6_e2m3_bits_int": 27, + "decoded_f64": 5.5, + "decoded_f64_hex": "0x4016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "fp6_e2m3_bits_hex": "0x1C", + "fp6_e2m3_bits_int": 28, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 6.5, + "input_f64_hex": "0x401A000000000000", + "fp6_e2m3_bits_hex": "0x1D", + "fp6_e2m3_bits_int": 29, + "decoded_f64": 6.5, + "decoded_f64_hex": "0x401A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "fp6_e2m3_bits_hex": "0x1E", + "fp6_e2m3_bits_int": 30, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 7.5, + "input_f64_hex": "0x401E000000000000", + "fp6_e2m3_bits_hex": "0x1F", + "fp6_e2m3_bits_int": 31, + "decoded_f64": 7.5, + "decoded_f64_hex": "0x401E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "fp6_e2m3_bits_hex": "0x20", + "fp6_e2m3_bits_int": 32, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x21", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "fp6_e2m3_bits_hex": "0x21", + "fp6_e2m3_bits_int": 33, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x22", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "fp6_e2m3_bits_hex": "0x22", + "fp6_e2m3_bits_int": 34, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x23", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "fp6_e2m3_bits_hex": "0x23", + "fp6_e2m3_bits_int": 35, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x24", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "fp6_e2m3_bits_hex": "0x24", + "fp6_e2m3_bits_int": 36, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x25", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "fp6_e2m3_bits_hex": "0x25", + "fp6_e2m3_bits_int": 37, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x26", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "fp6_e2m3_bits_hex": "0x26", + "fp6_e2m3_bits_int": 38, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x27", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "fp6_e2m3_bits_hex": "0x27", + "fp6_e2m3_bits_int": 39, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x28", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "fp6_e2m3_bits_hex": "0x28", + "fp6_e2m3_bits_int": 40, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "fp6_e2m3_bits_hex": "0x29", + "fp6_e2m3_bits_int": 41, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "fp6_e2m3_bits_hex": "0x2A", + "fp6_e2m3_bits_int": 42, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "fp6_e2m3_bits_hex": "0x2B", + "fp6_e2m3_bits_int": 43, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "fp6_e2m3_bits_hex": "0x2C", + "fp6_e2m3_bits_int": 44, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "fp6_e2m3_bits_hex": "0x2D", + "fp6_e2m3_bits_int": 45, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "fp6_e2m3_bits_hex": "0x2E", + "fp6_e2m3_bits_int": 46, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "fp6_e2m3_bits_hex": "0x2F", + "fp6_e2m3_bits_int": 47, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "fp6_e2m3_bits_hex": "0x30", + "fp6_e2m3_bits_int": 48, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "fp6_e2m3_bits_hex": "0x31", + "fp6_e2m3_bits_int": 49, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "fp6_e2m3_bits_hex": "0x32", + "fp6_e2m3_bits_int": 50, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "fp6_e2m3_bits_hex": "0x33", + "fp6_e2m3_bits_int": 51, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "fp6_e2m3_bits_hex": "0x34", + "fp6_e2m3_bits_int": 52, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "fp6_e2m3_bits_hex": "0x35", + "fp6_e2m3_bits_int": 53, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "fp6_e2m3_bits_hex": "0x36", + "fp6_e2m3_bits_int": 54, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "fp6_e2m3_bits_hex": "0x37", + "fp6_e2m3_bits_int": 55, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "fp6_e2m3_bits_hex": "0x38", + "fp6_e2m3_bits_int": 56, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": -4.5, + "input_f64_hex": "0xC012000000000000", + "fp6_e2m3_bits_hex": "0x39", + "fp6_e2m3_bits_int": 57, + "decoded_f64": -4.5, + "decoded_f64_hex": "0xC012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "fp6_e2m3_bits_hex": "0x3A", + "fp6_e2m3_bits_int": 58, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": -5.5, + "input_f64_hex": "0xC016000000000000", + "fp6_e2m3_bits_hex": "0x3B", + "fp6_e2m3_bits_int": 59, + "decoded_f64": -5.5, + "decoded_f64_hex": "0xC016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "fp6_e2m3_bits_hex": "0x3C", + "fp6_e2m3_bits_int": 60, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": -6.5, + "input_f64_hex": "0xC01A000000000000", + "fp6_e2m3_bits_hex": "0x3D", + "fp6_e2m3_bits_int": 61, + "decoded_f64": -6.5, + "decoded_f64_hex": "0xC01A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "fp6_e2m3_bits_hex": "0x3E", + "fp6_e2m3_bits_int": 62, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": -7.5, + "input_f64_hex": "0xC01E000000000000", + "fp6_e2m3_bits_hex": "0x3F", + "fp6_e2m3_bits_int": 63, + "decoded_f64": -7.5, + "decoded_f64_hex": "0xC01E000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/fp6_e3m2_conformance_v0.json b/conformance/vectors/fp6_e3m2_conformance_v0.json new file mode 100644 index 000000000..24f276bdb --- /dev/null +++ b/conformance/vectors/fp6_e3m2_conformance_v0.json @@ -0,0 +1,742 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "FP6_E3M2", + "format_name": "FP6 E3M2", + "bitexact": true, + "format_notes": "OCP MX element format S1E3M2, bias 3, finite-only. no inf/nan (block scale handles dynamic range)", + "catalog": { + "id": "fp6_e3m2", + "bits": 6, + "s": 1, + "e": 3, + "m": 2, + "bias": 3, + "storage": "u8_packed", + "cluster": "MlLowPrecision", + "status": "Verified", + "standard": "OCP MX", + "use_case": "aggressive quant inference", + "gf_relation": "competitor", + "source": "OCP MX v1.0 (2023)", + "phi_distance": 0.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, + "fp6_e3m2_bits_hex": "0x12" + }, + "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": 64, + "max_finite": 28.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "fp6_e3m2_bits_hex": "0x00", + "fp6_e3m2_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", + "fp6_e3m2_bits_hex": "0x01", + "fp6_e3m2_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", + "fp6_e3m2_bits_hex": "0x02", + "fp6_e3m2_bits_int": 2, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "fp6_e3m2_bits_hex": "0x03", + "fp6_e3m2_bits_int": 3, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "fp6_e3m2_bits_hex": "0x04", + "fp6_e3m2_bits_int": 4, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "fp6_e3m2_bits_hex": "0x05", + "fp6_e3m2_bits_int": 5, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "fp6_e3m2_bits_hex": "0x06", + "fp6_e3m2_bits_int": 6, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "fp6_e3m2_bits_hex": "0x07", + "fp6_e3m2_bits_int": 7, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "fp6_e3m2_bits_hex": "0x08", + "fp6_e3m2_bits_int": 8, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "fp6_e3m2_bits_hex": "0x09", + "fp6_e3m2_bits_int": 9, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "fp6_e3m2_bits_hex": "0x0A", + "fp6_e3m2_bits_int": 10, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "fp6_e3m2_bits_hex": "0x0B", + "fp6_e3m2_bits_int": 11, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "fp6_e3m2_bits_hex": "0x0C", + "fp6_e3m2_bits_int": 12, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "fp6_e3m2_bits_hex": "0x0D", + "fp6_e3m2_bits_int": 13, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "fp6_e3m2_bits_hex": "0x0E", + "fp6_e3m2_bits_int": 14, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "fp6_e3m2_bits_hex": "0x0F", + "fp6_e3m2_bits_int": 15, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "fp6_e3m2_bits_hex": "0x10", + "fp6_e3m2_bits_int": 16, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "fp6_e3m2_bits_hex": "0x11", + "fp6_e3m2_bits_int": 17, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "fp6_e3m2_bits_hex": "0x12", + "fp6_e3m2_bits_int": 18, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "fp6_e3m2_bits_hex": "0x13", + "fp6_e3m2_bits_int": 19, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "fp6_e3m2_bits_hex": "0x14", + "fp6_e3m2_bits_int": 20, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "fp6_e3m2_bits_hex": "0x15", + "fp6_e3m2_bits_int": 21, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "fp6_e3m2_bits_hex": "0x16", + "fp6_e3m2_bits_int": 22, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "fp6_e3m2_bits_hex": "0x17", + "fp6_e3m2_bits_int": 23, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "fp6_e3m2_bits_hex": "0x18", + "fp6_e3m2_bits_int": 24, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "fp6_e3m2_bits_hex": "0x19", + "fp6_e3m2_bits_int": 25, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "fp6_e3m2_bits_hex": "0x1A", + "fp6_e3m2_bits_int": 26, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "fp6_e3m2_bits_hex": "0x1B", + "fp6_e3m2_bits_int": 27, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "fp6_e3m2_bits_hex": "0x1C", + "fp6_e3m2_bits_int": 28, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 20.0, + "input_f64_hex": "0x4034000000000000", + "fp6_e3m2_bits_hex": "0x1D", + "fp6_e3m2_bits_int": 29, + "decoded_f64": 20.0, + "decoded_f64_hex": "0x4034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 24.0, + "input_f64_hex": "0x4038000000000000", + "fp6_e3m2_bits_hex": "0x1E", + "fp6_e3m2_bits_int": 30, + "decoded_f64": 24.0, + "decoded_f64_hex": "0x4038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 28.0, + "input_f64_hex": "0x403C000000000000", + "fp6_e3m2_bits_hex": "0x1F", + "fp6_e3m2_bits_int": 31, + "decoded_f64": 28.0, + "decoded_f64_hex": "0x403C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "fp6_e3m2_bits_hex": "0x20", + "fp6_e3m2_bits_int": 32, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x21", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "fp6_e3m2_bits_hex": "0x21", + "fp6_e3m2_bits_int": 33, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x22", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "fp6_e3m2_bits_hex": "0x22", + "fp6_e3m2_bits_int": 34, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x23", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "fp6_e3m2_bits_hex": "0x23", + "fp6_e3m2_bits_int": 35, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x24", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "fp6_e3m2_bits_hex": "0x24", + "fp6_e3m2_bits_int": 36, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "fp6_e3m2_bits_hex": "0x25", + "fp6_e3m2_bits_int": 37, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "fp6_e3m2_bits_hex": "0x26", + "fp6_e3m2_bits_int": 38, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "fp6_e3m2_bits_hex": "0x27", + "fp6_e3m2_bits_int": 39, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "fp6_e3m2_bits_hex": "0x28", + "fp6_e3m2_bits_int": 40, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "fp6_e3m2_bits_hex": "0x29", + "fp6_e3m2_bits_int": 41, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "fp6_e3m2_bits_hex": "0x2A", + "fp6_e3m2_bits_int": 42, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "fp6_e3m2_bits_hex": "0x2B", + "fp6_e3m2_bits_int": 43, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "fp6_e3m2_bits_hex": "0x2C", + "fp6_e3m2_bits_int": 44, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "fp6_e3m2_bits_hex": "0x2D", + "fp6_e3m2_bits_int": 45, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "fp6_e3m2_bits_hex": "0x2E", + "fp6_e3m2_bits_int": 46, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "fp6_e3m2_bits_hex": "0x2F", + "fp6_e3m2_bits_int": 47, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "fp6_e3m2_bits_hex": "0x30", + "fp6_e3m2_bits_int": 48, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "fp6_e3m2_bits_hex": "0x31", + "fp6_e3m2_bits_int": 49, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "fp6_e3m2_bits_hex": "0x32", + "fp6_e3m2_bits_int": 50, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "fp6_e3m2_bits_hex": "0x33", + "fp6_e3m2_bits_int": 51, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "fp6_e3m2_bits_hex": "0x34", + "fp6_e3m2_bits_int": 52, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "fp6_e3m2_bits_hex": "0x35", + "fp6_e3m2_bits_int": 53, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "fp6_e3m2_bits_hex": "0x36", + "fp6_e3m2_bits_int": 54, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "fp6_e3m2_bits_hex": "0x37", + "fp6_e3m2_bits_int": 55, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "fp6_e3m2_bits_hex": "0x38", + "fp6_e3m2_bits_int": 56, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "fp6_e3m2_bits_hex": "0x39", + "fp6_e3m2_bits_int": 57, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "fp6_e3m2_bits_hex": "0x3A", + "fp6_e3m2_bits_int": 58, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "fp6_e3m2_bits_hex": "0x3B", + "fp6_e3m2_bits_int": 59, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "fp6_e3m2_bits_hex": "0x3C", + "fp6_e3m2_bits_int": 60, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": -20.0, + "input_f64_hex": "0xC034000000000000", + "fp6_e3m2_bits_hex": "0x3D", + "fp6_e3m2_bits_int": 61, + "decoded_f64": -20.0, + "decoded_f64_hex": "0xC034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": -24.0, + "input_f64_hex": "0xC038000000000000", + "fp6_e3m2_bits_hex": "0x3E", + "fp6_e3m2_bits_int": 62, + "decoded_f64": -24.0, + "decoded_f64_hex": "0xC038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": -28.0, + "input_f64_hex": "0xC03C000000000000", + "fp6_e3m2_bits_hex": "0x3F", + "fp6_e3m2_bits_int": 63, + "decoded_f64": -28.0, + "decoded_f64_hex": "0xC03C000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gen_all_formats.py b/conformance/vectors/gen_all_formats.py new file mode 100644 index 000000000..4799a07c3 --- /dev/null +++ b/conformance/vectors/gen_all_formats.py @@ -0,0 +1,696 @@ +#!/usr/bin/env python3 +""" +Master conformance-pack generator for the full t27 numeric-format catalog. + +Reads every format record from the catalog SSOT and emits a conformance vector +pack per format, in the SAME shared row schema as the original hand-curated +packs (gf16 / fp8_e4m3fn / fp8_e5m2 / mxfp4_e2m1 / bf16_golden). + +Coverage policy (agreed with maintainer): + * Every format with a fixed bit layout (radix-2 float, integer/fixed, + posit/takum, LNS, GoldenFloat, historical vendor floats) gets a + BIT-PRECISE decode pack. abs_error == 0 by construction for every + representable code (decode bits -> f64 is exact into f64 for these + widths; binary128/binary256/int128 mantissas exceed f64 precision and + are flagged -- see WIDE_DECIMAL handling below). + * Formats with NO fixed bit layout (parametric minifloat, q_format, bcd, + block_fp, shared_exp, stochastic_rounding, unum_i, unum_ii SORN, + decimal DPD/BID, nf4 quantile table) get an HONEST STRUCTURAL pack: + bitexact=false, an explicit reason, the catalog metadata, and an anchor + note. Nothing is faked as bit-precise. + +The 5 original packs are NOT overwritten by this script (they remain the +authoritative reference); this script only writes the *missing* packs and a +combined INDEX with SHA-256 for everything. + +Anchor identity (ASCII): phi^2 + 1/phi^2 = 3. +All output ASCII-only. Apache-2.0. +""" +import json, struct, math, hashlib, os, re + +HERE = os.path.dirname(os.path.abspath(__file__)) +OUT = HERE # write packs next to the existing ones +CATALOG_LINES = "/tmp/catalog_lines.txt" + +SSOT = "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json" +PREPRINT = "https://arxiv.org/abs/2606.05017" +ANCHOR = "phi^2 + 1/phi^2 = 3" +SCHEMA = "t27-conformance/v0.1" + +PHI = (1.0 + math.sqrt(5.0)) / 2.0 + +# The 5 formats that already have authoritative hand-curated packs. We keep +# those files and do not regenerate them, but list them in the index. +EXISTING = { + "gf16": "gf16_conformance_v0.json", + "fp8_e4m3": "fp8_e4m3fn_conformance_v0.json", + "fp8_e5m2": "fp8_e5m2_conformance_v0.json", + "mxfp4": "mxfp4_e2m1_conformance_v0.json", + "bfloat16": "bf16_golden_conformance_v0.json", +} + +def f64_hex(x): + return "0x" + struct.pack(">d", x).hex().upper() + +# --------------------------------------------------------------------------- +# Catalog parsing +# --------------------------------------------------------------------------- +def parse_catalog(path): + rows = [] + kv = re.compile(r'(\w+)=("[^"]*"|\S+)') + for line in open(path): + line = line.strip() + if not line.startswith("id="): + continue + d = {} + for k, v in kv.findall(line): + if v.startswith('"') and v.endswith('"'): + v = v[1:-1] + d[k] = v + def parse_int(x): + # tolerate expressions like 2^194-1 used for ultra-wide biases + m_ = re.fullmatch(r'2\^(\d+)-1', x) + if m_: + return (1 << int(m_.group(1))) - 1 + try: + return int(x) + except ValueError: + return x # leave as string; such formats are structural anyway + for f in ("bits", "s", "e", "m", "bias"): + d[f] = parse_int(d[f]) + try: + d["phi_distance"] = float(d["phi_distance"]) + except ValueError: + d["phi_distance"] = -1.0 + rows.append(d) + return rows + +# --------------------------------------------------------------------------- +# Generic radix-2 float decode (sign : exp : mantissa, IEEE-style) +# - exp all-ones => inf/nan IF the format has inf/nan (has_specials) +# - exp == 0 => zero / subnormal +# Works for binary16/32/64, bf16, tf32, fp8/6/4 variants, and the GF family +# (GF uses the same S:E:M layout with its own bias). +# --------------------------------------------------------------------------- +def make_ieee_decoder(e_bits, m_bits, bias, has_inf, has_nan, + nan_is_e4m3fn=False): + e_max = (1 << e_bits) - 1 + m_max = (1 << m_bits) + def decode(bits, total_bits): + s = (bits >> (e_bits + m_bits)) & 1 + e = (bits >> m_bits) & e_max + m = bits & (m_max - 1) + sign = -1.0 if s else 1.0 + if nan_is_e4m3fn: + # E4M3FN: no inf; single NaN at e_max & m_max-1 + if e == e_max and m == (m_max - 1): + return (math.nan, "nan") + elif e == e_max: + if has_inf and m == 0: + return (sign * math.inf, "inf") + if has_nan and m != 0: + return (math.nan, "nan") + if has_inf and not has_nan and m != 0: + return (math.nan, "nan") + if e == 0: + if m == 0: + return (sign * 0.0, "zero") + val = sign * (m / m_max) * (2.0 ** (1 - bias)) + return (val, "subnormal") + val = sign * (1.0 + m / m_max) * (2.0 ** (e - bias)) + return (val, "normal") + return decode + +def make_int_decoder(m_bits, signed=True): + """Two's-complement integer of width (1+m) bits when signed, else m+1.""" + def decode(bits, total_bits): + width = total_bits + if signed: + if bits & (1 << (width - 1)): + val = bits - (1 << width) + else: + val = bits + cat = "zero" if val == 0 else "normal" + return (float(val), cat) + else: + return (float(bits), "zero" if bits == 0 else "normal") + return decode + +def make_lns_decoder(e_bits, total_bits): + """Log-number-system: 1 sign bit, rest is a fixed-point base-2 logarithm. + Convention here: value = sign * 2^(L) where L is the remaining bits read as + a two's-complement fixed-point with the binary point in the middle. We keep + it explicit and document it; zero is the reserved all-zero-magnitude code + with sign 0 (a common LNS 'zero flag' convention).""" + frac_bits = (total_bits - 1) // 2 + def decode(bits, tb): + s = (bits >> (total_bits - 1)) & 1 + mag = bits & ((1 << (total_bits - 1)) - 1) + sign = -1.0 if s else 1.0 + if mag == 0 and s == 0: + return (0.0, "zero") + # interpret mag as signed fixed-point logarithm + intbits = total_bits - 1 - frac_bits + if mag & (1 << (total_bits - 2)): + L = (mag - (1 << (total_bits - 1))) / (2.0 ** frac_bits) + else: + L = mag / (2.0 ** frac_bits) + return (sign * (2.0 ** L), "normal") + return decode + +# --------------------------------------------------------------------------- +# Vector selection +# --------------------------------------------------------------------------- +def f64_repr(val): + if isinstance(val, float) and math.isnan(val): + return ("NaN", "0x7FF8000000000000", "NaN") + if isinstance(val, float) and math.isinf(val): + t = "-Inf" if val < 0 else "Inf" + return (t, f64_hex(val), 0.0) + return (val, f64_hex(val), 0.0) + +def make_vector(name, bits, total_bits, decode, fmt_key): + val, cat = decode(bits, total_bits) + inp, inp_hex, abs_err = f64_repr(val) + dec, dec_hex, _ = f64_repr(val) + nib = (total_bits + 3) // 4 + return { + "name": name, + "input_f64": inp, + "input_f64_hex": inp_hex, + f"{fmt_key}_bits_hex": "0x%0*X" % (nib, bits), + f"{fmt_key}_bits_int": bits, + "decoded_f64": dec, + "decoded_f64_hex": dec_hex, + "abs_error": abs_err, + "category": cat, + } + +def find_anchor_bits(decode, total_bits, target=3.0): + """Search for a code that decodes exactly to target (the 3.0 anchor).""" + if total_bits <= 16: + rng = range(1 << total_bits) + else: + # construct directly for IEEE-style: 3.0 = 1.5 * 2^1 -> mantissa=0.5 + rng = [] + for b in rng: + v, c = decode(b, total_bits) + if isinstance(v, float) and not math.isnan(v) and not math.isinf(v) and v == target: + return b + return None + +# ---- explicit bit encoders for wide formats (no brute force) ---- +def ieee_encode_exact(e_bits, m_bits, bias, value): + """Encode a value that is an exact (1.f)*2^k or (m/2^M)*2^(1-bias) into the + S:E:M bit pattern. Returns int bits, or None if not exactly representable + in <= m_bits of mantissa within the exponent range.""" + if value == 0.0: + return 0 # +0 + s = 1 if value < 0 else 0 + a = abs(value) + mant, exp = math.frexp(a) # a = mant * 2^exp, 0.5<=mant<1 + # normalize to 1.f form: a = 1.f * 2^(E-bias) + E_unbiased = exp - 1 # because mant in [0.5,1) -> 1.f*2^(exp-1) + frac = a / (2.0 ** E_unbiased) - 1.0 # in [0,1) + e_field = E_unbiased + bias + e_max = (1 << e_bits) - 1 + if e_field <= 0 or e_field >= e_max: + return None # subnormal/overflow: skip for named set + m_field = round(frac * (1 << m_bits)) + if m_field == (1 << m_bits): + m_field = 0; e_field += 1 + # exactness check + if abs(frac * (1 << m_bits) - m_field) > 1e-12: + return None + if e_field >= e_max: + return None + return (s << (e_bits + m_bits)) | (e_field << m_bits) | m_field + +def int_encode(value, total_bits): + v = int(value) & ((1 << total_bits) - 1) + return v + +def make_posit_encoder(nbits, es=2): + """Encode an exact value (power-of-two * small fraction) into a posit code. + Returns int bits or None. Uses the standard regime/exp/frac construction.""" + def encode(value): + if value == 0.0: + return 0 + s = 1 if value < 0 else 0 + a = abs(value) + useed_pow = (1 << es) # 2^es + # decompose a = 2^(scale) * (1.f), scale = k*2^es + ebits + m_, exp = math.frexp(a) # a = m_ * 2^exp, 0.5<=m_<1 + scale = exp - 1 # a = 1.f * 2^scale + frac = a / (2.0 ** scale) - 1.0 # in [0,1) + k = scale >> es # regime + ebits = scale - (k << es) # exponent within regime + bits = [] + # regime: k>=0 -> (k+1) ones then a zero; k<0 -> (-k) zeros then a one + if k >= 0: + bits += [1] * (k + 1) + [0] + else: + bits += [0] * (-k) + [1] + # exponent bits (es bits, MSB first) + for j in range(es - 1, -1, -1): + bits.append((ebits >> j) & 1) + # fraction bits: fill remaining + remaining = (nbits - 1) - len(bits) + if remaining < 0: + return None # does not fit -> skip + fr = frac + for _ in range(remaining): + fr *= 2.0 + bit = int(fr) + bits.append(bit) + fr -= bit + if fr != 0.0: + return None # not exactly representable + magnitude = 0 + for b in bits[:nbits - 1]: + magnitude = (magnitude << 1) | b + code = magnitude + if s: + code = ((~code) + 1) & ((1 << nbits) - 1) + return code + return encode + +def make_lns_encoder(total_bits): + """Encode value = sign * 2^L into the LNS fixed-point log layout used by + make_lns_decoder. Returns int bits or None.""" + frac_bits = (total_bits - 1) // 2 + def encode(value): + if value == 0.0: + return 0 + s = 1 if value < 0 else 0 + a = abs(value) + L = math.log2(a) + scaled = round(L * (2.0 ** frac_bits)) + if abs(L * (2.0 ** frac_bits) - scaled) > 1e-9: + return None + mag = scaled & ((1 << (total_bits - 1)) - 1) + if mag == 0 and s == 0: + return None # collides with zero code + return (s << (total_bits - 1)) | mag + return encode + +NAMED_TARGETS = [("pos_zero", 0.0), ("pos_one", 1.0), ("neg_one", -1.0), + ("pos_two", 2.0), ("pos_three", 3.0), ("pos_half", 0.5), + ("pos_four", 4.0), ("neg_three", -3.0)] + +def curated_codes(total_bits, decode, fmt_key, encoder=None): + """For widths <= 8 enumerate ALL codes. For wider formats build named + high-signal vectors with an explicit encoder (no brute force).""" + vecs = [] + if total_bits <= 8: + # <=8 bits: exhaustive is tiny (<=256 rows) and ideal. + for b in range(1 << total_bits): + vecs.append(make_vector(f"code_0x%02X" % b, b, total_bits, decode, fmt_key)) + return vecs, "exhaustive" + # >8 bits: exhaustive would be huge (2^16 = 65536 rows -> ~20 MB), so use a + # curated high-signal vector set (same spirit as the original GF16 pack: + # boundaries + named values + the 3.0 anchor). Prefer an explicit encoder; + # if none, fall back to a brute search over <=16-bit space for the targets. + if encoder is None and total_bits <= 16: + encoder = lambda val, _d=decode, _tb=total_bits: encode_ieee(val, _d, _tb) + if encoder is None: + return [], "none" + seen = set(); out = [] + for nm, target in NAMED_TARGETS: + b = encoder(target) + if b is None or b in seen: + continue + # verify decode round-trips to the target exactly + v, c = decode(b, total_bits) + if isinstance(v, float) and not math.isnan(v) and v == target: + seen.add(b) + out.append(make_vector(nm, b, total_bits, decode, fmt_key)) + return out, "curated_named" + +def encode_ieee(target, decode, total_bits): + if total_bits <= 16: + for b in range(1 << total_bits): + v, c = decode(b, total_bits) + if isinstance(v, float) and not math.isnan(v) and v == target: + return b + return None + +# --------------------------------------------------------------------------- +# Per-format dispatch +# --------------------------------------------------------------------------- +def fmt_key_for(rec): + return rec["id"].replace("-", "_") + +def build_decodable(rec): + """Return (decode_fn, notes, has_specials_desc) for a fixed-layout format, + or None if not bit-precise decodable here.""" + cid = rec["id"]; cluster = rec["cluster"] + e, m, bias, bits = rec["e"], rec["m"], rec["bias"], rec["bits"] + storage = rec["storage"] + + # Integer / fixed two's complement + if cluster == "IntegerFixed" and cid.startswith("int") and bits > 0: + return (make_int_decoder(m, signed=True), + f"two's-complement signed integer, {bits} bits", "no inf/nan; exact integers") + if cid == "per_channel_scale": + return None # has external fp32 scale -> structural + + # LNS family + if cluster == "Lns" and bits in (8, 16, 32, 64): + return (make_lns_decoder(e, bits), + f"log-number-system, 1 sign + {bits-1} fixed-point base-2 log bits", + "zero is reserved code; no inf/nan in this convention") + + # GoldenFloat radix-2 (S:E:M) with explicit bias. Skip gfternary (2-bit + # discrete set) -> structural; skip gf16 (existing). + if cluster == "GoldenFloat": + if cid == "gfternary": + return None + if e > 0 and m > 0 and bits in (4, 6, 8, 12, 16, 20, 24, 32, 64): + dec = make_ieee_decoder(e, m, bias, has_inf=True, has_nan=True) + return (dec, f"GoldenFloat phi-aligned radix-2 float S{1}E{e}M{m}, bias {bias}", + "IEEE-style specials at top exponent") + return None # gf128/gf256 (open bias) -> structural + + # IEEE binary radix-2 + if cluster == "Ieee754Binary" and e > 0 and m > 0: + dec = make_ieee_decoder(e, m, bias, has_inf=True, has_nan=True) + wide = bits > 64 + return (dec, f"IEEE 754 binary{bits}, S1E{e}M{m}, bias {bias}", + "inf at max exp m=0, nan at max exp m!=0" + (" (mantissa exceeds f64; decode approximate for wide formats)" if wide else "")) + + # ML low precision radix-2 (fp16 covered by Ieee754; bf16/tf32/fp8/fp6/fp4) + if cluster == "MlLowPrecision" and e > 0 and m > 0: + if cid == "fp8_e4m3": + return None # existing + if cid == "fp8_e5m2": + return None # existing + # bf16 handled by existing golden pack; tf32/fp6/fp4 are new + if cid == "bfloat16": + return None # existing + has_inf = cid in ("tf32",) # fp6/fp4 OCP element: no inf/nan + has_nan = cid in ("tf32",) + # OCP FP8/FP6/FP4 element formats: finite-only (block scale handles range) + if cid.startswith("fp6") or cid.startswith("fp4"): + dec = make_ieee_decoder(e, m, bias, has_inf=False, has_nan=False) + return (dec, f"OCP MX element format S1E{e}M{m}, bias {bias}, finite-only", + "no inf/nan (block scale handles dynamic range)") + dec = make_ieee_decoder(e, m, bias, has_inf=has_inf, has_nan=has_nan) + return (dec, f"radix-2 float S1E{e}M{m}, bias {bias}", "IEEE-style specials") + + # Microscaling ELEMENT formats: same element layout as fp8/6/4, finite-only. + if cluster == "Microscaling": + if cid == "mxfp4": + return None # existing + dec = make_ieee_decoder(e, m, bias, has_inf=False, has_nan=False) + return (dec, f"OCP MX element S1E{e}M{m}, bias {bias} (paired with E8M0 block scale)", + "element is finite-only; block scale E8M0 handles range") + + # Historical vendor radix-2 floats (IBM HFP base-16 differs; treat IEEE-like + # ones precisely, flag base-16 ones as structural). + if cluster == "HistoricalVendor" and e > 0 and m > 0: + if cid.startswith("ibm_hfp"): + return None # base-16 exponent, different decode -> structural w/ note + if cid == "cray_float": + # Cray: no NaN/Inf + dec = make_ieee_decoder(e, m, bias, has_inf=False, has_nan=False) + return (dec, f"Cray-1 float S1E{e}M{m}, bias {bias}, no NaN/Inf", "no specials") + dec = make_ieee_decoder(e, m, bias, has_inf=(cid in ("vax_g","vax_h")), has_nan=(cid in ("vax_g","vax_h"))) + return (dec, f"vendor radix-2 float S1E{e}M{m}, bias {bias} ({rec['standard']})", + "vendor-specific specials") + + # ExtendedFloat (x87 explicit integer bit, double-double, quad-double): + # non-trivial layouts -> structural. + return None + +# --------------------------------------------------------------------------- +# Posit decode (Posit Standard 2022, es=2) +# --------------------------------------------------------------------------- +def make_posit_decoder(nbits, es=2): + def decode(bits, total_bits): + n = nbits + if bits == 0: + return (0.0, "zero") + if bits == (1 << (n - 1)): # NaR (10...0) + return (math.nan, "nan") + s = (bits >> (n - 1)) & 1 + x = bits + if s: + x = ((~x) + 1) & ((1 << n) - 1) # two's complement + # decode regime + bitstr = [(x >> (n - 2 - i)) & 1 for i in range(n - 1)] + i = 0 + first = bitstr[0] + run = 1 + while i + 1 < len(bitstr) and bitstr[i + 1] == first: + run += 1; i += 1 + if first == 1: + k = run - 1 + else: + k = -run + idx = run + 1 # position after regime + terminating bit + # exponent + ebits = 0 + for j in range(es): + if idx < len(bitstr): + ebits = (ebits << 1) | bitstr[idx]; idx += 1 + else: + ebits = (ebits << 1) + # fraction + frac = 0; fcount = 0 + while idx < len(bitstr): + frac = (frac << 1) | bitstr[idx]; idx += 1; fcount += 1 + useed = 2 ** (2 ** es) + f = 1.0 + (frac / (2 ** fcount) if fcount else 0.0) + val = (useed ** k) * (2 ** ebits) * f + if s: + val = -val + return (val, "normal") + return decode + +# --------------------------------------------------------------------------- +# Build a structural (non-bit-exact) pack for parametric/lookup formats. +# --------------------------------------------------------------------------- +def structural_reason(rec): + cid = rec["id"]; cluster = rec["cluster"]; storage = rec["storage"] + if rec["bits"] == 0: + return ("This format has no single fixed bit layout (parametric / " + "technique / variable-width). A bit-precise round-trip vector " + "table is not well-defined; the catalog metadata and anchor " + "note are recorded instead.") + if cluster == "Ieee754Decimal": + return ("IEEE 754 decimal (DPD/BID) encodes coefficients in a packed " + "decimal field; round-trip is exact for decimal values but the " + "bit layout is not a plain radix-2 S:E:M. Recorded structurally " + "with the exact decimal anchor 3.0.") + if cid.startswith("ibm_hfp"): + return ("IBM Hexadecimal Floating Point uses a base-16 exponent (not " + "base-2), so the radix-2 S:E:M decoder does not apply. 3.0 is " + "exactly representable; recorded structurally.") + if cid == "nf4": + return ("NF4 is a 16-entry quantile lookup table fitted to N(0,1); " + "values are table entries, not an S:E:M layout. The 16-entry " + "table defines the round-trip, recorded structurally.") + if cid == "gfternary": + return ("GFTernary is a 2-bit discrete set {-phi, 0, +phi}; the three " + "values are recorded directly rather than via an S:E:M decode.") + if cid in ("gf128", "gf256"): + return ("Bias is an OPEN R&D parameter for this width (see catalog " + "status Experimental); a bit-precise pack is deferred until the " + "bias is fixed. Recorded structurally with the proposed layout.") + if cluster == "ExtendedFloat": + return ("Extended-precision layout (explicit integer bit / multi-double " + "components) is not a single S:E:M field; recorded structurally.") + if cid == "per_channel_scale": + return ("INT8 payload with an external per-channel fp32 scale; the " + "decoded value depends on the scale tensor, so a standalone " + "round-trip table is not defined. Recorded structurally.") + return ("No fixed bit-precise round-trip is defined for this entry; " + "recorded structurally with catalog metadata.") + +def anchor_note(rec): + # 3.0 representability commentary per cluster + if rec["cluster"] in ("Ieee754Decimal",): + return "3.0 is exactly representable (decimal coefficient 3, exponent 0)." + if rec["id"] == "gfternary": + return "Anchor 3.0 arises as phi^2 + 1/phi^2 = 3 from the two nonzero codes +phi and... see GF16 pack; not a single code here." + return "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema." + +def build_structural_pack(rec): + return { + "schema": SCHEMA, + "format": rec["id"].upper(), + "format_name": rec["name"], + "bitexact": False, + "format_notes": rec["name"] + " -- " + rec["standard"], + "catalog": { + "id": rec["id"], "bits": rec["bits"], "s": rec["s"], "e": rec["e"], + "m": rec["m"], "bias": rec["bias"], "storage": rec["storage"], + "cluster": rec["cluster"], "status": rec["status"], + "standard": rec["standard"], "use_case": rec["use_case"], + "gf_relation": rec["gf_relation"], "source": rec["source"], + "phi_distance": rec["phi_distance"], + }, + "ssot": SSOT, "preprint": PREPRINT, "anchor_identity": ANCHOR, + "structural_reason": structural_reason(rec), + "anchor_note": anchor_note(rec), + "n_vectors": 0, + "vectors": [], + } + +def build_bitexact_pack(rec, decode, notes, specials_desc): + cid = rec["id"]; fmt_key = fmt_key_for(rec); bits = rec["bits"] + cluster = rec["cluster"]; e = rec["e"]; m = rec["m"]; bias = rec["bias"] + # Build an explicit encoder for wide (>16-bit) formats so named vectors and + # the 3.0 anchor can be constructed directly (no brute force). + encoder = None + if cluster in ("Ieee754Binary", "MlLowPrecision", "Microscaling", "GoldenFloat") and e > 0 and m > 0: + encoder = lambda val, _e=e, _m=m, _b=bias: ieee_encode_exact(_e, _m, _b, val) + elif cluster == "HistoricalVendor" and e > 0 and m > 0 and not cid.startswith("ibm_hfp"): + encoder = lambda val, _e=e, _m=m, _b=bias: ieee_encode_exact(_e, _m, _b, val) + elif cluster == "IntegerFixed" and cid.startswith("int"): + encoder = lambda val, _tb=bits: int_encode(val, _tb) + elif cluster == "PositUnumIII" and cid.startswith("posit"): + encoder = make_posit_encoder(bits, es=2) + elif cluster == "Lns": + encoder = make_lns_encoder(bits) + vectors, mode = curated_codes(bits, decode, fmt_key, encoder=encoder) + # anchor + if bits <= 16: + abits = find_anchor_bits(decode, bits, 3.0) + elif encoder is not None: + b3 = encoder(3.0) + v3, _ = decode(b3, bits) if b3 is not None else (None, None) + abits = b3 if (b3 is not None and isinstance(v3, float) and v3 == 3.0) else None + else: + abits = None + if abits is not None: + av, _ = decode(abits, bits) + nib = (bits + 3) // 4 + anchor = {"value": av, "expected": 3.0, "ieee754_exact": (av == 3.0), + f"{fmt_key}_bits_hex": "0x%0*X" % (nib, abits)} + else: + anchor = {"value": None, "expected": 3.0, "ieee754_exact": False, + "note": "3.0 is not an exact grid point of this format at this width"} + # max finite: only well-defined from an EXHAUSTIVE enumeration (<=8 bits). + # For curated packs we omit it rather than report a misleading partial max. + max_finite = None + if bits <= 8: + mx = 0.0 + for v in vectors: + x = v["decoded_f64"] + if isinstance(x, (int, float)) and not (isinstance(x, float) and (math.isnan(x) or math.isinf(x))): + mx = max(mx, abs(x)) + max_finite = mx + pack = { + "schema": SCHEMA, + "format": cid.upper(), + "format_name": rec["name"], + "bitexact": True, + "format_notes": notes + ". " + specials_desc, + "catalog": { + "id": cid, "bits": bits, "s": rec["s"], "e": rec["e"], "m": rec["m"], + "bias": rec["bias"], "storage": rec["storage"], "cluster": rec["cluster"], + "status": rec["status"], "standard": rec["standard"], + "use_case": rec["use_case"], "gf_relation": rec["gf_relation"], + "source": rec["source"], "phi_distance": rec["phi_distance"], + }, + "ssot": SSOT, "preprint": PREPRINT, "anchor_identity": ANCHOR, + "anchor_check": anchor, + "round_trip_policy": ("decode: exact bits->f64 (" + mode + + "). encode (reference): round-nearest-ties-even; overflow per " + "format convention. abs_error 0 for representable values."), + "vector_mode": mode, + "n_vectors": len(vectors), + } + if max_finite is not None: + pack["max_finite"] = max_finite + pack["vectors"] = vectors + return pack + +# --------------------------------------------------------------------------- +# Main +# --------------------------------------------------------------------------- +def main(): + recs = parse_catalog(CATALOG_LINES) + print(f"parsed {len(recs)} catalog formats") + + index = [] + written = 0 + structural = 0 + bitexact = 0 + + for rec in recs: + cid = rec["id"] + fmt_key = fmt_key_for(rec) + fname = f"{cid}_conformance_v0.json" + + if cid in EXISTING: + existing_file = EXISTING[cid] + index.append({"id": cid, "file": existing_file, "kind": "bitexact", + "source": "hand-curated (pre-existing)"}) + continue + + # posit/takum cluster + if rec["cluster"] == "PositUnumIII": + if cid.startswith("posit"): + dec = make_posit_decoder(rec["bits"], es=2) + pack = build_bitexact_pack( + rec, dec, f"Posit Standard 2022, n={rec['bits']}, es=2", + "NaR at 10..0; no separate inf; tapered precision") + bitexact += 1 + elif cid.startswith("takum"): + # takum: tapered logarithmic; decode is nontrivial -> structural + pack = build_structural_pack(rec) + pack["structural_reason"] = ("Takum (Hunhold 2024) is a tapered " + "LOGARITHMIC format; its decode is not a plain S:E:M field. " + "It is the live FL-002 counterexample and is recorded " + "structurally pending a dedicated logarithmic decoder.") + structural += 1 + else: + pack = build_structural_pack(rec); structural += 1 + else: + built = build_decodable(rec) + if built is not None: + dec, notes, specials = built + pack = build_bitexact_pack(rec, dec, notes, specials) + bitexact += 1 + else: + pack = build_structural_pack(rec) + structural += 1 + + with open(os.path.join(OUT, fname), "w") as f: + json.dump(pack, f, indent=2) + written += 1 + index.append({"id": cid, "file": fname, + "kind": "bitexact" if pack.get("bitexact") else "structural", + "n_vectors": pack.get("n_vectors", 0), + "source": "generated by gen_all_formats.py"}) + + # SHA-256 for every pack file in the index + for entry in index: + path = os.path.join(OUT, entry["file"]) + h = hashlib.sha256(open(path, "rb").read()).hexdigest() + entry["sha256"] = h + + idx = { + "schema": "t27-conformance-index/v0.1", + "anchor_identity": ANCHOR, + "ssot": SSOT, + "preprint": PREPRINT, + "total_formats": len(recs), + "total_packs": len(index), + "bitexact_packs": sum(1 for e in index if e["kind"] == "bitexact"), + "structural_packs": sum(1 for e in index if e["kind"] == "structural"), + "packs": index, + } + with open(os.path.join(OUT, "INDEX_all_formats.json"), "w") as f: + json.dump(idx, f, indent=2) + + print(f"formats: {len(recs)}") + print(f"written new packs: {written} (bitexact={bitexact}, structural={structural})") + print(f"existing kept: {len(EXISTING)}") + print(f"index packs: {len(index)} bitexact={idx['bitexact_packs']} structural={idx['structural_packs']}") + +if __name__ == "__main__": + main() diff --git a/conformance/vectors/gf1024_conformance_v0.json b/conformance/vectors/gf1024_conformance_v0.json new file mode 100644 index 000000000..5cd6d1db9 --- /dev/null +++ b/conformance/vectors/gf1024_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF1024", + "format_name": "GF1024 (rule-derived)", + "bitexact": false, + "format_notes": "GF1024 (rule-derived) -- this work; rule e=round(1023/phi^2)=391; lowest phi-distance in the ladder", + "catalog": { + "id": "gf1024", + "bits": 1024, + "s": 1, + "e": 391, + "m": 632, + "bias": 2521728396569246669585858566409191283525103313309788586748690777871726193375821479130513040312634601011624191379636223, + "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", + "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/gf10_conformance_v0.json b/conformance/vectors/gf10_conformance_v0.json new file mode 100644 index 000000000..2ecaa49d8 --- /dev/null +++ b/conformance/vectors/gf10_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF10", + "format_name": "GF10 (rule-derived)", + "bitexact": false, + "format_notes": "GF10 (rule-derived) -- this work; rule e=round(9/phi^2)=3; bridge GF8-GF12", + "catalog": { + "id": "gf10", + "bits": 10, + "s": 1, + "e": 3, + "m": 6, + "bias": 3, + "storage": "u16", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(9/phi^2)=3; bridge GF8-GF12", + "use_case": "OPEN R&D: tight-precision activations", + "gf_relation": "experimental", + "source": "specs/numeric/gf10.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", + "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/gf128_conformance_v0.json b/conformance/vectors/gf128_conformance_v0.json new file mode 100644 index 000000000..b6b81d74d --- /dev/null +++ b/conformance/vectors/gf128_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF128", + "format_name": "GF128 (rule-derived)", + "bitexact": false, + "format_notes": "GF128 (rule-derived) -- this work; rule e=round(127/phi^2)=49 (corrects v1.1 typo e=48)", + "catalog": { + "id": "gf128", + "bits": 128, + "s": 1, + "e": 49, + "m": 78, + "bias": 281474976710655, + "storage": "u128", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(127/phi^2)=49 (corrects v1.1 typo e=48)", + "use_case": "OPEN R&D: phi-aligned binary128 alternative", + "gf_relation": "experimental", + "source": "specs/numeric/gf128.t27", + "phi_distance": 0.01 + }, + "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": "Bias is an OPEN R&D parameter for this width (see catalog status Experimental); a bit-precise pack is deferred until the bias is fixed. Recorded structurally with the proposed layout.", + "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/gf12_conformance_v0.json b/conformance/vectors/gf12_conformance_v0.json new file mode 100644 index 000000000..54c2d0cfd --- /dev/null +++ b/conformance/vectors/gf12_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF12", + "format_name": "GF12", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E4M7, bias 7. IEEE-style specials at top exponent", + "catalog": { + "id": "gf12", + "bits": 12, + "s": 1, + "e": 4, + "m": 7, + "bias": 7, + "storage": "u16", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; L0/F3", + "use_case": "mid-range / audio", + "gf_relation": "self", + "source": "BENCH-007 (specs/numeric/gf12.t27)", + "phi_distance": 0.047 + }, + "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, + "gf12_bits_hex": "0x440" + }, + "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", + "gf12_bits_hex": "0x000", + "gf12_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", + "gf12_bits_hex": "0x380", + "gf12_bits_int": 896, + "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", + "gf12_bits_hex": "0xB80", + "gf12_bits_int": 2944, + "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", + "gf12_bits_hex": "0x400", + "gf12_bits_int": 1024, + "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", + "gf12_bits_hex": "0x440", + "gf12_bits_int": 1088, + "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", + "gf12_bits_hex": "0x300", + "gf12_bits_int": 768, + "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", + "gf12_bits_hex": "0x480", + "gf12_bits_int": 1152, + "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", + "gf12_bits_hex": "0xC40", + "gf12_bits_int": 3136, + "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/gf14_conformance_v0.json b/conformance/vectors/gf14_conformance_v0.json new file mode 100644 index 000000000..0dbdfa9ff --- /dev/null +++ b/conformance/vectors/gf14_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF14", + "format_name": "GF14 (rule-derived)", + "bitexact": false, + "format_notes": "GF14 (rule-derived) -- this work; rule e=round(13/phi^2)=5; bridge GF12-GF16; lowest phi-dist below GF48", + "catalog": { + "id": "gf14", + "bits": 14, + "s": 1, + "e": 5, + "m": 8, + "bias": 15, + "storage": "u16", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(13/phi^2)=5; bridge GF12-GF16; lowest phi-dist below GF48", + "use_case": "OPEN R&D: drop-in for fp16 with tighter phi alignment", + "gf_relation": "experimental", + "source": "specs/numeric/gf14.t27", + "phi_distance": 0.007 + }, + "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/gf20_conformance_v0.json b/conformance/vectors/gf20_conformance_v0.json new file mode 100644 index 000000000..ef367ac31 --- /dev/null +++ b/conformance/vectors/gf20_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF20", + "format_name": "GF20", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E7M12, bias 63. IEEE-style specials at top exponent", + "catalog": { + "id": "gf20", + "bits": 20, + "s": 1, + "e": 7, + "m": 12, + "bias": 63, + "storage": "u32", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; 17-squared empirical PHI_BIAS=289", + "use_case": "high-precision edge", + "gf_relation": "self", + "source": "specs/numeric/gf20.t27 (spec only)", + "phi_distance": 0.035 + }, + "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, + "gf20_bits_hex": "0x40800" + }, + "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", + "gf20_bits_hex": "0x00000", + "gf20_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", + "gf20_bits_hex": "0x3F000", + "gf20_bits_int": 258048, + "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", + "gf20_bits_hex": "0xBF000", + "gf20_bits_int": 782336, + "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", + "gf20_bits_hex": "0x40000", + "gf20_bits_int": 262144, + "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", + "gf20_bits_hex": "0x40800", + "gf20_bits_int": 264192, + "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", + "gf20_bits_hex": "0x3E000", + "gf20_bits_int": 253952, + "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", + "gf20_bits_hex": "0x41000", + "gf20_bits_int": 266240, + "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", + "gf20_bits_hex": "0xC0800", + "gf20_bits_int": 788480, + "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/gf24_conformance_v0.json b/conformance/vectors/gf24_conformance_v0.json new file mode 100644 index 000000000..69c43ae1d --- /dev/null +++ b/conformance/vectors/gf24_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF24", + "format_name": "GF24", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E9M14, bias 255. IEEE-style specials at top exponent", + "catalog": { + "id": "gf24", + "bits": 24, + "s": 1, + "e": 9, + "m": 14, + "bias": 255, + "storage": "u32", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; rule e=round(23/phi^2)=9; normative bias=2^(e-1)-1=255; empirical PHI_BIAS=1364 (=L15) OPEN", + "use_case": "server inference", + "gf_relation": "self", + "source": "specs/numeric/gf24.t27 (spec only)", + "phi_distance": 0.025 + }, + "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, + "gf24_bits_hex": "0x402000" + }, + "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", + "gf24_bits_hex": "0x000000", + "gf24_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", + "gf24_bits_hex": "0x3FC000", + "gf24_bits_int": 4177920, + "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", + "gf24_bits_hex": "0xBFC000", + "gf24_bits_int": 12566528, + "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", + "gf24_bits_hex": "0x400000", + "gf24_bits_int": 4194304, + "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", + "gf24_bits_hex": "0x402000", + "gf24_bits_int": 4202496, + "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", + "gf24_bits_hex": "0x3F8000", + "gf24_bits_int": 4161536, + "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", + "gf24_bits_hex": "0x404000", + "gf24_bits_int": 4210688, + "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", + "gf24_bits_hex": "0xC02000", + "gf24_bits_int": 12591104, + "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/gf256_conformance_v0.json b/conformance/vectors/gf256_conformance_v0.json new file mode 100644 index 000000000..ee853b6d1 --- /dev/null +++ b/conformance/vectors/gf256_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF256", + "format_name": "GF256 (rule-derived)", + "bitexact": false, + "format_notes": "GF256 (rule-derived) -- this work; rule e=round(255/phi^2)=97; normative bias=2^96-1", + "catalog": { + "id": "gf256", + "bits": 256, + "s": 1, + "e": 97, + "m": 158, + "bias": 79228162514264337593543950335, + "storage": "u256_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(255/phi^2)=97; normative bias=2^96-1", + "use_case": "OPEN R&D: phi-aligned binary256 alternative", + "gf_relation": "experimental", + "source": "specs/numeric/gf256.t27", + "phi_distance": 0.004 + }, + "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": "Bias is an OPEN R&D parameter for this width (see catalog status Experimental); a bit-precise pack is deferred until the bias is fixed. Recorded structurally with the proposed layout.", + "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/gf32_conformance_v0.json b/conformance/vectors/gf32_conformance_v0.json new file mode 100644 index 000000000..a2da1d70e --- /dev/null +++ b/conformance/vectors/gf32_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF32", + "format_name": "GF32", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E12M19, bias 2047. IEEE-style specials at top exponent", + "catalog": { + "id": "gf32", + "bits": 32, + "s": 1, + "e": 12, + "m": 19, + "bias": 2047, + "storage": "u32", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; F0 resolved", + "use_case": "fp32 drop-in", + "gf_relation": "self", + "source": "BENCH-012 (specs/numeric/gf32.t27)", + "phi_distance": 0.014 + }, + "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, + "gf32_bits_hex": "0x40040000" + }, + "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", + "gf32_bits_hex": "0x00000000", + "gf32_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", + "gf32_bits_hex": "0x3FF80000", + "gf32_bits_int": 1073217536, + "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", + "gf32_bits_hex": "0xBFF80000", + "gf32_bits_int": 3220701184, + "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", + "gf32_bits_hex": "0x40000000", + "gf32_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", + "gf32_bits_hex": "0x40040000", + "gf32_bits_int": 1074003968, + "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", + "gf32_bits_hex": "0x3FF00000", + "gf32_bits_int": 1072693248, + "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", + "gf32_bits_hex": "0x40080000", + "gf32_bits_int": 1074266112, + "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", + "gf32_bits_hex": "0xC0040000", + "gf32_bits_int": 3221487616, + "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/gf48_conformance_v0.json b/conformance/vectors/gf48_conformance_v0.json new file mode 100644 index 000000000..7f6fc755b --- /dev/null +++ b/conformance/vectors/gf48_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF48", + "format_name": "GF48 (rule-derived)", + "bitexact": false, + "format_notes": "GF48 (rule-derived) -- this work; rule e=round(47/phi^2)=18", + "catalog": { + "id": "gf48", + "bits": 48, + "s": 1, + "e": 18, + "m": 29, + "bias": 131071, + "storage": "u64_padded", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(47/phi^2)=18", + "use_case": "OPEN R&D: between GF32 and GF64; tightest phi-dist of the wide rungs", + "gf_relation": "experimental", + "source": "specs/numeric/gf48.t27", + "phi_distance": 0.003 + }, + "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/gf4_conformance_v0.json b/conformance/vectors/gf4_conformance_v0.json new file mode 100644 index 000000000..48acff403 --- /dev/null +++ b/conformance/vectors/gf4_conformance_v0.json @@ -0,0 +1,214 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF4", + "format_name": "GF4", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E1M2, bias 0. IEEE-style specials at top exponent", + "catalog": { + "id": "gf4", + "bits": 4, + "s": 1, + "e": 1, + "m": 2, + "bias": 0, + "storage": "u8", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; F0 minimal", + "use_case": "proof-of-concept", + "gf_relation": "self", + "source": "specs/numeric/gf4.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": 1.5, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gf4_bits_hex": "0x0", + "gf4_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "gf4_bits_hex": "0x1", + "gf4_bits_int": 1, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "gf4_bits_hex": "0x2", + "gf4_bits_int": 2, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "gf4_bits_hex": "0x3", + "gf4_bits_int": 3, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "gf4_bits_hex": "0x4", + "gf4_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", + "gf4_bits_hex": "0x5", + "gf4_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", + "gf4_bits_hex": "0x6", + "gf4_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", + "gf4_bits_hex": "0x7", + "gf4_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", + "gf4_bits_hex": "0x8", + "gf4_bits_int": 8, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x09", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "gf4_bits_hex": "0x9", + "gf4_bits_int": 9, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "gf4_bits_hex": "0xA", + "gf4_bits_int": 10, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "gf4_bits_hex": "0xB", + "gf4_bits_int": 11, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "gf4_bits_hex": "0xC", + "gf4_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", + "gf4_bits_hex": "0xD", + "gf4_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", + "gf4_bits_hex": "0xE", + "gf4_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", + "gf4_bits_hex": "0xF", + "gf4_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/gf512_conformance_v0.json b/conformance/vectors/gf512_conformance_v0.json new file mode 100644 index 000000000..03175133f --- /dev/null +++ b/conformance/vectors/gf512_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF512", + "format_name": "GF512 (rule-derived)", + "bitexact": false, + "format_notes": "GF512 (rule-derived) -- this work; rule e=round(511/phi^2)=195", + "catalog": { + "id": "gf512", + "bits": 512, + "s": 1, + "e": 195, + "m": 316, + "bias": 25108406941546723055343157692830665664409421777856138051583, + "storage": "u512_software", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(511/phi^2)=195", + "use_case": "OPEN R&D: ultra-wide phi-aligned (extrapolation, no RTL)", + "gf_relation": "experimental", + "source": "specs/numeric/gf512.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/gf64_conformance_v0.json b/conformance/vectors/gf64_conformance_v0.json new file mode 100644 index 000000000..37ec69d6a --- /dev/null +++ b/conformance/vectors/gf64_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF64", + "format_name": "GF64", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E24M39, bias 8388607. IEEE-style specials at top exponent", + "catalog": { + "id": "gf64", + "bits": 64, + "s": 1, + "e": 24, + "m": 39, + "bias": 8388607, + "storage": "u64", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; EXP_MAX - BIAS", + "use_case": "scientific / double", + "gf_relation": "self", + "source": "BENCH-007b (specs/numeric/gf64.t27)", + "phi_distance": 0.003 + }, + "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, + "gf64_bits_hex": "0x4000004000000000" + }, + "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", + "gf64_bits_hex": "0x0000000000000000", + "gf64_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", + "gf64_bits_hex": "0x3FFFFF8000000000", + "gf64_bits_int": 4611685468671574016, + "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", + "gf64_bits_hex": "0xBFFFFF8000000000", + "gf64_bits_int": 13835057505526349824, + "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", + "gf64_bits_hex": "0x4000000000000000", + "gf64_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", + "gf64_bits_hex": "0x4000004000000000", + "gf64_bits_int": 4611686293305294848, + "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", + "gf64_bits_hex": "0x3FFFFF0000000000", + "gf64_bits_int": 4611684918915760128, + "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", + "gf64_bits_hex": "0x4000008000000000", + "gf64_bits_int": 4611686568183201792, + "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", + "gf64_bits_hex": "0xC000004000000000", + "gf64_bits_int": 13835058330160070656, + "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/gf6_conformance_v0.json b/conformance/vectors/gf6_conformance_v0.json new file mode 100644 index 000000000..32e10af75 --- /dev/null +++ b/conformance/vectors/gf6_conformance_v0.json @@ -0,0 +1,742 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF6", + "format_name": "GF6 (rule-derived)", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E2M3, bias 1. IEEE-style specials at top exponent", + "catalog": { + "id": "gf6", + "bits": 6, + "s": 1, + "e": 2, + "m": 3, + "bias": 1, + "storage": "u8_packed", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(5/phi^2)=2; FP6 E2M3 bridge", + "use_case": "OPEN R&D: bridge GF4-GF8; FP6 E2M3 hint", + "gf_relation": "experimental", + "source": "specs/numeric/gf6.t27", + "phi_distance": 0.049 + }, + "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, + "gf6_bits_hex": "0x14" + }, + "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": 64, + "max_finite": 3.75, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gf6_bits_hex": "0x00", + "gf6_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "gf6_bits_hex": "0x01", + "gf6_bits_int": 1, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "gf6_bits_hex": "0x02", + "gf6_bits_int": 2, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "gf6_bits_hex": "0x03", + "gf6_bits_int": 3, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "gf6_bits_hex": "0x04", + "gf6_bits_int": 4, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "gf6_bits_hex": "0x05", + "gf6_bits_int": 5, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "gf6_bits_hex": "0x06", + "gf6_bits_int": 6, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "gf6_bits_hex": "0x07", + "gf6_bits_int": 7, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "gf6_bits_hex": "0x08", + "gf6_bits_int": 8, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "gf6_bits_hex": "0x09", + "gf6_bits_int": 9, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "gf6_bits_hex": "0x0A", + "gf6_bits_int": 10, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "gf6_bits_hex": "0x0B", + "gf6_bits_int": 11, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "gf6_bits_hex": "0x0C", + "gf6_bits_int": 12, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "gf6_bits_hex": "0x0D", + "gf6_bits_int": 13, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "gf6_bits_hex": "0x0E", + "gf6_bits_int": 14, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "gf6_bits_hex": "0x0F", + "gf6_bits_int": 15, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "gf6_bits_hex": "0x10", + "gf6_bits_int": 16, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "gf6_bits_hex": "0x11", + "gf6_bits_int": 17, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "gf6_bits_hex": "0x12", + "gf6_bits_int": 18, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "gf6_bits_hex": "0x13", + "gf6_bits_int": 19, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "gf6_bits_hex": "0x14", + "gf6_bits_int": 20, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "gf6_bits_hex": "0x15", + "gf6_bits_int": 21, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "gf6_bits_hex": "0x16", + "gf6_bits_int": 22, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "gf6_bits_hex": "0x17", + "gf6_bits_int": 23, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "gf6_bits_hex": "0x18", + "gf6_bits_int": 24, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x19", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x19", + "gf6_bits_int": 25, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1A", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x1A", + "gf6_bits_int": 26, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1B", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x1B", + "gf6_bits_int": 27, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1C", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x1C", + "gf6_bits_int": 28, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x1D", + "gf6_bits_int": 29, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x1E", + "gf6_bits_int": 30, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x1F", + "gf6_bits_int": 31, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x20", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "gf6_bits_hex": "0x20", + "gf6_bits_int": 32, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x21", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "gf6_bits_hex": "0x21", + "gf6_bits_int": 33, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x22", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "gf6_bits_hex": "0x22", + "gf6_bits_int": 34, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x23", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "gf6_bits_hex": "0x23", + "gf6_bits_int": 35, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x24", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "gf6_bits_hex": "0x24", + "gf6_bits_int": 36, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x25", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "gf6_bits_hex": "0x25", + "gf6_bits_int": 37, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x26", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "gf6_bits_hex": "0x26", + "gf6_bits_int": 38, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x27", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "gf6_bits_hex": "0x27", + "gf6_bits_int": 39, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x28", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "gf6_bits_hex": "0x28", + "gf6_bits_int": 40, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "gf6_bits_hex": "0x29", + "gf6_bits_int": 41, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "gf6_bits_hex": "0x2A", + "gf6_bits_int": 42, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "gf6_bits_hex": "0x2B", + "gf6_bits_int": 43, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "gf6_bits_hex": "0x2C", + "gf6_bits_int": 44, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "gf6_bits_hex": "0x2D", + "gf6_bits_int": 45, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "gf6_bits_hex": "0x2E", + "gf6_bits_int": 46, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "gf6_bits_hex": "0x2F", + "gf6_bits_int": 47, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "gf6_bits_hex": "0x30", + "gf6_bits_int": 48, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "gf6_bits_hex": "0x31", + "gf6_bits_int": 49, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "gf6_bits_hex": "0x32", + "gf6_bits_int": 50, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "gf6_bits_hex": "0x33", + "gf6_bits_int": 51, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "gf6_bits_hex": "0x34", + "gf6_bits_int": 52, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "gf6_bits_hex": "0x35", + "gf6_bits_int": 53, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "gf6_bits_hex": "0x36", + "gf6_bits_int": 54, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "gf6_bits_hex": "0x37", + "gf6_bits_int": 55, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "gf6_bits_hex": "0x38", + "gf6_bits_int": 56, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x39", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x39", + "gf6_bits_int": 57, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3A", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x3A", + "gf6_bits_int": 58, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3B", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x3B", + "gf6_bits_int": 59, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3C", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x3C", + "gf6_bits_int": 60, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x3D", + "gf6_bits_int": 61, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x3E", + "gf6_bits_int": 62, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "gf6_bits_hex": "0x3F", + "gf6_bits_int": 63, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/gf8_bfp_conformance_v0.json b/conformance/vectors/gf8_bfp_conformance_v0.json new file mode 100644 index 000000000..a224f242f --- /dev/null +++ b/conformance/vectors/gf8_bfp_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF8_BFP", + "format_name": "GF8-BFP (block FP atop GF8)", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E3M4, bias 3. IEEE-style specials at top exponent", + "catalog": { + "id": "gf8_bfp", + "bits": 8, + "s": 1, + "e": 3, + "m": 4, + "bias": 3, + "storage": "u8_plus_shared_exp", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; per-tile shared exponent", + "use_case": "OPEN R&D: LLM-quantization-friendly GF8", + "gf_relation": "experimental", + "source": "section12.5", + "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": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "gf8_bfp_bits_hex": "0x48" + }, + "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": 15.5, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gf8_bfp_bits_hex": "0x00", + "gf8_bfp_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.015625, + "input_f64_hex": "0x3F90000000000000", + "gf8_bfp_bits_hex": "0x01", + "gf8_bfp_bits_int": 1, + "decoded_f64": 0.015625, + "decoded_f64_hex": "0x3F90000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.03125, + "input_f64_hex": "0x3FA0000000000000", + "gf8_bfp_bits_hex": "0x02", + "gf8_bfp_bits_int": 2, + "decoded_f64": 0.03125, + "decoded_f64_hex": "0x3FA0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.046875, + "input_f64_hex": "0x3FA8000000000000", + "gf8_bfp_bits_hex": "0x03", + "gf8_bfp_bits_int": 3, + "decoded_f64": 0.046875, + "decoded_f64_hex": "0x3FA8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "gf8_bfp_bits_hex": "0x04", + "gf8_bfp_bits_int": 4, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 0.078125, + "input_f64_hex": "0x3FB4000000000000", + "gf8_bfp_bits_hex": "0x05", + "gf8_bfp_bits_int": 5, + "decoded_f64": 0.078125, + "decoded_f64_hex": "0x3FB4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 0.09375, + "input_f64_hex": "0x3FB8000000000000", + "gf8_bfp_bits_hex": "0x06", + "gf8_bfp_bits_int": 6, + "decoded_f64": 0.09375, + "decoded_f64_hex": "0x3FB8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.109375, + "input_f64_hex": "0x3FBC000000000000", + "gf8_bfp_bits_hex": "0x07", + "gf8_bfp_bits_int": 7, + "decoded_f64": 0.109375, + "decoded_f64_hex": "0x3FBC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "gf8_bfp_bits_hex": "0x08", + "gf8_bfp_bits_int": 8, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x09", + "input_f64": 0.140625, + "input_f64_hex": "0x3FC2000000000000", + "gf8_bfp_bits_hex": "0x09", + "gf8_bfp_bits_int": 9, + "decoded_f64": 0.140625, + "decoded_f64_hex": "0x3FC2000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": 0.15625, + "input_f64_hex": "0x3FC4000000000000", + "gf8_bfp_bits_hex": "0x0A", + "gf8_bfp_bits_int": 10, + "decoded_f64": 0.15625, + "decoded_f64_hex": "0x3FC4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": 0.171875, + "input_f64_hex": "0x3FC6000000000000", + "gf8_bfp_bits_hex": "0x0B", + "gf8_bfp_bits_int": 11, + "decoded_f64": 0.171875, + "decoded_f64_hex": "0x3FC6000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "gf8_bfp_bits_hex": "0x0C", + "gf8_bfp_bits_int": 12, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0D", + "input_f64": 0.203125, + "input_f64_hex": "0x3FCA000000000000", + "gf8_bfp_bits_hex": "0x0D", + "gf8_bfp_bits_int": 13, + "decoded_f64": 0.203125, + "decoded_f64_hex": "0x3FCA000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0E", + "input_f64": 0.21875, + "input_f64_hex": "0x3FCC000000000000", + "gf8_bfp_bits_hex": "0x0E", + "gf8_bfp_bits_int": 14, + "decoded_f64": 0.21875, + "decoded_f64_hex": "0x3FCC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0F", + "input_f64": 0.234375, + "input_f64_hex": "0x3FCE000000000000", + "gf8_bfp_bits_hex": "0x0F", + "gf8_bfp_bits_int": 15, + "decoded_f64": 0.234375, + "decoded_f64_hex": "0x3FCE000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x10", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "gf8_bfp_bits_hex": "0x10", + "gf8_bfp_bits_int": 16, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.265625, + "input_f64_hex": "0x3FD1000000000000", + "gf8_bfp_bits_hex": "0x11", + "gf8_bfp_bits_int": 17, + "decoded_f64": 0.265625, + "decoded_f64_hex": "0x3FD1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.28125, + "input_f64_hex": "0x3FD2000000000000", + "gf8_bfp_bits_hex": "0x12", + "gf8_bfp_bits_int": 18, + "decoded_f64": 0.28125, + "decoded_f64_hex": "0x3FD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.296875, + "input_f64_hex": "0x3FD3000000000000", + "gf8_bfp_bits_hex": "0x13", + "gf8_bfp_bits_int": 19, + "decoded_f64": 0.296875, + "decoded_f64_hex": "0x3FD3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "gf8_bfp_bits_hex": "0x14", + "gf8_bfp_bits_int": 20, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.328125, + "input_f64_hex": "0x3FD5000000000000", + "gf8_bfp_bits_hex": "0x15", + "gf8_bfp_bits_int": 21, + "decoded_f64": 0.328125, + "decoded_f64_hex": "0x3FD5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.34375, + "input_f64_hex": "0x3FD6000000000000", + "gf8_bfp_bits_hex": "0x16", + "gf8_bfp_bits_int": 22, + "decoded_f64": 0.34375, + "decoded_f64_hex": "0x3FD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.359375, + "input_f64_hex": "0x3FD7000000000000", + "gf8_bfp_bits_hex": "0x17", + "gf8_bfp_bits_int": 23, + "decoded_f64": 0.359375, + "decoded_f64_hex": "0x3FD7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "gf8_bfp_bits_hex": "0x18", + "gf8_bfp_bits_int": 24, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.390625, + "input_f64_hex": "0x3FD9000000000000", + "gf8_bfp_bits_hex": "0x19", + "gf8_bfp_bits_int": 25, + "decoded_f64": 0.390625, + "decoded_f64_hex": "0x3FD9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.40625, + "input_f64_hex": "0x3FDA000000000000", + "gf8_bfp_bits_hex": "0x1A", + "gf8_bfp_bits_int": 26, + "decoded_f64": 0.40625, + "decoded_f64_hex": "0x3FDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.421875, + "input_f64_hex": "0x3FDB000000000000", + "gf8_bfp_bits_hex": "0x1B", + "gf8_bfp_bits_int": 27, + "decoded_f64": 0.421875, + "decoded_f64_hex": "0x3FDB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "gf8_bfp_bits_hex": "0x1C", + "gf8_bfp_bits_int": 28, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.453125, + "input_f64_hex": "0x3FDD000000000000", + "gf8_bfp_bits_hex": "0x1D", + "gf8_bfp_bits_int": 29, + "decoded_f64": 0.453125, + "decoded_f64_hex": "0x3FDD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.46875, + "input_f64_hex": "0x3FDE000000000000", + "gf8_bfp_bits_hex": "0x1E", + "gf8_bfp_bits_int": 30, + "decoded_f64": 0.46875, + "decoded_f64_hex": "0x3FDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.484375, + "input_f64_hex": "0x3FDF000000000000", + "gf8_bfp_bits_hex": "0x1F", + "gf8_bfp_bits_int": 31, + "decoded_f64": 0.484375, + "decoded_f64_hex": "0x3FDF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "gf8_bfp_bits_hex": "0x20", + "gf8_bfp_bits_int": 32, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.53125, + "input_f64_hex": "0x3FE1000000000000", + "gf8_bfp_bits_hex": "0x21", + "gf8_bfp_bits_int": 33, + "decoded_f64": 0.53125, + "decoded_f64_hex": "0x3FE1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.5625, + "input_f64_hex": "0x3FE2000000000000", + "gf8_bfp_bits_hex": "0x22", + "gf8_bfp_bits_int": 34, + "decoded_f64": 0.5625, + "decoded_f64_hex": "0x3FE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.59375, + "input_f64_hex": "0x3FE3000000000000", + "gf8_bfp_bits_hex": "0x23", + "gf8_bfp_bits_int": 35, + "decoded_f64": 0.59375, + "decoded_f64_hex": "0x3FE3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "gf8_bfp_bits_hex": "0x24", + "gf8_bfp_bits_int": 36, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.65625, + "input_f64_hex": "0x3FE5000000000000", + "gf8_bfp_bits_hex": "0x25", + "gf8_bfp_bits_int": 37, + "decoded_f64": 0.65625, + "decoded_f64_hex": "0x3FE5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.6875, + "input_f64_hex": "0x3FE6000000000000", + "gf8_bfp_bits_hex": "0x26", + "gf8_bfp_bits_int": 38, + "decoded_f64": 0.6875, + "decoded_f64_hex": "0x3FE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.71875, + "input_f64_hex": "0x3FE7000000000000", + "gf8_bfp_bits_hex": "0x27", + "gf8_bfp_bits_int": 39, + "decoded_f64": 0.71875, + "decoded_f64_hex": "0x3FE7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "gf8_bfp_bits_hex": "0x28", + "gf8_bfp_bits_int": 40, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.78125, + "input_f64_hex": "0x3FE9000000000000", + "gf8_bfp_bits_hex": "0x29", + "gf8_bfp_bits_int": 41, + "decoded_f64": 0.78125, + "decoded_f64_hex": "0x3FE9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.8125, + "input_f64_hex": "0x3FEA000000000000", + "gf8_bfp_bits_hex": "0x2A", + "gf8_bfp_bits_int": 42, + "decoded_f64": 0.8125, + "decoded_f64_hex": "0x3FEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.84375, + "input_f64_hex": "0x3FEB000000000000", + "gf8_bfp_bits_hex": "0x2B", + "gf8_bfp_bits_int": 43, + "decoded_f64": 0.84375, + "decoded_f64_hex": "0x3FEB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "gf8_bfp_bits_hex": "0x2C", + "gf8_bfp_bits_int": 44, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.90625, + "input_f64_hex": "0x3FED000000000000", + "gf8_bfp_bits_hex": "0x2D", + "gf8_bfp_bits_int": 45, + "decoded_f64": 0.90625, + "decoded_f64_hex": "0x3FED000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.9375, + "input_f64_hex": "0x3FEE000000000000", + "gf8_bfp_bits_hex": "0x2E", + "gf8_bfp_bits_int": 46, + "decoded_f64": 0.9375, + "decoded_f64_hex": "0x3FEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.96875, + "input_f64_hex": "0x3FEF000000000000", + "gf8_bfp_bits_hex": "0x2F", + "gf8_bfp_bits_int": 47, + "decoded_f64": 0.96875, + "decoded_f64_hex": "0x3FEF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "gf8_bfp_bits_hex": "0x30", + "gf8_bfp_bits_int": 48, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 1.0625, + "input_f64_hex": "0x3FF1000000000000", + "gf8_bfp_bits_hex": "0x31", + "gf8_bfp_bits_int": 49, + "decoded_f64": 1.0625, + "decoded_f64_hex": "0x3FF1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "gf8_bfp_bits_hex": "0x32", + "gf8_bfp_bits_int": 50, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 1.1875, + "input_f64_hex": "0x3FF3000000000000", + "gf8_bfp_bits_hex": "0x33", + "gf8_bfp_bits_int": 51, + "decoded_f64": 1.1875, + "decoded_f64_hex": "0x3FF3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "gf8_bfp_bits_hex": "0x34", + "gf8_bfp_bits_int": 52, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 1.3125, + "input_f64_hex": "0x3FF5000000000000", + "gf8_bfp_bits_hex": "0x35", + "gf8_bfp_bits_int": 53, + "decoded_f64": 1.3125, + "decoded_f64_hex": "0x3FF5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "gf8_bfp_bits_hex": "0x36", + "gf8_bfp_bits_int": 54, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 1.4375, + "input_f64_hex": "0x3FF7000000000000", + "gf8_bfp_bits_hex": "0x37", + "gf8_bfp_bits_int": 55, + "decoded_f64": 1.4375, + "decoded_f64_hex": "0x3FF7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "gf8_bfp_bits_hex": "0x38", + "gf8_bfp_bits_int": 56, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 1.5625, + "input_f64_hex": "0x3FF9000000000000", + "gf8_bfp_bits_hex": "0x39", + "gf8_bfp_bits_int": 57, + "decoded_f64": 1.5625, + "decoded_f64_hex": "0x3FF9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "gf8_bfp_bits_hex": "0x3A", + "gf8_bfp_bits_int": 58, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 1.6875, + "input_f64_hex": "0x3FFB000000000000", + "gf8_bfp_bits_hex": "0x3B", + "gf8_bfp_bits_int": 59, + "decoded_f64": 1.6875, + "decoded_f64_hex": "0x3FFB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "gf8_bfp_bits_hex": "0x3C", + "gf8_bfp_bits_int": 60, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 1.8125, + "input_f64_hex": "0x3FFD000000000000", + "gf8_bfp_bits_hex": "0x3D", + "gf8_bfp_bits_int": 61, + "decoded_f64": 1.8125, + "decoded_f64_hex": "0x3FFD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "gf8_bfp_bits_hex": "0x3E", + "gf8_bfp_bits_int": 62, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 1.9375, + "input_f64_hex": "0x3FFF000000000000", + "gf8_bfp_bits_hex": "0x3F", + "gf8_bfp_bits_int": 63, + "decoded_f64": 1.9375, + "decoded_f64_hex": "0x3FFF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "gf8_bfp_bits_hex": "0x40", + "gf8_bfp_bits_int": 64, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 2.125, + "input_f64_hex": "0x4001000000000000", + "gf8_bfp_bits_hex": "0x41", + "gf8_bfp_bits_int": 65, + "decoded_f64": 2.125, + "decoded_f64_hex": "0x4001000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "gf8_bfp_bits_hex": "0x42", + "gf8_bfp_bits_int": 66, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 2.375, + "input_f64_hex": "0x4003000000000000", + "gf8_bfp_bits_hex": "0x43", + "gf8_bfp_bits_int": 67, + "decoded_f64": 2.375, + "decoded_f64_hex": "0x4003000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "gf8_bfp_bits_hex": "0x44", + "gf8_bfp_bits_int": 68, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 2.625, + "input_f64_hex": "0x4005000000000000", + "gf8_bfp_bits_hex": "0x45", + "gf8_bfp_bits_int": 69, + "decoded_f64": 2.625, + "decoded_f64_hex": "0x4005000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "gf8_bfp_bits_hex": "0x46", + "gf8_bfp_bits_int": 70, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 2.875, + "input_f64_hex": "0x4007000000000000", + "gf8_bfp_bits_hex": "0x47", + "gf8_bfp_bits_int": 71, + "decoded_f64": 2.875, + "decoded_f64_hex": "0x4007000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "gf8_bfp_bits_hex": "0x48", + "gf8_bfp_bits_int": 72, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 3.125, + "input_f64_hex": "0x4009000000000000", + "gf8_bfp_bits_hex": "0x49", + "gf8_bfp_bits_int": 73, + "decoded_f64": 3.125, + "decoded_f64_hex": "0x4009000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "gf8_bfp_bits_hex": "0x4A", + "gf8_bfp_bits_int": 74, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 3.375, + "input_f64_hex": "0x400B000000000000", + "gf8_bfp_bits_hex": "0x4B", + "gf8_bfp_bits_int": 75, + "decoded_f64": 3.375, + "decoded_f64_hex": "0x400B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "gf8_bfp_bits_hex": "0x4C", + "gf8_bfp_bits_int": 76, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 3.625, + "input_f64_hex": "0x400D000000000000", + "gf8_bfp_bits_hex": "0x4D", + "gf8_bfp_bits_int": 77, + "decoded_f64": 3.625, + "decoded_f64_hex": "0x400D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "gf8_bfp_bits_hex": "0x4E", + "gf8_bfp_bits_int": 78, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 3.875, + "input_f64_hex": "0x400F000000000000", + "gf8_bfp_bits_hex": "0x4F", + "gf8_bfp_bits_int": 79, + "decoded_f64": 3.875, + "decoded_f64_hex": "0x400F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "gf8_bfp_bits_hex": "0x50", + "gf8_bfp_bits_int": 80, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 4.25, + "input_f64_hex": "0x4011000000000000", + "gf8_bfp_bits_hex": "0x51", + "gf8_bfp_bits_int": 81, + "decoded_f64": 4.25, + "decoded_f64_hex": "0x4011000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 4.5, + "input_f64_hex": "0x4012000000000000", + "gf8_bfp_bits_hex": "0x52", + "gf8_bfp_bits_int": 82, + "decoded_f64": 4.5, + "decoded_f64_hex": "0x4012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 4.75, + "input_f64_hex": "0x4013000000000000", + "gf8_bfp_bits_hex": "0x53", + "gf8_bfp_bits_int": 83, + "decoded_f64": 4.75, + "decoded_f64_hex": "0x4013000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "gf8_bfp_bits_hex": "0x54", + "gf8_bfp_bits_int": 84, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 5.25, + "input_f64_hex": "0x4015000000000000", + "gf8_bfp_bits_hex": "0x55", + "gf8_bfp_bits_int": 85, + "decoded_f64": 5.25, + "decoded_f64_hex": "0x4015000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 5.5, + "input_f64_hex": "0x4016000000000000", + "gf8_bfp_bits_hex": "0x56", + "gf8_bfp_bits_int": 86, + "decoded_f64": 5.5, + "decoded_f64_hex": "0x4016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 5.75, + "input_f64_hex": "0x4017000000000000", + "gf8_bfp_bits_hex": "0x57", + "gf8_bfp_bits_int": 87, + "decoded_f64": 5.75, + "decoded_f64_hex": "0x4017000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "gf8_bfp_bits_hex": "0x58", + "gf8_bfp_bits_int": 88, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 6.25, + "input_f64_hex": "0x4019000000000000", + "gf8_bfp_bits_hex": "0x59", + "gf8_bfp_bits_int": 89, + "decoded_f64": 6.25, + "decoded_f64_hex": "0x4019000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 6.5, + "input_f64_hex": "0x401A000000000000", + "gf8_bfp_bits_hex": "0x5A", + "gf8_bfp_bits_int": 90, + "decoded_f64": 6.5, + "decoded_f64_hex": "0x401A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 6.75, + "input_f64_hex": "0x401B000000000000", + "gf8_bfp_bits_hex": "0x5B", + "gf8_bfp_bits_int": 91, + "decoded_f64": 6.75, + "decoded_f64_hex": "0x401B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "gf8_bfp_bits_hex": "0x5C", + "gf8_bfp_bits_int": 92, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 7.25, + "input_f64_hex": "0x401D000000000000", + "gf8_bfp_bits_hex": "0x5D", + "gf8_bfp_bits_int": 93, + "decoded_f64": 7.25, + "decoded_f64_hex": "0x401D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 7.5, + "input_f64_hex": "0x401E000000000000", + "gf8_bfp_bits_hex": "0x5E", + "gf8_bfp_bits_int": 94, + "decoded_f64": 7.5, + "decoded_f64_hex": "0x401E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 7.75, + "input_f64_hex": "0x401F000000000000", + "gf8_bfp_bits_hex": "0x5F", + "gf8_bfp_bits_int": 95, + "decoded_f64": 7.75, + "decoded_f64_hex": "0x401F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "gf8_bfp_bits_hex": "0x60", + "gf8_bfp_bits_int": 96, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 8.5, + "input_f64_hex": "0x4021000000000000", + "gf8_bfp_bits_hex": "0x61", + "gf8_bfp_bits_int": 97, + "decoded_f64": 8.5, + "decoded_f64_hex": "0x4021000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 9.0, + "input_f64_hex": "0x4022000000000000", + "gf8_bfp_bits_hex": "0x62", + "gf8_bfp_bits_int": 98, + "decoded_f64": 9.0, + "decoded_f64_hex": "0x4022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 9.5, + "input_f64_hex": "0x4023000000000000", + "gf8_bfp_bits_hex": "0x63", + "gf8_bfp_bits_int": 99, + "decoded_f64": 9.5, + "decoded_f64_hex": "0x4023000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "gf8_bfp_bits_hex": "0x64", + "gf8_bfp_bits_int": 100, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 10.5, + "input_f64_hex": "0x4025000000000000", + "gf8_bfp_bits_hex": "0x65", + "gf8_bfp_bits_int": 101, + "decoded_f64": 10.5, + "decoded_f64_hex": "0x4025000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 11.0, + "input_f64_hex": "0x4026000000000000", + "gf8_bfp_bits_hex": "0x66", + "gf8_bfp_bits_int": 102, + "decoded_f64": 11.0, + "decoded_f64_hex": "0x4026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 11.5, + "input_f64_hex": "0x4027000000000000", + "gf8_bfp_bits_hex": "0x67", + "gf8_bfp_bits_int": 103, + "decoded_f64": 11.5, + "decoded_f64_hex": "0x4027000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "gf8_bfp_bits_hex": "0x68", + "gf8_bfp_bits_int": 104, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 12.5, + "input_f64_hex": "0x4029000000000000", + "gf8_bfp_bits_hex": "0x69", + "gf8_bfp_bits_int": 105, + "decoded_f64": 12.5, + "decoded_f64_hex": "0x4029000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 13.0, + "input_f64_hex": "0x402A000000000000", + "gf8_bfp_bits_hex": "0x6A", + "gf8_bfp_bits_int": 106, + "decoded_f64": 13.0, + "decoded_f64_hex": "0x402A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 13.5, + "input_f64_hex": "0x402B000000000000", + "gf8_bfp_bits_hex": "0x6B", + "gf8_bfp_bits_int": 107, + "decoded_f64": 13.5, + "decoded_f64_hex": "0x402B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "gf8_bfp_bits_hex": "0x6C", + "gf8_bfp_bits_int": 108, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 14.5, + "input_f64_hex": "0x402D000000000000", + "gf8_bfp_bits_hex": "0x6D", + "gf8_bfp_bits_int": 109, + "decoded_f64": 14.5, + "decoded_f64_hex": "0x402D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 15.0, + "input_f64_hex": "0x402E000000000000", + "gf8_bfp_bits_hex": "0x6E", + "gf8_bfp_bits_int": 110, + "decoded_f64": 15.0, + "decoded_f64_hex": "0x402E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 15.5, + "input_f64_hex": "0x402F000000000000", + "gf8_bfp_bits_hex": "0x6F", + "gf8_bfp_bits_int": 111, + "decoded_f64": 15.5, + "decoded_f64_hex": "0x402F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "gf8_bfp_bits_hex": "0x70", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x71", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x72", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x73", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x74", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x75", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x76", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x77", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x78", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x79", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x7A", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x7B", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x7C", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x7D", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x7E", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x7F", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0x80", + "gf8_bfp_bits_int": 128, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x81", + "input_f64": -0.015625, + "input_f64_hex": "0xBF90000000000000", + "gf8_bfp_bits_hex": "0x81", + "gf8_bfp_bits_int": 129, + "decoded_f64": -0.015625, + "decoded_f64_hex": "0xBF90000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x82", + "input_f64": -0.03125, + "input_f64_hex": "0xBFA0000000000000", + "gf8_bfp_bits_hex": "0x82", + "gf8_bfp_bits_int": 130, + "decoded_f64": -0.03125, + "decoded_f64_hex": "0xBFA0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x83", + "input_f64": -0.046875, + "input_f64_hex": "0xBFA8000000000000", + "gf8_bfp_bits_hex": "0x83", + "gf8_bfp_bits_int": 131, + "decoded_f64": -0.046875, + "decoded_f64_hex": "0xBFA8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x84", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "gf8_bfp_bits_hex": "0x84", + "gf8_bfp_bits_int": 132, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x85", + "input_f64": -0.078125, + "input_f64_hex": "0xBFB4000000000000", + "gf8_bfp_bits_hex": "0x85", + "gf8_bfp_bits_int": 133, + "decoded_f64": -0.078125, + "decoded_f64_hex": "0xBFB4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x86", + "input_f64": -0.09375, + "input_f64_hex": "0xBFB8000000000000", + "gf8_bfp_bits_hex": "0x86", + "gf8_bfp_bits_int": 134, + "decoded_f64": -0.09375, + "decoded_f64_hex": "0xBFB8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x87", + "input_f64": -0.109375, + "input_f64_hex": "0xBFBC000000000000", + "gf8_bfp_bits_hex": "0x87", + "gf8_bfp_bits_int": 135, + "decoded_f64": -0.109375, + "decoded_f64_hex": "0xBFBC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x88", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "gf8_bfp_bits_hex": "0x88", + "gf8_bfp_bits_int": 136, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x89", + "input_f64": -0.140625, + "input_f64_hex": "0xBFC2000000000000", + "gf8_bfp_bits_hex": "0x89", + "gf8_bfp_bits_int": 137, + "decoded_f64": -0.140625, + "decoded_f64_hex": "0xBFC2000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8A", + "input_f64": -0.15625, + "input_f64_hex": "0xBFC4000000000000", + "gf8_bfp_bits_hex": "0x8A", + "gf8_bfp_bits_int": 138, + "decoded_f64": -0.15625, + "decoded_f64_hex": "0xBFC4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8B", + "input_f64": -0.171875, + "input_f64_hex": "0xBFC6000000000000", + "gf8_bfp_bits_hex": "0x8B", + "gf8_bfp_bits_int": 139, + "decoded_f64": -0.171875, + "decoded_f64_hex": "0xBFC6000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8C", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "gf8_bfp_bits_hex": "0x8C", + "gf8_bfp_bits_int": 140, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8D", + "input_f64": -0.203125, + "input_f64_hex": "0xBFCA000000000000", + "gf8_bfp_bits_hex": "0x8D", + "gf8_bfp_bits_int": 141, + "decoded_f64": -0.203125, + "decoded_f64_hex": "0xBFCA000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8E", + "input_f64": -0.21875, + "input_f64_hex": "0xBFCC000000000000", + "gf8_bfp_bits_hex": "0x8E", + "gf8_bfp_bits_int": 142, + "decoded_f64": -0.21875, + "decoded_f64_hex": "0xBFCC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8F", + "input_f64": -0.234375, + "input_f64_hex": "0xBFCE000000000000", + "gf8_bfp_bits_hex": "0x8F", + "gf8_bfp_bits_int": 143, + "decoded_f64": -0.234375, + "decoded_f64_hex": "0xBFCE000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x90", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "gf8_bfp_bits_hex": "0x90", + "gf8_bfp_bits_int": 144, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -0.265625, + "input_f64_hex": "0xBFD1000000000000", + "gf8_bfp_bits_hex": "0x91", + "gf8_bfp_bits_int": 145, + "decoded_f64": -0.265625, + "decoded_f64_hex": "0xBFD1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -0.28125, + "input_f64_hex": "0xBFD2000000000000", + "gf8_bfp_bits_hex": "0x92", + "gf8_bfp_bits_int": 146, + "decoded_f64": -0.28125, + "decoded_f64_hex": "0xBFD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -0.296875, + "input_f64_hex": "0xBFD3000000000000", + "gf8_bfp_bits_hex": "0x93", + "gf8_bfp_bits_int": 147, + "decoded_f64": -0.296875, + "decoded_f64_hex": "0xBFD3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "gf8_bfp_bits_hex": "0x94", + "gf8_bfp_bits_int": 148, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -0.328125, + "input_f64_hex": "0xBFD5000000000000", + "gf8_bfp_bits_hex": "0x95", + "gf8_bfp_bits_int": 149, + "decoded_f64": -0.328125, + "decoded_f64_hex": "0xBFD5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -0.34375, + "input_f64_hex": "0xBFD6000000000000", + "gf8_bfp_bits_hex": "0x96", + "gf8_bfp_bits_int": 150, + "decoded_f64": -0.34375, + "decoded_f64_hex": "0xBFD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -0.359375, + "input_f64_hex": "0xBFD7000000000000", + "gf8_bfp_bits_hex": "0x97", + "gf8_bfp_bits_int": 151, + "decoded_f64": -0.359375, + "decoded_f64_hex": "0xBFD7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "gf8_bfp_bits_hex": "0x98", + "gf8_bfp_bits_int": 152, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -0.390625, + "input_f64_hex": "0xBFD9000000000000", + "gf8_bfp_bits_hex": "0x99", + "gf8_bfp_bits_int": 153, + "decoded_f64": -0.390625, + "decoded_f64_hex": "0xBFD9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -0.40625, + "input_f64_hex": "0xBFDA000000000000", + "gf8_bfp_bits_hex": "0x9A", + "gf8_bfp_bits_int": 154, + "decoded_f64": -0.40625, + "decoded_f64_hex": "0xBFDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -0.421875, + "input_f64_hex": "0xBFDB000000000000", + "gf8_bfp_bits_hex": "0x9B", + "gf8_bfp_bits_int": 155, + "decoded_f64": -0.421875, + "decoded_f64_hex": "0xBFDB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "gf8_bfp_bits_hex": "0x9C", + "gf8_bfp_bits_int": 156, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -0.453125, + "input_f64_hex": "0xBFDD000000000000", + "gf8_bfp_bits_hex": "0x9D", + "gf8_bfp_bits_int": 157, + "decoded_f64": -0.453125, + "decoded_f64_hex": "0xBFDD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -0.46875, + "input_f64_hex": "0xBFDE000000000000", + "gf8_bfp_bits_hex": "0x9E", + "gf8_bfp_bits_int": 158, + "decoded_f64": -0.46875, + "decoded_f64_hex": "0xBFDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -0.484375, + "input_f64_hex": "0xBFDF000000000000", + "gf8_bfp_bits_hex": "0x9F", + "gf8_bfp_bits_int": 159, + "decoded_f64": -0.484375, + "decoded_f64_hex": "0xBFDF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "gf8_bfp_bits_hex": "0xA0", + "gf8_bfp_bits_int": 160, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -0.53125, + "input_f64_hex": "0xBFE1000000000000", + "gf8_bfp_bits_hex": "0xA1", + "gf8_bfp_bits_int": 161, + "decoded_f64": -0.53125, + "decoded_f64_hex": "0xBFE1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -0.5625, + "input_f64_hex": "0xBFE2000000000000", + "gf8_bfp_bits_hex": "0xA2", + "gf8_bfp_bits_int": 162, + "decoded_f64": -0.5625, + "decoded_f64_hex": "0xBFE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -0.59375, + "input_f64_hex": "0xBFE3000000000000", + "gf8_bfp_bits_hex": "0xA3", + "gf8_bfp_bits_int": 163, + "decoded_f64": -0.59375, + "decoded_f64_hex": "0xBFE3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "gf8_bfp_bits_hex": "0xA4", + "gf8_bfp_bits_int": 164, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -0.65625, + "input_f64_hex": "0xBFE5000000000000", + "gf8_bfp_bits_hex": "0xA5", + "gf8_bfp_bits_int": 165, + "decoded_f64": -0.65625, + "decoded_f64_hex": "0xBFE5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -0.6875, + "input_f64_hex": "0xBFE6000000000000", + "gf8_bfp_bits_hex": "0xA6", + "gf8_bfp_bits_int": 166, + "decoded_f64": -0.6875, + "decoded_f64_hex": "0xBFE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -0.71875, + "input_f64_hex": "0xBFE7000000000000", + "gf8_bfp_bits_hex": "0xA7", + "gf8_bfp_bits_int": 167, + "decoded_f64": -0.71875, + "decoded_f64_hex": "0xBFE7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "gf8_bfp_bits_hex": "0xA8", + "gf8_bfp_bits_int": 168, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -0.78125, + "input_f64_hex": "0xBFE9000000000000", + "gf8_bfp_bits_hex": "0xA9", + "gf8_bfp_bits_int": 169, + "decoded_f64": -0.78125, + "decoded_f64_hex": "0xBFE9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -0.8125, + "input_f64_hex": "0xBFEA000000000000", + "gf8_bfp_bits_hex": "0xAA", + "gf8_bfp_bits_int": 170, + "decoded_f64": -0.8125, + "decoded_f64_hex": "0xBFEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -0.84375, + "input_f64_hex": "0xBFEB000000000000", + "gf8_bfp_bits_hex": "0xAB", + "gf8_bfp_bits_int": 171, + "decoded_f64": -0.84375, + "decoded_f64_hex": "0xBFEB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "gf8_bfp_bits_hex": "0xAC", + "gf8_bfp_bits_int": 172, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -0.90625, + "input_f64_hex": "0xBFED000000000000", + "gf8_bfp_bits_hex": "0xAD", + "gf8_bfp_bits_int": 173, + "decoded_f64": -0.90625, + "decoded_f64_hex": "0xBFED000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -0.9375, + "input_f64_hex": "0xBFEE000000000000", + "gf8_bfp_bits_hex": "0xAE", + "gf8_bfp_bits_int": 174, + "decoded_f64": -0.9375, + "decoded_f64_hex": "0xBFEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -0.96875, + "input_f64_hex": "0xBFEF000000000000", + "gf8_bfp_bits_hex": "0xAF", + "gf8_bfp_bits_int": 175, + "decoded_f64": -0.96875, + "decoded_f64_hex": "0xBFEF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "gf8_bfp_bits_hex": "0xB0", + "gf8_bfp_bits_int": 176, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -1.0625, + "input_f64_hex": "0xBFF1000000000000", + "gf8_bfp_bits_hex": "0xB1", + "gf8_bfp_bits_int": 177, + "decoded_f64": -1.0625, + "decoded_f64_hex": "0xBFF1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "gf8_bfp_bits_hex": "0xB2", + "gf8_bfp_bits_int": 178, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -1.1875, + "input_f64_hex": "0xBFF3000000000000", + "gf8_bfp_bits_hex": "0xB3", + "gf8_bfp_bits_int": 179, + "decoded_f64": -1.1875, + "decoded_f64_hex": "0xBFF3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "gf8_bfp_bits_hex": "0xB4", + "gf8_bfp_bits_int": 180, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -1.3125, + "input_f64_hex": "0xBFF5000000000000", + "gf8_bfp_bits_hex": "0xB5", + "gf8_bfp_bits_int": 181, + "decoded_f64": -1.3125, + "decoded_f64_hex": "0xBFF5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "gf8_bfp_bits_hex": "0xB6", + "gf8_bfp_bits_int": 182, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -1.4375, + "input_f64_hex": "0xBFF7000000000000", + "gf8_bfp_bits_hex": "0xB7", + "gf8_bfp_bits_int": 183, + "decoded_f64": -1.4375, + "decoded_f64_hex": "0xBFF7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "gf8_bfp_bits_hex": "0xB8", + "gf8_bfp_bits_int": 184, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -1.5625, + "input_f64_hex": "0xBFF9000000000000", + "gf8_bfp_bits_hex": "0xB9", + "gf8_bfp_bits_int": 185, + "decoded_f64": -1.5625, + "decoded_f64_hex": "0xBFF9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "gf8_bfp_bits_hex": "0xBA", + "gf8_bfp_bits_int": 186, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -1.6875, + "input_f64_hex": "0xBFFB000000000000", + "gf8_bfp_bits_hex": "0xBB", + "gf8_bfp_bits_int": 187, + "decoded_f64": -1.6875, + "decoded_f64_hex": "0xBFFB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "gf8_bfp_bits_hex": "0xBC", + "gf8_bfp_bits_int": 188, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -1.8125, + "input_f64_hex": "0xBFFD000000000000", + "gf8_bfp_bits_hex": "0xBD", + "gf8_bfp_bits_int": 189, + "decoded_f64": -1.8125, + "decoded_f64_hex": "0xBFFD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "gf8_bfp_bits_hex": "0xBE", + "gf8_bfp_bits_int": 190, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -1.9375, + "input_f64_hex": "0xBFFF000000000000", + "gf8_bfp_bits_hex": "0xBF", + "gf8_bfp_bits_int": 191, + "decoded_f64": -1.9375, + "decoded_f64_hex": "0xBFFF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "gf8_bfp_bits_hex": "0xC0", + "gf8_bfp_bits_int": 192, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -2.125, + "input_f64_hex": "0xC001000000000000", + "gf8_bfp_bits_hex": "0xC1", + "gf8_bfp_bits_int": 193, + "decoded_f64": -2.125, + "decoded_f64_hex": "0xC001000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "gf8_bfp_bits_hex": "0xC2", + "gf8_bfp_bits_int": 194, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -2.375, + "input_f64_hex": "0xC003000000000000", + "gf8_bfp_bits_hex": "0xC3", + "gf8_bfp_bits_int": 195, + "decoded_f64": -2.375, + "decoded_f64_hex": "0xC003000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "gf8_bfp_bits_hex": "0xC4", + "gf8_bfp_bits_int": 196, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -2.625, + "input_f64_hex": "0xC005000000000000", + "gf8_bfp_bits_hex": "0xC5", + "gf8_bfp_bits_int": 197, + "decoded_f64": -2.625, + "decoded_f64_hex": "0xC005000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "gf8_bfp_bits_hex": "0xC6", + "gf8_bfp_bits_int": 198, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -2.875, + "input_f64_hex": "0xC007000000000000", + "gf8_bfp_bits_hex": "0xC7", + "gf8_bfp_bits_int": 199, + "decoded_f64": -2.875, + "decoded_f64_hex": "0xC007000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "gf8_bfp_bits_hex": "0xC8", + "gf8_bfp_bits_int": 200, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -3.125, + "input_f64_hex": "0xC009000000000000", + "gf8_bfp_bits_hex": "0xC9", + "gf8_bfp_bits_int": 201, + "decoded_f64": -3.125, + "decoded_f64_hex": "0xC009000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "gf8_bfp_bits_hex": "0xCA", + "gf8_bfp_bits_int": 202, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -3.375, + "input_f64_hex": "0xC00B000000000000", + "gf8_bfp_bits_hex": "0xCB", + "gf8_bfp_bits_int": 203, + "decoded_f64": -3.375, + "decoded_f64_hex": "0xC00B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "gf8_bfp_bits_hex": "0xCC", + "gf8_bfp_bits_int": 204, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -3.625, + "input_f64_hex": "0xC00D000000000000", + "gf8_bfp_bits_hex": "0xCD", + "gf8_bfp_bits_int": 205, + "decoded_f64": -3.625, + "decoded_f64_hex": "0xC00D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "gf8_bfp_bits_hex": "0xCE", + "gf8_bfp_bits_int": 206, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -3.875, + "input_f64_hex": "0xC00F000000000000", + "gf8_bfp_bits_hex": "0xCF", + "gf8_bfp_bits_int": 207, + "decoded_f64": -3.875, + "decoded_f64_hex": "0xC00F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "gf8_bfp_bits_hex": "0xD0", + "gf8_bfp_bits_int": 208, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -4.25, + "input_f64_hex": "0xC011000000000000", + "gf8_bfp_bits_hex": "0xD1", + "gf8_bfp_bits_int": 209, + "decoded_f64": -4.25, + "decoded_f64_hex": "0xC011000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -4.5, + "input_f64_hex": "0xC012000000000000", + "gf8_bfp_bits_hex": "0xD2", + "gf8_bfp_bits_int": 210, + "decoded_f64": -4.5, + "decoded_f64_hex": "0xC012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -4.75, + "input_f64_hex": "0xC013000000000000", + "gf8_bfp_bits_hex": "0xD3", + "gf8_bfp_bits_int": 211, + "decoded_f64": -4.75, + "decoded_f64_hex": "0xC013000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "gf8_bfp_bits_hex": "0xD4", + "gf8_bfp_bits_int": 212, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -5.25, + "input_f64_hex": "0xC015000000000000", + "gf8_bfp_bits_hex": "0xD5", + "gf8_bfp_bits_int": 213, + "decoded_f64": -5.25, + "decoded_f64_hex": "0xC015000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -5.5, + "input_f64_hex": "0xC016000000000000", + "gf8_bfp_bits_hex": "0xD6", + "gf8_bfp_bits_int": 214, + "decoded_f64": -5.5, + "decoded_f64_hex": "0xC016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -5.75, + "input_f64_hex": "0xC017000000000000", + "gf8_bfp_bits_hex": "0xD7", + "gf8_bfp_bits_int": 215, + "decoded_f64": -5.75, + "decoded_f64_hex": "0xC017000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "gf8_bfp_bits_hex": "0xD8", + "gf8_bfp_bits_int": 216, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -6.25, + "input_f64_hex": "0xC019000000000000", + "gf8_bfp_bits_hex": "0xD9", + "gf8_bfp_bits_int": 217, + "decoded_f64": -6.25, + "decoded_f64_hex": "0xC019000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -6.5, + "input_f64_hex": "0xC01A000000000000", + "gf8_bfp_bits_hex": "0xDA", + "gf8_bfp_bits_int": 218, + "decoded_f64": -6.5, + "decoded_f64_hex": "0xC01A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -6.75, + "input_f64_hex": "0xC01B000000000000", + "gf8_bfp_bits_hex": "0xDB", + "gf8_bfp_bits_int": 219, + "decoded_f64": -6.75, + "decoded_f64_hex": "0xC01B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "gf8_bfp_bits_hex": "0xDC", + "gf8_bfp_bits_int": 220, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -7.25, + "input_f64_hex": "0xC01D000000000000", + "gf8_bfp_bits_hex": "0xDD", + "gf8_bfp_bits_int": 221, + "decoded_f64": -7.25, + "decoded_f64_hex": "0xC01D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -7.5, + "input_f64_hex": "0xC01E000000000000", + "gf8_bfp_bits_hex": "0xDE", + "gf8_bfp_bits_int": 222, + "decoded_f64": -7.5, + "decoded_f64_hex": "0xC01E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -7.75, + "input_f64_hex": "0xC01F000000000000", + "gf8_bfp_bits_hex": "0xDF", + "gf8_bfp_bits_int": 223, + "decoded_f64": -7.75, + "decoded_f64_hex": "0xC01F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "gf8_bfp_bits_hex": "0xE0", + "gf8_bfp_bits_int": 224, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -8.5, + "input_f64_hex": "0xC021000000000000", + "gf8_bfp_bits_hex": "0xE1", + "gf8_bfp_bits_int": 225, + "decoded_f64": -8.5, + "decoded_f64_hex": "0xC021000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -9.0, + "input_f64_hex": "0xC022000000000000", + "gf8_bfp_bits_hex": "0xE2", + "gf8_bfp_bits_int": 226, + "decoded_f64": -9.0, + "decoded_f64_hex": "0xC022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -9.5, + "input_f64_hex": "0xC023000000000000", + "gf8_bfp_bits_hex": "0xE3", + "gf8_bfp_bits_int": 227, + "decoded_f64": -9.5, + "decoded_f64_hex": "0xC023000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "gf8_bfp_bits_hex": "0xE4", + "gf8_bfp_bits_int": 228, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -10.5, + "input_f64_hex": "0xC025000000000000", + "gf8_bfp_bits_hex": "0xE5", + "gf8_bfp_bits_int": 229, + "decoded_f64": -10.5, + "decoded_f64_hex": "0xC025000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -11.0, + "input_f64_hex": "0xC026000000000000", + "gf8_bfp_bits_hex": "0xE6", + "gf8_bfp_bits_int": 230, + "decoded_f64": -11.0, + "decoded_f64_hex": "0xC026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -11.5, + "input_f64_hex": "0xC027000000000000", + "gf8_bfp_bits_hex": "0xE7", + "gf8_bfp_bits_int": 231, + "decoded_f64": -11.5, + "decoded_f64_hex": "0xC027000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "gf8_bfp_bits_hex": "0xE8", + "gf8_bfp_bits_int": 232, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -12.5, + "input_f64_hex": "0xC029000000000000", + "gf8_bfp_bits_hex": "0xE9", + "gf8_bfp_bits_int": 233, + "decoded_f64": -12.5, + "decoded_f64_hex": "0xC029000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -13.0, + "input_f64_hex": "0xC02A000000000000", + "gf8_bfp_bits_hex": "0xEA", + "gf8_bfp_bits_int": 234, + "decoded_f64": -13.0, + "decoded_f64_hex": "0xC02A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -13.5, + "input_f64_hex": "0xC02B000000000000", + "gf8_bfp_bits_hex": "0xEB", + "gf8_bfp_bits_int": 235, + "decoded_f64": -13.5, + "decoded_f64_hex": "0xC02B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "gf8_bfp_bits_hex": "0xEC", + "gf8_bfp_bits_int": 236, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -14.5, + "input_f64_hex": "0xC02D000000000000", + "gf8_bfp_bits_hex": "0xED", + "gf8_bfp_bits_int": 237, + "decoded_f64": -14.5, + "decoded_f64_hex": "0xC02D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -15.0, + "input_f64_hex": "0xC02E000000000000", + "gf8_bfp_bits_hex": "0xEE", + "gf8_bfp_bits_int": 238, + "decoded_f64": -15.0, + "decoded_f64_hex": "0xC02E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -15.5, + "input_f64_hex": "0xC02F000000000000", + "gf8_bfp_bits_hex": "0xEF", + "gf8_bfp_bits_int": 239, + "decoded_f64": -15.5, + "decoded_f64_hex": "0xC02F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "gf8_bfp_bits_hex": "0xF0", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF1", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF2", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF3", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF4", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF5", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF6", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF7", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF8", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xF9", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xFA", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xFB", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xFC", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xFD", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xFE", + "gf8_bfp_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", + "gf8_bfp_bits_hex": "0xFF", + "gf8_bfp_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/gf8_conformance_v0.json b/conformance/vectors/gf8_conformance_v0.json new file mode 100644 index 000000000..8975552b7 --- /dev/null +++ b/conformance/vectors/gf8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF8", + "format_name": "GF8", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E3M4, bias 3. IEEE-style specials at top exponent", + "catalog": { + "id": "gf8", + "bits": 8, + "s": 1, + "e": 3, + "m": 4, + "bias": 3, + "storage": "u8", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; L1 Lucas", + "use_case": "edge / sensors", + "gf_relation": "self", + "source": "BENCH-007 (specs/numeric/gf8.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": 3.0, + "expected": 3.0, + "ieee754_exact": true, + "gf8_bits_hex": "0x48" + }, + "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": 15.5, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "gf8_bits_hex": "0x00", + "gf8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.015625, + "input_f64_hex": "0x3F90000000000000", + "gf8_bits_hex": "0x01", + "gf8_bits_int": 1, + "decoded_f64": 0.015625, + "decoded_f64_hex": "0x3F90000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.03125, + "input_f64_hex": "0x3FA0000000000000", + "gf8_bits_hex": "0x02", + "gf8_bits_int": 2, + "decoded_f64": 0.03125, + "decoded_f64_hex": "0x3FA0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.046875, + "input_f64_hex": "0x3FA8000000000000", + "gf8_bits_hex": "0x03", + "gf8_bits_int": 3, + "decoded_f64": 0.046875, + "decoded_f64_hex": "0x3FA8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "gf8_bits_hex": "0x04", + "gf8_bits_int": 4, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 0.078125, + "input_f64_hex": "0x3FB4000000000000", + "gf8_bits_hex": "0x05", + "gf8_bits_int": 5, + "decoded_f64": 0.078125, + "decoded_f64_hex": "0x3FB4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 0.09375, + "input_f64_hex": "0x3FB8000000000000", + "gf8_bits_hex": "0x06", + "gf8_bits_int": 6, + "decoded_f64": 0.09375, + "decoded_f64_hex": "0x3FB8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.109375, + "input_f64_hex": "0x3FBC000000000000", + "gf8_bits_hex": "0x07", + "gf8_bits_int": 7, + "decoded_f64": 0.109375, + "decoded_f64_hex": "0x3FBC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "gf8_bits_hex": "0x08", + "gf8_bits_int": 8, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x09", + "input_f64": 0.140625, + "input_f64_hex": "0x3FC2000000000000", + "gf8_bits_hex": "0x09", + "gf8_bits_int": 9, + "decoded_f64": 0.140625, + "decoded_f64_hex": "0x3FC2000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": 0.15625, + "input_f64_hex": "0x3FC4000000000000", + "gf8_bits_hex": "0x0A", + "gf8_bits_int": 10, + "decoded_f64": 0.15625, + "decoded_f64_hex": "0x3FC4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": 0.171875, + "input_f64_hex": "0x3FC6000000000000", + "gf8_bits_hex": "0x0B", + "gf8_bits_int": 11, + "decoded_f64": 0.171875, + "decoded_f64_hex": "0x3FC6000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "gf8_bits_hex": "0x0C", + "gf8_bits_int": 12, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0D", + "input_f64": 0.203125, + "input_f64_hex": "0x3FCA000000000000", + "gf8_bits_hex": "0x0D", + "gf8_bits_int": 13, + "decoded_f64": 0.203125, + "decoded_f64_hex": "0x3FCA000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0E", + "input_f64": 0.21875, + "input_f64_hex": "0x3FCC000000000000", + "gf8_bits_hex": "0x0E", + "gf8_bits_int": 14, + "decoded_f64": 0.21875, + "decoded_f64_hex": "0x3FCC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0F", + "input_f64": 0.234375, + "input_f64_hex": "0x3FCE000000000000", + "gf8_bits_hex": "0x0F", + "gf8_bits_int": 15, + "decoded_f64": 0.234375, + "decoded_f64_hex": "0x3FCE000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x10", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "gf8_bits_hex": "0x10", + "gf8_bits_int": 16, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.265625, + "input_f64_hex": "0x3FD1000000000000", + "gf8_bits_hex": "0x11", + "gf8_bits_int": 17, + "decoded_f64": 0.265625, + "decoded_f64_hex": "0x3FD1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.28125, + "input_f64_hex": "0x3FD2000000000000", + "gf8_bits_hex": "0x12", + "gf8_bits_int": 18, + "decoded_f64": 0.28125, + "decoded_f64_hex": "0x3FD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.296875, + "input_f64_hex": "0x3FD3000000000000", + "gf8_bits_hex": "0x13", + "gf8_bits_int": 19, + "decoded_f64": 0.296875, + "decoded_f64_hex": "0x3FD3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "gf8_bits_hex": "0x14", + "gf8_bits_int": 20, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.328125, + "input_f64_hex": "0x3FD5000000000000", + "gf8_bits_hex": "0x15", + "gf8_bits_int": 21, + "decoded_f64": 0.328125, + "decoded_f64_hex": "0x3FD5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.34375, + "input_f64_hex": "0x3FD6000000000000", + "gf8_bits_hex": "0x16", + "gf8_bits_int": 22, + "decoded_f64": 0.34375, + "decoded_f64_hex": "0x3FD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.359375, + "input_f64_hex": "0x3FD7000000000000", + "gf8_bits_hex": "0x17", + "gf8_bits_int": 23, + "decoded_f64": 0.359375, + "decoded_f64_hex": "0x3FD7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "gf8_bits_hex": "0x18", + "gf8_bits_int": 24, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.390625, + "input_f64_hex": "0x3FD9000000000000", + "gf8_bits_hex": "0x19", + "gf8_bits_int": 25, + "decoded_f64": 0.390625, + "decoded_f64_hex": "0x3FD9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.40625, + "input_f64_hex": "0x3FDA000000000000", + "gf8_bits_hex": "0x1A", + "gf8_bits_int": 26, + "decoded_f64": 0.40625, + "decoded_f64_hex": "0x3FDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.421875, + "input_f64_hex": "0x3FDB000000000000", + "gf8_bits_hex": "0x1B", + "gf8_bits_int": 27, + "decoded_f64": 0.421875, + "decoded_f64_hex": "0x3FDB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "gf8_bits_hex": "0x1C", + "gf8_bits_int": 28, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.453125, + "input_f64_hex": "0x3FDD000000000000", + "gf8_bits_hex": "0x1D", + "gf8_bits_int": 29, + "decoded_f64": 0.453125, + "decoded_f64_hex": "0x3FDD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.46875, + "input_f64_hex": "0x3FDE000000000000", + "gf8_bits_hex": "0x1E", + "gf8_bits_int": 30, + "decoded_f64": 0.46875, + "decoded_f64_hex": "0x3FDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.484375, + "input_f64_hex": "0x3FDF000000000000", + "gf8_bits_hex": "0x1F", + "gf8_bits_int": 31, + "decoded_f64": 0.484375, + "decoded_f64_hex": "0x3FDF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "gf8_bits_hex": "0x20", + "gf8_bits_int": 32, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.53125, + "input_f64_hex": "0x3FE1000000000000", + "gf8_bits_hex": "0x21", + "gf8_bits_int": 33, + "decoded_f64": 0.53125, + "decoded_f64_hex": "0x3FE1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.5625, + "input_f64_hex": "0x3FE2000000000000", + "gf8_bits_hex": "0x22", + "gf8_bits_int": 34, + "decoded_f64": 0.5625, + "decoded_f64_hex": "0x3FE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.59375, + "input_f64_hex": "0x3FE3000000000000", + "gf8_bits_hex": "0x23", + "gf8_bits_int": 35, + "decoded_f64": 0.59375, + "decoded_f64_hex": "0x3FE3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "gf8_bits_hex": "0x24", + "gf8_bits_int": 36, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.65625, + "input_f64_hex": "0x3FE5000000000000", + "gf8_bits_hex": "0x25", + "gf8_bits_int": 37, + "decoded_f64": 0.65625, + "decoded_f64_hex": "0x3FE5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.6875, + "input_f64_hex": "0x3FE6000000000000", + "gf8_bits_hex": "0x26", + "gf8_bits_int": 38, + "decoded_f64": 0.6875, + "decoded_f64_hex": "0x3FE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.71875, + "input_f64_hex": "0x3FE7000000000000", + "gf8_bits_hex": "0x27", + "gf8_bits_int": 39, + "decoded_f64": 0.71875, + "decoded_f64_hex": "0x3FE7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "gf8_bits_hex": "0x28", + "gf8_bits_int": 40, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.78125, + "input_f64_hex": "0x3FE9000000000000", + "gf8_bits_hex": "0x29", + "gf8_bits_int": 41, + "decoded_f64": 0.78125, + "decoded_f64_hex": "0x3FE9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.8125, + "input_f64_hex": "0x3FEA000000000000", + "gf8_bits_hex": "0x2A", + "gf8_bits_int": 42, + "decoded_f64": 0.8125, + "decoded_f64_hex": "0x3FEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.84375, + "input_f64_hex": "0x3FEB000000000000", + "gf8_bits_hex": "0x2B", + "gf8_bits_int": 43, + "decoded_f64": 0.84375, + "decoded_f64_hex": "0x3FEB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "gf8_bits_hex": "0x2C", + "gf8_bits_int": 44, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.90625, + "input_f64_hex": "0x3FED000000000000", + "gf8_bits_hex": "0x2D", + "gf8_bits_int": 45, + "decoded_f64": 0.90625, + "decoded_f64_hex": "0x3FED000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.9375, + "input_f64_hex": "0x3FEE000000000000", + "gf8_bits_hex": "0x2E", + "gf8_bits_int": 46, + "decoded_f64": 0.9375, + "decoded_f64_hex": "0x3FEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.96875, + "input_f64_hex": "0x3FEF000000000000", + "gf8_bits_hex": "0x2F", + "gf8_bits_int": 47, + "decoded_f64": 0.96875, + "decoded_f64_hex": "0x3FEF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "gf8_bits_hex": "0x30", + "gf8_bits_int": 48, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 1.0625, + "input_f64_hex": "0x3FF1000000000000", + "gf8_bits_hex": "0x31", + "gf8_bits_int": 49, + "decoded_f64": 1.0625, + "decoded_f64_hex": "0x3FF1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "gf8_bits_hex": "0x32", + "gf8_bits_int": 50, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 1.1875, + "input_f64_hex": "0x3FF3000000000000", + "gf8_bits_hex": "0x33", + "gf8_bits_int": 51, + "decoded_f64": 1.1875, + "decoded_f64_hex": "0x3FF3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "gf8_bits_hex": "0x34", + "gf8_bits_int": 52, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 1.3125, + "input_f64_hex": "0x3FF5000000000000", + "gf8_bits_hex": "0x35", + "gf8_bits_int": 53, + "decoded_f64": 1.3125, + "decoded_f64_hex": "0x3FF5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "gf8_bits_hex": "0x36", + "gf8_bits_int": 54, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 1.4375, + "input_f64_hex": "0x3FF7000000000000", + "gf8_bits_hex": "0x37", + "gf8_bits_int": 55, + "decoded_f64": 1.4375, + "decoded_f64_hex": "0x3FF7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "gf8_bits_hex": "0x38", + "gf8_bits_int": 56, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 1.5625, + "input_f64_hex": "0x3FF9000000000000", + "gf8_bits_hex": "0x39", + "gf8_bits_int": 57, + "decoded_f64": 1.5625, + "decoded_f64_hex": "0x3FF9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "gf8_bits_hex": "0x3A", + "gf8_bits_int": 58, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 1.6875, + "input_f64_hex": "0x3FFB000000000000", + "gf8_bits_hex": "0x3B", + "gf8_bits_int": 59, + "decoded_f64": 1.6875, + "decoded_f64_hex": "0x3FFB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "gf8_bits_hex": "0x3C", + "gf8_bits_int": 60, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 1.8125, + "input_f64_hex": "0x3FFD000000000000", + "gf8_bits_hex": "0x3D", + "gf8_bits_int": 61, + "decoded_f64": 1.8125, + "decoded_f64_hex": "0x3FFD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "gf8_bits_hex": "0x3E", + "gf8_bits_int": 62, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 1.9375, + "input_f64_hex": "0x3FFF000000000000", + "gf8_bits_hex": "0x3F", + "gf8_bits_int": 63, + "decoded_f64": 1.9375, + "decoded_f64_hex": "0x3FFF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "gf8_bits_hex": "0x40", + "gf8_bits_int": 64, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 2.125, + "input_f64_hex": "0x4001000000000000", + "gf8_bits_hex": "0x41", + "gf8_bits_int": 65, + "decoded_f64": 2.125, + "decoded_f64_hex": "0x4001000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "gf8_bits_hex": "0x42", + "gf8_bits_int": 66, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 2.375, + "input_f64_hex": "0x4003000000000000", + "gf8_bits_hex": "0x43", + "gf8_bits_int": 67, + "decoded_f64": 2.375, + "decoded_f64_hex": "0x4003000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "gf8_bits_hex": "0x44", + "gf8_bits_int": 68, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 2.625, + "input_f64_hex": "0x4005000000000000", + "gf8_bits_hex": "0x45", + "gf8_bits_int": 69, + "decoded_f64": 2.625, + "decoded_f64_hex": "0x4005000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "gf8_bits_hex": "0x46", + "gf8_bits_int": 70, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 2.875, + "input_f64_hex": "0x4007000000000000", + "gf8_bits_hex": "0x47", + "gf8_bits_int": 71, + "decoded_f64": 2.875, + "decoded_f64_hex": "0x4007000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "gf8_bits_hex": "0x48", + "gf8_bits_int": 72, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 3.125, + "input_f64_hex": "0x4009000000000000", + "gf8_bits_hex": "0x49", + "gf8_bits_int": 73, + "decoded_f64": 3.125, + "decoded_f64_hex": "0x4009000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "gf8_bits_hex": "0x4A", + "gf8_bits_int": 74, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 3.375, + "input_f64_hex": "0x400B000000000000", + "gf8_bits_hex": "0x4B", + "gf8_bits_int": 75, + "decoded_f64": 3.375, + "decoded_f64_hex": "0x400B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "gf8_bits_hex": "0x4C", + "gf8_bits_int": 76, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 3.625, + "input_f64_hex": "0x400D000000000000", + "gf8_bits_hex": "0x4D", + "gf8_bits_int": 77, + "decoded_f64": 3.625, + "decoded_f64_hex": "0x400D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "gf8_bits_hex": "0x4E", + "gf8_bits_int": 78, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 3.875, + "input_f64_hex": "0x400F000000000000", + "gf8_bits_hex": "0x4F", + "gf8_bits_int": 79, + "decoded_f64": 3.875, + "decoded_f64_hex": "0x400F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "gf8_bits_hex": "0x50", + "gf8_bits_int": 80, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 4.25, + "input_f64_hex": "0x4011000000000000", + "gf8_bits_hex": "0x51", + "gf8_bits_int": 81, + "decoded_f64": 4.25, + "decoded_f64_hex": "0x4011000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 4.5, + "input_f64_hex": "0x4012000000000000", + "gf8_bits_hex": "0x52", + "gf8_bits_int": 82, + "decoded_f64": 4.5, + "decoded_f64_hex": "0x4012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 4.75, + "input_f64_hex": "0x4013000000000000", + "gf8_bits_hex": "0x53", + "gf8_bits_int": 83, + "decoded_f64": 4.75, + "decoded_f64_hex": "0x4013000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "gf8_bits_hex": "0x54", + "gf8_bits_int": 84, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 5.25, + "input_f64_hex": "0x4015000000000000", + "gf8_bits_hex": "0x55", + "gf8_bits_int": 85, + "decoded_f64": 5.25, + "decoded_f64_hex": "0x4015000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 5.5, + "input_f64_hex": "0x4016000000000000", + "gf8_bits_hex": "0x56", + "gf8_bits_int": 86, + "decoded_f64": 5.5, + "decoded_f64_hex": "0x4016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 5.75, + "input_f64_hex": "0x4017000000000000", + "gf8_bits_hex": "0x57", + "gf8_bits_int": 87, + "decoded_f64": 5.75, + "decoded_f64_hex": "0x4017000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "gf8_bits_hex": "0x58", + "gf8_bits_int": 88, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 6.25, + "input_f64_hex": "0x4019000000000000", + "gf8_bits_hex": "0x59", + "gf8_bits_int": 89, + "decoded_f64": 6.25, + "decoded_f64_hex": "0x4019000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 6.5, + "input_f64_hex": "0x401A000000000000", + "gf8_bits_hex": "0x5A", + "gf8_bits_int": 90, + "decoded_f64": 6.5, + "decoded_f64_hex": "0x401A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 6.75, + "input_f64_hex": "0x401B000000000000", + "gf8_bits_hex": "0x5B", + "gf8_bits_int": 91, + "decoded_f64": 6.75, + "decoded_f64_hex": "0x401B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "gf8_bits_hex": "0x5C", + "gf8_bits_int": 92, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 7.25, + "input_f64_hex": "0x401D000000000000", + "gf8_bits_hex": "0x5D", + "gf8_bits_int": 93, + "decoded_f64": 7.25, + "decoded_f64_hex": "0x401D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 7.5, + "input_f64_hex": "0x401E000000000000", + "gf8_bits_hex": "0x5E", + "gf8_bits_int": 94, + "decoded_f64": 7.5, + "decoded_f64_hex": "0x401E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 7.75, + "input_f64_hex": "0x401F000000000000", + "gf8_bits_hex": "0x5F", + "gf8_bits_int": 95, + "decoded_f64": 7.75, + "decoded_f64_hex": "0x401F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "gf8_bits_hex": "0x60", + "gf8_bits_int": 96, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 8.5, + "input_f64_hex": "0x4021000000000000", + "gf8_bits_hex": "0x61", + "gf8_bits_int": 97, + "decoded_f64": 8.5, + "decoded_f64_hex": "0x4021000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 9.0, + "input_f64_hex": "0x4022000000000000", + "gf8_bits_hex": "0x62", + "gf8_bits_int": 98, + "decoded_f64": 9.0, + "decoded_f64_hex": "0x4022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 9.5, + "input_f64_hex": "0x4023000000000000", + "gf8_bits_hex": "0x63", + "gf8_bits_int": 99, + "decoded_f64": 9.5, + "decoded_f64_hex": "0x4023000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "gf8_bits_hex": "0x64", + "gf8_bits_int": 100, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 10.5, + "input_f64_hex": "0x4025000000000000", + "gf8_bits_hex": "0x65", + "gf8_bits_int": 101, + "decoded_f64": 10.5, + "decoded_f64_hex": "0x4025000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 11.0, + "input_f64_hex": "0x4026000000000000", + "gf8_bits_hex": "0x66", + "gf8_bits_int": 102, + "decoded_f64": 11.0, + "decoded_f64_hex": "0x4026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 11.5, + "input_f64_hex": "0x4027000000000000", + "gf8_bits_hex": "0x67", + "gf8_bits_int": 103, + "decoded_f64": 11.5, + "decoded_f64_hex": "0x4027000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "gf8_bits_hex": "0x68", + "gf8_bits_int": 104, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 12.5, + "input_f64_hex": "0x4029000000000000", + "gf8_bits_hex": "0x69", + "gf8_bits_int": 105, + "decoded_f64": 12.5, + "decoded_f64_hex": "0x4029000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 13.0, + "input_f64_hex": "0x402A000000000000", + "gf8_bits_hex": "0x6A", + "gf8_bits_int": 106, + "decoded_f64": 13.0, + "decoded_f64_hex": "0x402A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 13.5, + "input_f64_hex": "0x402B000000000000", + "gf8_bits_hex": "0x6B", + "gf8_bits_int": 107, + "decoded_f64": 13.5, + "decoded_f64_hex": "0x402B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "gf8_bits_hex": "0x6C", + "gf8_bits_int": 108, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 14.5, + "input_f64_hex": "0x402D000000000000", + "gf8_bits_hex": "0x6D", + "gf8_bits_int": 109, + "decoded_f64": 14.5, + "decoded_f64_hex": "0x402D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 15.0, + "input_f64_hex": "0x402E000000000000", + "gf8_bits_hex": "0x6E", + "gf8_bits_int": 110, + "decoded_f64": 15.0, + "decoded_f64_hex": "0x402E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 15.5, + "input_f64_hex": "0x402F000000000000", + "gf8_bits_hex": "0x6F", + "gf8_bits_int": 111, + "decoded_f64": 15.5, + "decoded_f64_hex": "0x402F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "gf8_bits_hex": "0x70", + "gf8_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", + "gf8_bits_hex": "0x71", + "gf8_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", + "gf8_bits_hex": "0x72", + "gf8_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", + "gf8_bits_hex": "0x73", + "gf8_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", + "gf8_bits_hex": "0x74", + "gf8_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", + "gf8_bits_hex": "0x75", + "gf8_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", + "gf8_bits_hex": "0x76", + "gf8_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", + "gf8_bits_hex": "0x77", + "gf8_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", + "gf8_bits_hex": "0x78", + "gf8_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", + "gf8_bits_hex": "0x79", + "gf8_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", + "gf8_bits_hex": "0x7A", + "gf8_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", + "gf8_bits_hex": "0x7B", + "gf8_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", + "gf8_bits_hex": "0x7C", + "gf8_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", + "gf8_bits_hex": "0x7D", + "gf8_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", + "gf8_bits_hex": "0x7E", + "gf8_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", + "gf8_bits_hex": "0x7F", + "gf8_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", + "gf8_bits_hex": "0x80", + "gf8_bits_int": 128, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x81", + "input_f64": -0.015625, + "input_f64_hex": "0xBF90000000000000", + "gf8_bits_hex": "0x81", + "gf8_bits_int": 129, + "decoded_f64": -0.015625, + "decoded_f64_hex": "0xBF90000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x82", + "input_f64": -0.03125, + "input_f64_hex": "0xBFA0000000000000", + "gf8_bits_hex": "0x82", + "gf8_bits_int": 130, + "decoded_f64": -0.03125, + "decoded_f64_hex": "0xBFA0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x83", + "input_f64": -0.046875, + "input_f64_hex": "0xBFA8000000000000", + "gf8_bits_hex": "0x83", + "gf8_bits_int": 131, + "decoded_f64": -0.046875, + "decoded_f64_hex": "0xBFA8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x84", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "gf8_bits_hex": "0x84", + "gf8_bits_int": 132, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x85", + "input_f64": -0.078125, + "input_f64_hex": "0xBFB4000000000000", + "gf8_bits_hex": "0x85", + "gf8_bits_int": 133, + "decoded_f64": -0.078125, + "decoded_f64_hex": "0xBFB4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x86", + "input_f64": -0.09375, + "input_f64_hex": "0xBFB8000000000000", + "gf8_bits_hex": "0x86", + "gf8_bits_int": 134, + "decoded_f64": -0.09375, + "decoded_f64_hex": "0xBFB8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x87", + "input_f64": -0.109375, + "input_f64_hex": "0xBFBC000000000000", + "gf8_bits_hex": "0x87", + "gf8_bits_int": 135, + "decoded_f64": -0.109375, + "decoded_f64_hex": "0xBFBC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x88", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "gf8_bits_hex": "0x88", + "gf8_bits_int": 136, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x89", + "input_f64": -0.140625, + "input_f64_hex": "0xBFC2000000000000", + "gf8_bits_hex": "0x89", + "gf8_bits_int": 137, + "decoded_f64": -0.140625, + "decoded_f64_hex": "0xBFC2000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8A", + "input_f64": -0.15625, + "input_f64_hex": "0xBFC4000000000000", + "gf8_bits_hex": "0x8A", + "gf8_bits_int": 138, + "decoded_f64": -0.15625, + "decoded_f64_hex": "0xBFC4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8B", + "input_f64": -0.171875, + "input_f64_hex": "0xBFC6000000000000", + "gf8_bits_hex": "0x8B", + "gf8_bits_int": 139, + "decoded_f64": -0.171875, + "decoded_f64_hex": "0xBFC6000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8C", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "gf8_bits_hex": "0x8C", + "gf8_bits_int": 140, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8D", + "input_f64": -0.203125, + "input_f64_hex": "0xBFCA000000000000", + "gf8_bits_hex": "0x8D", + "gf8_bits_int": 141, + "decoded_f64": -0.203125, + "decoded_f64_hex": "0xBFCA000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8E", + "input_f64": -0.21875, + "input_f64_hex": "0xBFCC000000000000", + "gf8_bits_hex": "0x8E", + "gf8_bits_int": 142, + "decoded_f64": -0.21875, + "decoded_f64_hex": "0xBFCC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x8F", + "input_f64": -0.234375, + "input_f64_hex": "0xBFCE000000000000", + "gf8_bits_hex": "0x8F", + "gf8_bits_int": 143, + "decoded_f64": -0.234375, + "decoded_f64_hex": "0xBFCE000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x90", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "gf8_bits_hex": "0x90", + "gf8_bits_int": 144, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -0.265625, + "input_f64_hex": "0xBFD1000000000000", + "gf8_bits_hex": "0x91", + "gf8_bits_int": 145, + "decoded_f64": -0.265625, + "decoded_f64_hex": "0xBFD1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -0.28125, + "input_f64_hex": "0xBFD2000000000000", + "gf8_bits_hex": "0x92", + "gf8_bits_int": 146, + "decoded_f64": -0.28125, + "decoded_f64_hex": "0xBFD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -0.296875, + "input_f64_hex": "0xBFD3000000000000", + "gf8_bits_hex": "0x93", + "gf8_bits_int": 147, + "decoded_f64": -0.296875, + "decoded_f64_hex": "0xBFD3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "gf8_bits_hex": "0x94", + "gf8_bits_int": 148, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -0.328125, + "input_f64_hex": "0xBFD5000000000000", + "gf8_bits_hex": "0x95", + "gf8_bits_int": 149, + "decoded_f64": -0.328125, + "decoded_f64_hex": "0xBFD5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -0.34375, + "input_f64_hex": "0xBFD6000000000000", + "gf8_bits_hex": "0x96", + "gf8_bits_int": 150, + "decoded_f64": -0.34375, + "decoded_f64_hex": "0xBFD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -0.359375, + "input_f64_hex": "0xBFD7000000000000", + "gf8_bits_hex": "0x97", + "gf8_bits_int": 151, + "decoded_f64": -0.359375, + "decoded_f64_hex": "0xBFD7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "gf8_bits_hex": "0x98", + "gf8_bits_int": 152, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -0.390625, + "input_f64_hex": "0xBFD9000000000000", + "gf8_bits_hex": "0x99", + "gf8_bits_int": 153, + "decoded_f64": -0.390625, + "decoded_f64_hex": "0xBFD9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -0.40625, + "input_f64_hex": "0xBFDA000000000000", + "gf8_bits_hex": "0x9A", + "gf8_bits_int": 154, + "decoded_f64": -0.40625, + "decoded_f64_hex": "0xBFDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -0.421875, + "input_f64_hex": "0xBFDB000000000000", + "gf8_bits_hex": "0x9B", + "gf8_bits_int": 155, + "decoded_f64": -0.421875, + "decoded_f64_hex": "0xBFDB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "gf8_bits_hex": "0x9C", + "gf8_bits_int": 156, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -0.453125, + "input_f64_hex": "0xBFDD000000000000", + "gf8_bits_hex": "0x9D", + "gf8_bits_int": 157, + "decoded_f64": -0.453125, + "decoded_f64_hex": "0xBFDD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -0.46875, + "input_f64_hex": "0xBFDE000000000000", + "gf8_bits_hex": "0x9E", + "gf8_bits_int": 158, + "decoded_f64": -0.46875, + "decoded_f64_hex": "0xBFDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -0.484375, + "input_f64_hex": "0xBFDF000000000000", + "gf8_bits_hex": "0x9F", + "gf8_bits_int": 159, + "decoded_f64": -0.484375, + "decoded_f64_hex": "0xBFDF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "gf8_bits_hex": "0xA0", + "gf8_bits_int": 160, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -0.53125, + "input_f64_hex": "0xBFE1000000000000", + "gf8_bits_hex": "0xA1", + "gf8_bits_int": 161, + "decoded_f64": -0.53125, + "decoded_f64_hex": "0xBFE1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -0.5625, + "input_f64_hex": "0xBFE2000000000000", + "gf8_bits_hex": "0xA2", + "gf8_bits_int": 162, + "decoded_f64": -0.5625, + "decoded_f64_hex": "0xBFE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -0.59375, + "input_f64_hex": "0xBFE3000000000000", + "gf8_bits_hex": "0xA3", + "gf8_bits_int": 163, + "decoded_f64": -0.59375, + "decoded_f64_hex": "0xBFE3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "gf8_bits_hex": "0xA4", + "gf8_bits_int": 164, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -0.65625, + "input_f64_hex": "0xBFE5000000000000", + "gf8_bits_hex": "0xA5", + "gf8_bits_int": 165, + "decoded_f64": -0.65625, + "decoded_f64_hex": "0xBFE5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -0.6875, + "input_f64_hex": "0xBFE6000000000000", + "gf8_bits_hex": "0xA6", + "gf8_bits_int": 166, + "decoded_f64": -0.6875, + "decoded_f64_hex": "0xBFE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -0.71875, + "input_f64_hex": "0xBFE7000000000000", + "gf8_bits_hex": "0xA7", + "gf8_bits_int": 167, + "decoded_f64": -0.71875, + "decoded_f64_hex": "0xBFE7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "gf8_bits_hex": "0xA8", + "gf8_bits_int": 168, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -0.78125, + "input_f64_hex": "0xBFE9000000000000", + "gf8_bits_hex": "0xA9", + "gf8_bits_int": 169, + "decoded_f64": -0.78125, + "decoded_f64_hex": "0xBFE9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -0.8125, + "input_f64_hex": "0xBFEA000000000000", + "gf8_bits_hex": "0xAA", + "gf8_bits_int": 170, + "decoded_f64": -0.8125, + "decoded_f64_hex": "0xBFEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -0.84375, + "input_f64_hex": "0xBFEB000000000000", + "gf8_bits_hex": "0xAB", + "gf8_bits_int": 171, + "decoded_f64": -0.84375, + "decoded_f64_hex": "0xBFEB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "gf8_bits_hex": "0xAC", + "gf8_bits_int": 172, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -0.90625, + "input_f64_hex": "0xBFED000000000000", + "gf8_bits_hex": "0xAD", + "gf8_bits_int": 173, + "decoded_f64": -0.90625, + "decoded_f64_hex": "0xBFED000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -0.9375, + "input_f64_hex": "0xBFEE000000000000", + "gf8_bits_hex": "0xAE", + "gf8_bits_int": 174, + "decoded_f64": -0.9375, + "decoded_f64_hex": "0xBFEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -0.96875, + "input_f64_hex": "0xBFEF000000000000", + "gf8_bits_hex": "0xAF", + "gf8_bits_int": 175, + "decoded_f64": -0.96875, + "decoded_f64_hex": "0xBFEF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "gf8_bits_hex": "0xB0", + "gf8_bits_int": 176, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -1.0625, + "input_f64_hex": "0xBFF1000000000000", + "gf8_bits_hex": "0xB1", + "gf8_bits_int": 177, + "decoded_f64": -1.0625, + "decoded_f64_hex": "0xBFF1000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "gf8_bits_hex": "0xB2", + "gf8_bits_int": 178, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -1.1875, + "input_f64_hex": "0xBFF3000000000000", + "gf8_bits_hex": "0xB3", + "gf8_bits_int": 179, + "decoded_f64": -1.1875, + "decoded_f64_hex": "0xBFF3000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "gf8_bits_hex": "0xB4", + "gf8_bits_int": 180, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -1.3125, + "input_f64_hex": "0xBFF5000000000000", + "gf8_bits_hex": "0xB5", + "gf8_bits_int": 181, + "decoded_f64": -1.3125, + "decoded_f64_hex": "0xBFF5000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "gf8_bits_hex": "0xB6", + "gf8_bits_int": 182, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -1.4375, + "input_f64_hex": "0xBFF7000000000000", + "gf8_bits_hex": "0xB7", + "gf8_bits_int": 183, + "decoded_f64": -1.4375, + "decoded_f64_hex": "0xBFF7000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "gf8_bits_hex": "0xB8", + "gf8_bits_int": 184, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -1.5625, + "input_f64_hex": "0xBFF9000000000000", + "gf8_bits_hex": "0xB9", + "gf8_bits_int": 185, + "decoded_f64": -1.5625, + "decoded_f64_hex": "0xBFF9000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "gf8_bits_hex": "0xBA", + "gf8_bits_int": 186, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -1.6875, + "input_f64_hex": "0xBFFB000000000000", + "gf8_bits_hex": "0xBB", + "gf8_bits_int": 187, + "decoded_f64": -1.6875, + "decoded_f64_hex": "0xBFFB000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "gf8_bits_hex": "0xBC", + "gf8_bits_int": 188, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -1.8125, + "input_f64_hex": "0xBFFD000000000000", + "gf8_bits_hex": "0xBD", + "gf8_bits_int": 189, + "decoded_f64": -1.8125, + "decoded_f64_hex": "0xBFFD000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "gf8_bits_hex": "0xBE", + "gf8_bits_int": 190, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -1.9375, + "input_f64_hex": "0xBFFF000000000000", + "gf8_bits_hex": "0xBF", + "gf8_bits_int": 191, + "decoded_f64": -1.9375, + "decoded_f64_hex": "0xBFFF000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "gf8_bits_hex": "0xC0", + "gf8_bits_int": 192, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -2.125, + "input_f64_hex": "0xC001000000000000", + "gf8_bits_hex": "0xC1", + "gf8_bits_int": 193, + "decoded_f64": -2.125, + "decoded_f64_hex": "0xC001000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "gf8_bits_hex": "0xC2", + "gf8_bits_int": 194, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -2.375, + "input_f64_hex": "0xC003000000000000", + "gf8_bits_hex": "0xC3", + "gf8_bits_int": 195, + "decoded_f64": -2.375, + "decoded_f64_hex": "0xC003000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "gf8_bits_hex": "0xC4", + "gf8_bits_int": 196, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -2.625, + "input_f64_hex": "0xC005000000000000", + "gf8_bits_hex": "0xC5", + "gf8_bits_int": 197, + "decoded_f64": -2.625, + "decoded_f64_hex": "0xC005000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "gf8_bits_hex": "0xC6", + "gf8_bits_int": 198, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -2.875, + "input_f64_hex": "0xC007000000000000", + "gf8_bits_hex": "0xC7", + "gf8_bits_int": 199, + "decoded_f64": -2.875, + "decoded_f64_hex": "0xC007000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "gf8_bits_hex": "0xC8", + "gf8_bits_int": 200, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -3.125, + "input_f64_hex": "0xC009000000000000", + "gf8_bits_hex": "0xC9", + "gf8_bits_int": 201, + "decoded_f64": -3.125, + "decoded_f64_hex": "0xC009000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "gf8_bits_hex": "0xCA", + "gf8_bits_int": 202, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -3.375, + "input_f64_hex": "0xC00B000000000000", + "gf8_bits_hex": "0xCB", + "gf8_bits_int": 203, + "decoded_f64": -3.375, + "decoded_f64_hex": "0xC00B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "gf8_bits_hex": "0xCC", + "gf8_bits_int": 204, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -3.625, + "input_f64_hex": "0xC00D000000000000", + "gf8_bits_hex": "0xCD", + "gf8_bits_int": 205, + "decoded_f64": -3.625, + "decoded_f64_hex": "0xC00D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "gf8_bits_hex": "0xCE", + "gf8_bits_int": 206, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -3.875, + "input_f64_hex": "0xC00F000000000000", + "gf8_bits_hex": "0xCF", + "gf8_bits_int": 207, + "decoded_f64": -3.875, + "decoded_f64_hex": "0xC00F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "gf8_bits_hex": "0xD0", + "gf8_bits_int": 208, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -4.25, + "input_f64_hex": "0xC011000000000000", + "gf8_bits_hex": "0xD1", + "gf8_bits_int": 209, + "decoded_f64": -4.25, + "decoded_f64_hex": "0xC011000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -4.5, + "input_f64_hex": "0xC012000000000000", + "gf8_bits_hex": "0xD2", + "gf8_bits_int": 210, + "decoded_f64": -4.5, + "decoded_f64_hex": "0xC012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -4.75, + "input_f64_hex": "0xC013000000000000", + "gf8_bits_hex": "0xD3", + "gf8_bits_int": 211, + "decoded_f64": -4.75, + "decoded_f64_hex": "0xC013000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "gf8_bits_hex": "0xD4", + "gf8_bits_int": 212, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -5.25, + "input_f64_hex": "0xC015000000000000", + "gf8_bits_hex": "0xD5", + "gf8_bits_int": 213, + "decoded_f64": -5.25, + "decoded_f64_hex": "0xC015000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -5.5, + "input_f64_hex": "0xC016000000000000", + "gf8_bits_hex": "0xD6", + "gf8_bits_int": 214, + "decoded_f64": -5.5, + "decoded_f64_hex": "0xC016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -5.75, + "input_f64_hex": "0xC017000000000000", + "gf8_bits_hex": "0xD7", + "gf8_bits_int": 215, + "decoded_f64": -5.75, + "decoded_f64_hex": "0xC017000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "gf8_bits_hex": "0xD8", + "gf8_bits_int": 216, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -6.25, + "input_f64_hex": "0xC019000000000000", + "gf8_bits_hex": "0xD9", + "gf8_bits_int": 217, + "decoded_f64": -6.25, + "decoded_f64_hex": "0xC019000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -6.5, + "input_f64_hex": "0xC01A000000000000", + "gf8_bits_hex": "0xDA", + "gf8_bits_int": 218, + "decoded_f64": -6.5, + "decoded_f64_hex": "0xC01A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -6.75, + "input_f64_hex": "0xC01B000000000000", + "gf8_bits_hex": "0xDB", + "gf8_bits_int": 219, + "decoded_f64": -6.75, + "decoded_f64_hex": "0xC01B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "gf8_bits_hex": "0xDC", + "gf8_bits_int": 220, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -7.25, + "input_f64_hex": "0xC01D000000000000", + "gf8_bits_hex": "0xDD", + "gf8_bits_int": 221, + "decoded_f64": -7.25, + "decoded_f64_hex": "0xC01D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -7.5, + "input_f64_hex": "0xC01E000000000000", + "gf8_bits_hex": "0xDE", + "gf8_bits_int": 222, + "decoded_f64": -7.5, + "decoded_f64_hex": "0xC01E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -7.75, + "input_f64_hex": "0xC01F000000000000", + "gf8_bits_hex": "0xDF", + "gf8_bits_int": 223, + "decoded_f64": -7.75, + "decoded_f64_hex": "0xC01F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "gf8_bits_hex": "0xE0", + "gf8_bits_int": 224, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -8.5, + "input_f64_hex": "0xC021000000000000", + "gf8_bits_hex": "0xE1", + "gf8_bits_int": 225, + "decoded_f64": -8.5, + "decoded_f64_hex": "0xC021000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -9.0, + "input_f64_hex": "0xC022000000000000", + "gf8_bits_hex": "0xE2", + "gf8_bits_int": 226, + "decoded_f64": -9.0, + "decoded_f64_hex": "0xC022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -9.5, + "input_f64_hex": "0xC023000000000000", + "gf8_bits_hex": "0xE3", + "gf8_bits_int": 227, + "decoded_f64": -9.5, + "decoded_f64_hex": "0xC023000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "gf8_bits_hex": "0xE4", + "gf8_bits_int": 228, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -10.5, + "input_f64_hex": "0xC025000000000000", + "gf8_bits_hex": "0xE5", + "gf8_bits_int": 229, + "decoded_f64": -10.5, + "decoded_f64_hex": "0xC025000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -11.0, + "input_f64_hex": "0xC026000000000000", + "gf8_bits_hex": "0xE6", + "gf8_bits_int": 230, + "decoded_f64": -11.0, + "decoded_f64_hex": "0xC026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -11.5, + "input_f64_hex": "0xC027000000000000", + "gf8_bits_hex": "0xE7", + "gf8_bits_int": 231, + "decoded_f64": -11.5, + "decoded_f64_hex": "0xC027000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "gf8_bits_hex": "0xE8", + "gf8_bits_int": 232, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -12.5, + "input_f64_hex": "0xC029000000000000", + "gf8_bits_hex": "0xE9", + "gf8_bits_int": 233, + "decoded_f64": -12.5, + "decoded_f64_hex": "0xC029000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -13.0, + "input_f64_hex": "0xC02A000000000000", + "gf8_bits_hex": "0xEA", + "gf8_bits_int": 234, + "decoded_f64": -13.0, + "decoded_f64_hex": "0xC02A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -13.5, + "input_f64_hex": "0xC02B000000000000", + "gf8_bits_hex": "0xEB", + "gf8_bits_int": 235, + "decoded_f64": -13.5, + "decoded_f64_hex": "0xC02B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "gf8_bits_hex": "0xEC", + "gf8_bits_int": 236, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -14.5, + "input_f64_hex": "0xC02D000000000000", + "gf8_bits_hex": "0xED", + "gf8_bits_int": 237, + "decoded_f64": -14.5, + "decoded_f64_hex": "0xC02D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -15.0, + "input_f64_hex": "0xC02E000000000000", + "gf8_bits_hex": "0xEE", + "gf8_bits_int": 238, + "decoded_f64": -15.0, + "decoded_f64_hex": "0xC02E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -15.5, + "input_f64_hex": "0xC02F000000000000", + "gf8_bits_hex": "0xEF", + "gf8_bits_int": 239, + "decoded_f64": -15.5, + "decoded_f64_hex": "0xC02F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "gf8_bits_hex": "0xF0", + "gf8_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", + "gf8_bits_hex": "0xF1", + "gf8_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", + "gf8_bits_hex": "0xF2", + "gf8_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", + "gf8_bits_hex": "0xF3", + "gf8_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", + "gf8_bits_hex": "0xF4", + "gf8_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", + "gf8_bits_hex": "0xF5", + "gf8_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", + "gf8_bits_hex": "0xF6", + "gf8_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", + "gf8_bits_hex": "0xF7", + "gf8_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", + "gf8_bits_hex": "0xF8", + "gf8_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", + "gf8_bits_hex": "0xF9", + "gf8_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", + "gf8_bits_hex": "0xFA", + "gf8_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", + "gf8_bits_hex": "0xFB", + "gf8_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", + "gf8_bits_hex": "0xFC", + "gf8_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", + "gf8_bits_hex": "0xFD", + "gf8_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", + "gf8_bits_hex": "0xFE", + "gf8_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", + "gf8_bits_hex": "0xFF", + "gf8_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/gf96_conformance_v0.json b/conformance/vectors/gf96_conformance_v0.json new file mode 100644 index 000000000..3cffc2a8d --- /dev/null +++ b/conformance/vectors/gf96_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF96", + "format_name": "GF96 (rule-derived)", + "bitexact": false, + "format_notes": "GF96 (rule-derived) -- this work; rule e=round(95/phi^2)=36", + "catalog": { + "id": "gf96", + "bits": 96, + "s": 1, + "e": 36, + "m": 59, + "bias": 34359738367, + "storage": "u128_padded", + "cluster": "GoldenFloat", + "status": "Open", + "standard": "this work; rule e=round(95/phi^2)=36", + "use_case": "OPEN R&D: between GF64 and GF128 (phi-aligned extended)", + "gf_relation": "experimental", + "source": "specs/numeric/gf96.t27", + "phi_distance": 0.008 + }, + "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/gf_lns_hybrid_conformance_v0.json b/conformance/vectors/gf_lns_hybrid_conformance_v0.json new file mode 100644 index 000000000..1b9d285eb --- /dev/null +++ b/conformance/vectors/gf_lns_hybrid_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GF_LNS_HYBRID", + "format_name": "GF + LNS hybrid (dual-space)", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E6M9, bias 31. IEEE-style specials at top exponent", + "catalog": { + "id": "gf_lns_hybrid", + "bits": 16, + "s": 1, + "e": 6, + "m": 9, + "bias": 31, + "storage": "u16_plus_lns_path", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; mul in log-space, accumulate Lucas-closed", + "use_case": "OPEN R&D: dual-space arithmetic", + "gf_relation": "experimental", + "source": "section12.5", + "phi_distance": 0.049 + }, + "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, + "gf_lns_hybrid_bits_hex": "0x4100" + }, + "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", + "gf_lns_hybrid_bits_hex": "0x0000", + "gf_lns_hybrid_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", + "gf_lns_hybrid_bits_hex": "0x3E00", + "gf_lns_hybrid_bits_int": 15872, + "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", + "gf_lns_hybrid_bits_hex": "0xBE00", + "gf_lns_hybrid_bits_int": 48640, + "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", + "gf_lns_hybrid_bits_hex": "0x4000", + "gf_lns_hybrid_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", + "gf_lns_hybrid_bits_hex": "0x4100", + "gf_lns_hybrid_bits_int": 16640, + "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", + "gf_lns_hybrid_bits_hex": "0x3C00", + "gf_lns_hybrid_bits_int": 15360, + "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", + "gf_lns_hybrid_bits_hex": "0x4200", + "gf_lns_hybrid_bits_int": 16896, + "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", + "gf_lns_hybrid_bits_hex": "0xC100", + "gf_lns_hybrid_bits_int": 49408, + "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/gfternary_conformance_v0.json b/conformance/vectors/gfternary_conformance_v0.json new file mode 100644 index 000000000..b20392c0c --- /dev/null +++ b/conformance/vectors/gfternary_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "GFTERNARY", + "format_name": "GFTernary", + "bitexact": false, + "format_notes": "GFTernary -- this work; {-phi, 0, +phi}", + "catalog": { + "id": "gfternary", + "bits": 2, + "s": 1, + "e": 0, + "m": 2, + "bias": 0, + "storage": "u2", + "cluster": "GoldenFloat", + "status": "Verified", + "standard": "this work; {-phi, 0, +phi}", + "use_case": "bulk layers (hybrid)", + "gf_relation": "self", + "source": "BENCH-007", + "phi_distance": 0.0 + }, + "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": "GFTernary is a 2-bit discrete set {-phi, 0, +phi}; the three values are recorded directly rather than via an S:E:M decode.", + "anchor_note": "Anchor 3.0 arises as phi^2 + 1/phi^2 = 3 from the two nonzero codes +phi and... see GF16 pack; not a single code here.", + "n_vectors": 0, + "vectors": [] +} \ No newline at end of file diff --git a/conformance/vectors/ibm_hfp128_conformance_v0.json b/conformance/vectors/ibm_hfp128_conformance_v0.json new file mode 100644 index 000000000..556130135 --- /dev/null +++ b/conformance/vectors/ibm_hfp128_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "IBM_HFP128", + "format_name": "IBM HFP (extended)", + "bitexact": false, + "format_notes": "IBM HFP (extended) -- IBM z/Architecture", + "catalog": { + "id": "ibm_hfp128", + "bits": 128, + "s": 1, + "e": 7, + "m": 120, + "bias": 64, + "storage": "u128", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "IBM z/Architecture", + "use_case": "legacy mainframe", + "gf_relation": "orthogonal", + "source": "IBM POO", + "phi_distance": -1.0 + }, + "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": "IBM Hexadecimal Floating Point uses a base-16 exponent (not base-2), so the radix-2 S:E:M decoder does not apply. 3.0 is exactly representable; recorded structurally.", + "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/ibm_hfp32_conformance_v0.json b/conformance/vectors/ibm_hfp32_conformance_v0.json new file mode 100644 index 000000000..e74bbecff --- /dev/null +++ b/conformance/vectors/ibm_hfp32_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "IBM_HFP32", + "format_name": "IBM HFP (single)", + "bitexact": false, + "format_notes": "IBM HFP (single) -- IBM System/360 (1964); base-16 exponent", + "catalog": { + "id": "ibm_hfp32", + "bits": 32, + "s": 1, + "e": 7, + "m": 24, + "bias": 64, + "storage": "u32", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "IBM System/360 (1964); base-16 exponent", + "use_case": "legacy mainframe", + "gf_relation": "orthogonal", + "source": "IBM POO", + "phi_distance": -1.0 + }, + "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": "IBM Hexadecimal Floating Point uses a base-16 exponent (not base-2), so the radix-2 S:E:M decoder does not apply. 3.0 is exactly representable; recorded structurally.", + "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/ibm_hfp64_conformance_v0.json b/conformance/vectors/ibm_hfp64_conformance_v0.json new file mode 100644 index 000000000..a8efeab63 --- /dev/null +++ b/conformance/vectors/ibm_hfp64_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "IBM_HFP64", + "format_name": "IBM HFP (double)", + "bitexact": false, + "format_notes": "IBM HFP (double) -- IBM System/360 (1964)", + "catalog": { + "id": "ibm_hfp64", + "bits": 64, + "s": 1, + "e": 7, + "m": 56, + "bias": 64, + "storage": "u64", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "IBM System/360 (1964)", + "use_case": "legacy mainframe", + "gf_relation": "orthogonal", + "source": "IBM POO", + "phi_distance": -1.0 + }, + "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": "IBM Hexadecimal Floating Point uses a base-16 exponent (not base-2), so the radix-2 S:E:M decoder does not apply. 3.0 is exactly representable; recorded structurally.", + "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/int128_conformance_v0.json b/conformance/vectors/int128_conformance_v0.json new file mode 100644 index 000000000..f37c72b19 --- /dev/null +++ b/conformance/vectors/int128_conformance_v0.json @@ -0,0 +1,114 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "INT128", + "format_name": "INT128 / UINT128", + "bitexact": true, + "format_notes": "two's-complement signed integer, 128 bits. no inf/nan; exact integers", + "catalog": { + "id": "int128", + "bits": 128, + "s": 1, + "e": 0, + "m": 127, + "bias": 0, + "storage": "u128", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "two complement", + "use_case": "crypto, big-int", + "gf_relation": "competitor", + "source": "Rust/Clang u128", + "phi_distance": -1.0 + }, + "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, + "int128_bits_hex": "0x00000000000000000000000000000003" + }, + "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": 7, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "int128_bits_hex": "0x00000000000000000000000000000000", + "int128_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", + "int128_bits_hex": "0x00000000000000000000000000000001", + "int128_bits_int": 1, + "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", + "int128_bits_hex": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "int128_bits_int": 340282366920938463463374607431768211455, + "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", + "int128_bits_hex": "0x00000000000000000000000000000002", + "int128_bits_int": 2, + "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", + "int128_bits_hex": "0x00000000000000000000000000000003", + "int128_bits_int": 3, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "int128_bits_hex": "0x00000000000000000000000000000004", + "int128_bits_int": 4, + "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", + "int128_bits_hex": "0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD", + "int128_bits_int": 340282366920938463463374607431768211453, + "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/int16_conformance_v0.json b/conformance/vectors/int16_conformance_v0.json new file mode 100644 index 000000000..b0bee795b --- /dev/null +++ b/conformance/vectors/int16_conformance_v0.json @@ -0,0 +1,114 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "INT16", + "format_name": "INT16 / UINT16", + "bitexact": true, + "format_notes": "two's-complement signed integer, 16 bits. no inf/nan; exact integers", + "catalog": { + "id": "int16", + "bits": 16, + "s": 1, + "e": 0, + "m": 15, + "bias": 0, + "storage": "u16", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "two complement", + "use_case": "DSP, embedded ML", + "gf_relation": "competitor", + "source": "ISO/IEC 9899", + "phi_distance": -1.0 + }, + "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, + "int16_bits_hex": "0x0003" + }, + "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": 7, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "int16_bits_hex": "0x0000", + "int16_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", + "int16_bits_hex": "0x0001", + "int16_bits_int": 1, + "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", + "int16_bits_hex": "0xFFFF", + "int16_bits_int": 65535, + "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", + "int16_bits_hex": "0x0002", + "int16_bits_int": 2, + "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", + "int16_bits_hex": "0x0003", + "int16_bits_int": 3, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "int16_bits_hex": "0x0004", + "int16_bits_int": 4, + "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", + "int16_bits_hex": "0xFFFD", + "int16_bits_int": 65533, + "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/int32_conformance_v0.json b/conformance/vectors/int32_conformance_v0.json new file mode 100644 index 000000000..4a85758b0 --- /dev/null +++ b/conformance/vectors/int32_conformance_v0.json @@ -0,0 +1,114 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "INT32", + "format_name": "INT32 / UINT32", + "bitexact": true, + "format_notes": "two's-complement signed integer, 32 bits. no inf/nan; exact integers", + "catalog": { + "id": "int32", + "bits": 32, + "s": 1, + "e": 0, + "m": 31, + "bias": 0, + "storage": "u32", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "two complement", + "use_case": "general CPU integer", + "gf_relation": "competitor", + "source": "ISO/IEC 9899", + "phi_distance": -1.0 + }, + "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, + "int32_bits_hex": "0x00000003" + }, + "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": 7, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "int32_bits_hex": "0x00000000", + "int32_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", + "int32_bits_hex": "0x00000001", + "int32_bits_int": 1, + "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", + "int32_bits_hex": "0xFFFFFFFF", + "int32_bits_int": 4294967295, + "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", + "int32_bits_hex": "0x00000002", + "int32_bits_int": 2, + "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", + "int32_bits_hex": "0x00000003", + "int32_bits_int": 3, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "int32_bits_hex": "0x00000004", + "int32_bits_int": 4, + "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", + "int32_bits_hex": "0xFFFFFFFD", + "int32_bits_int": 4294967293, + "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/int4_conformance_v0.json b/conformance/vectors/int4_conformance_v0.json new file mode 100644 index 000000000..c1b2aceb7 --- /dev/null +++ b/conformance/vectors/int4_conformance_v0.json @@ -0,0 +1,214 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "INT4", + "format_name": "INT4 / UINT4", + "bitexact": true, + "format_notes": "two's-complement signed integer, 4 bits. no inf/nan; exact integers", + "catalog": { + "id": "int4", + "bits": 4, + "s": 1, + "e": 0, + "m": 3, + "bias": 0, + "storage": "u8_packed", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "two complement", + "use_case": "aggressive quantization", + "gf_relation": "competitor", + "source": "ISO/IEC 9899", + "phi_distance": -1.0 + }, + "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, + "int4_bits_hex": "0x3" + }, + "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": 8.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "int4_bits_hex": "0x0", + "int4_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "int4_bits_hex": "0x1", + "int4_bits_int": 1, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x02", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "int4_bits_hex": "0x2", + "int4_bits_int": 2, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x03", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "int4_bits_hex": "0x3", + "int4_bits_int": 3, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x04", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "int4_bits_hex": "0x4", + "int4_bits_int": 4, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "int4_bits_hex": "0x5", + "int4_bits_int": 5, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "int4_bits_hex": "0x6", + "int4_bits_int": 6, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "int4_bits_hex": "0x7", + "int4_bits_int": 7, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "int4_bits_hex": "0x8", + "int4_bits_int": 8, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "int4_bits_hex": "0x9", + "int4_bits_int": 9, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "int4_bits_hex": "0xA", + "int4_bits_int": 10, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "int4_bits_hex": "0xB", + "int4_bits_int": 11, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "int4_bits_hex": "0xC", + "int4_bits_int": 12, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "int4_bits_hex": "0xD", + "int4_bits_int": 13, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "int4_bits_hex": "0xE", + "int4_bits_int": 14, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "int4_bits_hex": "0xF", + "int4_bits_int": 15, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/int64_conformance_v0.json b/conformance/vectors/int64_conformance_v0.json new file mode 100644 index 000000000..c89c6d012 --- /dev/null +++ b/conformance/vectors/int64_conformance_v0.json @@ -0,0 +1,114 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "INT64", + "format_name": "INT64 / UINT64", + "bitexact": true, + "format_notes": "two's-complement signed integer, 64 bits. no inf/nan; exact integers", + "catalog": { + "id": "int64", + "bits": 64, + "s": 1, + "e": 0, + "m": 63, + "bias": 0, + "storage": "u64", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "two complement", + "use_case": "databases, timestamps", + "gf_relation": "competitor", + "source": "ISO/IEC 9899", + "phi_distance": -1.0 + }, + "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, + "int64_bits_hex": "0x0000000000000003" + }, + "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": 7, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "int64_bits_hex": "0x0000000000000000", + "int64_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", + "int64_bits_hex": "0x0000000000000001", + "int64_bits_int": 1, + "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", + "int64_bits_hex": "0xFFFFFFFFFFFFFFFF", + "int64_bits_int": 18446744073709551615, + "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", + "int64_bits_hex": "0x0000000000000002", + "int64_bits_int": 2, + "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", + "int64_bits_hex": "0x0000000000000003", + "int64_bits_int": 3, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_four", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "int64_bits_hex": "0x0000000000000004", + "int64_bits_int": 4, + "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", + "int64_bits_hex": "0xFFFFFFFFFFFFFFFD", + "int64_bits_int": 18446744073709551613, + "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/int8_conformance_v0.json b/conformance/vectors/int8_conformance_v0.json new file mode 100644 index 000000000..280971db6 --- /dev/null +++ b/conformance/vectors/int8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "INT8", + "format_name": "INT8 / UINT8", + "bitexact": true, + "format_notes": "two's-complement signed integer, 8 bits. no inf/nan; exact integers", + "catalog": { + "id": "int8", + "bits": 8, + "s": 1, + "e": 0, + "m": 7, + "bias": 0, + "storage": "u8", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "two complement", + "use_case": "INT8 inference, per-channel scale", + "gf_relation": "competitor", + "source": "ISO/IEC 9899", + "phi_distance": -1.0 + }, + "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, + "int8_bits_hex": "0x03" + }, + "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": 128.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "int8_bits_hex": "0x00", + "int8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "int8_bits_hex": "0x01", + "int8_bits_int": 1, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x02", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "int8_bits_hex": "0x02", + "int8_bits_int": 2, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x03", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "int8_bits_hex": "0x03", + "int8_bits_int": 3, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x04", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "int8_bits_hex": "0x04", + "int8_bits_int": 4, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "int8_bits_hex": "0x05", + "int8_bits_int": 5, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "int8_bits_hex": "0x06", + "int8_bits_int": 6, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "int8_bits_hex": "0x07", + "int8_bits_int": 7, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "int8_bits_hex": "0x08", + "int8_bits_int": 8, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 9.0, + "input_f64_hex": "0x4022000000000000", + "int8_bits_hex": "0x09", + "int8_bits_int": 9, + "decoded_f64": 9.0, + "decoded_f64_hex": "0x4022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "int8_bits_hex": "0x0A", + "int8_bits_int": 10, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 11.0, + "input_f64_hex": "0x4026000000000000", + "int8_bits_hex": "0x0B", + "int8_bits_int": 11, + "decoded_f64": 11.0, + "decoded_f64_hex": "0x4026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "int8_bits_hex": "0x0C", + "int8_bits_int": 12, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 13.0, + "input_f64_hex": "0x402A000000000000", + "int8_bits_hex": "0x0D", + "int8_bits_int": 13, + "decoded_f64": 13.0, + "decoded_f64_hex": "0x402A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "int8_bits_hex": "0x0E", + "int8_bits_int": 14, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 15.0, + "input_f64_hex": "0x402E000000000000", + "int8_bits_hex": "0x0F", + "int8_bits_int": 15, + "decoded_f64": 15.0, + "decoded_f64_hex": "0x402E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "int8_bits_hex": "0x10", + "int8_bits_int": 16, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 17.0, + "input_f64_hex": "0x4031000000000000", + "int8_bits_hex": "0x11", + "int8_bits_int": 17, + "decoded_f64": 17.0, + "decoded_f64_hex": "0x4031000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 18.0, + "input_f64_hex": "0x4032000000000000", + "int8_bits_hex": "0x12", + "int8_bits_int": 18, + "decoded_f64": 18.0, + "decoded_f64_hex": "0x4032000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 19.0, + "input_f64_hex": "0x4033000000000000", + "int8_bits_hex": "0x13", + "int8_bits_int": 19, + "decoded_f64": 19.0, + "decoded_f64_hex": "0x4033000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 20.0, + "input_f64_hex": "0x4034000000000000", + "int8_bits_hex": "0x14", + "int8_bits_int": 20, + "decoded_f64": 20.0, + "decoded_f64_hex": "0x4034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 21.0, + "input_f64_hex": "0x4035000000000000", + "int8_bits_hex": "0x15", + "int8_bits_int": 21, + "decoded_f64": 21.0, + "decoded_f64_hex": "0x4035000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 22.0, + "input_f64_hex": "0x4036000000000000", + "int8_bits_hex": "0x16", + "int8_bits_int": 22, + "decoded_f64": 22.0, + "decoded_f64_hex": "0x4036000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 23.0, + "input_f64_hex": "0x4037000000000000", + "int8_bits_hex": "0x17", + "int8_bits_int": 23, + "decoded_f64": 23.0, + "decoded_f64_hex": "0x4037000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 24.0, + "input_f64_hex": "0x4038000000000000", + "int8_bits_hex": "0x18", + "int8_bits_int": 24, + "decoded_f64": 24.0, + "decoded_f64_hex": "0x4038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 25.0, + "input_f64_hex": "0x4039000000000000", + "int8_bits_hex": "0x19", + "int8_bits_int": 25, + "decoded_f64": 25.0, + "decoded_f64_hex": "0x4039000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 26.0, + "input_f64_hex": "0x403A000000000000", + "int8_bits_hex": "0x1A", + "int8_bits_int": 26, + "decoded_f64": 26.0, + "decoded_f64_hex": "0x403A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 27.0, + "input_f64_hex": "0x403B000000000000", + "int8_bits_hex": "0x1B", + "int8_bits_int": 27, + "decoded_f64": 27.0, + "decoded_f64_hex": "0x403B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 28.0, + "input_f64_hex": "0x403C000000000000", + "int8_bits_hex": "0x1C", + "int8_bits_int": 28, + "decoded_f64": 28.0, + "decoded_f64_hex": "0x403C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 29.0, + "input_f64_hex": "0x403D000000000000", + "int8_bits_hex": "0x1D", + "int8_bits_int": 29, + "decoded_f64": 29.0, + "decoded_f64_hex": "0x403D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 30.0, + "input_f64_hex": "0x403E000000000000", + "int8_bits_hex": "0x1E", + "int8_bits_int": 30, + "decoded_f64": 30.0, + "decoded_f64_hex": "0x403E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 31.0, + "input_f64_hex": "0x403F000000000000", + "int8_bits_hex": "0x1F", + "int8_bits_int": 31, + "decoded_f64": 31.0, + "decoded_f64_hex": "0x403F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 32.0, + "input_f64_hex": "0x4040000000000000", + "int8_bits_hex": "0x20", + "int8_bits_int": 32, + "decoded_f64": 32.0, + "decoded_f64_hex": "0x4040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 33.0, + "input_f64_hex": "0x4040800000000000", + "int8_bits_hex": "0x21", + "int8_bits_int": 33, + "decoded_f64": 33.0, + "decoded_f64_hex": "0x4040800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 34.0, + "input_f64_hex": "0x4041000000000000", + "int8_bits_hex": "0x22", + "int8_bits_int": 34, + "decoded_f64": 34.0, + "decoded_f64_hex": "0x4041000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 35.0, + "input_f64_hex": "0x4041800000000000", + "int8_bits_hex": "0x23", + "int8_bits_int": 35, + "decoded_f64": 35.0, + "decoded_f64_hex": "0x4041800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 36.0, + "input_f64_hex": "0x4042000000000000", + "int8_bits_hex": "0x24", + "int8_bits_int": 36, + "decoded_f64": 36.0, + "decoded_f64_hex": "0x4042000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 37.0, + "input_f64_hex": "0x4042800000000000", + "int8_bits_hex": "0x25", + "int8_bits_int": 37, + "decoded_f64": 37.0, + "decoded_f64_hex": "0x4042800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 38.0, + "input_f64_hex": "0x4043000000000000", + "int8_bits_hex": "0x26", + "int8_bits_int": 38, + "decoded_f64": 38.0, + "decoded_f64_hex": "0x4043000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 39.0, + "input_f64_hex": "0x4043800000000000", + "int8_bits_hex": "0x27", + "int8_bits_int": 39, + "decoded_f64": 39.0, + "decoded_f64_hex": "0x4043800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 40.0, + "input_f64_hex": "0x4044000000000000", + "int8_bits_hex": "0x28", + "int8_bits_int": 40, + "decoded_f64": 40.0, + "decoded_f64_hex": "0x4044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 41.0, + "input_f64_hex": "0x4044800000000000", + "int8_bits_hex": "0x29", + "int8_bits_int": 41, + "decoded_f64": 41.0, + "decoded_f64_hex": "0x4044800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 42.0, + "input_f64_hex": "0x4045000000000000", + "int8_bits_hex": "0x2A", + "int8_bits_int": 42, + "decoded_f64": 42.0, + "decoded_f64_hex": "0x4045000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 43.0, + "input_f64_hex": "0x4045800000000000", + "int8_bits_hex": "0x2B", + "int8_bits_int": 43, + "decoded_f64": 43.0, + "decoded_f64_hex": "0x4045800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 44.0, + "input_f64_hex": "0x4046000000000000", + "int8_bits_hex": "0x2C", + "int8_bits_int": 44, + "decoded_f64": 44.0, + "decoded_f64_hex": "0x4046000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 45.0, + "input_f64_hex": "0x4046800000000000", + "int8_bits_hex": "0x2D", + "int8_bits_int": 45, + "decoded_f64": 45.0, + "decoded_f64_hex": "0x4046800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 46.0, + "input_f64_hex": "0x4047000000000000", + "int8_bits_hex": "0x2E", + "int8_bits_int": 46, + "decoded_f64": 46.0, + "decoded_f64_hex": "0x4047000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 47.0, + "input_f64_hex": "0x4047800000000000", + "int8_bits_hex": "0x2F", + "int8_bits_int": 47, + "decoded_f64": 47.0, + "decoded_f64_hex": "0x4047800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 48.0, + "input_f64_hex": "0x4048000000000000", + "int8_bits_hex": "0x30", + "int8_bits_int": 48, + "decoded_f64": 48.0, + "decoded_f64_hex": "0x4048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 49.0, + "input_f64_hex": "0x4048800000000000", + "int8_bits_hex": "0x31", + "int8_bits_int": 49, + "decoded_f64": 49.0, + "decoded_f64_hex": "0x4048800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 50.0, + "input_f64_hex": "0x4049000000000000", + "int8_bits_hex": "0x32", + "int8_bits_int": 50, + "decoded_f64": 50.0, + "decoded_f64_hex": "0x4049000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 51.0, + "input_f64_hex": "0x4049800000000000", + "int8_bits_hex": "0x33", + "int8_bits_int": 51, + "decoded_f64": 51.0, + "decoded_f64_hex": "0x4049800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 52.0, + "input_f64_hex": "0x404A000000000000", + "int8_bits_hex": "0x34", + "int8_bits_int": 52, + "decoded_f64": 52.0, + "decoded_f64_hex": "0x404A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 53.0, + "input_f64_hex": "0x404A800000000000", + "int8_bits_hex": "0x35", + "int8_bits_int": 53, + "decoded_f64": 53.0, + "decoded_f64_hex": "0x404A800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 54.0, + "input_f64_hex": "0x404B000000000000", + "int8_bits_hex": "0x36", + "int8_bits_int": 54, + "decoded_f64": 54.0, + "decoded_f64_hex": "0x404B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 55.0, + "input_f64_hex": "0x404B800000000000", + "int8_bits_hex": "0x37", + "int8_bits_int": 55, + "decoded_f64": 55.0, + "decoded_f64_hex": "0x404B800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 56.0, + "input_f64_hex": "0x404C000000000000", + "int8_bits_hex": "0x38", + "int8_bits_int": 56, + "decoded_f64": 56.0, + "decoded_f64_hex": "0x404C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 57.0, + "input_f64_hex": "0x404C800000000000", + "int8_bits_hex": "0x39", + "int8_bits_int": 57, + "decoded_f64": 57.0, + "decoded_f64_hex": "0x404C800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 58.0, + "input_f64_hex": "0x404D000000000000", + "int8_bits_hex": "0x3A", + "int8_bits_int": 58, + "decoded_f64": 58.0, + "decoded_f64_hex": "0x404D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 59.0, + "input_f64_hex": "0x404D800000000000", + "int8_bits_hex": "0x3B", + "int8_bits_int": 59, + "decoded_f64": 59.0, + "decoded_f64_hex": "0x404D800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 60.0, + "input_f64_hex": "0x404E000000000000", + "int8_bits_hex": "0x3C", + "int8_bits_int": 60, + "decoded_f64": 60.0, + "decoded_f64_hex": "0x404E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 61.0, + "input_f64_hex": "0x404E800000000000", + "int8_bits_hex": "0x3D", + "int8_bits_int": 61, + "decoded_f64": 61.0, + "decoded_f64_hex": "0x404E800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 62.0, + "input_f64_hex": "0x404F000000000000", + "int8_bits_hex": "0x3E", + "int8_bits_int": 62, + "decoded_f64": 62.0, + "decoded_f64_hex": "0x404F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 63.0, + "input_f64_hex": "0x404F800000000000", + "int8_bits_hex": "0x3F", + "int8_bits_int": 63, + "decoded_f64": 63.0, + "decoded_f64_hex": "0x404F800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 64.0, + "input_f64_hex": "0x4050000000000000", + "int8_bits_hex": "0x40", + "int8_bits_int": 64, + "decoded_f64": 64.0, + "decoded_f64_hex": "0x4050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 65.0, + "input_f64_hex": "0x4050400000000000", + "int8_bits_hex": "0x41", + "int8_bits_int": 65, + "decoded_f64": 65.0, + "decoded_f64_hex": "0x4050400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 66.0, + "input_f64_hex": "0x4050800000000000", + "int8_bits_hex": "0x42", + "int8_bits_int": 66, + "decoded_f64": 66.0, + "decoded_f64_hex": "0x4050800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 67.0, + "input_f64_hex": "0x4050C00000000000", + "int8_bits_hex": "0x43", + "int8_bits_int": 67, + "decoded_f64": 67.0, + "decoded_f64_hex": "0x4050C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 68.0, + "input_f64_hex": "0x4051000000000000", + "int8_bits_hex": "0x44", + "int8_bits_int": 68, + "decoded_f64": 68.0, + "decoded_f64_hex": "0x4051000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 69.0, + "input_f64_hex": "0x4051400000000000", + "int8_bits_hex": "0x45", + "int8_bits_int": 69, + "decoded_f64": 69.0, + "decoded_f64_hex": "0x4051400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 70.0, + "input_f64_hex": "0x4051800000000000", + "int8_bits_hex": "0x46", + "int8_bits_int": 70, + "decoded_f64": 70.0, + "decoded_f64_hex": "0x4051800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 71.0, + "input_f64_hex": "0x4051C00000000000", + "int8_bits_hex": "0x47", + "int8_bits_int": 71, + "decoded_f64": 71.0, + "decoded_f64_hex": "0x4051C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 72.0, + "input_f64_hex": "0x4052000000000000", + "int8_bits_hex": "0x48", + "int8_bits_int": 72, + "decoded_f64": 72.0, + "decoded_f64_hex": "0x4052000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 73.0, + "input_f64_hex": "0x4052400000000000", + "int8_bits_hex": "0x49", + "int8_bits_int": 73, + "decoded_f64": 73.0, + "decoded_f64_hex": "0x4052400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 74.0, + "input_f64_hex": "0x4052800000000000", + "int8_bits_hex": "0x4A", + "int8_bits_int": 74, + "decoded_f64": 74.0, + "decoded_f64_hex": "0x4052800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 75.0, + "input_f64_hex": "0x4052C00000000000", + "int8_bits_hex": "0x4B", + "int8_bits_int": 75, + "decoded_f64": 75.0, + "decoded_f64_hex": "0x4052C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 76.0, + "input_f64_hex": "0x4053000000000000", + "int8_bits_hex": "0x4C", + "int8_bits_int": 76, + "decoded_f64": 76.0, + "decoded_f64_hex": "0x4053000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 77.0, + "input_f64_hex": "0x4053400000000000", + "int8_bits_hex": "0x4D", + "int8_bits_int": 77, + "decoded_f64": 77.0, + "decoded_f64_hex": "0x4053400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 78.0, + "input_f64_hex": "0x4053800000000000", + "int8_bits_hex": "0x4E", + "int8_bits_int": 78, + "decoded_f64": 78.0, + "decoded_f64_hex": "0x4053800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 79.0, + "input_f64_hex": "0x4053C00000000000", + "int8_bits_hex": "0x4F", + "int8_bits_int": 79, + "decoded_f64": 79.0, + "decoded_f64_hex": "0x4053C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 80.0, + "input_f64_hex": "0x4054000000000000", + "int8_bits_hex": "0x50", + "int8_bits_int": 80, + "decoded_f64": 80.0, + "decoded_f64_hex": "0x4054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 81.0, + "input_f64_hex": "0x4054400000000000", + "int8_bits_hex": "0x51", + "int8_bits_int": 81, + "decoded_f64": 81.0, + "decoded_f64_hex": "0x4054400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 82.0, + "input_f64_hex": "0x4054800000000000", + "int8_bits_hex": "0x52", + "int8_bits_int": 82, + "decoded_f64": 82.0, + "decoded_f64_hex": "0x4054800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 83.0, + "input_f64_hex": "0x4054C00000000000", + "int8_bits_hex": "0x53", + "int8_bits_int": 83, + "decoded_f64": 83.0, + "decoded_f64_hex": "0x4054C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 84.0, + "input_f64_hex": "0x4055000000000000", + "int8_bits_hex": "0x54", + "int8_bits_int": 84, + "decoded_f64": 84.0, + "decoded_f64_hex": "0x4055000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 85.0, + "input_f64_hex": "0x4055400000000000", + "int8_bits_hex": "0x55", + "int8_bits_int": 85, + "decoded_f64": 85.0, + "decoded_f64_hex": "0x4055400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 86.0, + "input_f64_hex": "0x4055800000000000", + "int8_bits_hex": "0x56", + "int8_bits_int": 86, + "decoded_f64": 86.0, + "decoded_f64_hex": "0x4055800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 87.0, + "input_f64_hex": "0x4055C00000000000", + "int8_bits_hex": "0x57", + "int8_bits_int": 87, + "decoded_f64": 87.0, + "decoded_f64_hex": "0x4055C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 88.0, + "input_f64_hex": "0x4056000000000000", + "int8_bits_hex": "0x58", + "int8_bits_int": 88, + "decoded_f64": 88.0, + "decoded_f64_hex": "0x4056000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 89.0, + "input_f64_hex": "0x4056400000000000", + "int8_bits_hex": "0x59", + "int8_bits_int": 89, + "decoded_f64": 89.0, + "decoded_f64_hex": "0x4056400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 90.0, + "input_f64_hex": "0x4056800000000000", + "int8_bits_hex": "0x5A", + "int8_bits_int": 90, + "decoded_f64": 90.0, + "decoded_f64_hex": "0x4056800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 91.0, + "input_f64_hex": "0x4056C00000000000", + "int8_bits_hex": "0x5B", + "int8_bits_int": 91, + "decoded_f64": 91.0, + "decoded_f64_hex": "0x4056C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 92.0, + "input_f64_hex": "0x4057000000000000", + "int8_bits_hex": "0x5C", + "int8_bits_int": 92, + "decoded_f64": 92.0, + "decoded_f64_hex": "0x4057000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 93.0, + "input_f64_hex": "0x4057400000000000", + "int8_bits_hex": "0x5D", + "int8_bits_int": 93, + "decoded_f64": 93.0, + "decoded_f64_hex": "0x4057400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 94.0, + "input_f64_hex": "0x4057800000000000", + "int8_bits_hex": "0x5E", + "int8_bits_int": 94, + "decoded_f64": 94.0, + "decoded_f64_hex": "0x4057800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 95.0, + "input_f64_hex": "0x4057C00000000000", + "int8_bits_hex": "0x5F", + "int8_bits_int": 95, + "decoded_f64": 95.0, + "decoded_f64_hex": "0x4057C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 96.0, + "input_f64_hex": "0x4058000000000000", + "int8_bits_hex": "0x60", + "int8_bits_int": 96, + "decoded_f64": 96.0, + "decoded_f64_hex": "0x4058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 97.0, + "input_f64_hex": "0x4058400000000000", + "int8_bits_hex": "0x61", + "int8_bits_int": 97, + "decoded_f64": 97.0, + "decoded_f64_hex": "0x4058400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 98.0, + "input_f64_hex": "0x4058800000000000", + "int8_bits_hex": "0x62", + "int8_bits_int": 98, + "decoded_f64": 98.0, + "decoded_f64_hex": "0x4058800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 99.0, + "input_f64_hex": "0x4058C00000000000", + "int8_bits_hex": "0x63", + "int8_bits_int": 99, + "decoded_f64": 99.0, + "decoded_f64_hex": "0x4058C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 100.0, + "input_f64_hex": "0x4059000000000000", + "int8_bits_hex": "0x64", + "int8_bits_int": 100, + "decoded_f64": 100.0, + "decoded_f64_hex": "0x4059000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 101.0, + "input_f64_hex": "0x4059400000000000", + "int8_bits_hex": "0x65", + "int8_bits_int": 101, + "decoded_f64": 101.0, + "decoded_f64_hex": "0x4059400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 102.0, + "input_f64_hex": "0x4059800000000000", + "int8_bits_hex": "0x66", + "int8_bits_int": 102, + "decoded_f64": 102.0, + "decoded_f64_hex": "0x4059800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 103.0, + "input_f64_hex": "0x4059C00000000000", + "int8_bits_hex": "0x67", + "int8_bits_int": 103, + "decoded_f64": 103.0, + "decoded_f64_hex": "0x4059C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 104.0, + "input_f64_hex": "0x405A000000000000", + "int8_bits_hex": "0x68", + "int8_bits_int": 104, + "decoded_f64": 104.0, + "decoded_f64_hex": "0x405A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 105.0, + "input_f64_hex": "0x405A400000000000", + "int8_bits_hex": "0x69", + "int8_bits_int": 105, + "decoded_f64": 105.0, + "decoded_f64_hex": "0x405A400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 106.0, + "input_f64_hex": "0x405A800000000000", + "int8_bits_hex": "0x6A", + "int8_bits_int": 106, + "decoded_f64": 106.0, + "decoded_f64_hex": "0x405A800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 107.0, + "input_f64_hex": "0x405AC00000000000", + "int8_bits_hex": "0x6B", + "int8_bits_int": 107, + "decoded_f64": 107.0, + "decoded_f64_hex": "0x405AC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 108.0, + "input_f64_hex": "0x405B000000000000", + "int8_bits_hex": "0x6C", + "int8_bits_int": 108, + "decoded_f64": 108.0, + "decoded_f64_hex": "0x405B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 109.0, + "input_f64_hex": "0x405B400000000000", + "int8_bits_hex": "0x6D", + "int8_bits_int": 109, + "decoded_f64": 109.0, + "decoded_f64_hex": "0x405B400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 110.0, + "input_f64_hex": "0x405B800000000000", + "int8_bits_hex": "0x6E", + "int8_bits_int": 110, + "decoded_f64": 110.0, + "decoded_f64_hex": "0x405B800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 111.0, + "input_f64_hex": "0x405BC00000000000", + "int8_bits_hex": "0x6F", + "int8_bits_int": 111, + "decoded_f64": 111.0, + "decoded_f64_hex": "0x405BC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": 112.0, + "input_f64_hex": "0x405C000000000000", + "int8_bits_hex": "0x70", + "int8_bits_int": 112, + "decoded_f64": 112.0, + "decoded_f64_hex": "0x405C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x71", + "input_f64": 113.0, + "input_f64_hex": "0x405C400000000000", + "int8_bits_hex": "0x71", + "int8_bits_int": 113, + "decoded_f64": 113.0, + "decoded_f64_hex": "0x405C400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x72", + "input_f64": 114.0, + "input_f64_hex": "0x405C800000000000", + "int8_bits_hex": "0x72", + "int8_bits_int": 114, + "decoded_f64": 114.0, + "decoded_f64_hex": "0x405C800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x73", + "input_f64": 115.0, + "input_f64_hex": "0x405CC00000000000", + "int8_bits_hex": "0x73", + "int8_bits_int": 115, + "decoded_f64": 115.0, + "decoded_f64_hex": "0x405CC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x74", + "input_f64": 116.0, + "input_f64_hex": "0x405D000000000000", + "int8_bits_hex": "0x74", + "int8_bits_int": 116, + "decoded_f64": 116.0, + "decoded_f64_hex": "0x405D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x75", + "input_f64": 117.0, + "input_f64_hex": "0x405D400000000000", + "int8_bits_hex": "0x75", + "int8_bits_int": 117, + "decoded_f64": 117.0, + "decoded_f64_hex": "0x405D400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x76", + "input_f64": 118.0, + "input_f64_hex": "0x405D800000000000", + "int8_bits_hex": "0x76", + "int8_bits_int": 118, + "decoded_f64": 118.0, + "decoded_f64_hex": "0x405D800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x77", + "input_f64": 119.0, + "input_f64_hex": "0x405DC00000000000", + "int8_bits_hex": "0x77", + "int8_bits_int": 119, + "decoded_f64": 119.0, + "decoded_f64_hex": "0x405DC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x78", + "input_f64": 120.0, + "input_f64_hex": "0x405E000000000000", + "int8_bits_hex": "0x78", + "int8_bits_int": 120, + "decoded_f64": 120.0, + "decoded_f64_hex": "0x405E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x79", + "input_f64": 121.0, + "input_f64_hex": "0x405E400000000000", + "int8_bits_hex": "0x79", + "int8_bits_int": 121, + "decoded_f64": 121.0, + "decoded_f64_hex": "0x405E400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7A", + "input_f64": 122.0, + "input_f64_hex": "0x405E800000000000", + "int8_bits_hex": "0x7A", + "int8_bits_int": 122, + "decoded_f64": 122.0, + "decoded_f64_hex": "0x405E800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7B", + "input_f64": 123.0, + "input_f64_hex": "0x405EC00000000000", + "int8_bits_hex": "0x7B", + "int8_bits_int": 123, + "decoded_f64": 123.0, + "decoded_f64_hex": "0x405EC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7C", + "input_f64": 124.0, + "input_f64_hex": "0x405F000000000000", + "int8_bits_hex": "0x7C", + "int8_bits_int": 124, + "decoded_f64": 124.0, + "decoded_f64_hex": "0x405F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7D", + "input_f64": 125.0, + "input_f64_hex": "0x405F400000000000", + "int8_bits_hex": "0x7D", + "int8_bits_int": 125, + "decoded_f64": 125.0, + "decoded_f64_hex": "0x405F400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7E", + "input_f64": 126.0, + "input_f64_hex": "0x405F800000000000", + "int8_bits_hex": "0x7E", + "int8_bits_int": 126, + "decoded_f64": 126.0, + "decoded_f64_hex": "0x405F800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7F", + "input_f64": 127.0, + "input_f64_hex": "0x405FC00000000000", + "int8_bits_hex": "0x7F", + "int8_bits_int": 127, + "decoded_f64": 127.0, + "decoded_f64_hex": "0x405FC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x80", + "input_f64": -128.0, + "input_f64_hex": "0xC060000000000000", + "int8_bits_hex": "0x80", + "int8_bits_int": 128, + "decoded_f64": -128.0, + "decoded_f64_hex": "0xC060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x81", + "input_f64": -127.0, + "input_f64_hex": "0xC05FC00000000000", + "int8_bits_hex": "0x81", + "int8_bits_int": 129, + "decoded_f64": -127.0, + "decoded_f64_hex": "0xC05FC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x82", + "input_f64": -126.0, + "input_f64_hex": "0xC05F800000000000", + "int8_bits_hex": "0x82", + "int8_bits_int": 130, + "decoded_f64": -126.0, + "decoded_f64_hex": "0xC05F800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x83", + "input_f64": -125.0, + "input_f64_hex": "0xC05F400000000000", + "int8_bits_hex": "0x83", + "int8_bits_int": 131, + "decoded_f64": -125.0, + "decoded_f64_hex": "0xC05F400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x84", + "input_f64": -124.0, + "input_f64_hex": "0xC05F000000000000", + "int8_bits_hex": "0x84", + "int8_bits_int": 132, + "decoded_f64": -124.0, + "decoded_f64_hex": "0xC05F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x85", + "input_f64": -123.0, + "input_f64_hex": "0xC05EC00000000000", + "int8_bits_hex": "0x85", + "int8_bits_int": 133, + "decoded_f64": -123.0, + "decoded_f64_hex": "0xC05EC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x86", + "input_f64": -122.0, + "input_f64_hex": "0xC05E800000000000", + "int8_bits_hex": "0x86", + "int8_bits_int": 134, + "decoded_f64": -122.0, + "decoded_f64_hex": "0xC05E800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x87", + "input_f64": -121.0, + "input_f64_hex": "0xC05E400000000000", + "int8_bits_hex": "0x87", + "int8_bits_int": 135, + "decoded_f64": -121.0, + "decoded_f64_hex": "0xC05E400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x88", + "input_f64": -120.0, + "input_f64_hex": "0xC05E000000000000", + "int8_bits_hex": "0x88", + "int8_bits_int": 136, + "decoded_f64": -120.0, + "decoded_f64_hex": "0xC05E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x89", + "input_f64": -119.0, + "input_f64_hex": "0xC05DC00000000000", + "int8_bits_hex": "0x89", + "int8_bits_int": 137, + "decoded_f64": -119.0, + "decoded_f64_hex": "0xC05DC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8A", + "input_f64": -118.0, + "input_f64_hex": "0xC05D800000000000", + "int8_bits_hex": "0x8A", + "int8_bits_int": 138, + "decoded_f64": -118.0, + "decoded_f64_hex": "0xC05D800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8B", + "input_f64": -117.0, + "input_f64_hex": "0xC05D400000000000", + "int8_bits_hex": "0x8B", + "int8_bits_int": 139, + "decoded_f64": -117.0, + "decoded_f64_hex": "0xC05D400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8C", + "input_f64": -116.0, + "input_f64_hex": "0xC05D000000000000", + "int8_bits_hex": "0x8C", + "int8_bits_int": 140, + "decoded_f64": -116.0, + "decoded_f64_hex": "0xC05D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8D", + "input_f64": -115.0, + "input_f64_hex": "0xC05CC00000000000", + "int8_bits_hex": "0x8D", + "int8_bits_int": 141, + "decoded_f64": -115.0, + "decoded_f64_hex": "0xC05CC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8E", + "input_f64": -114.0, + "input_f64_hex": "0xC05C800000000000", + "int8_bits_hex": "0x8E", + "int8_bits_int": 142, + "decoded_f64": -114.0, + "decoded_f64_hex": "0xC05C800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8F", + "input_f64": -113.0, + "input_f64_hex": "0xC05C400000000000", + "int8_bits_hex": "0x8F", + "int8_bits_int": 143, + "decoded_f64": -113.0, + "decoded_f64_hex": "0xC05C400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x90", + "input_f64": -112.0, + "input_f64_hex": "0xC05C000000000000", + "int8_bits_hex": "0x90", + "int8_bits_int": 144, + "decoded_f64": -112.0, + "decoded_f64_hex": "0xC05C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -111.0, + "input_f64_hex": "0xC05BC00000000000", + "int8_bits_hex": "0x91", + "int8_bits_int": 145, + "decoded_f64": -111.0, + "decoded_f64_hex": "0xC05BC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -110.0, + "input_f64_hex": "0xC05B800000000000", + "int8_bits_hex": "0x92", + "int8_bits_int": 146, + "decoded_f64": -110.0, + "decoded_f64_hex": "0xC05B800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -109.0, + "input_f64_hex": "0xC05B400000000000", + "int8_bits_hex": "0x93", + "int8_bits_int": 147, + "decoded_f64": -109.0, + "decoded_f64_hex": "0xC05B400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -108.0, + "input_f64_hex": "0xC05B000000000000", + "int8_bits_hex": "0x94", + "int8_bits_int": 148, + "decoded_f64": -108.0, + "decoded_f64_hex": "0xC05B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -107.0, + "input_f64_hex": "0xC05AC00000000000", + "int8_bits_hex": "0x95", + "int8_bits_int": 149, + "decoded_f64": -107.0, + "decoded_f64_hex": "0xC05AC00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -106.0, + "input_f64_hex": "0xC05A800000000000", + "int8_bits_hex": "0x96", + "int8_bits_int": 150, + "decoded_f64": -106.0, + "decoded_f64_hex": "0xC05A800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -105.0, + "input_f64_hex": "0xC05A400000000000", + "int8_bits_hex": "0x97", + "int8_bits_int": 151, + "decoded_f64": -105.0, + "decoded_f64_hex": "0xC05A400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -104.0, + "input_f64_hex": "0xC05A000000000000", + "int8_bits_hex": "0x98", + "int8_bits_int": 152, + "decoded_f64": -104.0, + "decoded_f64_hex": "0xC05A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -103.0, + "input_f64_hex": "0xC059C00000000000", + "int8_bits_hex": "0x99", + "int8_bits_int": 153, + "decoded_f64": -103.0, + "decoded_f64_hex": "0xC059C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -102.0, + "input_f64_hex": "0xC059800000000000", + "int8_bits_hex": "0x9A", + "int8_bits_int": 154, + "decoded_f64": -102.0, + "decoded_f64_hex": "0xC059800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -101.0, + "input_f64_hex": "0xC059400000000000", + "int8_bits_hex": "0x9B", + "int8_bits_int": 155, + "decoded_f64": -101.0, + "decoded_f64_hex": "0xC059400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -100.0, + "input_f64_hex": "0xC059000000000000", + "int8_bits_hex": "0x9C", + "int8_bits_int": 156, + "decoded_f64": -100.0, + "decoded_f64_hex": "0xC059000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -99.0, + "input_f64_hex": "0xC058C00000000000", + "int8_bits_hex": "0x9D", + "int8_bits_int": 157, + "decoded_f64": -99.0, + "decoded_f64_hex": "0xC058C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -98.0, + "input_f64_hex": "0xC058800000000000", + "int8_bits_hex": "0x9E", + "int8_bits_int": 158, + "decoded_f64": -98.0, + "decoded_f64_hex": "0xC058800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -97.0, + "input_f64_hex": "0xC058400000000000", + "int8_bits_hex": "0x9F", + "int8_bits_int": 159, + "decoded_f64": -97.0, + "decoded_f64_hex": "0xC058400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -96.0, + "input_f64_hex": "0xC058000000000000", + "int8_bits_hex": "0xA0", + "int8_bits_int": 160, + "decoded_f64": -96.0, + "decoded_f64_hex": "0xC058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -95.0, + "input_f64_hex": "0xC057C00000000000", + "int8_bits_hex": "0xA1", + "int8_bits_int": 161, + "decoded_f64": -95.0, + "decoded_f64_hex": "0xC057C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -94.0, + "input_f64_hex": "0xC057800000000000", + "int8_bits_hex": "0xA2", + "int8_bits_int": 162, + "decoded_f64": -94.0, + "decoded_f64_hex": "0xC057800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -93.0, + "input_f64_hex": "0xC057400000000000", + "int8_bits_hex": "0xA3", + "int8_bits_int": 163, + "decoded_f64": -93.0, + "decoded_f64_hex": "0xC057400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -92.0, + "input_f64_hex": "0xC057000000000000", + "int8_bits_hex": "0xA4", + "int8_bits_int": 164, + "decoded_f64": -92.0, + "decoded_f64_hex": "0xC057000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -91.0, + "input_f64_hex": "0xC056C00000000000", + "int8_bits_hex": "0xA5", + "int8_bits_int": 165, + "decoded_f64": -91.0, + "decoded_f64_hex": "0xC056C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -90.0, + "input_f64_hex": "0xC056800000000000", + "int8_bits_hex": "0xA6", + "int8_bits_int": 166, + "decoded_f64": -90.0, + "decoded_f64_hex": "0xC056800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -89.0, + "input_f64_hex": "0xC056400000000000", + "int8_bits_hex": "0xA7", + "int8_bits_int": 167, + "decoded_f64": -89.0, + "decoded_f64_hex": "0xC056400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -88.0, + "input_f64_hex": "0xC056000000000000", + "int8_bits_hex": "0xA8", + "int8_bits_int": 168, + "decoded_f64": -88.0, + "decoded_f64_hex": "0xC056000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -87.0, + "input_f64_hex": "0xC055C00000000000", + "int8_bits_hex": "0xA9", + "int8_bits_int": 169, + "decoded_f64": -87.0, + "decoded_f64_hex": "0xC055C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -86.0, + "input_f64_hex": "0xC055800000000000", + "int8_bits_hex": "0xAA", + "int8_bits_int": 170, + "decoded_f64": -86.0, + "decoded_f64_hex": "0xC055800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -85.0, + "input_f64_hex": "0xC055400000000000", + "int8_bits_hex": "0xAB", + "int8_bits_int": 171, + "decoded_f64": -85.0, + "decoded_f64_hex": "0xC055400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -84.0, + "input_f64_hex": "0xC055000000000000", + "int8_bits_hex": "0xAC", + "int8_bits_int": 172, + "decoded_f64": -84.0, + "decoded_f64_hex": "0xC055000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -83.0, + "input_f64_hex": "0xC054C00000000000", + "int8_bits_hex": "0xAD", + "int8_bits_int": 173, + "decoded_f64": -83.0, + "decoded_f64_hex": "0xC054C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -82.0, + "input_f64_hex": "0xC054800000000000", + "int8_bits_hex": "0xAE", + "int8_bits_int": 174, + "decoded_f64": -82.0, + "decoded_f64_hex": "0xC054800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -81.0, + "input_f64_hex": "0xC054400000000000", + "int8_bits_hex": "0xAF", + "int8_bits_int": 175, + "decoded_f64": -81.0, + "decoded_f64_hex": "0xC054400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -80.0, + "input_f64_hex": "0xC054000000000000", + "int8_bits_hex": "0xB0", + "int8_bits_int": 176, + "decoded_f64": -80.0, + "decoded_f64_hex": "0xC054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -79.0, + "input_f64_hex": "0xC053C00000000000", + "int8_bits_hex": "0xB1", + "int8_bits_int": 177, + "decoded_f64": -79.0, + "decoded_f64_hex": "0xC053C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -78.0, + "input_f64_hex": "0xC053800000000000", + "int8_bits_hex": "0xB2", + "int8_bits_int": 178, + "decoded_f64": -78.0, + "decoded_f64_hex": "0xC053800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -77.0, + "input_f64_hex": "0xC053400000000000", + "int8_bits_hex": "0xB3", + "int8_bits_int": 179, + "decoded_f64": -77.0, + "decoded_f64_hex": "0xC053400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -76.0, + "input_f64_hex": "0xC053000000000000", + "int8_bits_hex": "0xB4", + "int8_bits_int": 180, + "decoded_f64": -76.0, + "decoded_f64_hex": "0xC053000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -75.0, + "input_f64_hex": "0xC052C00000000000", + "int8_bits_hex": "0xB5", + "int8_bits_int": 181, + "decoded_f64": -75.0, + "decoded_f64_hex": "0xC052C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -74.0, + "input_f64_hex": "0xC052800000000000", + "int8_bits_hex": "0xB6", + "int8_bits_int": 182, + "decoded_f64": -74.0, + "decoded_f64_hex": "0xC052800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -73.0, + "input_f64_hex": "0xC052400000000000", + "int8_bits_hex": "0xB7", + "int8_bits_int": 183, + "decoded_f64": -73.0, + "decoded_f64_hex": "0xC052400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -72.0, + "input_f64_hex": "0xC052000000000000", + "int8_bits_hex": "0xB8", + "int8_bits_int": 184, + "decoded_f64": -72.0, + "decoded_f64_hex": "0xC052000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -71.0, + "input_f64_hex": "0xC051C00000000000", + "int8_bits_hex": "0xB9", + "int8_bits_int": 185, + "decoded_f64": -71.0, + "decoded_f64_hex": "0xC051C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -70.0, + "input_f64_hex": "0xC051800000000000", + "int8_bits_hex": "0xBA", + "int8_bits_int": 186, + "decoded_f64": -70.0, + "decoded_f64_hex": "0xC051800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -69.0, + "input_f64_hex": "0xC051400000000000", + "int8_bits_hex": "0xBB", + "int8_bits_int": 187, + "decoded_f64": -69.0, + "decoded_f64_hex": "0xC051400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -68.0, + "input_f64_hex": "0xC051000000000000", + "int8_bits_hex": "0xBC", + "int8_bits_int": 188, + "decoded_f64": -68.0, + "decoded_f64_hex": "0xC051000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -67.0, + "input_f64_hex": "0xC050C00000000000", + "int8_bits_hex": "0xBD", + "int8_bits_int": 189, + "decoded_f64": -67.0, + "decoded_f64_hex": "0xC050C00000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -66.0, + "input_f64_hex": "0xC050800000000000", + "int8_bits_hex": "0xBE", + "int8_bits_int": 190, + "decoded_f64": -66.0, + "decoded_f64_hex": "0xC050800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -65.0, + "input_f64_hex": "0xC050400000000000", + "int8_bits_hex": "0xBF", + "int8_bits_int": 191, + "decoded_f64": -65.0, + "decoded_f64_hex": "0xC050400000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -64.0, + "input_f64_hex": "0xC050000000000000", + "int8_bits_hex": "0xC0", + "int8_bits_int": 192, + "decoded_f64": -64.0, + "decoded_f64_hex": "0xC050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -63.0, + "input_f64_hex": "0xC04F800000000000", + "int8_bits_hex": "0xC1", + "int8_bits_int": 193, + "decoded_f64": -63.0, + "decoded_f64_hex": "0xC04F800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -62.0, + "input_f64_hex": "0xC04F000000000000", + "int8_bits_hex": "0xC2", + "int8_bits_int": 194, + "decoded_f64": -62.0, + "decoded_f64_hex": "0xC04F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -61.0, + "input_f64_hex": "0xC04E800000000000", + "int8_bits_hex": "0xC3", + "int8_bits_int": 195, + "decoded_f64": -61.0, + "decoded_f64_hex": "0xC04E800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -60.0, + "input_f64_hex": "0xC04E000000000000", + "int8_bits_hex": "0xC4", + "int8_bits_int": 196, + "decoded_f64": -60.0, + "decoded_f64_hex": "0xC04E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -59.0, + "input_f64_hex": "0xC04D800000000000", + "int8_bits_hex": "0xC5", + "int8_bits_int": 197, + "decoded_f64": -59.0, + "decoded_f64_hex": "0xC04D800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -58.0, + "input_f64_hex": "0xC04D000000000000", + "int8_bits_hex": "0xC6", + "int8_bits_int": 198, + "decoded_f64": -58.0, + "decoded_f64_hex": "0xC04D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -57.0, + "input_f64_hex": "0xC04C800000000000", + "int8_bits_hex": "0xC7", + "int8_bits_int": 199, + "decoded_f64": -57.0, + "decoded_f64_hex": "0xC04C800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -56.0, + "input_f64_hex": "0xC04C000000000000", + "int8_bits_hex": "0xC8", + "int8_bits_int": 200, + "decoded_f64": -56.0, + "decoded_f64_hex": "0xC04C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -55.0, + "input_f64_hex": "0xC04B800000000000", + "int8_bits_hex": "0xC9", + "int8_bits_int": 201, + "decoded_f64": -55.0, + "decoded_f64_hex": "0xC04B800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -54.0, + "input_f64_hex": "0xC04B000000000000", + "int8_bits_hex": "0xCA", + "int8_bits_int": 202, + "decoded_f64": -54.0, + "decoded_f64_hex": "0xC04B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -53.0, + "input_f64_hex": "0xC04A800000000000", + "int8_bits_hex": "0xCB", + "int8_bits_int": 203, + "decoded_f64": -53.0, + "decoded_f64_hex": "0xC04A800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -52.0, + "input_f64_hex": "0xC04A000000000000", + "int8_bits_hex": "0xCC", + "int8_bits_int": 204, + "decoded_f64": -52.0, + "decoded_f64_hex": "0xC04A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -51.0, + "input_f64_hex": "0xC049800000000000", + "int8_bits_hex": "0xCD", + "int8_bits_int": 205, + "decoded_f64": -51.0, + "decoded_f64_hex": "0xC049800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -50.0, + "input_f64_hex": "0xC049000000000000", + "int8_bits_hex": "0xCE", + "int8_bits_int": 206, + "decoded_f64": -50.0, + "decoded_f64_hex": "0xC049000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -49.0, + "input_f64_hex": "0xC048800000000000", + "int8_bits_hex": "0xCF", + "int8_bits_int": 207, + "decoded_f64": -49.0, + "decoded_f64_hex": "0xC048800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -48.0, + "input_f64_hex": "0xC048000000000000", + "int8_bits_hex": "0xD0", + "int8_bits_int": 208, + "decoded_f64": -48.0, + "decoded_f64_hex": "0xC048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -47.0, + "input_f64_hex": "0xC047800000000000", + "int8_bits_hex": "0xD1", + "int8_bits_int": 209, + "decoded_f64": -47.0, + "decoded_f64_hex": "0xC047800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -46.0, + "input_f64_hex": "0xC047000000000000", + "int8_bits_hex": "0xD2", + "int8_bits_int": 210, + "decoded_f64": -46.0, + "decoded_f64_hex": "0xC047000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -45.0, + "input_f64_hex": "0xC046800000000000", + "int8_bits_hex": "0xD3", + "int8_bits_int": 211, + "decoded_f64": -45.0, + "decoded_f64_hex": "0xC046800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -44.0, + "input_f64_hex": "0xC046000000000000", + "int8_bits_hex": "0xD4", + "int8_bits_int": 212, + "decoded_f64": -44.0, + "decoded_f64_hex": "0xC046000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -43.0, + "input_f64_hex": "0xC045800000000000", + "int8_bits_hex": "0xD5", + "int8_bits_int": 213, + "decoded_f64": -43.0, + "decoded_f64_hex": "0xC045800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -42.0, + "input_f64_hex": "0xC045000000000000", + "int8_bits_hex": "0xD6", + "int8_bits_int": 214, + "decoded_f64": -42.0, + "decoded_f64_hex": "0xC045000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -41.0, + "input_f64_hex": "0xC044800000000000", + "int8_bits_hex": "0xD7", + "int8_bits_int": 215, + "decoded_f64": -41.0, + "decoded_f64_hex": "0xC044800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -40.0, + "input_f64_hex": "0xC044000000000000", + "int8_bits_hex": "0xD8", + "int8_bits_int": 216, + "decoded_f64": -40.0, + "decoded_f64_hex": "0xC044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -39.0, + "input_f64_hex": "0xC043800000000000", + "int8_bits_hex": "0xD9", + "int8_bits_int": 217, + "decoded_f64": -39.0, + "decoded_f64_hex": "0xC043800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -38.0, + "input_f64_hex": "0xC043000000000000", + "int8_bits_hex": "0xDA", + "int8_bits_int": 218, + "decoded_f64": -38.0, + "decoded_f64_hex": "0xC043000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -37.0, + "input_f64_hex": "0xC042800000000000", + "int8_bits_hex": "0xDB", + "int8_bits_int": 219, + "decoded_f64": -37.0, + "decoded_f64_hex": "0xC042800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -36.0, + "input_f64_hex": "0xC042000000000000", + "int8_bits_hex": "0xDC", + "int8_bits_int": 220, + "decoded_f64": -36.0, + "decoded_f64_hex": "0xC042000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -35.0, + "input_f64_hex": "0xC041800000000000", + "int8_bits_hex": "0xDD", + "int8_bits_int": 221, + "decoded_f64": -35.0, + "decoded_f64_hex": "0xC041800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -34.0, + "input_f64_hex": "0xC041000000000000", + "int8_bits_hex": "0xDE", + "int8_bits_int": 222, + "decoded_f64": -34.0, + "decoded_f64_hex": "0xC041000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -33.0, + "input_f64_hex": "0xC040800000000000", + "int8_bits_hex": "0xDF", + "int8_bits_int": 223, + "decoded_f64": -33.0, + "decoded_f64_hex": "0xC040800000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -32.0, + "input_f64_hex": "0xC040000000000000", + "int8_bits_hex": "0xE0", + "int8_bits_int": 224, + "decoded_f64": -32.0, + "decoded_f64_hex": "0xC040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -31.0, + "input_f64_hex": "0xC03F000000000000", + "int8_bits_hex": "0xE1", + "int8_bits_int": 225, + "decoded_f64": -31.0, + "decoded_f64_hex": "0xC03F000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -30.0, + "input_f64_hex": "0xC03E000000000000", + "int8_bits_hex": "0xE2", + "int8_bits_int": 226, + "decoded_f64": -30.0, + "decoded_f64_hex": "0xC03E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -29.0, + "input_f64_hex": "0xC03D000000000000", + "int8_bits_hex": "0xE3", + "int8_bits_int": 227, + "decoded_f64": -29.0, + "decoded_f64_hex": "0xC03D000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -28.0, + "input_f64_hex": "0xC03C000000000000", + "int8_bits_hex": "0xE4", + "int8_bits_int": 228, + "decoded_f64": -28.0, + "decoded_f64_hex": "0xC03C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -27.0, + "input_f64_hex": "0xC03B000000000000", + "int8_bits_hex": "0xE5", + "int8_bits_int": 229, + "decoded_f64": -27.0, + "decoded_f64_hex": "0xC03B000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -26.0, + "input_f64_hex": "0xC03A000000000000", + "int8_bits_hex": "0xE6", + "int8_bits_int": 230, + "decoded_f64": -26.0, + "decoded_f64_hex": "0xC03A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -25.0, + "input_f64_hex": "0xC039000000000000", + "int8_bits_hex": "0xE7", + "int8_bits_int": 231, + "decoded_f64": -25.0, + "decoded_f64_hex": "0xC039000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -24.0, + "input_f64_hex": "0xC038000000000000", + "int8_bits_hex": "0xE8", + "int8_bits_int": 232, + "decoded_f64": -24.0, + "decoded_f64_hex": "0xC038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -23.0, + "input_f64_hex": "0xC037000000000000", + "int8_bits_hex": "0xE9", + "int8_bits_int": 233, + "decoded_f64": -23.0, + "decoded_f64_hex": "0xC037000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -22.0, + "input_f64_hex": "0xC036000000000000", + "int8_bits_hex": "0xEA", + "int8_bits_int": 234, + "decoded_f64": -22.0, + "decoded_f64_hex": "0xC036000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -21.0, + "input_f64_hex": "0xC035000000000000", + "int8_bits_hex": "0xEB", + "int8_bits_int": 235, + "decoded_f64": -21.0, + "decoded_f64_hex": "0xC035000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -20.0, + "input_f64_hex": "0xC034000000000000", + "int8_bits_hex": "0xEC", + "int8_bits_int": 236, + "decoded_f64": -20.0, + "decoded_f64_hex": "0xC034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -19.0, + "input_f64_hex": "0xC033000000000000", + "int8_bits_hex": "0xED", + "int8_bits_int": 237, + "decoded_f64": -19.0, + "decoded_f64_hex": "0xC033000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -18.0, + "input_f64_hex": "0xC032000000000000", + "int8_bits_hex": "0xEE", + "int8_bits_int": 238, + "decoded_f64": -18.0, + "decoded_f64_hex": "0xC032000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -17.0, + "input_f64_hex": "0xC031000000000000", + "int8_bits_hex": "0xEF", + "int8_bits_int": 239, + "decoded_f64": -17.0, + "decoded_f64_hex": "0xC031000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "int8_bits_hex": "0xF0", + "int8_bits_int": 240, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF1", + "input_f64": -15.0, + "input_f64_hex": "0xC02E000000000000", + "int8_bits_hex": "0xF1", + "int8_bits_int": 241, + "decoded_f64": -15.0, + "decoded_f64_hex": "0xC02E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF2", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "int8_bits_hex": "0xF2", + "int8_bits_int": 242, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF3", + "input_f64": -13.0, + "input_f64_hex": "0xC02A000000000000", + "int8_bits_hex": "0xF3", + "int8_bits_int": 243, + "decoded_f64": -13.0, + "decoded_f64_hex": "0xC02A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF4", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "int8_bits_hex": "0xF4", + "int8_bits_int": 244, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF5", + "input_f64": -11.0, + "input_f64_hex": "0xC026000000000000", + "int8_bits_hex": "0xF5", + "int8_bits_int": 245, + "decoded_f64": -11.0, + "decoded_f64_hex": "0xC026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF6", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "int8_bits_hex": "0xF6", + "int8_bits_int": 246, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF7", + "input_f64": -9.0, + "input_f64_hex": "0xC022000000000000", + "int8_bits_hex": "0xF7", + "int8_bits_int": 247, + "decoded_f64": -9.0, + "decoded_f64_hex": "0xC022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF8", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "int8_bits_hex": "0xF8", + "int8_bits_int": 248, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF9", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "int8_bits_hex": "0xF9", + "int8_bits_int": 249, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFA", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "int8_bits_hex": "0xFA", + "int8_bits_int": 250, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFB", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "int8_bits_hex": "0xFB", + "int8_bits_int": 251, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFC", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "int8_bits_hex": "0xFC", + "int8_bits_int": 252, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFD", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "int8_bits_hex": "0xFD", + "int8_bits_int": 253, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFE", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "int8_bits_hex": "0xFE", + "int8_bits_int": 254, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFF", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "int8_bits_hex": "0xFF", + "int8_bits_int": 255, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/lns16_conformance_v0.json b/conformance/vectors/lns16_conformance_v0.json new file mode 100644 index 000000000..92316b2e0 --- /dev/null +++ b/conformance/vectors/lns16_conformance_v0.json @@ -0,0 +1,92 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "LNS16", + "format_name": "LNS-16", + "bitexact": true, + "format_notes": "log-number-system, 1 sign + 15 fixed-point base-2 log bits. zero is reserved code; no inf/nan in this convention", + "catalog": { + "id": "lns16", + "bits": 16, + "s": 1, + "e": 15, + "m": 0, + "bias": 0, + "storage": "u16", + "cluster": "Lns", + "status": "Verified", + "standard": "LNS-Madam (2021)", + "use_case": "log-domain training (mul -> add)", + "gf_relation": "orthogonal", + "source": "Alam 2021", + "phi_distance": -1.0 + }, + "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": 5, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "lns16_bits_hex": "0x0000", + "lns16_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "neg_one", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "lns16_bits_hex": "0x8000", + "lns16_bits_int": 32768, + "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", + "lns16_bits_hex": "0x0080", + "lns16_bits_int": 128, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_half", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "lns16_bits_hex": "0x7F80", + "lns16_bits_int": 32640, + "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", + "lns16_bits_hex": "0x0100", + "lns16_bits_int": 256, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/lns32_conformance_v0.json b/conformance/vectors/lns32_conformance_v0.json new file mode 100644 index 000000000..542a36ea1 --- /dev/null +++ b/conformance/vectors/lns32_conformance_v0.json @@ -0,0 +1,92 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "LNS32", + "format_name": "LNS-32", + "bitexact": true, + "format_notes": "log-number-system, 1 sign + 31 fixed-point base-2 log bits. zero is reserved code; no inf/nan in this convention", + "catalog": { + "id": "lns32", + "bits": 32, + "s": 1, + "e": 31, + "m": 0, + "bias": 0, + "storage": "u32", + "cluster": "Lns", + "status": "Verified", + "standard": "LNS-Madam (2021)", + "use_case": "log-domain DSP", + "gf_relation": "orthogonal", + "source": "Alam 2021", + "phi_distance": -1.0 + }, + "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": 5, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "lns32_bits_hex": "0x00000000", + "lns32_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "neg_one", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "lns32_bits_hex": "0x80000000", + "lns32_bits_int": 2147483648, + "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", + "lns32_bits_hex": "0x00008000", + "lns32_bits_int": 32768, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_half", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "lns32_bits_hex": "0x7FFF8000", + "lns32_bits_int": 2147450880, + "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", + "lns32_bits_hex": "0x00010000", + "lns32_bits_int": 65536, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/lns64_conformance_v0.json b/conformance/vectors/lns64_conformance_v0.json new file mode 100644 index 000000000..f85aba92f --- /dev/null +++ b/conformance/vectors/lns64_conformance_v0.json @@ -0,0 +1,92 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "LNS64", + "format_name": "LNS-64", + "bitexact": true, + "format_notes": "log-number-system, 1 sign + 63 fixed-point base-2 log bits. zero is reserved code; no inf/nan in this convention", + "catalog": { + "id": "lns64", + "bits": 64, + "s": 1, + "e": 63, + "m": 0, + "bias": 0, + "storage": "u64", + "cluster": "Lns", + "status": "Verified", + "standard": "LNS-Madam (2021)", + "use_case": "scientific log-domain", + "gf_relation": "orthogonal", + "source": "Alam 2021", + "phi_distance": -1.0 + }, + "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": 5, + "vectors": [ + { + "name": "pos_zero", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "lns64_bits_hex": "0x0000000000000000", + "lns64_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "neg_one", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "lns64_bits_hex": "0x8000000000000000", + "lns64_bits_int": 9223372036854775808, + "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", + "lns64_bits_hex": "0x0000000080000000", + "lns64_bits_int": 2147483648, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "pos_half", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "lns64_bits_hex": "0x7FFFFFFF80000000", + "lns64_bits_int": 9223372034707292160, + "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", + "lns64_bits_hex": "0x0000000100000000", + "lns64_bits_int": 4294967296, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/lns8_conformance_v0.json b/conformance/vectors/lns8_conformance_v0.json new file mode 100644 index 000000000..0dcc6fe9a --- /dev/null +++ b/conformance/vectors/lns8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "LNS8", + "format_name": "LNS-8", + "bitexact": true, + "format_notes": "log-number-system, 1 sign + 7 fixed-point base-2 log bits. zero is reserved code; no inf/nan in this convention", + "catalog": { + "id": "lns8", + "bits": 8, + "s": 1, + "e": 7, + "m": 0, + "bias": 0, + "storage": "u8", + "cluster": "Lns", + "status": "Verified", + "standard": "Arnold 1990; LNS-Madam (2021)", + "use_case": "DSP, signal processing", + "gf_relation": "orthogonal", + "source": "Alam 2021 (arXiv:2106.13914)", + "phi_distance": -1.0 + }, + "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": 234.75303506039583, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "lns8_bits_hex": "0x00", + "lns8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 1.0905077326652577, + "input_f64_hex": "0x3FF172B83C7D517B", + "lns8_bits_hex": "0x01", + "lns8_bits_int": 1, + "decoded_f64": 1.0905077326652577, + "decoded_f64_hex": "0x3FF172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x02", + "input_f64": 1.189207115002721, + "input_f64_hex": "0x3FF306FE0A31B715", + "lns8_bits_hex": "0x02", + "lns8_bits_int": 2, + "decoded_f64": 1.189207115002721, + "decoded_f64_hex": "0x3FF306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x03", + "input_f64": 1.2968395546510096, + "input_f64_hex": "0x3FF4BFDAD5362A27", + "lns8_bits_hex": "0x03", + "lns8_bits_int": 3, + "decoded_f64": 1.2968395546510096, + "decoded_f64_hex": "0x3FF4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x04", + "input_f64": 1.4142135623730951, + "input_f64_hex": "0x3FF6A09E667F3BCD", + "lns8_bits_hex": "0x04", + "lns8_bits_int": 4, + "decoded_f64": 1.4142135623730951, + "decoded_f64_hex": "0x3FF6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 1.5422108254079407, + "input_f64_hex": "0x3FF8ACE5422AA0DB", + "lns8_bits_hex": "0x05", + "lns8_bits_int": 5, + "decoded_f64": 1.5422108254079407, + "decoded_f64_hex": "0x3FF8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 1.681792830507429, + "input_f64_hex": "0x3FFAE89F995AD3AD", + "lns8_bits_hex": "0x06", + "lns8_bits_int": 6, + "decoded_f64": 1.681792830507429, + "decoded_f64_hex": "0x3FFAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 1.8340080864093424, + "input_f64_hex": "0x3FFD5818DCFBA487", + "lns8_bits_hex": "0x07", + "lns8_bits_int": 7, + "decoded_f64": 1.8340080864093424, + "decoded_f64_hex": "0x3FFD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "lns8_bits_hex": "0x08", + "lns8_bits_int": 8, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 2.1810154653305154, + "input_f64_hex": "0x400172B83C7D517B", + "lns8_bits_hex": "0x09", + "lns8_bits_int": 9, + "decoded_f64": 2.1810154653305154, + "decoded_f64_hex": "0x400172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 2.378414230005442, + "input_f64_hex": "0x400306FE0A31B715", + "lns8_bits_hex": "0x0A", + "lns8_bits_int": 10, + "decoded_f64": 2.378414230005442, + "decoded_f64_hex": "0x400306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 2.5936791093020193, + "input_f64_hex": "0x4004BFDAD5362A27", + "lns8_bits_hex": "0x0B", + "lns8_bits_int": 11, + "decoded_f64": 2.5936791093020193, + "decoded_f64_hex": "0x4004BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 2.8284271247461903, + "input_f64_hex": "0x4006A09E667F3BCD", + "lns8_bits_hex": "0x0C", + "lns8_bits_int": 12, + "decoded_f64": 2.8284271247461903, + "decoded_f64_hex": "0x4006A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 3.0844216508158815, + "input_f64_hex": "0x4008ACE5422AA0DB", + "lns8_bits_hex": "0x0D", + "lns8_bits_int": 13, + "decoded_f64": 3.0844216508158815, + "decoded_f64_hex": "0x4008ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 3.363585661014858, + "input_f64_hex": "0x400AE89F995AD3AD", + "lns8_bits_hex": "0x0E", + "lns8_bits_int": 14, + "decoded_f64": 3.363585661014858, + "decoded_f64_hex": "0x400AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 3.668016172818685, + "input_f64_hex": "0x400D5818DCFBA487", + "lns8_bits_hex": "0x0F", + "lns8_bits_int": 15, + "decoded_f64": 3.668016172818685, + "decoded_f64_hex": "0x400D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "lns8_bits_hex": "0x10", + "lns8_bits_int": 16, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 4.362030930661031, + "input_f64_hex": "0x401172B83C7D517B", + "lns8_bits_hex": "0x11", + "lns8_bits_int": 17, + "decoded_f64": 4.362030930661031, + "decoded_f64_hex": "0x401172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 4.756828460010884, + "input_f64_hex": "0x401306FE0A31B715", + "lns8_bits_hex": "0x12", + "lns8_bits_int": 18, + "decoded_f64": 4.756828460010884, + "decoded_f64_hex": "0x401306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 5.187358218604039, + "input_f64_hex": "0x4014BFDAD5362A27", + "lns8_bits_hex": "0x13", + "lns8_bits_int": 19, + "decoded_f64": 5.187358218604039, + "decoded_f64_hex": "0x4014BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 5.656854249492381, + "input_f64_hex": "0x4016A09E667F3BCD", + "lns8_bits_hex": "0x14", + "lns8_bits_int": 20, + "decoded_f64": 5.656854249492381, + "decoded_f64_hex": "0x4016A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 6.168843301631763, + "input_f64_hex": "0x4018ACE5422AA0DB", + "lns8_bits_hex": "0x15", + "lns8_bits_int": 21, + "decoded_f64": 6.168843301631763, + "decoded_f64_hex": "0x4018ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 6.727171322029716, + "input_f64_hex": "0x401AE89F995AD3AD", + "lns8_bits_hex": "0x16", + "lns8_bits_int": 22, + "decoded_f64": 6.727171322029716, + "decoded_f64_hex": "0x401AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 7.33603234563737, + "input_f64_hex": "0x401D5818DCFBA487", + "lns8_bits_hex": "0x17", + "lns8_bits_int": 23, + "decoded_f64": 7.33603234563737, + "decoded_f64_hex": "0x401D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "lns8_bits_hex": "0x18", + "lns8_bits_int": 24, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 8.724061861322062, + "input_f64_hex": "0x402172B83C7D517B", + "lns8_bits_hex": "0x19", + "lns8_bits_int": 25, + "decoded_f64": 8.724061861322062, + "decoded_f64_hex": "0x402172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 9.513656920021768, + "input_f64_hex": "0x402306FE0A31B715", + "lns8_bits_hex": "0x1A", + "lns8_bits_int": 26, + "decoded_f64": 9.513656920021768, + "decoded_f64_hex": "0x402306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 10.374716437208077, + "input_f64_hex": "0x4024BFDAD5362A27", + "lns8_bits_hex": "0x1B", + "lns8_bits_int": 27, + "decoded_f64": 10.374716437208077, + "decoded_f64_hex": "0x4024BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 11.313708498984761, + "input_f64_hex": "0x4026A09E667F3BCD", + "lns8_bits_hex": "0x1C", + "lns8_bits_int": 28, + "decoded_f64": 11.313708498984761, + "decoded_f64_hex": "0x4026A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 12.337686603263526, + "input_f64_hex": "0x4028ACE5422AA0DB", + "lns8_bits_hex": "0x1D", + "lns8_bits_int": 29, + "decoded_f64": 12.337686603263526, + "decoded_f64_hex": "0x4028ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 13.454342644059432, + "input_f64_hex": "0x402AE89F995AD3AD", + "lns8_bits_hex": "0x1E", + "lns8_bits_int": 30, + "decoded_f64": 13.454342644059432, + "decoded_f64_hex": "0x402AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 14.67206469127474, + "input_f64_hex": "0x402D5818DCFBA487", + "lns8_bits_hex": "0x1F", + "lns8_bits_int": 31, + "decoded_f64": 14.67206469127474, + "decoded_f64_hex": "0x402D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "lns8_bits_hex": "0x20", + "lns8_bits_int": 32, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 17.448123722644123, + "input_f64_hex": "0x403172B83C7D517B", + "lns8_bits_hex": "0x21", + "lns8_bits_int": 33, + "decoded_f64": 17.448123722644123, + "decoded_f64_hex": "0x403172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 19.027313840043536, + "input_f64_hex": "0x403306FE0A31B715", + "lns8_bits_hex": "0x22", + "lns8_bits_int": 34, + "decoded_f64": 19.027313840043536, + "decoded_f64_hex": "0x403306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 20.749432874416154, + "input_f64_hex": "0x4034BFDAD5362A27", + "lns8_bits_hex": "0x23", + "lns8_bits_int": 35, + "decoded_f64": 20.749432874416154, + "decoded_f64_hex": "0x4034BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 22.627416997969522, + "input_f64_hex": "0x4036A09E667F3BCD", + "lns8_bits_hex": "0x24", + "lns8_bits_int": 36, + "decoded_f64": 22.627416997969522, + "decoded_f64_hex": "0x4036A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 24.675373206527052, + "input_f64_hex": "0x4038ACE5422AA0DB", + "lns8_bits_hex": "0x25", + "lns8_bits_int": 37, + "decoded_f64": 24.675373206527052, + "decoded_f64_hex": "0x4038ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 26.908685288118864, + "input_f64_hex": "0x403AE89F995AD3AD", + "lns8_bits_hex": "0x26", + "lns8_bits_int": 38, + "decoded_f64": 26.908685288118864, + "decoded_f64_hex": "0x403AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 29.34412938254948, + "input_f64_hex": "0x403D5818DCFBA487", + "lns8_bits_hex": "0x27", + "lns8_bits_int": 39, + "decoded_f64": 29.34412938254948, + "decoded_f64_hex": "0x403D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 32.0, + "input_f64_hex": "0x4040000000000000", + "lns8_bits_hex": "0x28", + "lns8_bits_int": 40, + "decoded_f64": 32.0, + "decoded_f64_hex": "0x4040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 34.896247445288246, + "input_f64_hex": "0x404172B83C7D517B", + "lns8_bits_hex": "0x29", + "lns8_bits_int": 41, + "decoded_f64": 34.896247445288246, + "decoded_f64_hex": "0x404172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 38.05462768008707, + "input_f64_hex": "0x404306FE0A31B715", + "lns8_bits_hex": "0x2A", + "lns8_bits_int": 42, + "decoded_f64": 38.05462768008707, + "decoded_f64_hex": "0x404306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 41.49886574883231, + "input_f64_hex": "0x4044BFDAD5362A27", + "lns8_bits_hex": "0x2B", + "lns8_bits_int": 43, + "decoded_f64": 41.49886574883231, + "decoded_f64_hex": "0x4044BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 45.254833995939045, + "input_f64_hex": "0x4046A09E667F3BCD", + "lns8_bits_hex": "0x2C", + "lns8_bits_int": 44, + "decoded_f64": 45.254833995939045, + "decoded_f64_hex": "0x4046A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 49.350746413054104, + "input_f64_hex": "0x4048ACE5422AA0DB", + "lns8_bits_hex": "0x2D", + "lns8_bits_int": 45, + "decoded_f64": 49.350746413054104, + "decoded_f64_hex": "0x4048ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 53.81737057623773, + "input_f64_hex": "0x404AE89F995AD3AD", + "lns8_bits_hex": "0x2E", + "lns8_bits_int": 46, + "decoded_f64": 53.81737057623773, + "decoded_f64_hex": "0x404AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 58.68825876509896, + "input_f64_hex": "0x404D5818DCFBA487", + "lns8_bits_hex": "0x2F", + "lns8_bits_int": 47, + "decoded_f64": 58.68825876509896, + "decoded_f64_hex": "0x404D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 64.0, + "input_f64_hex": "0x4050000000000000", + "lns8_bits_hex": "0x30", + "lns8_bits_int": 48, + "decoded_f64": 64.0, + "decoded_f64_hex": "0x4050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 69.79249489057649, + "input_f64_hex": "0x405172B83C7D517B", + "lns8_bits_hex": "0x31", + "lns8_bits_int": 49, + "decoded_f64": 69.79249489057649, + "decoded_f64_hex": "0x405172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 76.10925536017415, + "input_f64_hex": "0x405306FE0A31B715", + "lns8_bits_hex": "0x32", + "lns8_bits_int": 50, + "decoded_f64": 76.10925536017415, + "decoded_f64_hex": "0x405306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 82.99773149766462, + "input_f64_hex": "0x4054BFDAD5362A27", + "lns8_bits_hex": "0x33", + "lns8_bits_int": 51, + "decoded_f64": 82.99773149766462, + "decoded_f64_hex": "0x4054BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 90.50966799187809, + "input_f64_hex": "0x4056A09E667F3BCD", + "lns8_bits_hex": "0x34", + "lns8_bits_int": 52, + "decoded_f64": 90.50966799187809, + "decoded_f64_hex": "0x4056A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 98.70149282610821, + "input_f64_hex": "0x4058ACE5422AA0DB", + "lns8_bits_hex": "0x35", + "lns8_bits_int": 53, + "decoded_f64": 98.70149282610821, + "decoded_f64_hex": "0x4058ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 107.63474115247546, + "input_f64_hex": "0x405AE89F995AD3AD", + "lns8_bits_hex": "0x36", + "lns8_bits_int": 54, + "decoded_f64": 107.63474115247546, + "decoded_f64_hex": "0x405AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 117.37651753019792, + "input_f64_hex": "0x405D5818DCFBA487", + "lns8_bits_hex": "0x37", + "lns8_bits_int": 55, + "decoded_f64": 117.37651753019792, + "decoded_f64_hex": "0x405D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 128.0, + "input_f64_hex": "0x4060000000000000", + "lns8_bits_hex": "0x38", + "lns8_bits_int": 56, + "decoded_f64": 128.0, + "decoded_f64_hex": "0x4060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 139.58498978115298, + "input_f64_hex": "0x406172B83C7D517B", + "lns8_bits_hex": "0x39", + "lns8_bits_int": 57, + "decoded_f64": 139.58498978115298, + "decoded_f64_hex": "0x406172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 152.2185107203483, + "input_f64_hex": "0x406306FE0A31B715", + "lns8_bits_hex": "0x3A", + "lns8_bits_int": 58, + "decoded_f64": 152.2185107203483, + "decoded_f64_hex": "0x406306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 165.99546299532923, + "input_f64_hex": "0x4064BFDAD5362A27", + "lns8_bits_hex": "0x3B", + "lns8_bits_int": 59, + "decoded_f64": 165.99546299532923, + "decoded_f64_hex": "0x4064BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 181.01933598375618, + "input_f64_hex": "0x4066A09E667F3BCD", + "lns8_bits_hex": "0x3C", + "lns8_bits_int": 60, + "decoded_f64": 181.01933598375618, + "decoded_f64_hex": "0x4066A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 197.40298565221642, + "input_f64_hex": "0x4068ACE5422AA0DB", + "lns8_bits_hex": "0x3D", + "lns8_bits_int": 61, + "decoded_f64": 197.40298565221642, + "decoded_f64_hex": "0x4068ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 215.2694823049509, + "input_f64_hex": "0x406AE89F995AD3AD", + "lns8_bits_hex": "0x3E", + "lns8_bits_int": 62, + "decoded_f64": 215.2694823049509, + "decoded_f64_hex": "0x406AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 234.75303506039583, + "input_f64_hex": "0x406D5818DCFBA487", + "lns8_bits_hex": "0x3F", + "lns8_bits_int": 63, + "decoded_f64": 234.75303506039583, + "decoded_f64_hex": "0x406D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 0.00390625, + "input_f64_hex": "0x3F70000000000000", + "lns8_bits_hex": "0x40", + "lns8_bits_int": 64, + "decoded_f64": 0.00390625, + "decoded_f64_hex": "0x3F70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 0.004259795830723663, + "input_f64_hex": "0x3F7172B83C7D517B", + "lns8_bits_hex": "0x41", + "lns8_bits_int": 65, + "decoded_f64": 0.004259795830723663, + "decoded_f64_hex": "0x3F7172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 0.004645340292979379, + "input_f64_hex": "0x3F7306FE0A31B715", + "lns8_bits_hex": "0x42", + "lns8_bits_int": 66, + "decoded_f64": 0.004645340292979379, + "decoded_f64_hex": "0x3F7306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 0.005065779510355506, + "input_f64_hex": "0x3F74BFDAD5362A27", + "lns8_bits_hex": "0x43", + "lns8_bits_int": 67, + "decoded_f64": 0.005065779510355506, + "decoded_f64_hex": "0x3F74BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 0.005524271728019903, + "input_f64_hex": "0x3F76A09E667F3BCD", + "lns8_bits_hex": "0x44", + "lns8_bits_int": 68, + "decoded_f64": 0.005524271728019903, + "decoded_f64_hex": "0x3F76A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 0.0060242610367497685, + "input_f64_hex": "0x3F78ACE5422AA0DB", + "lns8_bits_hex": "0x45", + "lns8_bits_int": 69, + "decoded_f64": 0.0060242610367497685, + "decoded_f64_hex": "0x3F78ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 0.0065695032441696445, + "input_f64_hex": "0x3F7AE89F995AD3AD", + "lns8_bits_hex": "0x46", + "lns8_bits_int": 70, + "decoded_f64": 0.0065695032441696445, + "decoded_f64_hex": "0x3F7AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 0.007164094087536494, + "input_f64_hex": "0x3F7D5818DCFBA487", + "lns8_bits_hex": "0x47", + "lns8_bits_int": 71, + "decoded_f64": 0.007164094087536494, + "decoded_f64_hex": "0x3F7D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 0.0078125, + "input_f64_hex": "0x3F80000000000000", + "lns8_bits_hex": "0x48", + "lns8_bits_int": 72, + "decoded_f64": 0.0078125, + "decoded_f64_hex": "0x3F80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 0.008519591661447326, + "input_f64_hex": "0x3F8172B83C7D517B", + "lns8_bits_hex": "0x49", + "lns8_bits_int": 73, + "decoded_f64": 0.008519591661447326, + "decoded_f64_hex": "0x3F8172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 0.009290680585958758, + "input_f64_hex": "0x3F8306FE0A31B715", + "lns8_bits_hex": "0x4A", + "lns8_bits_int": 74, + "decoded_f64": 0.009290680585958758, + "decoded_f64_hex": "0x3F8306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 0.010131559020711013, + "input_f64_hex": "0x3F84BFDAD5362A27", + "lns8_bits_hex": "0x4B", + "lns8_bits_int": 75, + "decoded_f64": 0.010131559020711013, + "decoded_f64_hex": "0x3F84BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 0.011048543456039806, + "input_f64_hex": "0x3F86A09E667F3BCD", + "lns8_bits_hex": "0x4C", + "lns8_bits_int": 76, + "decoded_f64": 0.011048543456039806, + "decoded_f64_hex": "0x3F86A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 0.012048522073499537, + "input_f64_hex": "0x3F88ACE5422AA0DB", + "lns8_bits_hex": "0x4D", + "lns8_bits_int": 77, + "decoded_f64": 0.012048522073499537, + "decoded_f64_hex": "0x3F88ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 0.013139006488339289, + "input_f64_hex": "0x3F8AE89F995AD3AD", + "lns8_bits_hex": "0x4E", + "lns8_bits_int": 78, + "decoded_f64": 0.013139006488339289, + "decoded_f64_hex": "0x3F8AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 0.014328188175072988, + "input_f64_hex": "0x3F8D5818DCFBA487", + "lns8_bits_hex": "0x4F", + "lns8_bits_int": 79, + "decoded_f64": 0.014328188175072988, + "decoded_f64_hex": "0x3F8D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 0.015625, + "input_f64_hex": "0x3F90000000000000", + "lns8_bits_hex": "0x50", + "lns8_bits_int": 80, + "decoded_f64": 0.015625, + "decoded_f64_hex": "0x3F90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 0.01703918332289465, + "input_f64_hex": "0x3F9172B83C7D517B", + "lns8_bits_hex": "0x51", + "lns8_bits_int": 81, + "decoded_f64": 0.01703918332289465, + "decoded_f64_hex": "0x3F9172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 0.018581361171917516, + "input_f64_hex": "0x3F9306FE0A31B715", + "lns8_bits_hex": "0x52", + "lns8_bits_int": 82, + "decoded_f64": 0.018581361171917516, + "decoded_f64_hex": "0x3F9306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 0.020263118041422026, + "input_f64_hex": "0x3F94BFDAD5362A27", + "lns8_bits_hex": "0x53", + "lns8_bits_int": 83, + "decoded_f64": 0.020263118041422026, + "decoded_f64_hex": "0x3F94BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 0.02209708691207961, + "input_f64_hex": "0x3F96A09E667F3BCD", + "lns8_bits_hex": "0x54", + "lns8_bits_int": 84, + "decoded_f64": 0.02209708691207961, + "decoded_f64_hex": "0x3F96A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 0.024097044146999074, + "input_f64_hex": "0x3F98ACE5422AA0DB", + "lns8_bits_hex": "0x55", + "lns8_bits_int": 85, + "decoded_f64": 0.024097044146999074, + "decoded_f64_hex": "0x3F98ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 0.026278012976678578, + "input_f64_hex": "0x3F9AE89F995AD3AD", + "lns8_bits_hex": "0x56", + "lns8_bits_int": 86, + "decoded_f64": 0.026278012976678578, + "decoded_f64_hex": "0x3F9AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 0.028656376350145975, + "input_f64_hex": "0x3F9D5818DCFBA487", + "lns8_bits_hex": "0x57", + "lns8_bits_int": 87, + "decoded_f64": 0.028656376350145975, + "decoded_f64_hex": "0x3F9D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 0.03125, + "input_f64_hex": "0x3FA0000000000000", + "lns8_bits_hex": "0x58", + "lns8_bits_int": 88, + "decoded_f64": 0.03125, + "decoded_f64_hex": "0x3FA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 0.0340783666457893, + "input_f64_hex": "0x3FA172B83C7D517B", + "lns8_bits_hex": "0x59", + "lns8_bits_int": 89, + "decoded_f64": 0.0340783666457893, + "decoded_f64_hex": "0x3FA172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 0.03716272234383503, + "input_f64_hex": "0x3FA306FE0A31B715", + "lns8_bits_hex": "0x5A", + "lns8_bits_int": 90, + "decoded_f64": 0.03716272234383503, + "decoded_f64_hex": "0x3FA306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 0.04052623608284405, + "input_f64_hex": "0x3FA4BFDAD5362A27", + "lns8_bits_hex": "0x5B", + "lns8_bits_int": 91, + "decoded_f64": 0.04052623608284405, + "decoded_f64_hex": "0x3FA4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 0.04419417382415922, + "input_f64_hex": "0x3FA6A09E667F3BCD", + "lns8_bits_hex": "0x5C", + "lns8_bits_int": 92, + "decoded_f64": 0.04419417382415922, + "decoded_f64_hex": "0x3FA6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 0.04819408829399815, + "input_f64_hex": "0x3FA8ACE5422AA0DB", + "lns8_bits_hex": "0x5D", + "lns8_bits_int": 93, + "decoded_f64": 0.04819408829399815, + "decoded_f64_hex": "0x3FA8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 0.052556025953357156, + "input_f64_hex": "0x3FAAE89F995AD3AD", + "lns8_bits_hex": "0x5E", + "lns8_bits_int": 94, + "decoded_f64": 0.052556025953357156, + "decoded_f64_hex": "0x3FAAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 0.05731275270029195, + "input_f64_hex": "0x3FAD5818DCFBA487", + "lns8_bits_hex": "0x5F", + "lns8_bits_int": 95, + "decoded_f64": 0.05731275270029195, + "decoded_f64_hex": "0x3FAD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "lns8_bits_hex": "0x60", + "lns8_bits_int": 96, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 0.0681567332915786, + "input_f64_hex": "0x3FB172B83C7D517B", + "lns8_bits_hex": "0x61", + "lns8_bits_int": 97, + "decoded_f64": 0.0681567332915786, + "decoded_f64_hex": "0x3FB172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 0.07432544468767006, + "input_f64_hex": "0x3FB306FE0A31B715", + "lns8_bits_hex": "0x62", + "lns8_bits_int": 98, + "decoded_f64": 0.07432544468767006, + "decoded_f64_hex": "0x3FB306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 0.0810524721656881, + "input_f64_hex": "0x3FB4BFDAD5362A27", + "lns8_bits_hex": "0x63", + "lns8_bits_int": 99, + "decoded_f64": 0.0810524721656881, + "decoded_f64_hex": "0x3FB4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 0.08838834764831845, + "input_f64_hex": "0x3FB6A09E667F3BCD", + "lns8_bits_hex": "0x64", + "lns8_bits_int": 100, + "decoded_f64": 0.08838834764831845, + "decoded_f64_hex": "0x3FB6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 0.0963881765879963, + "input_f64_hex": "0x3FB8ACE5422AA0DB", + "lns8_bits_hex": "0x65", + "lns8_bits_int": 101, + "decoded_f64": 0.0963881765879963, + "decoded_f64_hex": "0x3FB8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 0.10511205190671431, + "input_f64_hex": "0x3FBAE89F995AD3AD", + "lns8_bits_hex": "0x66", + "lns8_bits_int": 102, + "decoded_f64": 0.10511205190671431, + "decoded_f64_hex": "0x3FBAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 0.1146255054005839, + "input_f64_hex": "0x3FBD5818DCFBA487", + "lns8_bits_hex": "0x67", + "lns8_bits_int": 103, + "decoded_f64": 0.1146255054005839, + "decoded_f64_hex": "0x3FBD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "lns8_bits_hex": "0x68", + "lns8_bits_int": 104, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 0.1363134665831572, + "input_f64_hex": "0x3FC172B83C7D517B", + "lns8_bits_hex": "0x69", + "lns8_bits_int": 105, + "decoded_f64": 0.1363134665831572, + "decoded_f64_hex": "0x3FC172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 0.14865088937534013, + "input_f64_hex": "0x3FC306FE0A31B715", + "lns8_bits_hex": "0x6A", + "lns8_bits_int": 106, + "decoded_f64": 0.14865088937534013, + "decoded_f64_hex": "0x3FC306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 0.1621049443313762, + "input_f64_hex": "0x3FC4BFDAD5362A27", + "lns8_bits_hex": "0x6B", + "lns8_bits_int": 107, + "decoded_f64": 0.1621049443313762, + "decoded_f64_hex": "0x3FC4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 0.1767766952966369, + "input_f64_hex": "0x3FC6A09E667F3BCD", + "lns8_bits_hex": "0x6C", + "lns8_bits_int": 108, + "decoded_f64": 0.1767766952966369, + "decoded_f64_hex": "0x3FC6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 0.1927763531759926, + "input_f64_hex": "0x3FC8ACE5422AA0DB", + "lns8_bits_hex": "0x6D", + "lns8_bits_int": 109, + "decoded_f64": 0.1927763531759926, + "decoded_f64_hex": "0x3FC8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 0.21022410381342863, + "input_f64_hex": "0x3FCAE89F995AD3AD", + "lns8_bits_hex": "0x6E", + "lns8_bits_int": 110, + "decoded_f64": 0.21022410381342863, + "decoded_f64_hex": "0x3FCAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 0.2292510108011678, + "input_f64_hex": "0x3FCD5818DCFBA487", + "lns8_bits_hex": "0x6F", + "lns8_bits_int": 111, + "decoded_f64": 0.2292510108011678, + "decoded_f64_hex": "0x3FCD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "lns8_bits_hex": "0x70", + "lns8_bits_int": 112, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x71", + "input_f64": 0.2726269331663144, + "input_f64_hex": "0x3FD172B83C7D517B", + "lns8_bits_hex": "0x71", + "lns8_bits_int": 113, + "decoded_f64": 0.2726269331663144, + "decoded_f64_hex": "0x3FD172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x72", + "input_f64": 0.29730177875068026, + "input_f64_hex": "0x3FD306FE0A31B715", + "lns8_bits_hex": "0x72", + "lns8_bits_int": 114, + "decoded_f64": 0.29730177875068026, + "decoded_f64_hex": "0x3FD306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x73", + "input_f64": 0.3242098886627524, + "input_f64_hex": "0x3FD4BFDAD5362A27", + "lns8_bits_hex": "0x73", + "lns8_bits_int": 115, + "decoded_f64": 0.3242098886627524, + "decoded_f64_hex": "0x3FD4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x74", + "input_f64": 0.3535533905932738, + "input_f64_hex": "0x3FD6A09E667F3BCD", + "lns8_bits_hex": "0x74", + "lns8_bits_int": 116, + "decoded_f64": 0.3535533905932738, + "decoded_f64_hex": "0x3FD6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x75", + "input_f64": 0.3855527063519852, + "input_f64_hex": "0x3FD8ACE5422AA0DB", + "lns8_bits_hex": "0x75", + "lns8_bits_int": 117, + "decoded_f64": 0.3855527063519852, + "decoded_f64_hex": "0x3FD8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x76", + "input_f64": 0.42044820762685725, + "input_f64_hex": "0x3FDAE89F995AD3AD", + "lns8_bits_hex": "0x76", + "lns8_bits_int": 118, + "decoded_f64": 0.42044820762685725, + "decoded_f64_hex": "0x3FDAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x77", + "input_f64": 0.4585020216023356, + "input_f64_hex": "0x3FDD5818DCFBA487", + "lns8_bits_hex": "0x77", + "lns8_bits_int": 119, + "decoded_f64": 0.4585020216023356, + "decoded_f64_hex": "0x3FDD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x78", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "lns8_bits_hex": "0x78", + "lns8_bits_int": 120, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x79", + "input_f64": 0.5452538663326288, + "input_f64_hex": "0x3FE172B83C7D517B", + "lns8_bits_hex": "0x79", + "lns8_bits_int": 121, + "decoded_f64": 0.5452538663326288, + "decoded_f64_hex": "0x3FE172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7A", + "input_f64": 0.5946035575013605, + "input_f64_hex": "0x3FE306FE0A31B715", + "lns8_bits_hex": "0x7A", + "lns8_bits_int": 122, + "decoded_f64": 0.5946035575013605, + "decoded_f64_hex": "0x3FE306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7B", + "input_f64": 0.6484197773255048, + "input_f64_hex": "0x3FE4BFDAD5362A27", + "lns8_bits_hex": "0x7B", + "lns8_bits_int": 123, + "decoded_f64": 0.6484197773255048, + "decoded_f64_hex": "0x3FE4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7C", + "input_f64": 0.7071067811865476, + "input_f64_hex": "0x3FE6A09E667F3BCD", + "lns8_bits_hex": "0x7C", + "lns8_bits_int": 124, + "decoded_f64": 0.7071067811865476, + "decoded_f64_hex": "0x3FE6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7D", + "input_f64": 0.7711054127039704, + "input_f64_hex": "0x3FE8ACE5422AA0DB", + "lns8_bits_hex": "0x7D", + "lns8_bits_int": 125, + "decoded_f64": 0.7711054127039704, + "decoded_f64_hex": "0x3FE8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7E", + "input_f64": 0.8408964152537145, + "input_f64_hex": "0x3FEAE89F995AD3AD", + "lns8_bits_hex": "0x7E", + "lns8_bits_int": 126, + "decoded_f64": 0.8408964152537145, + "decoded_f64_hex": "0x3FEAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7F", + "input_f64": 0.9170040432046712, + "input_f64_hex": "0x3FED5818DCFBA487", + "lns8_bits_hex": "0x7F", + "lns8_bits_int": 127, + "decoded_f64": 0.9170040432046712, + "decoded_f64_hex": "0x3FED5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x80", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "lns8_bits_hex": "0x80", + "lns8_bits_int": 128, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x81", + "input_f64": -1.0905077326652577, + "input_f64_hex": "0xBFF172B83C7D517B", + "lns8_bits_hex": "0x81", + "lns8_bits_int": 129, + "decoded_f64": -1.0905077326652577, + "decoded_f64_hex": "0xBFF172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x82", + "input_f64": -1.189207115002721, + "input_f64_hex": "0xBFF306FE0A31B715", + "lns8_bits_hex": "0x82", + "lns8_bits_int": 130, + "decoded_f64": -1.189207115002721, + "decoded_f64_hex": "0xBFF306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x83", + "input_f64": -1.2968395546510096, + "input_f64_hex": "0xBFF4BFDAD5362A27", + "lns8_bits_hex": "0x83", + "lns8_bits_int": 131, + "decoded_f64": -1.2968395546510096, + "decoded_f64_hex": "0xBFF4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x84", + "input_f64": -1.4142135623730951, + "input_f64_hex": "0xBFF6A09E667F3BCD", + "lns8_bits_hex": "0x84", + "lns8_bits_int": 132, + "decoded_f64": -1.4142135623730951, + "decoded_f64_hex": "0xBFF6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x85", + "input_f64": -1.5422108254079407, + "input_f64_hex": "0xBFF8ACE5422AA0DB", + "lns8_bits_hex": "0x85", + "lns8_bits_int": 133, + "decoded_f64": -1.5422108254079407, + "decoded_f64_hex": "0xBFF8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x86", + "input_f64": -1.681792830507429, + "input_f64_hex": "0xBFFAE89F995AD3AD", + "lns8_bits_hex": "0x86", + "lns8_bits_int": 134, + "decoded_f64": -1.681792830507429, + "decoded_f64_hex": "0xBFFAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x87", + "input_f64": -1.8340080864093424, + "input_f64_hex": "0xBFFD5818DCFBA487", + "lns8_bits_hex": "0x87", + "lns8_bits_int": 135, + "decoded_f64": -1.8340080864093424, + "decoded_f64_hex": "0xBFFD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x88", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "lns8_bits_hex": "0x88", + "lns8_bits_int": 136, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x89", + "input_f64": -2.1810154653305154, + "input_f64_hex": "0xC00172B83C7D517B", + "lns8_bits_hex": "0x89", + "lns8_bits_int": 137, + "decoded_f64": -2.1810154653305154, + "decoded_f64_hex": "0xC00172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8A", + "input_f64": -2.378414230005442, + "input_f64_hex": "0xC00306FE0A31B715", + "lns8_bits_hex": "0x8A", + "lns8_bits_int": 138, + "decoded_f64": -2.378414230005442, + "decoded_f64_hex": "0xC00306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8B", + "input_f64": -2.5936791093020193, + "input_f64_hex": "0xC004BFDAD5362A27", + "lns8_bits_hex": "0x8B", + "lns8_bits_int": 139, + "decoded_f64": -2.5936791093020193, + "decoded_f64_hex": "0xC004BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8C", + "input_f64": -2.8284271247461903, + "input_f64_hex": "0xC006A09E667F3BCD", + "lns8_bits_hex": "0x8C", + "lns8_bits_int": 140, + "decoded_f64": -2.8284271247461903, + "decoded_f64_hex": "0xC006A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8D", + "input_f64": -3.0844216508158815, + "input_f64_hex": "0xC008ACE5422AA0DB", + "lns8_bits_hex": "0x8D", + "lns8_bits_int": 141, + "decoded_f64": -3.0844216508158815, + "decoded_f64_hex": "0xC008ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8E", + "input_f64": -3.363585661014858, + "input_f64_hex": "0xC00AE89F995AD3AD", + "lns8_bits_hex": "0x8E", + "lns8_bits_int": 142, + "decoded_f64": -3.363585661014858, + "decoded_f64_hex": "0xC00AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8F", + "input_f64": -3.668016172818685, + "input_f64_hex": "0xC00D5818DCFBA487", + "lns8_bits_hex": "0x8F", + "lns8_bits_int": 143, + "decoded_f64": -3.668016172818685, + "decoded_f64_hex": "0xC00D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x90", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "lns8_bits_hex": "0x90", + "lns8_bits_int": 144, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -4.362030930661031, + "input_f64_hex": "0xC01172B83C7D517B", + "lns8_bits_hex": "0x91", + "lns8_bits_int": 145, + "decoded_f64": -4.362030930661031, + "decoded_f64_hex": "0xC01172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -4.756828460010884, + "input_f64_hex": "0xC01306FE0A31B715", + "lns8_bits_hex": "0x92", + "lns8_bits_int": 146, + "decoded_f64": -4.756828460010884, + "decoded_f64_hex": "0xC01306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -5.187358218604039, + "input_f64_hex": "0xC014BFDAD5362A27", + "lns8_bits_hex": "0x93", + "lns8_bits_int": 147, + "decoded_f64": -5.187358218604039, + "decoded_f64_hex": "0xC014BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -5.656854249492381, + "input_f64_hex": "0xC016A09E667F3BCD", + "lns8_bits_hex": "0x94", + "lns8_bits_int": 148, + "decoded_f64": -5.656854249492381, + "decoded_f64_hex": "0xC016A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -6.168843301631763, + "input_f64_hex": "0xC018ACE5422AA0DB", + "lns8_bits_hex": "0x95", + "lns8_bits_int": 149, + "decoded_f64": -6.168843301631763, + "decoded_f64_hex": "0xC018ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -6.727171322029716, + "input_f64_hex": "0xC01AE89F995AD3AD", + "lns8_bits_hex": "0x96", + "lns8_bits_int": 150, + "decoded_f64": -6.727171322029716, + "decoded_f64_hex": "0xC01AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -7.33603234563737, + "input_f64_hex": "0xC01D5818DCFBA487", + "lns8_bits_hex": "0x97", + "lns8_bits_int": 151, + "decoded_f64": -7.33603234563737, + "decoded_f64_hex": "0xC01D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "lns8_bits_hex": "0x98", + "lns8_bits_int": 152, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -8.724061861322062, + "input_f64_hex": "0xC02172B83C7D517B", + "lns8_bits_hex": "0x99", + "lns8_bits_int": 153, + "decoded_f64": -8.724061861322062, + "decoded_f64_hex": "0xC02172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -9.513656920021768, + "input_f64_hex": "0xC02306FE0A31B715", + "lns8_bits_hex": "0x9A", + "lns8_bits_int": 154, + "decoded_f64": -9.513656920021768, + "decoded_f64_hex": "0xC02306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -10.374716437208077, + "input_f64_hex": "0xC024BFDAD5362A27", + "lns8_bits_hex": "0x9B", + "lns8_bits_int": 155, + "decoded_f64": -10.374716437208077, + "decoded_f64_hex": "0xC024BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -11.313708498984761, + "input_f64_hex": "0xC026A09E667F3BCD", + "lns8_bits_hex": "0x9C", + "lns8_bits_int": 156, + "decoded_f64": -11.313708498984761, + "decoded_f64_hex": "0xC026A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -12.337686603263526, + "input_f64_hex": "0xC028ACE5422AA0DB", + "lns8_bits_hex": "0x9D", + "lns8_bits_int": 157, + "decoded_f64": -12.337686603263526, + "decoded_f64_hex": "0xC028ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -13.454342644059432, + "input_f64_hex": "0xC02AE89F995AD3AD", + "lns8_bits_hex": "0x9E", + "lns8_bits_int": 158, + "decoded_f64": -13.454342644059432, + "decoded_f64_hex": "0xC02AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -14.67206469127474, + "input_f64_hex": "0xC02D5818DCFBA487", + "lns8_bits_hex": "0x9F", + "lns8_bits_int": 159, + "decoded_f64": -14.67206469127474, + "decoded_f64_hex": "0xC02D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "lns8_bits_hex": "0xA0", + "lns8_bits_int": 160, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -17.448123722644123, + "input_f64_hex": "0xC03172B83C7D517B", + "lns8_bits_hex": "0xA1", + "lns8_bits_int": 161, + "decoded_f64": -17.448123722644123, + "decoded_f64_hex": "0xC03172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -19.027313840043536, + "input_f64_hex": "0xC03306FE0A31B715", + "lns8_bits_hex": "0xA2", + "lns8_bits_int": 162, + "decoded_f64": -19.027313840043536, + "decoded_f64_hex": "0xC03306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -20.749432874416154, + "input_f64_hex": "0xC034BFDAD5362A27", + "lns8_bits_hex": "0xA3", + "lns8_bits_int": 163, + "decoded_f64": -20.749432874416154, + "decoded_f64_hex": "0xC034BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -22.627416997969522, + "input_f64_hex": "0xC036A09E667F3BCD", + "lns8_bits_hex": "0xA4", + "lns8_bits_int": 164, + "decoded_f64": -22.627416997969522, + "decoded_f64_hex": "0xC036A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -24.675373206527052, + "input_f64_hex": "0xC038ACE5422AA0DB", + "lns8_bits_hex": "0xA5", + "lns8_bits_int": 165, + "decoded_f64": -24.675373206527052, + "decoded_f64_hex": "0xC038ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -26.908685288118864, + "input_f64_hex": "0xC03AE89F995AD3AD", + "lns8_bits_hex": "0xA6", + "lns8_bits_int": 166, + "decoded_f64": -26.908685288118864, + "decoded_f64_hex": "0xC03AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -29.34412938254948, + "input_f64_hex": "0xC03D5818DCFBA487", + "lns8_bits_hex": "0xA7", + "lns8_bits_int": 167, + "decoded_f64": -29.34412938254948, + "decoded_f64_hex": "0xC03D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -32.0, + "input_f64_hex": "0xC040000000000000", + "lns8_bits_hex": "0xA8", + "lns8_bits_int": 168, + "decoded_f64": -32.0, + "decoded_f64_hex": "0xC040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -34.896247445288246, + "input_f64_hex": "0xC04172B83C7D517B", + "lns8_bits_hex": "0xA9", + "lns8_bits_int": 169, + "decoded_f64": -34.896247445288246, + "decoded_f64_hex": "0xC04172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -38.05462768008707, + "input_f64_hex": "0xC04306FE0A31B715", + "lns8_bits_hex": "0xAA", + "lns8_bits_int": 170, + "decoded_f64": -38.05462768008707, + "decoded_f64_hex": "0xC04306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -41.49886574883231, + "input_f64_hex": "0xC044BFDAD5362A27", + "lns8_bits_hex": "0xAB", + "lns8_bits_int": 171, + "decoded_f64": -41.49886574883231, + "decoded_f64_hex": "0xC044BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -45.254833995939045, + "input_f64_hex": "0xC046A09E667F3BCD", + "lns8_bits_hex": "0xAC", + "lns8_bits_int": 172, + "decoded_f64": -45.254833995939045, + "decoded_f64_hex": "0xC046A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -49.350746413054104, + "input_f64_hex": "0xC048ACE5422AA0DB", + "lns8_bits_hex": "0xAD", + "lns8_bits_int": 173, + "decoded_f64": -49.350746413054104, + "decoded_f64_hex": "0xC048ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -53.81737057623773, + "input_f64_hex": "0xC04AE89F995AD3AD", + "lns8_bits_hex": "0xAE", + "lns8_bits_int": 174, + "decoded_f64": -53.81737057623773, + "decoded_f64_hex": "0xC04AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -58.68825876509896, + "input_f64_hex": "0xC04D5818DCFBA487", + "lns8_bits_hex": "0xAF", + "lns8_bits_int": 175, + "decoded_f64": -58.68825876509896, + "decoded_f64_hex": "0xC04D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -64.0, + "input_f64_hex": "0xC050000000000000", + "lns8_bits_hex": "0xB0", + "lns8_bits_int": 176, + "decoded_f64": -64.0, + "decoded_f64_hex": "0xC050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -69.79249489057649, + "input_f64_hex": "0xC05172B83C7D517B", + "lns8_bits_hex": "0xB1", + "lns8_bits_int": 177, + "decoded_f64": -69.79249489057649, + "decoded_f64_hex": "0xC05172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -76.10925536017415, + "input_f64_hex": "0xC05306FE0A31B715", + "lns8_bits_hex": "0xB2", + "lns8_bits_int": 178, + "decoded_f64": -76.10925536017415, + "decoded_f64_hex": "0xC05306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -82.99773149766462, + "input_f64_hex": "0xC054BFDAD5362A27", + "lns8_bits_hex": "0xB3", + "lns8_bits_int": 179, + "decoded_f64": -82.99773149766462, + "decoded_f64_hex": "0xC054BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -90.50966799187809, + "input_f64_hex": "0xC056A09E667F3BCD", + "lns8_bits_hex": "0xB4", + "lns8_bits_int": 180, + "decoded_f64": -90.50966799187809, + "decoded_f64_hex": "0xC056A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -98.70149282610821, + "input_f64_hex": "0xC058ACE5422AA0DB", + "lns8_bits_hex": "0xB5", + "lns8_bits_int": 181, + "decoded_f64": -98.70149282610821, + "decoded_f64_hex": "0xC058ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -107.63474115247546, + "input_f64_hex": "0xC05AE89F995AD3AD", + "lns8_bits_hex": "0xB6", + "lns8_bits_int": 182, + "decoded_f64": -107.63474115247546, + "decoded_f64_hex": "0xC05AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -117.37651753019792, + "input_f64_hex": "0xC05D5818DCFBA487", + "lns8_bits_hex": "0xB7", + "lns8_bits_int": 183, + "decoded_f64": -117.37651753019792, + "decoded_f64_hex": "0xC05D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -128.0, + "input_f64_hex": "0xC060000000000000", + "lns8_bits_hex": "0xB8", + "lns8_bits_int": 184, + "decoded_f64": -128.0, + "decoded_f64_hex": "0xC060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -139.58498978115298, + "input_f64_hex": "0xC06172B83C7D517B", + "lns8_bits_hex": "0xB9", + "lns8_bits_int": 185, + "decoded_f64": -139.58498978115298, + "decoded_f64_hex": "0xC06172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -152.2185107203483, + "input_f64_hex": "0xC06306FE0A31B715", + "lns8_bits_hex": "0xBA", + "lns8_bits_int": 186, + "decoded_f64": -152.2185107203483, + "decoded_f64_hex": "0xC06306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -165.99546299532923, + "input_f64_hex": "0xC064BFDAD5362A27", + "lns8_bits_hex": "0xBB", + "lns8_bits_int": 187, + "decoded_f64": -165.99546299532923, + "decoded_f64_hex": "0xC064BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -181.01933598375618, + "input_f64_hex": "0xC066A09E667F3BCD", + "lns8_bits_hex": "0xBC", + "lns8_bits_int": 188, + "decoded_f64": -181.01933598375618, + "decoded_f64_hex": "0xC066A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -197.40298565221642, + "input_f64_hex": "0xC068ACE5422AA0DB", + "lns8_bits_hex": "0xBD", + "lns8_bits_int": 189, + "decoded_f64": -197.40298565221642, + "decoded_f64_hex": "0xC068ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -215.2694823049509, + "input_f64_hex": "0xC06AE89F995AD3AD", + "lns8_bits_hex": "0xBE", + "lns8_bits_int": 190, + "decoded_f64": -215.2694823049509, + "decoded_f64_hex": "0xC06AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -234.75303506039583, + "input_f64_hex": "0xC06D5818DCFBA487", + "lns8_bits_hex": "0xBF", + "lns8_bits_int": 191, + "decoded_f64": -234.75303506039583, + "decoded_f64_hex": "0xC06D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -0.00390625, + "input_f64_hex": "0xBF70000000000000", + "lns8_bits_hex": "0xC0", + "lns8_bits_int": 192, + "decoded_f64": -0.00390625, + "decoded_f64_hex": "0xBF70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -0.004259795830723663, + "input_f64_hex": "0xBF7172B83C7D517B", + "lns8_bits_hex": "0xC1", + "lns8_bits_int": 193, + "decoded_f64": -0.004259795830723663, + "decoded_f64_hex": "0xBF7172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -0.004645340292979379, + "input_f64_hex": "0xBF7306FE0A31B715", + "lns8_bits_hex": "0xC2", + "lns8_bits_int": 194, + "decoded_f64": -0.004645340292979379, + "decoded_f64_hex": "0xBF7306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -0.005065779510355506, + "input_f64_hex": "0xBF74BFDAD5362A27", + "lns8_bits_hex": "0xC3", + "lns8_bits_int": 195, + "decoded_f64": -0.005065779510355506, + "decoded_f64_hex": "0xBF74BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -0.005524271728019903, + "input_f64_hex": "0xBF76A09E667F3BCD", + "lns8_bits_hex": "0xC4", + "lns8_bits_int": 196, + "decoded_f64": -0.005524271728019903, + "decoded_f64_hex": "0xBF76A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -0.0060242610367497685, + "input_f64_hex": "0xBF78ACE5422AA0DB", + "lns8_bits_hex": "0xC5", + "lns8_bits_int": 197, + "decoded_f64": -0.0060242610367497685, + "decoded_f64_hex": "0xBF78ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -0.0065695032441696445, + "input_f64_hex": "0xBF7AE89F995AD3AD", + "lns8_bits_hex": "0xC6", + "lns8_bits_int": 198, + "decoded_f64": -0.0065695032441696445, + "decoded_f64_hex": "0xBF7AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -0.007164094087536494, + "input_f64_hex": "0xBF7D5818DCFBA487", + "lns8_bits_hex": "0xC7", + "lns8_bits_int": 199, + "decoded_f64": -0.007164094087536494, + "decoded_f64_hex": "0xBF7D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -0.0078125, + "input_f64_hex": "0xBF80000000000000", + "lns8_bits_hex": "0xC8", + "lns8_bits_int": 200, + "decoded_f64": -0.0078125, + "decoded_f64_hex": "0xBF80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -0.008519591661447326, + "input_f64_hex": "0xBF8172B83C7D517B", + "lns8_bits_hex": "0xC9", + "lns8_bits_int": 201, + "decoded_f64": -0.008519591661447326, + "decoded_f64_hex": "0xBF8172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -0.009290680585958758, + "input_f64_hex": "0xBF8306FE0A31B715", + "lns8_bits_hex": "0xCA", + "lns8_bits_int": 202, + "decoded_f64": -0.009290680585958758, + "decoded_f64_hex": "0xBF8306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -0.010131559020711013, + "input_f64_hex": "0xBF84BFDAD5362A27", + "lns8_bits_hex": "0xCB", + "lns8_bits_int": 203, + "decoded_f64": -0.010131559020711013, + "decoded_f64_hex": "0xBF84BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -0.011048543456039806, + "input_f64_hex": "0xBF86A09E667F3BCD", + "lns8_bits_hex": "0xCC", + "lns8_bits_int": 204, + "decoded_f64": -0.011048543456039806, + "decoded_f64_hex": "0xBF86A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -0.012048522073499537, + "input_f64_hex": "0xBF88ACE5422AA0DB", + "lns8_bits_hex": "0xCD", + "lns8_bits_int": 205, + "decoded_f64": -0.012048522073499537, + "decoded_f64_hex": "0xBF88ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -0.013139006488339289, + "input_f64_hex": "0xBF8AE89F995AD3AD", + "lns8_bits_hex": "0xCE", + "lns8_bits_int": 206, + "decoded_f64": -0.013139006488339289, + "decoded_f64_hex": "0xBF8AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -0.014328188175072988, + "input_f64_hex": "0xBF8D5818DCFBA487", + "lns8_bits_hex": "0xCF", + "lns8_bits_int": 207, + "decoded_f64": -0.014328188175072988, + "decoded_f64_hex": "0xBF8D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -0.015625, + "input_f64_hex": "0xBF90000000000000", + "lns8_bits_hex": "0xD0", + "lns8_bits_int": 208, + "decoded_f64": -0.015625, + "decoded_f64_hex": "0xBF90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -0.01703918332289465, + "input_f64_hex": "0xBF9172B83C7D517B", + "lns8_bits_hex": "0xD1", + "lns8_bits_int": 209, + "decoded_f64": -0.01703918332289465, + "decoded_f64_hex": "0xBF9172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -0.018581361171917516, + "input_f64_hex": "0xBF9306FE0A31B715", + "lns8_bits_hex": "0xD2", + "lns8_bits_int": 210, + "decoded_f64": -0.018581361171917516, + "decoded_f64_hex": "0xBF9306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -0.020263118041422026, + "input_f64_hex": "0xBF94BFDAD5362A27", + "lns8_bits_hex": "0xD3", + "lns8_bits_int": 211, + "decoded_f64": -0.020263118041422026, + "decoded_f64_hex": "0xBF94BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -0.02209708691207961, + "input_f64_hex": "0xBF96A09E667F3BCD", + "lns8_bits_hex": "0xD4", + "lns8_bits_int": 212, + "decoded_f64": -0.02209708691207961, + "decoded_f64_hex": "0xBF96A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -0.024097044146999074, + "input_f64_hex": "0xBF98ACE5422AA0DB", + "lns8_bits_hex": "0xD5", + "lns8_bits_int": 213, + "decoded_f64": -0.024097044146999074, + "decoded_f64_hex": "0xBF98ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -0.026278012976678578, + "input_f64_hex": "0xBF9AE89F995AD3AD", + "lns8_bits_hex": "0xD6", + "lns8_bits_int": 214, + "decoded_f64": -0.026278012976678578, + "decoded_f64_hex": "0xBF9AE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -0.028656376350145975, + "input_f64_hex": "0xBF9D5818DCFBA487", + "lns8_bits_hex": "0xD7", + "lns8_bits_int": 215, + "decoded_f64": -0.028656376350145975, + "decoded_f64_hex": "0xBF9D5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -0.03125, + "input_f64_hex": "0xBFA0000000000000", + "lns8_bits_hex": "0xD8", + "lns8_bits_int": 216, + "decoded_f64": -0.03125, + "decoded_f64_hex": "0xBFA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -0.0340783666457893, + "input_f64_hex": "0xBFA172B83C7D517B", + "lns8_bits_hex": "0xD9", + "lns8_bits_int": 217, + "decoded_f64": -0.0340783666457893, + "decoded_f64_hex": "0xBFA172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -0.03716272234383503, + "input_f64_hex": "0xBFA306FE0A31B715", + "lns8_bits_hex": "0xDA", + "lns8_bits_int": 218, + "decoded_f64": -0.03716272234383503, + "decoded_f64_hex": "0xBFA306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -0.04052623608284405, + "input_f64_hex": "0xBFA4BFDAD5362A27", + "lns8_bits_hex": "0xDB", + "lns8_bits_int": 219, + "decoded_f64": -0.04052623608284405, + "decoded_f64_hex": "0xBFA4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -0.04419417382415922, + "input_f64_hex": "0xBFA6A09E667F3BCD", + "lns8_bits_hex": "0xDC", + "lns8_bits_int": 220, + "decoded_f64": -0.04419417382415922, + "decoded_f64_hex": "0xBFA6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -0.04819408829399815, + "input_f64_hex": "0xBFA8ACE5422AA0DB", + "lns8_bits_hex": "0xDD", + "lns8_bits_int": 221, + "decoded_f64": -0.04819408829399815, + "decoded_f64_hex": "0xBFA8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -0.052556025953357156, + "input_f64_hex": "0xBFAAE89F995AD3AD", + "lns8_bits_hex": "0xDE", + "lns8_bits_int": 222, + "decoded_f64": -0.052556025953357156, + "decoded_f64_hex": "0xBFAAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -0.05731275270029195, + "input_f64_hex": "0xBFAD5818DCFBA487", + "lns8_bits_hex": "0xDF", + "lns8_bits_int": 223, + "decoded_f64": -0.05731275270029195, + "decoded_f64_hex": "0xBFAD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "lns8_bits_hex": "0xE0", + "lns8_bits_int": 224, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -0.0681567332915786, + "input_f64_hex": "0xBFB172B83C7D517B", + "lns8_bits_hex": "0xE1", + "lns8_bits_int": 225, + "decoded_f64": -0.0681567332915786, + "decoded_f64_hex": "0xBFB172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -0.07432544468767006, + "input_f64_hex": "0xBFB306FE0A31B715", + "lns8_bits_hex": "0xE2", + "lns8_bits_int": 226, + "decoded_f64": -0.07432544468767006, + "decoded_f64_hex": "0xBFB306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -0.0810524721656881, + "input_f64_hex": "0xBFB4BFDAD5362A27", + "lns8_bits_hex": "0xE3", + "lns8_bits_int": 227, + "decoded_f64": -0.0810524721656881, + "decoded_f64_hex": "0xBFB4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -0.08838834764831845, + "input_f64_hex": "0xBFB6A09E667F3BCD", + "lns8_bits_hex": "0xE4", + "lns8_bits_int": 228, + "decoded_f64": -0.08838834764831845, + "decoded_f64_hex": "0xBFB6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -0.0963881765879963, + "input_f64_hex": "0xBFB8ACE5422AA0DB", + "lns8_bits_hex": "0xE5", + "lns8_bits_int": 229, + "decoded_f64": -0.0963881765879963, + "decoded_f64_hex": "0xBFB8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -0.10511205190671431, + "input_f64_hex": "0xBFBAE89F995AD3AD", + "lns8_bits_hex": "0xE6", + "lns8_bits_int": 230, + "decoded_f64": -0.10511205190671431, + "decoded_f64_hex": "0xBFBAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -0.1146255054005839, + "input_f64_hex": "0xBFBD5818DCFBA487", + "lns8_bits_hex": "0xE7", + "lns8_bits_int": 231, + "decoded_f64": -0.1146255054005839, + "decoded_f64_hex": "0xBFBD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "lns8_bits_hex": "0xE8", + "lns8_bits_int": 232, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -0.1363134665831572, + "input_f64_hex": "0xBFC172B83C7D517B", + "lns8_bits_hex": "0xE9", + "lns8_bits_int": 233, + "decoded_f64": -0.1363134665831572, + "decoded_f64_hex": "0xBFC172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -0.14865088937534013, + "input_f64_hex": "0xBFC306FE0A31B715", + "lns8_bits_hex": "0xEA", + "lns8_bits_int": 234, + "decoded_f64": -0.14865088937534013, + "decoded_f64_hex": "0xBFC306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -0.1621049443313762, + "input_f64_hex": "0xBFC4BFDAD5362A27", + "lns8_bits_hex": "0xEB", + "lns8_bits_int": 235, + "decoded_f64": -0.1621049443313762, + "decoded_f64_hex": "0xBFC4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -0.1767766952966369, + "input_f64_hex": "0xBFC6A09E667F3BCD", + "lns8_bits_hex": "0xEC", + "lns8_bits_int": 236, + "decoded_f64": -0.1767766952966369, + "decoded_f64_hex": "0xBFC6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -0.1927763531759926, + "input_f64_hex": "0xBFC8ACE5422AA0DB", + "lns8_bits_hex": "0xED", + "lns8_bits_int": 237, + "decoded_f64": -0.1927763531759926, + "decoded_f64_hex": "0xBFC8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -0.21022410381342863, + "input_f64_hex": "0xBFCAE89F995AD3AD", + "lns8_bits_hex": "0xEE", + "lns8_bits_int": 238, + "decoded_f64": -0.21022410381342863, + "decoded_f64_hex": "0xBFCAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -0.2292510108011678, + "input_f64_hex": "0xBFCD5818DCFBA487", + "lns8_bits_hex": "0xEF", + "lns8_bits_int": 239, + "decoded_f64": -0.2292510108011678, + "decoded_f64_hex": "0xBFCD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "lns8_bits_hex": "0xF0", + "lns8_bits_int": 240, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF1", + "input_f64": -0.2726269331663144, + "input_f64_hex": "0xBFD172B83C7D517B", + "lns8_bits_hex": "0xF1", + "lns8_bits_int": 241, + "decoded_f64": -0.2726269331663144, + "decoded_f64_hex": "0xBFD172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF2", + "input_f64": -0.29730177875068026, + "input_f64_hex": "0xBFD306FE0A31B715", + "lns8_bits_hex": "0xF2", + "lns8_bits_int": 242, + "decoded_f64": -0.29730177875068026, + "decoded_f64_hex": "0xBFD306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF3", + "input_f64": -0.3242098886627524, + "input_f64_hex": "0xBFD4BFDAD5362A27", + "lns8_bits_hex": "0xF3", + "lns8_bits_int": 243, + "decoded_f64": -0.3242098886627524, + "decoded_f64_hex": "0xBFD4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF4", + "input_f64": -0.3535533905932738, + "input_f64_hex": "0xBFD6A09E667F3BCD", + "lns8_bits_hex": "0xF4", + "lns8_bits_int": 244, + "decoded_f64": -0.3535533905932738, + "decoded_f64_hex": "0xBFD6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF5", + "input_f64": -0.3855527063519852, + "input_f64_hex": "0xBFD8ACE5422AA0DB", + "lns8_bits_hex": "0xF5", + "lns8_bits_int": 245, + "decoded_f64": -0.3855527063519852, + "decoded_f64_hex": "0xBFD8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF6", + "input_f64": -0.42044820762685725, + "input_f64_hex": "0xBFDAE89F995AD3AD", + "lns8_bits_hex": "0xF6", + "lns8_bits_int": 246, + "decoded_f64": -0.42044820762685725, + "decoded_f64_hex": "0xBFDAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF7", + "input_f64": -0.4585020216023356, + "input_f64_hex": "0xBFDD5818DCFBA487", + "lns8_bits_hex": "0xF7", + "lns8_bits_int": 247, + "decoded_f64": -0.4585020216023356, + "decoded_f64_hex": "0xBFDD5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF8", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "lns8_bits_hex": "0xF8", + "lns8_bits_int": 248, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF9", + "input_f64": -0.5452538663326288, + "input_f64_hex": "0xBFE172B83C7D517B", + "lns8_bits_hex": "0xF9", + "lns8_bits_int": 249, + "decoded_f64": -0.5452538663326288, + "decoded_f64_hex": "0xBFE172B83C7D517B", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFA", + "input_f64": -0.5946035575013605, + "input_f64_hex": "0xBFE306FE0A31B715", + "lns8_bits_hex": "0xFA", + "lns8_bits_int": 250, + "decoded_f64": -0.5946035575013605, + "decoded_f64_hex": "0xBFE306FE0A31B715", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFB", + "input_f64": -0.6484197773255048, + "input_f64_hex": "0xBFE4BFDAD5362A27", + "lns8_bits_hex": "0xFB", + "lns8_bits_int": 251, + "decoded_f64": -0.6484197773255048, + "decoded_f64_hex": "0xBFE4BFDAD5362A27", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFC", + "input_f64": -0.7071067811865476, + "input_f64_hex": "0xBFE6A09E667F3BCD", + "lns8_bits_hex": "0xFC", + "lns8_bits_int": 252, + "decoded_f64": -0.7071067811865476, + "decoded_f64_hex": "0xBFE6A09E667F3BCD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFD", + "input_f64": -0.7711054127039704, + "input_f64_hex": "0xBFE8ACE5422AA0DB", + "lns8_bits_hex": "0xFD", + "lns8_bits_int": 253, + "decoded_f64": -0.7711054127039704, + "decoded_f64_hex": "0xBFE8ACE5422AA0DB", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFE", + "input_f64": -0.8408964152537145, + "input_f64_hex": "0xBFEAE89F995AD3AD", + "lns8_bits_hex": "0xFE", + "lns8_bits_int": 254, + "decoded_f64": -0.8408964152537145, + "decoded_f64_hex": "0xBFEAE89F995AD3AD", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFF", + "input_f64": -0.9170040432046712, + "input_f64_hex": "0xBFED5818DCFBA487", + "lns8_bits_hex": "0xFF", + "lns8_bits_int": 255, + "decoded_f64": -0.9170040432046712, + "decoded_f64_hex": "0xBFED5818DCFBA487", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/minifloat_conformance_v0.json b/conformance/vectors/minifloat_conformance_v0.json new file mode 100644 index 000000000..0fdf8726c --- /dev/null +++ b/conformance/vectors/minifloat_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MINIFLOAT", + "format_name": "minifloat (arbitrary E:M, <=16 bits)", + "bitexact": false, + "format_notes": "minifloat (arbitrary E:M, <=16 bits) -- parametric framework", + "catalog": { + "id": "minifloat", + "bits": 0, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "Theoretical", + "status": "Experimental", + "standard": "parametric framework", + "use_case": "design space of GF4/GF8/GF12/GF16", + "gf_relation": "ally", + "source": "Higham 1996", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/ms_mbf32_conformance_v0.json b/conformance/vectors/ms_mbf32_conformance_v0.json new file mode 100644 index 000000000..e53069289 --- /dev/null +++ b/conformance/vectors/ms_mbf32_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MS_MBF32", + "format_name": "Microsoft MBF (single)", + "bitexact": true, + "format_notes": "vendor radix-2 float S1E8M23, bias 129 (MS BASIC / MS-DOS (pre-IEEE)). vendor-specific specials", + "catalog": { + "id": "ms_mbf32", + "bits": 32, + "s": 1, + "e": 8, + "m": 23, + "bias": 129, + "storage": "u32", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "MS BASIC / MS-DOS (pre-IEEE)", + "use_case": "MS BASIC legacy", + "gf_relation": "orthogonal", + "source": "MS-DOS docs", + "phi_distance": -1.0 + }, + "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, + "ms_mbf32_bits_hex": "0x41400000" + }, + "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", + "ms_mbf32_bits_hex": "0x00000000", + "ms_mbf32_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", + "ms_mbf32_bits_hex": "0x40800000", + "ms_mbf32_bits_int": 1082130432, + "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", + "ms_mbf32_bits_hex": "0xC0800000", + "ms_mbf32_bits_int": 3229614080, + "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", + "ms_mbf32_bits_hex": "0x41000000", + "ms_mbf32_bits_int": 1090519040, + "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", + "ms_mbf32_bits_hex": "0x41400000", + "ms_mbf32_bits_int": 1094713344, + "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", + "ms_mbf32_bits_hex": "0x40000000", + "ms_mbf32_bits_int": 1073741824, + "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", + "ms_mbf32_bits_hex": "0x41800000", + "ms_mbf32_bits_int": 1098907648, + "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", + "ms_mbf32_bits_hex": "0xC1400000", + "ms_mbf32_bits_int": 3242196992, + "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/ms_mbf64_conformance_v0.json b/conformance/vectors/ms_mbf64_conformance_v0.json new file mode 100644 index 000000000..e92bdb105 --- /dev/null +++ b/conformance/vectors/ms_mbf64_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MS_MBF64", + "format_name": "Microsoft MBF (double)", + "bitexact": true, + "format_notes": "vendor radix-2 float S1E8M55, bias 129 (MS BASIC). vendor-specific specials", + "catalog": { + "id": "ms_mbf64", + "bits": 64, + "s": 1, + "e": 8, + "m": 55, + "bias": 129, + "storage": "u64", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "MS BASIC", + "use_case": "MS BASIC legacy", + "gf_relation": "orthogonal", + "source": "MS-DOS docs", + "phi_distance": -1.0 + }, + "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, + "ms_mbf64_bits_hex": "0x4140000000000000" + }, + "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", + "ms_mbf64_bits_hex": "0x0000000000000000", + "ms_mbf64_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", + "ms_mbf64_bits_hex": "0x4080000000000000", + "ms_mbf64_bits_int": 4647714815446351872, + "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", + "ms_mbf64_bits_hex": "0xC080000000000000", + "ms_mbf64_bits_int": 13871086852301127680, + "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", + "ms_mbf64_bits_hex": "0x4100000000000000", + "ms_mbf64_bits_int": 4683743612465315840, + "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", + "ms_mbf64_bits_hex": "0x4140000000000000", + "ms_mbf64_bits_int": 4701758010974797824, + "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", + "ms_mbf64_bits_hex": "0x4000000000000000", + "ms_mbf64_bits_int": 4611686018427387904, + "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", + "ms_mbf64_bits_hex": "0x4180000000000000", + "ms_mbf64_bits_int": 4719772409484279808, + "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", + "ms_mbf64_bits_hex": "0xC140000000000000", + "ms_mbf64_bits_int": 13925130047829573632, + "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/mxfp6_conformance_v0.json b/conformance/vectors/mxfp6_conformance_v0.json new file mode 100644 index 000000000..443d5336c --- /dev/null +++ b/conformance/vectors/mxfp6_conformance_v0.json @@ -0,0 +1,742 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MXFP6", + "format_name": "MXFP6", + "bitexact": true, + "format_notes": "OCP MX element S1E3M2, bias 3 (paired with E8M0 block scale). element is finite-only; block scale E8M0 handles range", + "catalog": { + "id": "mxfp6", + "bits": 6, + "s": 1, + "e": 3, + "m": 2, + "bias": 3, + "storage": "u8_packed_plus_e8m0", + "cluster": "Microscaling", + "status": "Verified", + "standard": "OCP MX v1.0", + "use_case": "aggressive inference", + "gf_relation": "ally", + "source": "Rouhani 2023", + "phi_distance": 0.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, + "mxfp6_bits_hex": "0x12" + }, + "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": 64, + "max_finite": 28.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "mxfp6_bits_hex": "0x00", + "mxfp6_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", + "mxfp6_bits_hex": "0x01", + "mxfp6_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", + "mxfp6_bits_hex": "0x02", + "mxfp6_bits_int": 2, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "mxfp6_bits_hex": "0x03", + "mxfp6_bits_int": 3, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "mxfp6_bits_hex": "0x04", + "mxfp6_bits_int": 4, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "mxfp6_bits_hex": "0x05", + "mxfp6_bits_int": 5, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "mxfp6_bits_hex": "0x06", + "mxfp6_bits_int": 6, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "mxfp6_bits_hex": "0x07", + "mxfp6_bits_int": 7, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "mxfp6_bits_hex": "0x08", + "mxfp6_bits_int": 8, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "mxfp6_bits_hex": "0x09", + "mxfp6_bits_int": 9, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "mxfp6_bits_hex": "0x0A", + "mxfp6_bits_int": 10, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "mxfp6_bits_hex": "0x0B", + "mxfp6_bits_int": 11, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "mxfp6_bits_hex": "0x0C", + "mxfp6_bits_int": 12, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "mxfp6_bits_hex": "0x0D", + "mxfp6_bits_int": 13, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "mxfp6_bits_hex": "0x0E", + "mxfp6_bits_int": 14, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "mxfp6_bits_hex": "0x0F", + "mxfp6_bits_int": 15, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "mxfp6_bits_hex": "0x10", + "mxfp6_bits_int": 16, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "mxfp6_bits_hex": "0x11", + "mxfp6_bits_int": 17, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "mxfp6_bits_hex": "0x12", + "mxfp6_bits_int": 18, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "mxfp6_bits_hex": "0x13", + "mxfp6_bits_int": 19, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "mxfp6_bits_hex": "0x14", + "mxfp6_bits_int": 20, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "mxfp6_bits_hex": "0x15", + "mxfp6_bits_int": 21, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "mxfp6_bits_hex": "0x16", + "mxfp6_bits_int": 22, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "mxfp6_bits_hex": "0x17", + "mxfp6_bits_int": 23, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "mxfp6_bits_hex": "0x18", + "mxfp6_bits_int": 24, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "mxfp6_bits_hex": "0x19", + "mxfp6_bits_int": 25, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "mxfp6_bits_hex": "0x1A", + "mxfp6_bits_int": 26, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "mxfp6_bits_hex": "0x1B", + "mxfp6_bits_int": 27, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "mxfp6_bits_hex": "0x1C", + "mxfp6_bits_int": 28, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 20.0, + "input_f64_hex": "0x4034000000000000", + "mxfp6_bits_hex": "0x1D", + "mxfp6_bits_int": 29, + "decoded_f64": 20.0, + "decoded_f64_hex": "0x4034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 24.0, + "input_f64_hex": "0x4038000000000000", + "mxfp6_bits_hex": "0x1E", + "mxfp6_bits_int": 30, + "decoded_f64": 24.0, + "decoded_f64_hex": "0x4038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 28.0, + "input_f64_hex": "0x403C000000000000", + "mxfp6_bits_hex": "0x1F", + "mxfp6_bits_int": 31, + "decoded_f64": 28.0, + "decoded_f64_hex": "0x403C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "mxfp6_bits_hex": "0x20", + "mxfp6_bits_int": 32, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x21", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "mxfp6_bits_hex": "0x21", + "mxfp6_bits_int": 33, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x22", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "mxfp6_bits_hex": "0x22", + "mxfp6_bits_int": 34, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x23", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "mxfp6_bits_hex": "0x23", + "mxfp6_bits_int": 35, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x24", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "mxfp6_bits_hex": "0x24", + "mxfp6_bits_int": 36, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "mxfp6_bits_hex": "0x25", + "mxfp6_bits_int": 37, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "mxfp6_bits_hex": "0x26", + "mxfp6_bits_int": 38, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "mxfp6_bits_hex": "0x27", + "mxfp6_bits_int": 39, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "mxfp6_bits_hex": "0x28", + "mxfp6_bits_int": 40, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "mxfp6_bits_hex": "0x29", + "mxfp6_bits_int": 41, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "mxfp6_bits_hex": "0x2A", + "mxfp6_bits_int": 42, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "mxfp6_bits_hex": "0x2B", + "mxfp6_bits_int": 43, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "mxfp6_bits_hex": "0x2C", + "mxfp6_bits_int": 44, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "mxfp6_bits_hex": "0x2D", + "mxfp6_bits_int": 45, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "mxfp6_bits_hex": "0x2E", + "mxfp6_bits_int": 46, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "mxfp6_bits_hex": "0x2F", + "mxfp6_bits_int": 47, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "mxfp6_bits_hex": "0x30", + "mxfp6_bits_int": 48, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "mxfp6_bits_hex": "0x31", + "mxfp6_bits_int": 49, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "mxfp6_bits_hex": "0x32", + "mxfp6_bits_int": 50, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "mxfp6_bits_hex": "0x33", + "mxfp6_bits_int": 51, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "mxfp6_bits_hex": "0x34", + "mxfp6_bits_int": 52, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "mxfp6_bits_hex": "0x35", + "mxfp6_bits_int": 53, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "mxfp6_bits_hex": "0x36", + "mxfp6_bits_int": 54, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "mxfp6_bits_hex": "0x37", + "mxfp6_bits_int": 55, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "mxfp6_bits_hex": "0x38", + "mxfp6_bits_int": 56, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "mxfp6_bits_hex": "0x39", + "mxfp6_bits_int": 57, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "mxfp6_bits_hex": "0x3A", + "mxfp6_bits_int": 58, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "mxfp6_bits_hex": "0x3B", + "mxfp6_bits_int": 59, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "mxfp6_bits_hex": "0x3C", + "mxfp6_bits_int": 60, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": -20.0, + "input_f64_hex": "0xC034000000000000", + "mxfp6_bits_hex": "0x3D", + "mxfp6_bits_int": 61, + "decoded_f64": -20.0, + "decoded_f64_hex": "0xC034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": -24.0, + "input_f64_hex": "0xC038000000000000", + "mxfp6_bits_hex": "0x3E", + "mxfp6_bits_int": 62, + "decoded_f64": -24.0, + "decoded_f64_hex": "0xC038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": -28.0, + "input_f64_hex": "0xC03C000000000000", + "mxfp6_bits_hex": "0x3F", + "mxfp6_bits_int": 63, + "decoded_f64": -28.0, + "decoded_f64_hex": "0xC03C000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/mxfp8_conformance_v0.json b/conformance/vectors/mxfp8_conformance_v0.json new file mode 100644 index 000000000..766573372 --- /dev/null +++ b/conformance/vectors/mxfp8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MXFP8", + "format_name": "MXFP8", + "bitexact": true, + "format_notes": "OCP MX element S1E4M3, bias 7 (paired with E8M0 block scale). element is finite-only; block scale E8M0 handles range", + "catalog": { + "id": "mxfp8", + "bits": 8, + "s": 1, + "e": 4, + "m": 3, + "bias": 7, + "storage": "u8_plus_shared_e8m0", + "cluster": "Microscaling", + "status": "Verified", + "standard": "OCP MX v1.0", + "use_case": "LLM inference", + "gf_relation": "ally", + "source": "Rouhani 2023 (arXiv:2310.10537)", + "phi_distance": 0.715 + }, + "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, + "mxfp8_bits_hex": "0x44" + }, + "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": 480.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "mxfp8_bits_hex": "0x00", + "mxfp8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.001953125, + "input_f64_hex": "0x3F60000000000000", + "mxfp8_bits_hex": "0x01", + "mxfp8_bits_int": 1, + "decoded_f64": 0.001953125, + "decoded_f64_hex": "0x3F60000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.00390625, + "input_f64_hex": "0x3F70000000000000", + "mxfp8_bits_hex": "0x02", + "mxfp8_bits_int": 2, + "decoded_f64": 0.00390625, + "decoded_f64_hex": "0x3F70000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.005859375, + "input_f64_hex": "0x3F78000000000000", + "mxfp8_bits_hex": "0x03", + "mxfp8_bits_int": 3, + "decoded_f64": 0.005859375, + "decoded_f64_hex": "0x3F78000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.0078125, + "input_f64_hex": "0x3F80000000000000", + "mxfp8_bits_hex": "0x04", + "mxfp8_bits_int": 4, + "decoded_f64": 0.0078125, + "decoded_f64_hex": "0x3F80000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 0.009765625, + "input_f64_hex": "0x3F84000000000000", + "mxfp8_bits_hex": "0x05", + "mxfp8_bits_int": 5, + "decoded_f64": 0.009765625, + "decoded_f64_hex": "0x3F84000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 0.01171875, + "input_f64_hex": "0x3F88000000000000", + "mxfp8_bits_hex": "0x06", + "mxfp8_bits_int": 6, + "decoded_f64": 0.01171875, + "decoded_f64_hex": "0x3F88000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.013671875, + "input_f64_hex": "0x3F8C000000000000", + "mxfp8_bits_hex": "0x07", + "mxfp8_bits_int": 7, + "decoded_f64": 0.013671875, + "decoded_f64_hex": "0x3F8C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 0.015625, + "input_f64_hex": "0x3F90000000000000", + "mxfp8_bits_hex": "0x08", + "mxfp8_bits_int": 8, + "decoded_f64": 0.015625, + "decoded_f64_hex": "0x3F90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 0.017578125, + "input_f64_hex": "0x3F92000000000000", + "mxfp8_bits_hex": "0x09", + "mxfp8_bits_int": 9, + "decoded_f64": 0.017578125, + "decoded_f64_hex": "0x3F92000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 0.01953125, + "input_f64_hex": "0x3F94000000000000", + "mxfp8_bits_hex": "0x0A", + "mxfp8_bits_int": 10, + "decoded_f64": 0.01953125, + "decoded_f64_hex": "0x3F94000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 0.021484375, + "input_f64_hex": "0x3F96000000000000", + "mxfp8_bits_hex": "0x0B", + "mxfp8_bits_int": 11, + "decoded_f64": 0.021484375, + "decoded_f64_hex": "0x3F96000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 0.0234375, + "input_f64_hex": "0x3F98000000000000", + "mxfp8_bits_hex": "0x0C", + "mxfp8_bits_int": 12, + "decoded_f64": 0.0234375, + "decoded_f64_hex": "0x3F98000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 0.025390625, + "input_f64_hex": "0x3F9A000000000000", + "mxfp8_bits_hex": "0x0D", + "mxfp8_bits_int": 13, + "decoded_f64": 0.025390625, + "decoded_f64_hex": "0x3F9A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 0.02734375, + "input_f64_hex": "0x3F9C000000000000", + "mxfp8_bits_hex": "0x0E", + "mxfp8_bits_int": 14, + "decoded_f64": 0.02734375, + "decoded_f64_hex": "0x3F9C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 0.029296875, + "input_f64_hex": "0x3F9E000000000000", + "mxfp8_bits_hex": "0x0F", + "mxfp8_bits_int": 15, + "decoded_f64": 0.029296875, + "decoded_f64_hex": "0x3F9E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 0.03125, + "input_f64_hex": "0x3FA0000000000000", + "mxfp8_bits_hex": "0x10", + "mxfp8_bits_int": 16, + "decoded_f64": 0.03125, + "decoded_f64_hex": "0x3FA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.03515625, + "input_f64_hex": "0x3FA2000000000000", + "mxfp8_bits_hex": "0x11", + "mxfp8_bits_int": 17, + "decoded_f64": 0.03515625, + "decoded_f64_hex": "0x3FA2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.0390625, + "input_f64_hex": "0x3FA4000000000000", + "mxfp8_bits_hex": "0x12", + "mxfp8_bits_int": 18, + "decoded_f64": 0.0390625, + "decoded_f64_hex": "0x3FA4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.04296875, + "input_f64_hex": "0x3FA6000000000000", + "mxfp8_bits_hex": "0x13", + "mxfp8_bits_int": 19, + "decoded_f64": 0.04296875, + "decoded_f64_hex": "0x3FA6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.046875, + "input_f64_hex": "0x3FA8000000000000", + "mxfp8_bits_hex": "0x14", + "mxfp8_bits_int": 20, + "decoded_f64": 0.046875, + "decoded_f64_hex": "0x3FA8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.05078125, + "input_f64_hex": "0x3FAA000000000000", + "mxfp8_bits_hex": "0x15", + "mxfp8_bits_int": 21, + "decoded_f64": 0.05078125, + "decoded_f64_hex": "0x3FAA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.0546875, + "input_f64_hex": "0x3FAC000000000000", + "mxfp8_bits_hex": "0x16", + "mxfp8_bits_int": 22, + "decoded_f64": 0.0546875, + "decoded_f64_hex": "0x3FAC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.05859375, + "input_f64_hex": "0x3FAE000000000000", + "mxfp8_bits_hex": "0x17", + "mxfp8_bits_int": 23, + "decoded_f64": 0.05859375, + "decoded_f64_hex": "0x3FAE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "mxfp8_bits_hex": "0x18", + "mxfp8_bits_int": 24, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.0703125, + "input_f64_hex": "0x3FB2000000000000", + "mxfp8_bits_hex": "0x19", + "mxfp8_bits_int": 25, + "decoded_f64": 0.0703125, + "decoded_f64_hex": "0x3FB2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.078125, + "input_f64_hex": "0x3FB4000000000000", + "mxfp8_bits_hex": "0x1A", + "mxfp8_bits_int": 26, + "decoded_f64": 0.078125, + "decoded_f64_hex": "0x3FB4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.0859375, + "input_f64_hex": "0x3FB6000000000000", + "mxfp8_bits_hex": "0x1B", + "mxfp8_bits_int": 27, + "decoded_f64": 0.0859375, + "decoded_f64_hex": "0x3FB6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.09375, + "input_f64_hex": "0x3FB8000000000000", + "mxfp8_bits_hex": "0x1C", + "mxfp8_bits_int": 28, + "decoded_f64": 0.09375, + "decoded_f64_hex": "0x3FB8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.1015625, + "input_f64_hex": "0x3FBA000000000000", + "mxfp8_bits_hex": "0x1D", + "mxfp8_bits_int": 29, + "decoded_f64": 0.1015625, + "decoded_f64_hex": "0x3FBA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.109375, + "input_f64_hex": "0x3FBC000000000000", + "mxfp8_bits_hex": "0x1E", + "mxfp8_bits_int": 30, + "decoded_f64": 0.109375, + "decoded_f64_hex": "0x3FBC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.1171875, + "input_f64_hex": "0x3FBE000000000000", + "mxfp8_bits_hex": "0x1F", + "mxfp8_bits_int": 31, + "decoded_f64": 0.1171875, + "decoded_f64_hex": "0x3FBE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "mxfp8_bits_hex": "0x20", + "mxfp8_bits_int": 32, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.140625, + "input_f64_hex": "0x3FC2000000000000", + "mxfp8_bits_hex": "0x21", + "mxfp8_bits_int": 33, + "decoded_f64": 0.140625, + "decoded_f64_hex": "0x3FC2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.15625, + "input_f64_hex": "0x3FC4000000000000", + "mxfp8_bits_hex": "0x22", + "mxfp8_bits_int": 34, + "decoded_f64": 0.15625, + "decoded_f64_hex": "0x3FC4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.171875, + "input_f64_hex": "0x3FC6000000000000", + "mxfp8_bits_hex": "0x23", + "mxfp8_bits_int": 35, + "decoded_f64": 0.171875, + "decoded_f64_hex": "0x3FC6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "mxfp8_bits_hex": "0x24", + "mxfp8_bits_int": 36, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.203125, + "input_f64_hex": "0x3FCA000000000000", + "mxfp8_bits_hex": "0x25", + "mxfp8_bits_int": 37, + "decoded_f64": 0.203125, + "decoded_f64_hex": "0x3FCA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.21875, + "input_f64_hex": "0x3FCC000000000000", + "mxfp8_bits_hex": "0x26", + "mxfp8_bits_int": 38, + "decoded_f64": 0.21875, + "decoded_f64_hex": "0x3FCC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.234375, + "input_f64_hex": "0x3FCE000000000000", + "mxfp8_bits_hex": "0x27", + "mxfp8_bits_int": 39, + "decoded_f64": 0.234375, + "decoded_f64_hex": "0x3FCE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "mxfp8_bits_hex": "0x28", + "mxfp8_bits_int": 40, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.28125, + "input_f64_hex": "0x3FD2000000000000", + "mxfp8_bits_hex": "0x29", + "mxfp8_bits_int": 41, + "decoded_f64": 0.28125, + "decoded_f64_hex": "0x3FD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "mxfp8_bits_hex": "0x2A", + "mxfp8_bits_int": 42, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.34375, + "input_f64_hex": "0x3FD6000000000000", + "mxfp8_bits_hex": "0x2B", + "mxfp8_bits_int": 43, + "decoded_f64": 0.34375, + "decoded_f64_hex": "0x3FD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "mxfp8_bits_hex": "0x2C", + "mxfp8_bits_int": 44, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.40625, + "input_f64_hex": "0x3FDA000000000000", + "mxfp8_bits_hex": "0x2D", + "mxfp8_bits_int": 45, + "decoded_f64": 0.40625, + "decoded_f64_hex": "0x3FDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "mxfp8_bits_hex": "0x2E", + "mxfp8_bits_int": 46, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.46875, + "input_f64_hex": "0x3FDE000000000000", + "mxfp8_bits_hex": "0x2F", + "mxfp8_bits_int": 47, + "decoded_f64": 0.46875, + "decoded_f64_hex": "0x3FDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "mxfp8_bits_hex": "0x30", + "mxfp8_bits_int": 48, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 0.5625, + "input_f64_hex": "0x3FE2000000000000", + "mxfp8_bits_hex": "0x31", + "mxfp8_bits_int": 49, + "decoded_f64": 0.5625, + "decoded_f64_hex": "0x3FE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "mxfp8_bits_hex": "0x32", + "mxfp8_bits_int": 50, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 0.6875, + "input_f64_hex": "0x3FE6000000000000", + "mxfp8_bits_hex": "0x33", + "mxfp8_bits_int": 51, + "decoded_f64": 0.6875, + "decoded_f64_hex": "0x3FE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "mxfp8_bits_hex": "0x34", + "mxfp8_bits_int": 52, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 0.8125, + "input_f64_hex": "0x3FEA000000000000", + "mxfp8_bits_hex": "0x35", + "mxfp8_bits_int": 53, + "decoded_f64": 0.8125, + "decoded_f64_hex": "0x3FEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "mxfp8_bits_hex": "0x36", + "mxfp8_bits_int": 54, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 0.9375, + "input_f64_hex": "0x3FEE000000000000", + "mxfp8_bits_hex": "0x37", + "mxfp8_bits_int": 55, + "decoded_f64": 0.9375, + "decoded_f64_hex": "0x3FEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "mxfp8_bits_hex": "0x38", + "mxfp8_bits_int": 56, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "mxfp8_bits_hex": "0x39", + "mxfp8_bits_int": 57, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "mxfp8_bits_hex": "0x3A", + "mxfp8_bits_int": 58, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "mxfp8_bits_hex": "0x3B", + "mxfp8_bits_int": 59, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "mxfp8_bits_hex": "0x3C", + "mxfp8_bits_int": 60, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "mxfp8_bits_hex": "0x3D", + "mxfp8_bits_int": 61, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "mxfp8_bits_hex": "0x3E", + "mxfp8_bits_int": 62, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "mxfp8_bits_hex": "0x3F", + "mxfp8_bits_int": 63, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "mxfp8_bits_hex": "0x40", + "mxfp8_bits_int": 64, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "mxfp8_bits_hex": "0x41", + "mxfp8_bits_int": 65, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "mxfp8_bits_hex": "0x42", + "mxfp8_bits_int": 66, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "mxfp8_bits_hex": "0x43", + "mxfp8_bits_int": 67, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "mxfp8_bits_hex": "0x44", + "mxfp8_bits_int": 68, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "mxfp8_bits_hex": "0x45", + "mxfp8_bits_int": 69, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "mxfp8_bits_hex": "0x46", + "mxfp8_bits_int": 70, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "mxfp8_bits_hex": "0x47", + "mxfp8_bits_int": 71, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "mxfp8_bits_hex": "0x48", + "mxfp8_bits_int": 72, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 4.5, + "input_f64_hex": "0x4012000000000000", + "mxfp8_bits_hex": "0x49", + "mxfp8_bits_int": 73, + "decoded_f64": 4.5, + "decoded_f64_hex": "0x4012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "mxfp8_bits_hex": "0x4A", + "mxfp8_bits_int": 74, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 5.5, + "input_f64_hex": "0x4016000000000000", + "mxfp8_bits_hex": "0x4B", + "mxfp8_bits_int": 75, + "decoded_f64": 5.5, + "decoded_f64_hex": "0x4016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "mxfp8_bits_hex": "0x4C", + "mxfp8_bits_int": 76, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 6.5, + "input_f64_hex": "0x401A000000000000", + "mxfp8_bits_hex": "0x4D", + "mxfp8_bits_int": 77, + "decoded_f64": 6.5, + "decoded_f64_hex": "0x401A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "mxfp8_bits_hex": "0x4E", + "mxfp8_bits_int": 78, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 7.5, + "input_f64_hex": "0x401E000000000000", + "mxfp8_bits_hex": "0x4F", + "mxfp8_bits_int": 79, + "decoded_f64": 7.5, + "decoded_f64_hex": "0x401E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "mxfp8_bits_hex": "0x50", + "mxfp8_bits_int": 80, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 9.0, + "input_f64_hex": "0x4022000000000000", + "mxfp8_bits_hex": "0x51", + "mxfp8_bits_int": 81, + "decoded_f64": 9.0, + "decoded_f64_hex": "0x4022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "mxfp8_bits_hex": "0x52", + "mxfp8_bits_int": 82, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 11.0, + "input_f64_hex": "0x4026000000000000", + "mxfp8_bits_hex": "0x53", + "mxfp8_bits_int": 83, + "decoded_f64": 11.0, + "decoded_f64_hex": "0x4026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "mxfp8_bits_hex": "0x54", + "mxfp8_bits_int": 84, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 13.0, + "input_f64_hex": "0x402A000000000000", + "mxfp8_bits_hex": "0x55", + "mxfp8_bits_int": 85, + "decoded_f64": 13.0, + "decoded_f64_hex": "0x402A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "mxfp8_bits_hex": "0x56", + "mxfp8_bits_int": 86, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 15.0, + "input_f64_hex": "0x402E000000000000", + "mxfp8_bits_hex": "0x57", + "mxfp8_bits_int": 87, + "decoded_f64": 15.0, + "decoded_f64_hex": "0x402E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "mxfp8_bits_hex": "0x58", + "mxfp8_bits_int": 88, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 18.0, + "input_f64_hex": "0x4032000000000000", + "mxfp8_bits_hex": "0x59", + "mxfp8_bits_int": 89, + "decoded_f64": 18.0, + "decoded_f64_hex": "0x4032000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 20.0, + "input_f64_hex": "0x4034000000000000", + "mxfp8_bits_hex": "0x5A", + "mxfp8_bits_int": 90, + "decoded_f64": 20.0, + "decoded_f64_hex": "0x4034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 22.0, + "input_f64_hex": "0x4036000000000000", + "mxfp8_bits_hex": "0x5B", + "mxfp8_bits_int": 91, + "decoded_f64": 22.0, + "decoded_f64_hex": "0x4036000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 24.0, + "input_f64_hex": "0x4038000000000000", + "mxfp8_bits_hex": "0x5C", + "mxfp8_bits_int": 92, + "decoded_f64": 24.0, + "decoded_f64_hex": "0x4038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 26.0, + "input_f64_hex": "0x403A000000000000", + "mxfp8_bits_hex": "0x5D", + "mxfp8_bits_int": 93, + "decoded_f64": 26.0, + "decoded_f64_hex": "0x403A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 28.0, + "input_f64_hex": "0x403C000000000000", + "mxfp8_bits_hex": "0x5E", + "mxfp8_bits_int": 94, + "decoded_f64": 28.0, + "decoded_f64_hex": "0x403C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 30.0, + "input_f64_hex": "0x403E000000000000", + "mxfp8_bits_hex": "0x5F", + "mxfp8_bits_int": 95, + "decoded_f64": 30.0, + "decoded_f64_hex": "0x403E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 32.0, + "input_f64_hex": "0x4040000000000000", + "mxfp8_bits_hex": "0x60", + "mxfp8_bits_int": 96, + "decoded_f64": 32.0, + "decoded_f64_hex": "0x4040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 36.0, + "input_f64_hex": "0x4042000000000000", + "mxfp8_bits_hex": "0x61", + "mxfp8_bits_int": 97, + "decoded_f64": 36.0, + "decoded_f64_hex": "0x4042000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 40.0, + "input_f64_hex": "0x4044000000000000", + "mxfp8_bits_hex": "0x62", + "mxfp8_bits_int": 98, + "decoded_f64": 40.0, + "decoded_f64_hex": "0x4044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 44.0, + "input_f64_hex": "0x4046000000000000", + "mxfp8_bits_hex": "0x63", + "mxfp8_bits_int": 99, + "decoded_f64": 44.0, + "decoded_f64_hex": "0x4046000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 48.0, + "input_f64_hex": "0x4048000000000000", + "mxfp8_bits_hex": "0x64", + "mxfp8_bits_int": 100, + "decoded_f64": 48.0, + "decoded_f64_hex": "0x4048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 52.0, + "input_f64_hex": "0x404A000000000000", + "mxfp8_bits_hex": "0x65", + "mxfp8_bits_int": 101, + "decoded_f64": 52.0, + "decoded_f64_hex": "0x404A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 56.0, + "input_f64_hex": "0x404C000000000000", + "mxfp8_bits_hex": "0x66", + "mxfp8_bits_int": 102, + "decoded_f64": 56.0, + "decoded_f64_hex": "0x404C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 60.0, + "input_f64_hex": "0x404E000000000000", + "mxfp8_bits_hex": "0x67", + "mxfp8_bits_int": 103, + "decoded_f64": 60.0, + "decoded_f64_hex": "0x404E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 64.0, + "input_f64_hex": "0x4050000000000000", + "mxfp8_bits_hex": "0x68", + "mxfp8_bits_int": 104, + "decoded_f64": 64.0, + "decoded_f64_hex": "0x4050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 72.0, + "input_f64_hex": "0x4052000000000000", + "mxfp8_bits_hex": "0x69", + "mxfp8_bits_int": 105, + "decoded_f64": 72.0, + "decoded_f64_hex": "0x4052000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 80.0, + "input_f64_hex": "0x4054000000000000", + "mxfp8_bits_hex": "0x6A", + "mxfp8_bits_int": 106, + "decoded_f64": 80.0, + "decoded_f64_hex": "0x4054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 88.0, + "input_f64_hex": "0x4056000000000000", + "mxfp8_bits_hex": "0x6B", + "mxfp8_bits_int": 107, + "decoded_f64": 88.0, + "decoded_f64_hex": "0x4056000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 96.0, + "input_f64_hex": "0x4058000000000000", + "mxfp8_bits_hex": "0x6C", + "mxfp8_bits_int": 108, + "decoded_f64": 96.0, + "decoded_f64_hex": "0x4058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 104.0, + "input_f64_hex": "0x405A000000000000", + "mxfp8_bits_hex": "0x6D", + "mxfp8_bits_int": 109, + "decoded_f64": 104.0, + "decoded_f64_hex": "0x405A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 112.0, + "input_f64_hex": "0x405C000000000000", + "mxfp8_bits_hex": "0x6E", + "mxfp8_bits_int": 110, + "decoded_f64": 112.0, + "decoded_f64_hex": "0x405C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 120.0, + "input_f64_hex": "0x405E000000000000", + "mxfp8_bits_hex": "0x6F", + "mxfp8_bits_int": 111, + "decoded_f64": 120.0, + "decoded_f64_hex": "0x405E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": 128.0, + "input_f64_hex": "0x4060000000000000", + "mxfp8_bits_hex": "0x70", + "mxfp8_bits_int": 112, + "decoded_f64": 128.0, + "decoded_f64_hex": "0x4060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x71", + "input_f64": 144.0, + "input_f64_hex": "0x4062000000000000", + "mxfp8_bits_hex": "0x71", + "mxfp8_bits_int": 113, + "decoded_f64": 144.0, + "decoded_f64_hex": "0x4062000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x72", + "input_f64": 160.0, + "input_f64_hex": "0x4064000000000000", + "mxfp8_bits_hex": "0x72", + "mxfp8_bits_int": 114, + "decoded_f64": 160.0, + "decoded_f64_hex": "0x4064000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x73", + "input_f64": 176.0, + "input_f64_hex": "0x4066000000000000", + "mxfp8_bits_hex": "0x73", + "mxfp8_bits_int": 115, + "decoded_f64": 176.0, + "decoded_f64_hex": "0x4066000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x74", + "input_f64": 192.0, + "input_f64_hex": "0x4068000000000000", + "mxfp8_bits_hex": "0x74", + "mxfp8_bits_int": 116, + "decoded_f64": 192.0, + "decoded_f64_hex": "0x4068000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x75", + "input_f64": 208.0, + "input_f64_hex": "0x406A000000000000", + "mxfp8_bits_hex": "0x75", + "mxfp8_bits_int": 117, + "decoded_f64": 208.0, + "decoded_f64_hex": "0x406A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x76", + "input_f64": 224.0, + "input_f64_hex": "0x406C000000000000", + "mxfp8_bits_hex": "0x76", + "mxfp8_bits_int": 118, + "decoded_f64": 224.0, + "decoded_f64_hex": "0x406C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x77", + "input_f64": 240.0, + "input_f64_hex": "0x406E000000000000", + "mxfp8_bits_hex": "0x77", + "mxfp8_bits_int": 119, + "decoded_f64": 240.0, + "decoded_f64_hex": "0x406E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x78", + "input_f64": 256.0, + "input_f64_hex": "0x4070000000000000", + "mxfp8_bits_hex": "0x78", + "mxfp8_bits_int": 120, + "decoded_f64": 256.0, + "decoded_f64_hex": "0x4070000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x79", + "input_f64": 288.0, + "input_f64_hex": "0x4072000000000000", + "mxfp8_bits_hex": "0x79", + "mxfp8_bits_int": 121, + "decoded_f64": 288.0, + "decoded_f64_hex": "0x4072000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7A", + "input_f64": 320.0, + "input_f64_hex": "0x4074000000000000", + "mxfp8_bits_hex": "0x7A", + "mxfp8_bits_int": 122, + "decoded_f64": 320.0, + "decoded_f64_hex": "0x4074000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7B", + "input_f64": 352.0, + "input_f64_hex": "0x4076000000000000", + "mxfp8_bits_hex": "0x7B", + "mxfp8_bits_int": 123, + "decoded_f64": 352.0, + "decoded_f64_hex": "0x4076000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7C", + "input_f64": 384.0, + "input_f64_hex": "0x4078000000000000", + "mxfp8_bits_hex": "0x7C", + "mxfp8_bits_int": 124, + "decoded_f64": 384.0, + "decoded_f64_hex": "0x4078000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7D", + "input_f64": 416.0, + "input_f64_hex": "0x407A000000000000", + "mxfp8_bits_hex": "0x7D", + "mxfp8_bits_int": 125, + "decoded_f64": 416.0, + "decoded_f64_hex": "0x407A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7E", + "input_f64": 448.0, + "input_f64_hex": "0x407C000000000000", + "mxfp8_bits_hex": "0x7E", + "mxfp8_bits_int": 126, + "decoded_f64": 448.0, + "decoded_f64_hex": "0x407C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7F", + "input_f64": 480.0, + "input_f64_hex": "0x407E000000000000", + "mxfp8_bits_hex": "0x7F", + "mxfp8_bits_int": 127, + "decoded_f64": 480.0, + "decoded_f64_hex": "0x407E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x80", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "mxfp8_bits_hex": "0x80", + "mxfp8_bits_int": 128, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x81", + "input_f64": -0.001953125, + "input_f64_hex": "0xBF60000000000000", + "mxfp8_bits_hex": "0x81", + "mxfp8_bits_int": 129, + "decoded_f64": -0.001953125, + "decoded_f64_hex": "0xBF60000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x82", + "input_f64": -0.00390625, + "input_f64_hex": "0xBF70000000000000", + "mxfp8_bits_hex": "0x82", + "mxfp8_bits_int": 130, + "decoded_f64": -0.00390625, + "decoded_f64_hex": "0xBF70000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x83", + "input_f64": -0.005859375, + "input_f64_hex": "0xBF78000000000000", + "mxfp8_bits_hex": "0x83", + "mxfp8_bits_int": 131, + "decoded_f64": -0.005859375, + "decoded_f64_hex": "0xBF78000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x84", + "input_f64": -0.0078125, + "input_f64_hex": "0xBF80000000000000", + "mxfp8_bits_hex": "0x84", + "mxfp8_bits_int": 132, + "decoded_f64": -0.0078125, + "decoded_f64_hex": "0xBF80000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x85", + "input_f64": -0.009765625, + "input_f64_hex": "0xBF84000000000000", + "mxfp8_bits_hex": "0x85", + "mxfp8_bits_int": 133, + "decoded_f64": -0.009765625, + "decoded_f64_hex": "0xBF84000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x86", + "input_f64": -0.01171875, + "input_f64_hex": "0xBF88000000000000", + "mxfp8_bits_hex": "0x86", + "mxfp8_bits_int": 134, + "decoded_f64": -0.01171875, + "decoded_f64_hex": "0xBF88000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x87", + "input_f64": -0.013671875, + "input_f64_hex": "0xBF8C000000000000", + "mxfp8_bits_hex": "0x87", + "mxfp8_bits_int": 135, + "decoded_f64": -0.013671875, + "decoded_f64_hex": "0xBF8C000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x88", + "input_f64": -0.015625, + "input_f64_hex": "0xBF90000000000000", + "mxfp8_bits_hex": "0x88", + "mxfp8_bits_int": 136, + "decoded_f64": -0.015625, + "decoded_f64_hex": "0xBF90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x89", + "input_f64": -0.017578125, + "input_f64_hex": "0xBF92000000000000", + "mxfp8_bits_hex": "0x89", + "mxfp8_bits_int": 137, + "decoded_f64": -0.017578125, + "decoded_f64_hex": "0xBF92000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8A", + "input_f64": -0.01953125, + "input_f64_hex": "0xBF94000000000000", + "mxfp8_bits_hex": "0x8A", + "mxfp8_bits_int": 138, + "decoded_f64": -0.01953125, + "decoded_f64_hex": "0xBF94000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8B", + "input_f64": -0.021484375, + "input_f64_hex": "0xBF96000000000000", + "mxfp8_bits_hex": "0x8B", + "mxfp8_bits_int": 139, + "decoded_f64": -0.021484375, + "decoded_f64_hex": "0xBF96000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8C", + "input_f64": -0.0234375, + "input_f64_hex": "0xBF98000000000000", + "mxfp8_bits_hex": "0x8C", + "mxfp8_bits_int": 140, + "decoded_f64": -0.0234375, + "decoded_f64_hex": "0xBF98000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8D", + "input_f64": -0.025390625, + "input_f64_hex": "0xBF9A000000000000", + "mxfp8_bits_hex": "0x8D", + "mxfp8_bits_int": 141, + "decoded_f64": -0.025390625, + "decoded_f64_hex": "0xBF9A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8E", + "input_f64": -0.02734375, + "input_f64_hex": "0xBF9C000000000000", + "mxfp8_bits_hex": "0x8E", + "mxfp8_bits_int": 142, + "decoded_f64": -0.02734375, + "decoded_f64_hex": "0xBF9C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8F", + "input_f64": -0.029296875, + "input_f64_hex": "0xBF9E000000000000", + "mxfp8_bits_hex": "0x8F", + "mxfp8_bits_int": 143, + "decoded_f64": -0.029296875, + "decoded_f64_hex": "0xBF9E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x90", + "input_f64": -0.03125, + "input_f64_hex": "0xBFA0000000000000", + "mxfp8_bits_hex": "0x90", + "mxfp8_bits_int": 144, + "decoded_f64": -0.03125, + "decoded_f64_hex": "0xBFA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -0.03515625, + "input_f64_hex": "0xBFA2000000000000", + "mxfp8_bits_hex": "0x91", + "mxfp8_bits_int": 145, + "decoded_f64": -0.03515625, + "decoded_f64_hex": "0xBFA2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -0.0390625, + "input_f64_hex": "0xBFA4000000000000", + "mxfp8_bits_hex": "0x92", + "mxfp8_bits_int": 146, + "decoded_f64": -0.0390625, + "decoded_f64_hex": "0xBFA4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -0.04296875, + "input_f64_hex": "0xBFA6000000000000", + "mxfp8_bits_hex": "0x93", + "mxfp8_bits_int": 147, + "decoded_f64": -0.04296875, + "decoded_f64_hex": "0xBFA6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -0.046875, + "input_f64_hex": "0xBFA8000000000000", + "mxfp8_bits_hex": "0x94", + "mxfp8_bits_int": 148, + "decoded_f64": -0.046875, + "decoded_f64_hex": "0xBFA8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -0.05078125, + "input_f64_hex": "0xBFAA000000000000", + "mxfp8_bits_hex": "0x95", + "mxfp8_bits_int": 149, + "decoded_f64": -0.05078125, + "decoded_f64_hex": "0xBFAA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -0.0546875, + "input_f64_hex": "0xBFAC000000000000", + "mxfp8_bits_hex": "0x96", + "mxfp8_bits_int": 150, + "decoded_f64": -0.0546875, + "decoded_f64_hex": "0xBFAC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -0.05859375, + "input_f64_hex": "0xBFAE000000000000", + "mxfp8_bits_hex": "0x97", + "mxfp8_bits_int": 151, + "decoded_f64": -0.05859375, + "decoded_f64_hex": "0xBFAE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "mxfp8_bits_hex": "0x98", + "mxfp8_bits_int": 152, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -0.0703125, + "input_f64_hex": "0xBFB2000000000000", + "mxfp8_bits_hex": "0x99", + "mxfp8_bits_int": 153, + "decoded_f64": -0.0703125, + "decoded_f64_hex": "0xBFB2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -0.078125, + "input_f64_hex": "0xBFB4000000000000", + "mxfp8_bits_hex": "0x9A", + "mxfp8_bits_int": 154, + "decoded_f64": -0.078125, + "decoded_f64_hex": "0xBFB4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -0.0859375, + "input_f64_hex": "0xBFB6000000000000", + "mxfp8_bits_hex": "0x9B", + "mxfp8_bits_int": 155, + "decoded_f64": -0.0859375, + "decoded_f64_hex": "0xBFB6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -0.09375, + "input_f64_hex": "0xBFB8000000000000", + "mxfp8_bits_hex": "0x9C", + "mxfp8_bits_int": 156, + "decoded_f64": -0.09375, + "decoded_f64_hex": "0xBFB8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -0.1015625, + "input_f64_hex": "0xBFBA000000000000", + "mxfp8_bits_hex": "0x9D", + "mxfp8_bits_int": 157, + "decoded_f64": -0.1015625, + "decoded_f64_hex": "0xBFBA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -0.109375, + "input_f64_hex": "0xBFBC000000000000", + "mxfp8_bits_hex": "0x9E", + "mxfp8_bits_int": 158, + "decoded_f64": -0.109375, + "decoded_f64_hex": "0xBFBC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -0.1171875, + "input_f64_hex": "0xBFBE000000000000", + "mxfp8_bits_hex": "0x9F", + "mxfp8_bits_int": 159, + "decoded_f64": -0.1171875, + "decoded_f64_hex": "0xBFBE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "mxfp8_bits_hex": "0xA0", + "mxfp8_bits_int": 160, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -0.140625, + "input_f64_hex": "0xBFC2000000000000", + "mxfp8_bits_hex": "0xA1", + "mxfp8_bits_int": 161, + "decoded_f64": -0.140625, + "decoded_f64_hex": "0xBFC2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -0.15625, + "input_f64_hex": "0xBFC4000000000000", + "mxfp8_bits_hex": "0xA2", + "mxfp8_bits_int": 162, + "decoded_f64": -0.15625, + "decoded_f64_hex": "0xBFC4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -0.171875, + "input_f64_hex": "0xBFC6000000000000", + "mxfp8_bits_hex": "0xA3", + "mxfp8_bits_int": 163, + "decoded_f64": -0.171875, + "decoded_f64_hex": "0xBFC6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "mxfp8_bits_hex": "0xA4", + "mxfp8_bits_int": 164, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -0.203125, + "input_f64_hex": "0xBFCA000000000000", + "mxfp8_bits_hex": "0xA5", + "mxfp8_bits_int": 165, + "decoded_f64": -0.203125, + "decoded_f64_hex": "0xBFCA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -0.21875, + "input_f64_hex": "0xBFCC000000000000", + "mxfp8_bits_hex": "0xA6", + "mxfp8_bits_int": 166, + "decoded_f64": -0.21875, + "decoded_f64_hex": "0xBFCC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -0.234375, + "input_f64_hex": "0xBFCE000000000000", + "mxfp8_bits_hex": "0xA7", + "mxfp8_bits_int": 167, + "decoded_f64": -0.234375, + "decoded_f64_hex": "0xBFCE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "mxfp8_bits_hex": "0xA8", + "mxfp8_bits_int": 168, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -0.28125, + "input_f64_hex": "0xBFD2000000000000", + "mxfp8_bits_hex": "0xA9", + "mxfp8_bits_int": 169, + "decoded_f64": -0.28125, + "decoded_f64_hex": "0xBFD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "mxfp8_bits_hex": "0xAA", + "mxfp8_bits_int": 170, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -0.34375, + "input_f64_hex": "0xBFD6000000000000", + "mxfp8_bits_hex": "0xAB", + "mxfp8_bits_int": 171, + "decoded_f64": -0.34375, + "decoded_f64_hex": "0xBFD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "mxfp8_bits_hex": "0xAC", + "mxfp8_bits_int": 172, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -0.40625, + "input_f64_hex": "0xBFDA000000000000", + "mxfp8_bits_hex": "0xAD", + "mxfp8_bits_int": 173, + "decoded_f64": -0.40625, + "decoded_f64_hex": "0xBFDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "mxfp8_bits_hex": "0xAE", + "mxfp8_bits_int": 174, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -0.46875, + "input_f64_hex": "0xBFDE000000000000", + "mxfp8_bits_hex": "0xAF", + "mxfp8_bits_int": 175, + "decoded_f64": -0.46875, + "decoded_f64_hex": "0xBFDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "mxfp8_bits_hex": "0xB0", + "mxfp8_bits_int": 176, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -0.5625, + "input_f64_hex": "0xBFE2000000000000", + "mxfp8_bits_hex": "0xB1", + "mxfp8_bits_int": 177, + "decoded_f64": -0.5625, + "decoded_f64_hex": "0xBFE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "mxfp8_bits_hex": "0xB2", + "mxfp8_bits_int": 178, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -0.6875, + "input_f64_hex": "0xBFE6000000000000", + "mxfp8_bits_hex": "0xB3", + "mxfp8_bits_int": 179, + "decoded_f64": -0.6875, + "decoded_f64_hex": "0xBFE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "mxfp8_bits_hex": "0xB4", + "mxfp8_bits_int": 180, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -0.8125, + "input_f64_hex": "0xBFEA000000000000", + "mxfp8_bits_hex": "0xB5", + "mxfp8_bits_int": 181, + "decoded_f64": -0.8125, + "decoded_f64_hex": "0xBFEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "mxfp8_bits_hex": "0xB6", + "mxfp8_bits_int": 182, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -0.9375, + "input_f64_hex": "0xBFEE000000000000", + "mxfp8_bits_hex": "0xB7", + "mxfp8_bits_int": 183, + "decoded_f64": -0.9375, + "decoded_f64_hex": "0xBFEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "mxfp8_bits_hex": "0xB8", + "mxfp8_bits_int": 184, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "mxfp8_bits_hex": "0xB9", + "mxfp8_bits_int": 185, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "mxfp8_bits_hex": "0xBA", + "mxfp8_bits_int": 186, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "mxfp8_bits_hex": "0xBB", + "mxfp8_bits_int": 187, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "mxfp8_bits_hex": "0xBC", + "mxfp8_bits_int": 188, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "mxfp8_bits_hex": "0xBD", + "mxfp8_bits_int": 189, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "mxfp8_bits_hex": "0xBE", + "mxfp8_bits_int": 190, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "mxfp8_bits_hex": "0xBF", + "mxfp8_bits_int": 191, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "mxfp8_bits_hex": "0xC0", + "mxfp8_bits_int": 192, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "mxfp8_bits_hex": "0xC1", + "mxfp8_bits_int": 193, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "mxfp8_bits_hex": "0xC2", + "mxfp8_bits_int": 194, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "mxfp8_bits_hex": "0xC3", + "mxfp8_bits_int": 195, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "mxfp8_bits_hex": "0xC4", + "mxfp8_bits_int": 196, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "mxfp8_bits_hex": "0xC5", + "mxfp8_bits_int": 197, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "mxfp8_bits_hex": "0xC6", + "mxfp8_bits_int": 198, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "mxfp8_bits_hex": "0xC7", + "mxfp8_bits_int": 199, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "mxfp8_bits_hex": "0xC8", + "mxfp8_bits_int": 200, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -4.5, + "input_f64_hex": "0xC012000000000000", + "mxfp8_bits_hex": "0xC9", + "mxfp8_bits_int": 201, + "decoded_f64": -4.5, + "decoded_f64_hex": "0xC012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "mxfp8_bits_hex": "0xCA", + "mxfp8_bits_int": 202, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -5.5, + "input_f64_hex": "0xC016000000000000", + "mxfp8_bits_hex": "0xCB", + "mxfp8_bits_int": 203, + "decoded_f64": -5.5, + "decoded_f64_hex": "0xC016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "mxfp8_bits_hex": "0xCC", + "mxfp8_bits_int": 204, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -6.5, + "input_f64_hex": "0xC01A000000000000", + "mxfp8_bits_hex": "0xCD", + "mxfp8_bits_int": 205, + "decoded_f64": -6.5, + "decoded_f64_hex": "0xC01A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "mxfp8_bits_hex": "0xCE", + "mxfp8_bits_int": 206, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -7.5, + "input_f64_hex": "0xC01E000000000000", + "mxfp8_bits_hex": "0xCF", + "mxfp8_bits_int": 207, + "decoded_f64": -7.5, + "decoded_f64_hex": "0xC01E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "mxfp8_bits_hex": "0xD0", + "mxfp8_bits_int": 208, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -9.0, + "input_f64_hex": "0xC022000000000000", + "mxfp8_bits_hex": "0xD1", + "mxfp8_bits_int": 209, + "decoded_f64": -9.0, + "decoded_f64_hex": "0xC022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "mxfp8_bits_hex": "0xD2", + "mxfp8_bits_int": 210, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -11.0, + "input_f64_hex": "0xC026000000000000", + "mxfp8_bits_hex": "0xD3", + "mxfp8_bits_int": 211, + "decoded_f64": -11.0, + "decoded_f64_hex": "0xC026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "mxfp8_bits_hex": "0xD4", + "mxfp8_bits_int": 212, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -13.0, + "input_f64_hex": "0xC02A000000000000", + "mxfp8_bits_hex": "0xD5", + "mxfp8_bits_int": 213, + "decoded_f64": -13.0, + "decoded_f64_hex": "0xC02A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "mxfp8_bits_hex": "0xD6", + "mxfp8_bits_int": 214, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -15.0, + "input_f64_hex": "0xC02E000000000000", + "mxfp8_bits_hex": "0xD7", + "mxfp8_bits_int": 215, + "decoded_f64": -15.0, + "decoded_f64_hex": "0xC02E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "mxfp8_bits_hex": "0xD8", + "mxfp8_bits_int": 216, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -18.0, + "input_f64_hex": "0xC032000000000000", + "mxfp8_bits_hex": "0xD9", + "mxfp8_bits_int": 217, + "decoded_f64": -18.0, + "decoded_f64_hex": "0xC032000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -20.0, + "input_f64_hex": "0xC034000000000000", + "mxfp8_bits_hex": "0xDA", + "mxfp8_bits_int": 218, + "decoded_f64": -20.0, + "decoded_f64_hex": "0xC034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -22.0, + "input_f64_hex": "0xC036000000000000", + "mxfp8_bits_hex": "0xDB", + "mxfp8_bits_int": 219, + "decoded_f64": -22.0, + "decoded_f64_hex": "0xC036000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -24.0, + "input_f64_hex": "0xC038000000000000", + "mxfp8_bits_hex": "0xDC", + "mxfp8_bits_int": 220, + "decoded_f64": -24.0, + "decoded_f64_hex": "0xC038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -26.0, + "input_f64_hex": "0xC03A000000000000", + "mxfp8_bits_hex": "0xDD", + "mxfp8_bits_int": 221, + "decoded_f64": -26.0, + "decoded_f64_hex": "0xC03A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -28.0, + "input_f64_hex": "0xC03C000000000000", + "mxfp8_bits_hex": "0xDE", + "mxfp8_bits_int": 222, + "decoded_f64": -28.0, + "decoded_f64_hex": "0xC03C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -30.0, + "input_f64_hex": "0xC03E000000000000", + "mxfp8_bits_hex": "0xDF", + "mxfp8_bits_int": 223, + "decoded_f64": -30.0, + "decoded_f64_hex": "0xC03E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -32.0, + "input_f64_hex": "0xC040000000000000", + "mxfp8_bits_hex": "0xE0", + "mxfp8_bits_int": 224, + "decoded_f64": -32.0, + "decoded_f64_hex": "0xC040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -36.0, + "input_f64_hex": "0xC042000000000000", + "mxfp8_bits_hex": "0xE1", + "mxfp8_bits_int": 225, + "decoded_f64": -36.0, + "decoded_f64_hex": "0xC042000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -40.0, + "input_f64_hex": "0xC044000000000000", + "mxfp8_bits_hex": "0xE2", + "mxfp8_bits_int": 226, + "decoded_f64": -40.0, + "decoded_f64_hex": "0xC044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -44.0, + "input_f64_hex": "0xC046000000000000", + "mxfp8_bits_hex": "0xE3", + "mxfp8_bits_int": 227, + "decoded_f64": -44.0, + "decoded_f64_hex": "0xC046000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -48.0, + "input_f64_hex": "0xC048000000000000", + "mxfp8_bits_hex": "0xE4", + "mxfp8_bits_int": 228, + "decoded_f64": -48.0, + "decoded_f64_hex": "0xC048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -52.0, + "input_f64_hex": "0xC04A000000000000", + "mxfp8_bits_hex": "0xE5", + "mxfp8_bits_int": 229, + "decoded_f64": -52.0, + "decoded_f64_hex": "0xC04A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -56.0, + "input_f64_hex": "0xC04C000000000000", + "mxfp8_bits_hex": "0xE6", + "mxfp8_bits_int": 230, + "decoded_f64": -56.0, + "decoded_f64_hex": "0xC04C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -60.0, + "input_f64_hex": "0xC04E000000000000", + "mxfp8_bits_hex": "0xE7", + "mxfp8_bits_int": 231, + "decoded_f64": -60.0, + "decoded_f64_hex": "0xC04E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -64.0, + "input_f64_hex": "0xC050000000000000", + "mxfp8_bits_hex": "0xE8", + "mxfp8_bits_int": 232, + "decoded_f64": -64.0, + "decoded_f64_hex": "0xC050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -72.0, + "input_f64_hex": "0xC052000000000000", + "mxfp8_bits_hex": "0xE9", + "mxfp8_bits_int": 233, + "decoded_f64": -72.0, + "decoded_f64_hex": "0xC052000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -80.0, + "input_f64_hex": "0xC054000000000000", + "mxfp8_bits_hex": "0xEA", + "mxfp8_bits_int": 234, + "decoded_f64": -80.0, + "decoded_f64_hex": "0xC054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -88.0, + "input_f64_hex": "0xC056000000000000", + "mxfp8_bits_hex": "0xEB", + "mxfp8_bits_int": 235, + "decoded_f64": -88.0, + "decoded_f64_hex": "0xC056000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -96.0, + "input_f64_hex": "0xC058000000000000", + "mxfp8_bits_hex": "0xEC", + "mxfp8_bits_int": 236, + "decoded_f64": -96.0, + "decoded_f64_hex": "0xC058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -104.0, + "input_f64_hex": "0xC05A000000000000", + "mxfp8_bits_hex": "0xED", + "mxfp8_bits_int": 237, + "decoded_f64": -104.0, + "decoded_f64_hex": "0xC05A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -112.0, + "input_f64_hex": "0xC05C000000000000", + "mxfp8_bits_hex": "0xEE", + "mxfp8_bits_int": 238, + "decoded_f64": -112.0, + "decoded_f64_hex": "0xC05C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -120.0, + "input_f64_hex": "0xC05E000000000000", + "mxfp8_bits_hex": "0xEF", + "mxfp8_bits_int": 239, + "decoded_f64": -120.0, + "decoded_f64_hex": "0xC05E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": -128.0, + "input_f64_hex": "0xC060000000000000", + "mxfp8_bits_hex": "0xF0", + "mxfp8_bits_int": 240, + "decoded_f64": -128.0, + "decoded_f64_hex": "0xC060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF1", + "input_f64": -144.0, + "input_f64_hex": "0xC062000000000000", + "mxfp8_bits_hex": "0xF1", + "mxfp8_bits_int": 241, + "decoded_f64": -144.0, + "decoded_f64_hex": "0xC062000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF2", + "input_f64": -160.0, + "input_f64_hex": "0xC064000000000000", + "mxfp8_bits_hex": "0xF2", + "mxfp8_bits_int": 242, + "decoded_f64": -160.0, + "decoded_f64_hex": "0xC064000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF3", + "input_f64": -176.0, + "input_f64_hex": "0xC066000000000000", + "mxfp8_bits_hex": "0xF3", + "mxfp8_bits_int": 243, + "decoded_f64": -176.0, + "decoded_f64_hex": "0xC066000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF4", + "input_f64": -192.0, + "input_f64_hex": "0xC068000000000000", + "mxfp8_bits_hex": "0xF4", + "mxfp8_bits_int": 244, + "decoded_f64": -192.0, + "decoded_f64_hex": "0xC068000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF5", + "input_f64": -208.0, + "input_f64_hex": "0xC06A000000000000", + "mxfp8_bits_hex": "0xF5", + "mxfp8_bits_int": 245, + "decoded_f64": -208.0, + "decoded_f64_hex": "0xC06A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF6", + "input_f64": -224.0, + "input_f64_hex": "0xC06C000000000000", + "mxfp8_bits_hex": "0xF6", + "mxfp8_bits_int": 246, + "decoded_f64": -224.0, + "decoded_f64_hex": "0xC06C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF7", + "input_f64": -240.0, + "input_f64_hex": "0xC06E000000000000", + "mxfp8_bits_hex": "0xF7", + "mxfp8_bits_int": 247, + "decoded_f64": -240.0, + "decoded_f64_hex": "0xC06E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF8", + "input_f64": -256.0, + "input_f64_hex": "0xC070000000000000", + "mxfp8_bits_hex": "0xF8", + "mxfp8_bits_int": 248, + "decoded_f64": -256.0, + "decoded_f64_hex": "0xC070000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF9", + "input_f64": -288.0, + "input_f64_hex": "0xC072000000000000", + "mxfp8_bits_hex": "0xF9", + "mxfp8_bits_int": 249, + "decoded_f64": -288.0, + "decoded_f64_hex": "0xC072000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFA", + "input_f64": -320.0, + "input_f64_hex": "0xC074000000000000", + "mxfp8_bits_hex": "0xFA", + "mxfp8_bits_int": 250, + "decoded_f64": -320.0, + "decoded_f64_hex": "0xC074000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFB", + "input_f64": -352.0, + "input_f64_hex": "0xC076000000000000", + "mxfp8_bits_hex": "0xFB", + "mxfp8_bits_int": 251, + "decoded_f64": -352.0, + "decoded_f64_hex": "0xC076000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFC", + "input_f64": -384.0, + "input_f64_hex": "0xC078000000000000", + "mxfp8_bits_hex": "0xFC", + "mxfp8_bits_int": 252, + "decoded_f64": -384.0, + "decoded_f64_hex": "0xC078000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFD", + "input_f64": -416.0, + "input_f64_hex": "0xC07A000000000000", + "mxfp8_bits_hex": "0xFD", + "mxfp8_bits_int": 253, + "decoded_f64": -416.0, + "decoded_f64_hex": "0xC07A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFE", + "input_f64": -448.0, + "input_f64_hex": "0xC07C000000000000", + "mxfp8_bits_hex": "0xFE", + "mxfp8_bits_int": 254, + "decoded_f64": -448.0, + "decoded_f64_hex": "0xC07C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFF", + "input_f64": -480.0, + "input_f64_hex": "0xC07E000000000000", + "mxfp8_bits_hex": "0xFF", + "mxfp8_bits_int": 255, + "decoded_f64": -480.0, + "decoded_f64_hex": "0xC07E000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/mxgf4_conformance_v0.json b/conformance/vectors/mxgf4_conformance_v0.json new file mode 100644 index 000000000..a929f1ac7 --- /dev/null +++ b/conformance/vectors/mxgf4_conformance_v0.json @@ -0,0 +1,214 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MXGF4", + "format_name": "MXGF4 (microscaling GF4)", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E1M2, bias 0. IEEE-style specials at top exponent", + "catalog": { + "id": "mxgf4", + "bits": 4, + "s": 1, + "e": 1, + "m": 2, + "bias": 0, + "storage": "u8_packed_plus_e8m0", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; OCP MX block + GF4", + "use_case": "OPEN R&D: phi-aligned MX-4 candidate", + "gf_relation": "experimental", + "source": "section12.5", + "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": 1.5, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "mxgf4_bits_hex": "0x0", + "mxgf4_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "mxgf4_bits_hex": "0x1", + "mxgf4_bits_int": 1, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "mxgf4_bits_hex": "0x2", + "mxgf4_bits_int": 2, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "mxgf4_bits_hex": "0x3", + "mxgf4_bits_int": 3, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "mxgf4_bits_hex": "0x4", + "mxgf4_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", + "mxgf4_bits_hex": "0x5", + "mxgf4_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", + "mxgf4_bits_hex": "0x6", + "mxgf4_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", + "mxgf4_bits_hex": "0x7", + "mxgf4_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", + "mxgf4_bits_hex": "0x8", + "mxgf4_bits_int": 8, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x09", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "mxgf4_bits_hex": "0x9", + "mxgf4_bits_int": 9, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0A", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "mxgf4_bits_hex": "0xA", + "mxgf4_bits_int": 10, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0B", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "mxgf4_bits_hex": "0xB", + "mxgf4_bits_int": 11, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x0C", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "mxgf4_bits_hex": "0xC", + "mxgf4_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", + "mxgf4_bits_hex": "0xD", + "mxgf4_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", + "mxgf4_bits_hex": "0xE", + "mxgf4_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", + "mxgf4_bits_hex": "0xF", + "mxgf4_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/mxgf6_conformance_v0.json b/conformance/vectors/mxgf6_conformance_v0.json new file mode 100644 index 000000000..b69fa7433 --- /dev/null +++ b/conformance/vectors/mxgf6_conformance_v0.json @@ -0,0 +1,742 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "MXGF6", + "format_name": "MXGF6 (microscaling GF6)", + "bitexact": true, + "format_notes": "GoldenFloat phi-aligned radix-2 float S1E2M3, bias 1. IEEE-style specials at top exponent", + "catalog": { + "id": "mxgf6", + "bits": 6, + "s": 1, + "e": 2, + "m": 3, + "bias": 1, + "storage": "u8_packed_plus_e8m0", + "cluster": "GoldenFloat", + "status": "Experimental", + "standard": "this work; OCP MX block + GF6", + "use_case": "OPEN R&D: phi-aligned MX-6 candidate", + "gf_relation": "experimental", + "source": "section12.5", + "phi_distance": 0.05 + }, + "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, + "mxgf6_bits_hex": "0x14" + }, + "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": 64, + "max_finite": 3.75, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "mxgf6_bits_hex": "0x00", + "mxgf6_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "mxgf6_bits_hex": "0x01", + "mxgf6_bits_int": 1, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x02", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "mxgf6_bits_hex": "0x02", + "mxgf6_bits_int": 2, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x03", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "mxgf6_bits_hex": "0x03", + "mxgf6_bits_int": 3, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x04", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "mxgf6_bits_hex": "0x04", + "mxgf6_bits_int": 4, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x05", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "mxgf6_bits_hex": "0x05", + "mxgf6_bits_int": 5, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x06", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "mxgf6_bits_hex": "0x06", + "mxgf6_bits_int": 6, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x07", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "mxgf6_bits_hex": "0x07", + "mxgf6_bits_int": 7, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x08", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "mxgf6_bits_hex": "0x08", + "mxgf6_bits_int": 8, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "mxgf6_bits_hex": "0x09", + "mxgf6_bits_int": 9, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "mxgf6_bits_hex": "0x0A", + "mxgf6_bits_int": 10, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "mxgf6_bits_hex": "0x0B", + "mxgf6_bits_int": 11, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "mxgf6_bits_hex": "0x0C", + "mxgf6_bits_int": 12, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "mxgf6_bits_hex": "0x0D", + "mxgf6_bits_int": 13, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "mxgf6_bits_hex": "0x0E", + "mxgf6_bits_int": 14, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "mxgf6_bits_hex": "0x0F", + "mxgf6_bits_int": 15, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "mxgf6_bits_hex": "0x10", + "mxgf6_bits_int": 16, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "mxgf6_bits_hex": "0x11", + "mxgf6_bits_int": 17, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "mxgf6_bits_hex": "0x12", + "mxgf6_bits_int": 18, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "mxgf6_bits_hex": "0x13", + "mxgf6_bits_int": 19, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "mxgf6_bits_hex": "0x14", + "mxgf6_bits_int": 20, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "mxgf6_bits_hex": "0x15", + "mxgf6_bits_int": 21, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "mxgf6_bits_hex": "0x16", + "mxgf6_bits_int": 22, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "mxgf6_bits_hex": "0x17", + "mxgf6_bits_int": 23, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": "Inf", + "input_f64_hex": "0x7FF0000000000000", + "mxgf6_bits_hex": "0x18", + "mxgf6_bits_int": 24, + "decoded_f64": "Inf", + "decoded_f64_hex": "0x7FF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x19", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x19", + "mxgf6_bits_int": 25, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1A", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x1A", + "mxgf6_bits_int": 26, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1B", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x1B", + "mxgf6_bits_int": 27, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1C", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x1C", + "mxgf6_bits_int": 28, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x1D", + "mxgf6_bits_int": 29, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x1E", + "mxgf6_bits_int": 30, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x1F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x1F", + "mxgf6_bits_int": 31, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x20", + "input_f64": -0.0, + "input_f64_hex": "0x8000000000000000", + "mxgf6_bits_hex": "0x20", + "mxgf6_bits_int": 32, + "decoded_f64": -0.0, + "decoded_f64_hex": "0x8000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x21", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "mxgf6_bits_hex": "0x21", + "mxgf6_bits_int": 33, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x22", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "mxgf6_bits_hex": "0x22", + "mxgf6_bits_int": 34, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x23", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "mxgf6_bits_hex": "0x23", + "mxgf6_bits_int": 35, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x24", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "mxgf6_bits_hex": "0x24", + "mxgf6_bits_int": 36, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x25", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "mxgf6_bits_hex": "0x25", + "mxgf6_bits_int": 37, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x26", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "mxgf6_bits_hex": "0x26", + "mxgf6_bits_int": 38, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x27", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "mxgf6_bits_hex": "0x27", + "mxgf6_bits_int": 39, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "subnormal" + }, + { + "name": "code_0x28", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "mxgf6_bits_hex": "0x28", + "mxgf6_bits_int": 40, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "mxgf6_bits_hex": "0x29", + "mxgf6_bits_int": 41, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "mxgf6_bits_hex": "0x2A", + "mxgf6_bits_int": 42, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "mxgf6_bits_hex": "0x2B", + "mxgf6_bits_int": 43, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "mxgf6_bits_hex": "0x2C", + "mxgf6_bits_int": 44, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "mxgf6_bits_hex": "0x2D", + "mxgf6_bits_int": 45, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "mxgf6_bits_hex": "0x2E", + "mxgf6_bits_int": 46, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "mxgf6_bits_hex": "0x2F", + "mxgf6_bits_int": 47, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "mxgf6_bits_hex": "0x30", + "mxgf6_bits_int": 48, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "mxgf6_bits_hex": "0x31", + "mxgf6_bits_int": 49, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "mxgf6_bits_hex": "0x32", + "mxgf6_bits_int": 50, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "mxgf6_bits_hex": "0x33", + "mxgf6_bits_int": 51, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "mxgf6_bits_hex": "0x34", + "mxgf6_bits_int": 52, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "mxgf6_bits_hex": "0x35", + "mxgf6_bits_int": 53, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "mxgf6_bits_hex": "0x36", + "mxgf6_bits_int": 54, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "mxgf6_bits_hex": "0x37", + "mxgf6_bits_int": 55, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": "-Inf", + "input_f64_hex": "0xFFF0000000000000", + "mxgf6_bits_hex": "0x38", + "mxgf6_bits_int": 56, + "decoded_f64": "-Inf", + "decoded_f64_hex": "0xFFF0000000000000", + "abs_error": 0.0, + "category": "inf" + }, + { + "name": "code_0x39", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x39", + "mxgf6_bits_int": 57, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3A", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x3A", + "mxgf6_bits_int": 58, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3B", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x3B", + "mxgf6_bits_int": 59, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3C", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x3C", + "mxgf6_bits_int": 60, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3D", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x3D", + "mxgf6_bits_int": 61, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3E", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x3E", + "mxgf6_bits_int": 62, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x3F", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "mxgf6_bits_hex": "0x3F", + "mxgf6_bits_int": 63, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/nf4_conformance_v0.json b/conformance/vectors/nf4_conformance_v0.json new file mode 100644 index 000000000..9c1829919 --- /dev/null +++ b/conformance/vectors/nf4_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "NF4", + "format_name": "NF4 (NormalFloat 4-bit)", + "bitexact": false, + "format_notes": "NF4 (NormalFloat 4-bit) -- Dettmers 2023 (QLoRA)", + "catalog": { + "id": "nf4", + "bits": 4, + "s": 0, + "e": 0, + "m": 4, + "bias": 0, + "storage": "u8_packed", + "cluster": "QuantTuned", + "status": "Verified", + "standard": "Dettmers 2023 (QLoRA)", + "use_case": "LLM weight quantization (quantile-based on N(0,1))", + "gf_relation": "orthogonal", + "source": "Dettmers 2023 (arXiv:2305.14314)", + "phi_distance": -1.0 + }, + "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": "NF4 is a 16-entry quantile lookup table fitted to N(0,1); values are table entries, not an S:E:M layout. The 16-entry table defines the round-trip, recorded structurally.", + "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/per_channel_scale_conformance_v0.json b/conformance/vectors/per_channel_scale_conformance_v0.json new file mode 100644 index 000000000..1e868ea70 --- /dev/null +++ b/conformance/vectors/per_channel_scale_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "PER_CHANNEL_SCALE", + "format_name": "INT8 with per-channel scale", + "bitexact": false, + "format_notes": "INT8 with per-channel scale -- Jacob 2018 (TFLite)", + "catalog": { + "id": "per_channel_scale", + "bits": 8, + "s": 1, + "e": 0, + "m": 7, + "bias": 0, + "storage": "u8_plus_fp32_scale", + "cluster": "CompressionTrick", + "status": "Verified", + "standard": "Jacob 2018 (TFLite)", + "use_case": "standard quant inference", + "gf_relation": "competitor", + "source": "Jacob 2018 (CVPR)", + "phi_distance": -1.0 + }, + "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": "INT8 payload with an external per-channel fp32 scale; the decoded value depends on the scale tensor, so a standalone round-trip table is not defined. Recorded structurally.", + "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/posit16_conformance_v0.json b/conformance/vectors/posit16_conformance_v0.json new file mode 100644 index 000000000..ca72da584 --- /dev/null +++ b/conformance/vectors/posit16_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "POSIT16", + "format_name": "Posit16", + "bitexact": true, + "format_notes": "Posit Standard 2022, n=16, es=2. NaR at 10..0; no separate inf; tapered precision", + "catalog": { + "id": "posit16", + "bits": 16, + "s": 1, + "e": 2, + "m": 0, + "bias": 0, + "storage": "u16", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Posit Standard 2022 (es=2)", + "use_case": "mixed-precision training", + "gf_relation": "ally", + "source": "Posit Standard 2022", + "phi_distance": -1.0 + }, + "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, + "posit16_bits_hex": "0x4C00" + }, + "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", + "posit16_bits_hex": "0x0000", + "posit16_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", + "posit16_bits_hex": "0x4000", + "posit16_bits_int": 16384, + "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", + "posit16_bits_hex": "0xC000", + "posit16_bits_int": 49152, + "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", + "posit16_bits_hex": "0x4800", + "posit16_bits_int": 18432, + "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", + "posit16_bits_hex": "0x4C00", + "posit16_bits_int": 19456, + "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", + "posit16_bits_hex": "0x3800", + "posit16_bits_int": 14336, + "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", + "posit16_bits_hex": "0x5000", + "posit16_bits_int": 20480, + "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", + "posit16_bits_hex": "0xB400", + "posit16_bits_int": 46080, + "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/posit32_conformance_v0.json b/conformance/vectors/posit32_conformance_v0.json new file mode 100644 index 000000000..aaac936bb --- /dev/null +++ b/conformance/vectors/posit32_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "POSIT32", + "format_name": "Posit32", + "bitexact": true, + "format_notes": "Posit Standard 2022, n=32, es=2. NaR at 10..0; no separate inf; tapered precision", + "catalog": { + "id": "posit32", + "bits": 32, + "s": 1, + "e": 2, + "m": 0, + "bias": 0, + "storage": "u32", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Posit Standard 2022 (es=2)", + "use_case": "f32 replacement", + "gf_relation": "ally", + "source": "Posit Standard 2022", + "phi_distance": -1.0 + }, + "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, + "posit32_bits_hex": "0x4C000000" + }, + "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", + "posit32_bits_hex": "0x00000000", + "posit32_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", + "posit32_bits_hex": "0x40000000", + "posit32_bits_int": 1073741824, + "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", + "posit32_bits_hex": "0xC0000000", + "posit32_bits_int": 3221225472, + "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", + "posit32_bits_hex": "0x48000000", + "posit32_bits_int": 1207959552, + "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", + "posit32_bits_hex": "0x4C000000", + "posit32_bits_int": 1275068416, + "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", + "posit32_bits_hex": "0x38000000", + "posit32_bits_int": 939524096, + "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", + "posit32_bits_hex": "0x50000000", + "posit32_bits_int": 1342177280, + "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", + "posit32_bits_hex": "0xB4000000", + "posit32_bits_int": 3019898880, + "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/posit64_conformance_v0.json b/conformance/vectors/posit64_conformance_v0.json new file mode 100644 index 000000000..21f7a91d8 --- /dev/null +++ b/conformance/vectors/posit64_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "POSIT64", + "format_name": "Posit64", + "bitexact": true, + "format_notes": "Posit Standard 2022, n=64, es=2. NaR at 10..0; no separate inf; tapered precision", + "catalog": { + "id": "posit64", + "bits": 64, + "s": 1, + "e": 2, + "m": 0, + "bias": 0, + "storage": "u64", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Posit Standard 2022 (es=2)", + "use_case": "f64 replacement", + "gf_relation": "ally", + "source": "Posit Standard 2022", + "phi_distance": -1.0 + }, + "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, + "posit64_bits_hex": "0x4C00000000000000" + }, + "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", + "posit64_bits_hex": "0x0000000000000000", + "posit64_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", + "posit64_bits_hex": "0x4000000000000000", + "posit64_bits_int": 4611686018427387904, + "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", + "posit64_bits_hex": "0xC000000000000000", + "posit64_bits_int": 13835058055282163712, + "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", + "posit64_bits_hex": "0x4800000000000000", + "posit64_bits_int": 5188146770730811392, + "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", + "posit64_bits_hex": "0x4C00000000000000", + "posit64_bits_int": 5476377146882523136, + "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", + "posit64_bits_hex": "0x3800000000000000", + "posit64_bits_int": 4035225266123964416, + "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", + "posit64_bits_hex": "0x5000000000000000", + "posit64_bits_int": 5764607523034234880, + "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", + "posit64_bits_hex": "0xB400000000000000", + "posit64_bits_int": 12970366926827028480, + "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/posit8_conformance_v0.json b/conformance/vectors/posit8_conformance_v0.json new file mode 100644 index 000000000..e34e1637e --- /dev/null +++ b/conformance/vectors/posit8_conformance_v0.json @@ -0,0 +1,2854 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "POSIT8", + "format_name": "Posit8", + "bitexact": true, + "format_notes": "Posit Standard 2022, n=8, es=2. NaR at 10..0; no separate inf; tapered precision", + "catalog": { + "id": "posit8", + "bits": 8, + "s": 1, + "e": 2, + "m": 0, + "bias": 0, + "storage": "u8", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Posit Standard 2022 (es=2)", + "use_case": "inference", + "gf_relation": "ally", + "source": "Posit Standard 2022 (posithub.org)", + "phi_distance": -1.0 + }, + "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, + "posit8_bits_hex": "0x4C" + }, + "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": 16777216.0, + "vectors": [ + { + "name": "code_0x00", + "input_f64": 0.0, + "input_f64_hex": "0x0000000000000000", + "posit8_bits_hex": "0x00", + "posit8_bits_int": 0, + "decoded_f64": 0.0, + "decoded_f64_hex": "0x0000000000000000", + "abs_error": 0.0, + "category": "zero" + }, + { + "name": "code_0x01", + "input_f64": 5.960464477539063e-08, + "input_f64_hex": "0x3E70000000000000", + "posit8_bits_hex": "0x01", + "posit8_bits_int": 1, + "decoded_f64": 5.960464477539063e-08, + "decoded_f64_hex": "0x3E70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x02", + "input_f64": 9.5367431640625e-07, + "input_f64_hex": "0x3EB0000000000000", + "posit8_bits_hex": "0x02", + "posit8_bits_int": 2, + "decoded_f64": 9.5367431640625e-07, + "decoded_f64_hex": "0x3EB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x03", + "input_f64": 3.814697265625e-06, + "input_f64_hex": "0x3ED0000000000000", + "posit8_bits_hex": "0x03", + "posit8_bits_int": 3, + "decoded_f64": 3.814697265625e-06, + "decoded_f64_hex": "0x3ED0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x04", + "input_f64": 1.52587890625e-05, + "input_f64_hex": "0x3EF0000000000000", + "posit8_bits_hex": "0x04", + "posit8_bits_int": 4, + "decoded_f64": 1.52587890625e-05, + "decoded_f64_hex": "0x3EF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x05", + "input_f64": 3.0517578125e-05, + "input_f64_hex": "0x3F00000000000000", + "posit8_bits_hex": "0x05", + "posit8_bits_int": 5, + "decoded_f64": 3.0517578125e-05, + "decoded_f64_hex": "0x3F00000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x06", + "input_f64": 6.103515625e-05, + "input_f64_hex": "0x3F10000000000000", + "posit8_bits_hex": "0x06", + "posit8_bits_int": 6, + "decoded_f64": 6.103515625e-05, + "decoded_f64_hex": "0x3F10000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x07", + "input_f64": 0.0001220703125, + "input_f64_hex": "0x3F20000000000000", + "posit8_bits_hex": "0x07", + "posit8_bits_int": 7, + "decoded_f64": 0.0001220703125, + "decoded_f64_hex": "0x3F20000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x08", + "input_f64": 0.000244140625, + "input_f64_hex": "0x3F30000000000000", + "posit8_bits_hex": "0x08", + "posit8_bits_int": 8, + "decoded_f64": 0.000244140625, + "decoded_f64_hex": "0x3F30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x09", + "input_f64": 0.0003662109375, + "input_f64_hex": "0x3F38000000000000", + "posit8_bits_hex": "0x09", + "posit8_bits_int": 9, + "decoded_f64": 0.0003662109375, + "decoded_f64_hex": "0x3F38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0A", + "input_f64": 0.00048828125, + "input_f64_hex": "0x3F40000000000000", + "posit8_bits_hex": "0x0A", + "posit8_bits_int": 10, + "decoded_f64": 0.00048828125, + "decoded_f64_hex": "0x3F40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0B", + "input_f64": 0.000732421875, + "input_f64_hex": "0x3F48000000000000", + "posit8_bits_hex": "0x0B", + "posit8_bits_int": 11, + "decoded_f64": 0.000732421875, + "decoded_f64_hex": "0x3F48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0C", + "input_f64": 0.0009765625, + "input_f64_hex": "0x3F50000000000000", + "posit8_bits_hex": "0x0C", + "posit8_bits_int": 12, + "decoded_f64": 0.0009765625, + "decoded_f64_hex": "0x3F50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0D", + "input_f64": 0.00146484375, + "input_f64_hex": "0x3F58000000000000", + "posit8_bits_hex": "0x0D", + "posit8_bits_int": 13, + "decoded_f64": 0.00146484375, + "decoded_f64_hex": "0x3F58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0E", + "input_f64": 0.001953125, + "input_f64_hex": "0x3F60000000000000", + "posit8_bits_hex": "0x0E", + "posit8_bits_int": 14, + "decoded_f64": 0.001953125, + "decoded_f64_hex": "0x3F60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x0F", + "input_f64": 0.0029296875, + "input_f64_hex": "0x3F68000000000000", + "posit8_bits_hex": "0x0F", + "posit8_bits_int": 15, + "decoded_f64": 0.0029296875, + "decoded_f64_hex": "0x3F68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x10", + "input_f64": 0.00390625, + "input_f64_hex": "0x3F70000000000000", + "posit8_bits_hex": "0x10", + "posit8_bits_int": 16, + "decoded_f64": 0.00390625, + "decoded_f64_hex": "0x3F70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x11", + "input_f64": 0.0048828125, + "input_f64_hex": "0x3F74000000000000", + "posit8_bits_hex": "0x11", + "posit8_bits_int": 17, + "decoded_f64": 0.0048828125, + "decoded_f64_hex": "0x3F74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x12", + "input_f64": 0.005859375, + "input_f64_hex": "0x3F78000000000000", + "posit8_bits_hex": "0x12", + "posit8_bits_int": 18, + "decoded_f64": 0.005859375, + "decoded_f64_hex": "0x3F78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x13", + "input_f64": 0.0068359375, + "input_f64_hex": "0x3F7C000000000000", + "posit8_bits_hex": "0x13", + "posit8_bits_int": 19, + "decoded_f64": 0.0068359375, + "decoded_f64_hex": "0x3F7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x14", + "input_f64": 0.0078125, + "input_f64_hex": "0x3F80000000000000", + "posit8_bits_hex": "0x14", + "posit8_bits_int": 20, + "decoded_f64": 0.0078125, + "decoded_f64_hex": "0x3F80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x15", + "input_f64": 0.009765625, + "input_f64_hex": "0x3F84000000000000", + "posit8_bits_hex": "0x15", + "posit8_bits_int": 21, + "decoded_f64": 0.009765625, + "decoded_f64_hex": "0x3F84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x16", + "input_f64": 0.01171875, + "input_f64_hex": "0x3F88000000000000", + "posit8_bits_hex": "0x16", + "posit8_bits_int": 22, + "decoded_f64": 0.01171875, + "decoded_f64_hex": "0x3F88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x17", + "input_f64": 0.013671875, + "input_f64_hex": "0x3F8C000000000000", + "posit8_bits_hex": "0x17", + "posit8_bits_int": 23, + "decoded_f64": 0.013671875, + "decoded_f64_hex": "0x3F8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x18", + "input_f64": 0.015625, + "input_f64_hex": "0x3F90000000000000", + "posit8_bits_hex": "0x18", + "posit8_bits_int": 24, + "decoded_f64": 0.015625, + "decoded_f64_hex": "0x3F90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x19", + "input_f64": 0.01953125, + "input_f64_hex": "0x3F94000000000000", + "posit8_bits_hex": "0x19", + "posit8_bits_int": 25, + "decoded_f64": 0.01953125, + "decoded_f64_hex": "0x3F94000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1A", + "input_f64": 0.0234375, + "input_f64_hex": "0x3F98000000000000", + "posit8_bits_hex": "0x1A", + "posit8_bits_int": 26, + "decoded_f64": 0.0234375, + "decoded_f64_hex": "0x3F98000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1B", + "input_f64": 0.02734375, + "input_f64_hex": "0x3F9C000000000000", + "posit8_bits_hex": "0x1B", + "posit8_bits_int": 27, + "decoded_f64": 0.02734375, + "decoded_f64_hex": "0x3F9C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1C", + "input_f64": 0.03125, + "input_f64_hex": "0x3FA0000000000000", + "posit8_bits_hex": "0x1C", + "posit8_bits_int": 28, + "decoded_f64": 0.03125, + "decoded_f64_hex": "0x3FA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1D", + "input_f64": 0.0390625, + "input_f64_hex": "0x3FA4000000000000", + "posit8_bits_hex": "0x1D", + "posit8_bits_int": 29, + "decoded_f64": 0.0390625, + "decoded_f64_hex": "0x3FA4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1E", + "input_f64": 0.046875, + "input_f64_hex": "0x3FA8000000000000", + "posit8_bits_hex": "0x1E", + "posit8_bits_int": 30, + "decoded_f64": 0.046875, + "decoded_f64_hex": "0x3FA8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x1F", + "input_f64": 0.0546875, + "input_f64_hex": "0x3FAC000000000000", + "posit8_bits_hex": "0x1F", + "posit8_bits_int": 31, + "decoded_f64": 0.0546875, + "decoded_f64_hex": "0x3FAC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x20", + "input_f64": 0.0625, + "input_f64_hex": "0x3FB0000000000000", + "posit8_bits_hex": "0x20", + "posit8_bits_int": 32, + "decoded_f64": 0.0625, + "decoded_f64_hex": "0x3FB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x21", + "input_f64": 0.0703125, + "input_f64_hex": "0x3FB2000000000000", + "posit8_bits_hex": "0x21", + "posit8_bits_int": 33, + "decoded_f64": 0.0703125, + "decoded_f64_hex": "0x3FB2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x22", + "input_f64": 0.078125, + "input_f64_hex": "0x3FB4000000000000", + "posit8_bits_hex": "0x22", + "posit8_bits_int": 34, + "decoded_f64": 0.078125, + "decoded_f64_hex": "0x3FB4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x23", + "input_f64": 0.0859375, + "input_f64_hex": "0x3FB6000000000000", + "posit8_bits_hex": "0x23", + "posit8_bits_int": 35, + "decoded_f64": 0.0859375, + "decoded_f64_hex": "0x3FB6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x24", + "input_f64": 0.09375, + "input_f64_hex": "0x3FB8000000000000", + "posit8_bits_hex": "0x24", + "posit8_bits_int": 36, + "decoded_f64": 0.09375, + "decoded_f64_hex": "0x3FB8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x25", + "input_f64": 0.1015625, + "input_f64_hex": "0x3FBA000000000000", + "posit8_bits_hex": "0x25", + "posit8_bits_int": 37, + "decoded_f64": 0.1015625, + "decoded_f64_hex": "0x3FBA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x26", + "input_f64": 0.109375, + "input_f64_hex": "0x3FBC000000000000", + "posit8_bits_hex": "0x26", + "posit8_bits_int": 38, + "decoded_f64": 0.109375, + "decoded_f64_hex": "0x3FBC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x27", + "input_f64": 0.1171875, + "input_f64_hex": "0x3FBE000000000000", + "posit8_bits_hex": "0x27", + "posit8_bits_int": 39, + "decoded_f64": 0.1171875, + "decoded_f64_hex": "0x3FBE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x28", + "input_f64": 0.125, + "input_f64_hex": "0x3FC0000000000000", + "posit8_bits_hex": "0x28", + "posit8_bits_int": 40, + "decoded_f64": 0.125, + "decoded_f64_hex": "0x3FC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x29", + "input_f64": 0.140625, + "input_f64_hex": "0x3FC2000000000000", + "posit8_bits_hex": "0x29", + "posit8_bits_int": 41, + "decoded_f64": 0.140625, + "decoded_f64_hex": "0x3FC2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2A", + "input_f64": 0.15625, + "input_f64_hex": "0x3FC4000000000000", + "posit8_bits_hex": "0x2A", + "posit8_bits_int": 42, + "decoded_f64": 0.15625, + "decoded_f64_hex": "0x3FC4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2B", + "input_f64": 0.171875, + "input_f64_hex": "0x3FC6000000000000", + "posit8_bits_hex": "0x2B", + "posit8_bits_int": 43, + "decoded_f64": 0.171875, + "decoded_f64_hex": "0x3FC6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2C", + "input_f64": 0.1875, + "input_f64_hex": "0x3FC8000000000000", + "posit8_bits_hex": "0x2C", + "posit8_bits_int": 44, + "decoded_f64": 0.1875, + "decoded_f64_hex": "0x3FC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2D", + "input_f64": 0.203125, + "input_f64_hex": "0x3FCA000000000000", + "posit8_bits_hex": "0x2D", + "posit8_bits_int": 45, + "decoded_f64": 0.203125, + "decoded_f64_hex": "0x3FCA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2E", + "input_f64": 0.21875, + "input_f64_hex": "0x3FCC000000000000", + "posit8_bits_hex": "0x2E", + "posit8_bits_int": 46, + "decoded_f64": 0.21875, + "decoded_f64_hex": "0x3FCC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x2F", + "input_f64": 0.234375, + "input_f64_hex": "0x3FCE000000000000", + "posit8_bits_hex": "0x2F", + "posit8_bits_int": 47, + "decoded_f64": 0.234375, + "decoded_f64_hex": "0x3FCE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x30", + "input_f64": 0.25, + "input_f64_hex": "0x3FD0000000000000", + "posit8_bits_hex": "0x30", + "posit8_bits_int": 48, + "decoded_f64": 0.25, + "decoded_f64_hex": "0x3FD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x31", + "input_f64": 0.28125, + "input_f64_hex": "0x3FD2000000000000", + "posit8_bits_hex": "0x31", + "posit8_bits_int": 49, + "decoded_f64": 0.28125, + "decoded_f64_hex": "0x3FD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x32", + "input_f64": 0.3125, + "input_f64_hex": "0x3FD4000000000000", + "posit8_bits_hex": "0x32", + "posit8_bits_int": 50, + "decoded_f64": 0.3125, + "decoded_f64_hex": "0x3FD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x33", + "input_f64": 0.34375, + "input_f64_hex": "0x3FD6000000000000", + "posit8_bits_hex": "0x33", + "posit8_bits_int": 51, + "decoded_f64": 0.34375, + "decoded_f64_hex": "0x3FD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x34", + "input_f64": 0.375, + "input_f64_hex": "0x3FD8000000000000", + "posit8_bits_hex": "0x34", + "posit8_bits_int": 52, + "decoded_f64": 0.375, + "decoded_f64_hex": "0x3FD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x35", + "input_f64": 0.40625, + "input_f64_hex": "0x3FDA000000000000", + "posit8_bits_hex": "0x35", + "posit8_bits_int": 53, + "decoded_f64": 0.40625, + "decoded_f64_hex": "0x3FDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x36", + "input_f64": 0.4375, + "input_f64_hex": "0x3FDC000000000000", + "posit8_bits_hex": "0x36", + "posit8_bits_int": 54, + "decoded_f64": 0.4375, + "decoded_f64_hex": "0x3FDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x37", + "input_f64": 0.46875, + "input_f64_hex": "0x3FDE000000000000", + "posit8_bits_hex": "0x37", + "posit8_bits_int": 55, + "decoded_f64": 0.46875, + "decoded_f64_hex": "0x3FDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x38", + "input_f64": 0.5, + "input_f64_hex": "0x3FE0000000000000", + "posit8_bits_hex": "0x38", + "posit8_bits_int": 56, + "decoded_f64": 0.5, + "decoded_f64_hex": "0x3FE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x39", + "input_f64": 0.5625, + "input_f64_hex": "0x3FE2000000000000", + "posit8_bits_hex": "0x39", + "posit8_bits_int": 57, + "decoded_f64": 0.5625, + "decoded_f64_hex": "0x3FE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3A", + "input_f64": 0.625, + "input_f64_hex": "0x3FE4000000000000", + "posit8_bits_hex": "0x3A", + "posit8_bits_int": 58, + "decoded_f64": 0.625, + "decoded_f64_hex": "0x3FE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3B", + "input_f64": 0.6875, + "input_f64_hex": "0x3FE6000000000000", + "posit8_bits_hex": "0x3B", + "posit8_bits_int": 59, + "decoded_f64": 0.6875, + "decoded_f64_hex": "0x3FE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3C", + "input_f64": 0.75, + "input_f64_hex": "0x3FE8000000000000", + "posit8_bits_hex": "0x3C", + "posit8_bits_int": 60, + "decoded_f64": 0.75, + "decoded_f64_hex": "0x3FE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3D", + "input_f64": 0.8125, + "input_f64_hex": "0x3FEA000000000000", + "posit8_bits_hex": "0x3D", + "posit8_bits_int": 61, + "decoded_f64": 0.8125, + "decoded_f64_hex": "0x3FEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3E", + "input_f64": 0.875, + "input_f64_hex": "0x3FEC000000000000", + "posit8_bits_hex": "0x3E", + "posit8_bits_int": 62, + "decoded_f64": 0.875, + "decoded_f64_hex": "0x3FEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x3F", + "input_f64": 0.9375, + "input_f64_hex": "0x3FEE000000000000", + "posit8_bits_hex": "0x3F", + "posit8_bits_int": 63, + "decoded_f64": 0.9375, + "decoded_f64_hex": "0x3FEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x40", + "input_f64": 1.0, + "input_f64_hex": "0x3FF0000000000000", + "posit8_bits_hex": "0x40", + "posit8_bits_int": 64, + "decoded_f64": 1.0, + "decoded_f64_hex": "0x3FF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x41", + "input_f64": 1.125, + "input_f64_hex": "0x3FF2000000000000", + "posit8_bits_hex": "0x41", + "posit8_bits_int": 65, + "decoded_f64": 1.125, + "decoded_f64_hex": "0x3FF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x42", + "input_f64": 1.25, + "input_f64_hex": "0x3FF4000000000000", + "posit8_bits_hex": "0x42", + "posit8_bits_int": 66, + "decoded_f64": 1.25, + "decoded_f64_hex": "0x3FF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x43", + "input_f64": 1.375, + "input_f64_hex": "0x3FF6000000000000", + "posit8_bits_hex": "0x43", + "posit8_bits_int": 67, + "decoded_f64": 1.375, + "decoded_f64_hex": "0x3FF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x44", + "input_f64": 1.5, + "input_f64_hex": "0x3FF8000000000000", + "posit8_bits_hex": "0x44", + "posit8_bits_int": 68, + "decoded_f64": 1.5, + "decoded_f64_hex": "0x3FF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x45", + "input_f64": 1.625, + "input_f64_hex": "0x3FFA000000000000", + "posit8_bits_hex": "0x45", + "posit8_bits_int": 69, + "decoded_f64": 1.625, + "decoded_f64_hex": "0x3FFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x46", + "input_f64": 1.75, + "input_f64_hex": "0x3FFC000000000000", + "posit8_bits_hex": "0x46", + "posit8_bits_int": 70, + "decoded_f64": 1.75, + "decoded_f64_hex": "0x3FFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x47", + "input_f64": 1.875, + "input_f64_hex": "0x3FFE000000000000", + "posit8_bits_hex": "0x47", + "posit8_bits_int": 71, + "decoded_f64": 1.875, + "decoded_f64_hex": "0x3FFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x48", + "input_f64": 2.0, + "input_f64_hex": "0x4000000000000000", + "posit8_bits_hex": "0x48", + "posit8_bits_int": 72, + "decoded_f64": 2.0, + "decoded_f64_hex": "0x4000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x49", + "input_f64": 2.25, + "input_f64_hex": "0x4002000000000000", + "posit8_bits_hex": "0x49", + "posit8_bits_int": 73, + "decoded_f64": 2.25, + "decoded_f64_hex": "0x4002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4A", + "input_f64": 2.5, + "input_f64_hex": "0x4004000000000000", + "posit8_bits_hex": "0x4A", + "posit8_bits_int": 74, + "decoded_f64": 2.5, + "decoded_f64_hex": "0x4004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4B", + "input_f64": 2.75, + "input_f64_hex": "0x4006000000000000", + "posit8_bits_hex": "0x4B", + "posit8_bits_int": 75, + "decoded_f64": 2.75, + "decoded_f64_hex": "0x4006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4C", + "input_f64": 3.0, + "input_f64_hex": "0x4008000000000000", + "posit8_bits_hex": "0x4C", + "posit8_bits_int": 76, + "decoded_f64": 3.0, + "decoded_f64_hex": "0x4008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4D", + "input_f64": 3.25, + "input_f64_hex": "0x400A000000000000", + "posit8_bits_hex": "0x4D", + "posit8_bits_int": 77, + "decoded_f64": 3.25, + "decoded_f64_hex": "0x400A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4E", + "input_f64": 3.5, + "input_f64_hex": "0x400C000000000000", + "posit8_bits_hex": "0x4E", + "posit8_bits_int": 78, + "decoded_f64": 3.5, + "decoded_f64_hex": "0x400C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x4F", + "input_f64": 3.75, + "input_f64_hex": "0x400E000000000000", + "posit8_bits_hex": "0x4F", + "posit8_bits_int": 79, + "decoded_f64": 3.75, + "decoded_f64_hex": "0x400E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x50", + "input_f64": 4.0, + "input_f64_hex": "0x4010000000000000", + "posit8_bits_hex": "0x50", + "posit8_bits_int": 80, + "decoded_f64": 4.0, + "decoded_f64_hex": "0x4010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x51", + "input_f64": 4.5, + "input_f64_hex": "0x4012000000000000", + "posit8_bits_hex": "0x51", + "posit8_bits_int": 81, + "decoded_f64": 4.5, + "decoded_f64_hex": "0x4012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x52", + "input_f64": 5.0, + "input_f64_hex": "0x4014000000000000", + "posit8_bits_hex": "0x52", + "posit8_bits_int": 82, + "decoded_f64": 5.0, + "decoded_f64_hex": "0x4014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x53", + "input_f64": 5.5, + "input_f64_hex": "0x4016000000000000", + "posit8_bits_hex": "0x53", + "posit8_bits_int": 83, + "decoded_f64": 5.5, + "decoded_f64_hex": "0x4016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x54", + "input_f64": 6.0, + "input_f64_hex": "0x4018000000000000", + "posit8_bits_hex": "0x54", + "posit8_bits_int": 84, + "decoded_f64": 6.0, + "decoded_f64_hex": "0x4018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x55", + "input_f64": 6.5, + "input_f64_hex": "0x401A000000000000", + "posit8_bits_hex": "0x55", + "posit8_bits_int": 85, + "decoded_f64": 6.5, + "decoded_f64_hex": "0x401A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x56", + "input_f64": 7.0, + "input_f64_hex": "0x401C000000000000", + "posit8_bits_hex": "0x56", + "posit8_bits_int": 86, + "decoded_f64": 7.0, + "decoded_f64_hex": "0x401C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x57", + "input_f64": 7.5, + "input_f64_hex": "0x401E000000000000", + "posit8_bits_hex": "0x57", + "posit8_bits_int": 87, + "decoded_f64": 7.5, + "decoded_f64_hex": "0x401E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x58", + "input_f64": 8.0, + "input_f64_hex": "0x4020000000000000", + "posit8_bits_hex": "0x58", + "posit8_bits_int": 88, + "decoded_f64": 8.0, + "decoded_f64_hex": "0x4020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x59", + "input_f64": 9.0, + "input_f64_hex": "0x4022000000000000", + "posit8_bits_hex": "0x59", + "posit8_bits_int": 89, + "decoded_f64": 9.0, + "decoded_f64_hex": "0x4022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5A", + "input_f64": 10.0, + "input_f64_hex": "0x4024000000000000", + "posit8_bits_hex": "0x5A", + "posit8_bits_int": 90, + "decoded_f64": 10.0, + "decoded_f64_hex": "0x4024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5B", + "input_f64": 11.0, + "input_f64_hex": "0x4026000000000000", + "posit8_bits_hex": "0x5B", + "posit8_bits_int": 91, + "decoded_f64": 11.0, + "decoded_f64_hex": "0x4026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5C", + "input_f64": 12.0, + "input_f64_hex": "0x4028000000000000", + "posit8_bits_hex": "0x5C", + "posit8_bits_int": 92, + "decoded_f64": 12.0, + "decoded_f64_hex": "0x4028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5D", + "input_f64": 13.0, + "input_f64_hex": "0x402A000000000000", + "posit8_bits_hex": "0x5D", + "posit8_bits_int": 93, + "decoded_f64": 13.0, + "decoded_f64_hex": "0x402A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5E", + "input_f64": 14.0, + "input_f64_hex": "0x402C000000000000", + "posit8_bits_hex": "0x5E", + "posit8_bits_int": 94, + "decoded_f64": 14.0, + "decoded_f64_hex": "0x402C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x5F", + "input_f64": 15.0, + "input_f64_hex": "0x402E000000000000", + "posit8_bits_hex": "0x5F", + "posit8_bits_int": 95, + "decoded_f64": 15.0, + "decoded_f64_hex": "0x402E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x60", + "input_f64": 16.0, + "input_f64_hex": "0x4030000000000000", + "posit8_bits_hex": "0x60", + "posit8_bits_int": 96, + "decoded_f64": 16.0, + "decoded_f64_hex": "0x4030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x61", + "input_f64": 20.0, + "input_f64_hex": "0x4034000000000000", + "posit8_bits_hex": "0x61", + "posit8_bits_int": 97, + "decoded_f64": 20.0, + "decoded_f64_hex": "0x4034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x62", + "input_f64": 24.0, + "input_f64_hex": "0x4038000000000000", + "posit8_bits_hex": "0x62", + "posit8_bits_int": 98, + "decoded_f64": 24.0, + "decoded_f64_hex": "0x4038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x63", + "input_f64": 28.0, + "input_f64_hex": "0x403C000000000000", + "posit8_bits_hex": "0x63", + "posit8_bits_int": 99, + "decoded_f64": 28.0, + "decoded_f64_hex": "0x403C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x64", + "input_f64": 32.0, + "input_f64_hex": "0x4040000000000000", + "posit8_bits_hex": "0x64", + "posit8_bits_int": 100, + "decoded_f64": 32.0, + "decoded_f64_hex": "0x4040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x65", + "input_f64": 40.0, + "input_f64_hex": "0x4044000000000000", + "posit8_bits_hex": "0x65", + "posit8_bits_int": 101, + "decoded_f64": 40.0, + "decoded_f64_hex": "0x4044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x66", + "input_f64": 48.0, + "input_f64_hex": "0x4048000000000000", + "posit8_bits_hex": "0x66", + "posit8_bits_int": 102, + "decoded_f64": 48.0, + "decoded_f64_hex": "0x4048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x67", + "input_f64": 56.0, + "input_f64_hex": "0x404C000000000000", + "posit8_bits_hex": "0x67", + "posit8_bits_int": 103, + "decoded_f64": 56.0, + "decoded_f64_hex": "0x404C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x68", + "input_f64": 64.0, + "input_f64_hex": "0x4050000000000000", + "posit8_bits_hex": "0x68", + "posit8_bits_int": 104, + "decoded_f64": 64.0, + "decoded_f64_hex": "0x4050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x69", + "input_f64": 80.0, + "input_f64_hex": "0x4054000000000000", + "posit8_bits_hex": "0x69", + "posit8_bits_int": 105, + "decoded_f64": 80.0, + "decoded_f64_hex": "0x4054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6A", + "input_f64": 96.0, + "input_f64_hex": "0x4058000000000000", + "posit8_bits_hex": "0x6A", + "posit8_bits_int": 106, + "decoded_f64": 96.0, + "decoded_f64_hex": "0x4058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6B", + "input_f64": 112.0, + "input_f64_hex": "0x405C000000000000", + "posit8_bits_hex": "0x6B", + "posit8_bits_int": 107, + "decoded_f64": 112.0, + "decoded_f64_hex": "0x405C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6C", + "input_f64": 128.0, + "input_f64_hex": "0x4060000000000000", + "posit8_bits_hex": "0x6C", + "posit8_bits_int": 108, + "decoded_f64": 128.0, + "decoded_f64_hex": "0x4060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6D", + "input_f64": 160.0, + "input_f64_hex": "0x4064000000000000", + "posit8_bits_hex": "0x6D", + "posit8_bits_int": 109, + "decoded_f64": 160.0, + "decoded_f64_hex": "0x4064000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6E", + "input_f64": 192.0, + "input_f64_hex": "0x4068000000000000", + "posit8_bits_hex": "0x6E", + "posit8_bits_int": 110, + "decoded_f64": 192.0, + "decoded_f64_hex": "0x4068000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x6F", + "input_f64": 224.0, + "input_f64_hex": "0x406C000000000000", + "posit8_bits_hex": "0x6F", + "posit8_bits_int": 111, + "decoded_f64": 224.0, + "decoded_f64_hex": "0x406C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x70", + "input_f64": 256.0, + "input_f64_hex": "0x4070000000000000", + "posit8_bits_hex": "0x70", + "posit8_bits_int": 112, + "decoded_f64": 256.0, + "decoded_f64_hex": "0x4070000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x71", + "input_f64": 384.0, + "input_f64_hex": "0x4078000000000000", + "posit8_bits_hex": "0x71", + "posit8_bits_int": 113, + "decoded_f64": 384.0, + "decoded_f64_hex": "0x4078000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x72", + "input_f64": 512.0, + "input_f64_hex": "0x4080000000000000", + "posit8_bits_hex": "0x72", + "posit8_bits_int": 114, + "decoded_f64": 512.0, + "decoded_f64_hex": "0x4080000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x73", + "input_f64": 768.0, + "input_f64_hex": "0x4088000000000000", + "posit8_bits_hex": "0x73", + "posit8_bits_int": 115, + "decoded_f64": 768.0, + "decoded_f64_hex": "0x4088000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x74", + "input_f64": 1024.0, + "input_f64_hex": "0x4090000000000000", + "posit8_bits_hex": "0x74", + "posit8_bits_int": 116, + "decoded_f64": 1024.0, + "decoded_f64_hex": "0x4090000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x75", + "input_f64": 1536.0, + "input_f64_hex": "0x4098000000000000", + "posit8_bits_hex": "0x75", + "posit8_bits_int": 117, + "decoded_f64": 1536.0, + "decoded_f64_hex": "0x4098000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x76", + "input_f64": 2048.0, + "input_f64_hex": "0x40A0000000000000", + "posit8_bits_hex": "0x76", + "posit8_bits_int": 118, + "decoded_f64": 2048.0, + "decoded_f64_hex": "0x40A0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x77", + "input_f64": 3072.0, + "input_f64_hex": "0x40A8000000000000", + "posit8_bits_hex": "0x77", + "posit8_bits_int": 119, + "decoded_f64": 3072.0, + "decoded_f64_hex": "0x40A8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x78", + "input_f64": 4096.0, + "input_f64_hex": "0x40B0000000000000", + "posit8_bits_hex": "0x78", + "posit8_bits_int": 120, + "decoded_f64": 4096.0, + "decoded_f64_hex": "0x40B0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x79", + "input_f64": 8192.0, + "input_f64_hex": "0x40C0000000000000", + "posit8_bits_hex": "0x79", + "posit8_bits_int": 121, + "decoded_f64": 8192.0, + "decoded_f64_hex": "0x40C0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7A", + "input_f64": 16384.0, + "input_f64_hex": "0x40D0000000000000", + "posit8_bits_hex": "0x7A", + "posit8_bits_int": 122, + "decoded_f64": 16384.0, + "decoded_f64_hex": "0x40D0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7B", + "input_f64": 32768.0, + "input_f64_hex": "0x40E0000000000000", + "posit8_bits_hex": "0x7B", + "posit8_bits_int": 123, + "decoded_f64": 32768.0, + "decoded_f64_hex": "0x40E0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7C", + "input_f64": 65536.0, + "input_f64_hex": "0x40F0000000000000", + "posit8_bits_hex": "0x7C", + "posit8_bits_int": 124, + "decoded_f64": 65536.0, + "decoded_f64_hex": "0x40F0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7D", + "input_f64": 262144.0, + "input_f64_hex": "0x4110000000000000", + "posit8_bits_hex": "0x7D", + "posit8_bits_int": 125, + "decoded_f64": 262144.0, + "decoded_f64_hex": "0x4110000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7E", + "input_f64": 1048576.0, + "input_f64_hex": "0x4130000000000000", + "posit8_bits_hex": "0x7E", + "posit8_bits_int": 126, + "decoded_f64": 1048576.0, + "decoded_f64_hex": "0x4130000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x7F", + "input_f64": 16777216.0, + "input_f64_hex": "0x4170000000000000", + "posit8_bits_hex": "0x7F", + "posit8_bits_int": 127, + "decoded_f64": 16777216.0, + "decoded_f64_hex": "0x4170000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x80", + "input_f64": "NaN", + "input_f64_hex": "0x7FF8000000000000", + "posit8_bits_hex": "0x80", + "posit8_bits_int": 128, + "decoded_f64": "NaN", + "decoded_f64_hex": "0x7FF8000000000000", + "abs_error": "NaN", + "category": "nan" + }, + { + "name": "code_0x81", + "input_f64": -16777216.0, + "input_f64_hex": "0xC170000000000000", + "posit8_bits_hex": "0x81", + "posit8_bits_int": 129, + "decoded_f64": -16777216.0, + "decoded_f64_hex": "0xC170000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x82", + "input_f64": -1048576.0, + "input_f64_hex": "0xC130000000000000", + "posit8_bits_hex": "0x82", + "posit8_bits_int": 130, + "decoded_f64": -1048576.0, + "decoded_f64_hex": "0xC130000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x83", + "input_f64": -262144.0, + "input_f64_hex": "0xC110000000000000", + "posit8_bits_hex": "0x83", + "posit8_bits_int": 131, + "decoded_f64": -262144.0, + "decoded_f64_hex": "0xC110000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x84", + "input_f64": -65536.0, + "input_f64_hex": "0xC0F0000000000000", + "posit8_bits_hex": "0x84", + "posit8_bits_int": 132, + "decoded_f64": -65536.0, + "decoded_f64_hex": "0xC0F0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x85", + "input_f64": -32768.0, + "input_f64_hex": "0xC0E0000000000000", + "posit8_bits_hex": "0x85", + "posit8_bits_int": 133, + "decoded_f64": -32768.0, + "decoded_f64_hex": "0xC0E0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x86", + "input_f64": -16384.0, + "input_f64_hex": "0xC0D0000000000000", + "posit8_bits_hex": "0x86", + "posit8_bits_int": 134, + "decoded_f64": -16384.0, + "decoded_f64_hex": "0xC0D0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x87", + "input_f64": -8192.0, + "input_f64_hex": "0xC0C0000000000000", + "posit8_bits_hex": "0x87", + "posit8_bits_int": 135, + "decoded_f64": -8192.0, + "decoded_f64_hex": "0xC0C0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x88", + "input_f64": -4096.0, + "input_f64_hex": "0xC0B0000000000000", + "posit8_bits_hex": "0x88", + "posit8_bits_int": 136, + "decoded_f64": -4096.0, + "decoded_f64_hex": "0xC0B0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x89", + "input_f64": -3072.0, + "input_f64_hex": "0xC0A8000000000000", + "posit8_bits_hex": "0x89", + "posit8_bits_int": 137, + "decoded_f64": -3072.0, + "decoded_f64_hex": "0xC0A8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8A", + "input_f64": -2048.0, + "input_f64_hex": "0xC0A0000000000000", + "posit8_bits_hex": "0x8A", + "posit8_bits_int": 138, + "decoded_f64": -2048.0, + "decoded_f64_hex": "0xC0A0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8B", + "input_f64": -1536.0, + "input_f64_hex": "0xC098000000000000", + "posit8_bits_hex": "0x8B", + "posit8_bits_int": 139, + "decoded_f64": -1536.0, + "decoded_f64_hex": "0xC098000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8C", + "input_f64": -1024.0, + "input_f64_hex": "0xC090000000000000", + "posit8_bits_hex": "0x8C", + "posit8_bits_int": 140, + "decoded_f64": -1024.0, + "decoded_f64_hex": "0xC090000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8D", + "input_f64": -768.0, + "input_f64_hex": "0xC088000000000000", + "posit8_bits_hex": "0x8D", + "posit8_bits_int": 141, + "decoded_f64": -768.0, + "decoded_f64_hex": "0xC088000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8E", + "input_f64": -512.0, + "input_f64_hex": "0xC080000000000000", + "posit8_bits_hex": "0x8E", + "posit8_bits_int": 142, + "decoded_f64": -512.0, + "decoded_f64_hex": "0xC080000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x8F", + "input_f64": -384.0, + "input_f64_hex": "0xC078000000000000", + "posit8_bits_hex": "0x8F", + "posit8_bits_int": 143, + "decoded_f64": -384.0, + "decoded_f64_hex": "0xC078000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x90", + "input_f64": -256.0, + "input_f64_hex": "0xC070000000000000", + "posit8_bits_hex": "0x90", + "posit8_bits_int": 144, + "decoded_f64": -256.0, + "decoded_f64_hex": "0xC070000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x91", + "input_f64": -224.0, + "input_f64_hex": "0xC06C000000000000", + "posit8_bits_hex": "0x91", + "posit8_bits_int": 145, + "decoded_f64": -224.0, + "decoded_f64_hex": "0xC06C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x92", + "input_f64": -192.0, + "input_f64_hex": "0xC068000000000000", + "posit8_bits_hex": "0x92", + "posit8_bits_int": 146, + "decoded_f64": -192.0, + "decoded_f64_hex": "0xC068000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x93", + "input_f64": -160.0, + "input_f64_hex": "0xC064000000000000", + "posit8_bits_hex": "0x93", + "posit8_bits_int": 147, + "decoded_f64": -160.0, + "decoded_f64_hex": "0xC064000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x94", + "input_f64": -128.0, + "input_f64_hex": "0xC060000000000000", + "posit8_bits_hex": "0x94", + "posit8_bits_int": 148, + "decoded_f64": -128.0, + "decoded_f64_hex": "0xC060000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x95", + "input_f64": -112.0, + "input_f64_hex": "0xC05C000000000000", + "posit8_bits_hex": "0x95", + "posit8_bits_int": 149, + "decoded_f64": -112.0, + "decoded_f64_hex": "0xC05C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x96", + "input_f64": -96.0, + "input_f64_hex": "0xC058000000000000", + "posit8_bits_hex": "0x96", + "posit8_bits_int": 150, + "decoded_f64": -96.0, + "decoded_f64_hex": "0xC058000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x97", + "input_f64": -80.0, + "input_f64_hex": "0xC054000000000000", + "posit8_bits_hex": "0x97", + "posit8_bits_int": 151, + "decoded_f64": -80.0, + "decoded_f64_hex": "0xC054000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x98", + "input_f64": -64.0, + "input_f64_hex": "0xC050000000000000", + "posit8_bits_hex": "0x98", + "posit8_bits_int": 152, + "decoded_f64": -64.0, + "decoded_f64_hex": "0xC050000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x99", + "input_f64": -56.0, + "input_f64_hex": "0xC04C000000000000", + "posit8_bits_hex": "0x99", + "posit8_bits_int": 153, + "decoded_f64": -56.0, + "decoded_f64_hex": "0xC04C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9A", + "input_f64": -48.0, + "input_f64_hex": "0xC048000000000000", + "posit8_bits_hex": "0x9A", + "posit8_bits_int": 154, + "decoded_f64": -48.0, + "decoded_f64_hex": "0xC048000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9B", + "input_f64": -40.0, + "input_f64_hex": "0xC044000000000000", + "posit8_bits_hex": "0x9B", + "posit8_bits_int": 155, + "decoded_f64": -40.0, + "decoded_f64_hex": "0xC044000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9C", + "input_f64": -32.0, + "input_f64_hex": "0xC040000000000000", + "posit8_bits_hex": "0x9C", + "posit8_bits_int": 156, + "decoded_f64": -32.0, + "decoded_f64_hex": "0xC040000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9D", + "input_f64": -28.0, + "input_f64_hex": "0xC03C000000000000", + "posit8_bits_hex": "0x9D", + "posit8_bits_int": 157, + "decoded_f64": -28.0, + "decoded_f64_hex": "0xC03C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9E", + "input_f64": -24.0, + "input_f64_hex": "0xC038000000000000", + "posit8_bits_hex": "0x9E", + "posit8_bits_int": 158, + "decoded_f64": -24.0, + "decoded_f64_hex": "0xC038000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0x9F", + "input_f64": -20.0, + "input_f64_hex": "0xC034000000000000", + "posit8_bits_hex": "0x9F", + "posit8_bits_int": 159, + "decoded_f64": -20.0, + "decoded_f64_hex": "0xC034000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA0", + "input_f64": -16.0, + "input_f64_hex": "0xC030000000000000", + "posit8_bits_hex": "0xA0", + "posit8_bits_int": 160, + "decoded_f64": -16.0, + "decoded_f64_hex": "0xC030000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA1", + "input_f64": -15.0, + "input_f64_hex": "0xC02E000000000000", + "posit8_bits_hex": "0xA1", + "posit8_bits_int": 161, + "decoded_f64": -15.0, + "decoded_f64_hex": "0xC02E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA2", + "input_f64": -14.0, + "input_f64_hex": "0xC02C000000000000", + "posit8_bits_hex": "0xA2", + "posit8_bits_int": 162, + "decoded_f64": -14.0, + "decoded_f64_hex": "0xC02C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA3", + "input_f64": -13.0, + "input_f64_hex": "0xC02A000000000000", + "posit8_bits_hex": "0xA3", + "posit8_bits_int": 163, + "decoded_f64": -13.0, + "decoded_f64_hex": "0xC02A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA4", + "input_f64": -12.0, + "input_f64_hex": "0xC028000000000000", + "posit8_bits_hex": "0xA4", + "posit8_bits_int": 164, + "decoded_f64": -12.0, + "decoded_f64_hex": "0xC028000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA5", + "input_f64": -11.0, + "input_f64_hex": "0xC026000000000000", + "posit8_bits_hex": "0xA5", + "posit8_bits_int": 165, + "decoded_f64": -11.0, + "decoded_f64_hex": "0xC026000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA6", + "input_f64": -10.0, + "input_f64_hex": "0xC024000000000000", + "posit8_bits_hex": "0xA6", + "posit8_bits_int": 166, + "decoded_f64": -10.0, + "decoded_f64_hex": "0xC024000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA7", + "input_f64": -9.0, + "input_f64_hex": "0xC022000000000000", + "posit8_bits_hex": "0xA7", + "posit8_bits_int": 167, + "decoded_f64": -9.0, + "decoded_f64_hex": "0xC022000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA8", + "input_f64": -8.0, + "input_f64_hex": "0xC020000000000000", + "posit8_bits_hex": "0xA8", + "posit8_bits_int": 168, + "decoded_f64": -8.0, + "decoded_f64_hex": "0xC020000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xA9", + "input_f64": -7.5, + "input_f64_hex": "0xC01E000000000000", + "posit8_bits_hex": "0xA9", + "posit8_bits_int": 169, + "decoded_f64": -7.5, + "decoded_f64_hex": "0xC01E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAA", + "input_f64": -7.0, + "input_f64_hex": "0xC01C000000000000", + "posit8_bits_hex": "0xAA", + "posit8_bits_int": 170, + "decoded_f64": -7.0, + "decoded_f64_hex": "0xC01C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAB", + "input_f64": -6.5, + "input_f64_hex": "0xC01A000000000000", + "posit8_bits_hex": "0xAB", + "posit8_bits_int": 171, + "decoded_f64": -6.5, + "decoded_f64_hex": "0xC01A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAC", + "input_f64": -6.0, + "input_f64_hex": "0xC018000000000000", + "posit8_bits_hex": "0xAC", + "posit8_bits_int": 172, + "decoded_f64": -6.0, + "decoded_f64_hex": "0xC018000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAD", + "input_f64": -5.5, + "input_f64_hex": "0xC016000000000000", + "posit8_bits_hex": "0xAD", + "posit8_bits_int": 173, + "decoded_f64": -5.5, + "decoded_f64_hex": "0xC016000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAE", + "input_f64": -5.0, + "input_f64_hex": "0xC014000000000000", + "posit8_bits_hex": "0xAE", + "posit8_bits_int": 174, + "decoded_f64": -5.0, + "decoded_f64_hex": "0xC014000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xAF", + "input_f64": -4.5, + "input_f64_hex": "0xC012000000000000", + "posit8_bits_hex": "0xAF", + "posit8_bits_int": 175, + "decoded_f64": -4.5, + "decoded_f64_hex": "0xC012000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB0", + "input_f64": -4.0, + "input_f64_hex": "0xC010000000000000", + "posit8_bits_hex": "0xB0", + "posit8_bits_int": 176, + "decoded_f64": -4.0, + "decoded_f64_hex": "0xC010000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB1", + "input_f64": -3.75, + "input_f64_hex": "0xC00E000000000000", + "posit8_bits_hex": "0xB1", + "posit8_bits_int": 177, + "decoded_f64": -3.75, + "decoded_f64_hex": "0xC00E000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB2", + "input_f64": -3.5, + "input_f64_hex": "0xC00C000000000000", + "posit8_bits_hex": "0xB2", + "posit8_bits_int": 178, + "decoded_f64": -3.5, + "decoded_f64_hex": "0xC00C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB3", + "input_f64": -3.25, + "input_f64_hex": "0xC00A000000000000", + "posit8_bits_hex": "0xB3", + "posit8_bits_int": 179, + "decoded_f64": -3.25, + "decoded_f64_hex": "0xC00A000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB4", + "input_f64": -3.0, + "input_f64_hex": "0xC008000000000000", + "posit8_bits_hex": "0xB4", + "posit8_bits_int": 180, + "decoded_f64": -3.0, + "decoded_f64_hex": "0xC008000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB5", + "input_f64": -2.75, + "input_f64_hex": "0xC006000000000000", + "posit8_bits_hex": "0xB5", + "posit8_bits_int": 181, + "decoded_f64": -2.75, + "decoded_f64_hex": "0xC006000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB6", + "input_f64": -2.5, + "input_f64_hex": "0xC004000000000000", + "posit8_bits_hex": "0xB6", + "posit8_bits_int": 182, + "decoded_f64": -2.5, + "decoded_f64_hex": "0xC004000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB7", + "input_f64": -2.25, + "input_f64_hex": "0xC002000000000000", + "posit8_bits_hex": "0xB7", + "posit8_bits_int": 183, + "decoded_f64": -2.25, + "decoded_f64_hex": "0xC002000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB8", + "input_f64": -2.0, + "input_f64_hex": "0xC000000000000000", + "posit8_bits_hex": "0xB8", + "posit8_bits_int": 184, + "decoded_f64": -2.0, + "decoded_f64_hex": "0xC000000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xB9", + "input_f64": -1.875, + "input_f64_hex": "0xBFFE000000000000", + "posit8_bits_hex": "0xB9", + "posit8_bits_int": 185, + "decoded_f64": -1.875, + "decoded_f64_hex": "0xBFFE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBA", + "input_f64": -1.75, + "input_f64_hex": "0xBFFC000000000000", + "posit8_bits_hex": "0xBA", + "posit8_bits_int": 186, + "decoded_f64": -1.75, + "decoded_f64_hex": "0xBFFC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBB", + "input_f64": -1.625, + "input_f64_hex": "0xBFFA000000000000", + "posit8_bits_hex": "0xBB", + "posit8_bits_int": 187, + "decoded_f64": -1.625, + "decoded_f64_hex": "0xBFFA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBC", + "input_f64": -1.5, + "input_f64_hex": "0xBFF8000000000000", + "posit8_bits_hex": "0xBC", + "posit8_bits_int": 188, + "decoded_f64": -1.5, + "decoded_f64_hex": "0xBFF8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBD", + "input_f64": -1.375, + "input_f64_hex": "0xBFF6000000000000", + "posit8_bits_hex": "0xBD", + "posit8_bits_int": 189, + "decoded_f64": -1.375, + "decoded_f64_hex": "0xBFF6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBE", + "input_f64": -1.25, + "input_f64_hex": "0xBFF4000000000000", + "posit8_bits_hex": "0xBE", + "posit8_bits_int": 190, + "decoded_f64": -1.25, + "decoded_f64_hex": "0xBFF4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xBF", + "input_f64": -1.125, + "input_f64_hex": "0xBFF2000000000000", + "posit8_bits_hex": "0xBF", + "posit8_bits_int": 191, + "decoded_f64": -1.125, + "decoded_f64_hex": "0xBFF2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC0", + "input_f64": -1.0, + "input_f64_hex": "0xBFF0000000000000", + "posit8_bits_hex": "0xC0", + "posit8_bits_int": 192, + "decoded_f64": -1.0, + "decoded_f64_hex": "0xBFF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC1", + "input_f64": -0.9375, + "input_f64_hex": "0xBFEE000000000000", + "posit8_bits_hex": "0xC1", + "posit8_bits_int": 193, + "decoded_f64": -0.9375, + "decoded_f64_hex": "0xBFEE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC2", + "input_f64": -0.875, + "input_f64_hex": "0xBFEC000000000000", + "posit8_bits_hex": "0xC2", + "posit8_bits_int": 194, + "decoded_f64": -0.875, + "decoded_f64_hex": "0xBFEC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC3", + "input_f64": -0.8125, + "input_f64_hex": "0xBFEA000000000000", + "posit8_bits_hex": "0xC3", + "posit8_bits_int": 195, + "decoded_f64": -0.8125, + "decoded_f64_hex": "0xBFEA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC4", + "input_f64": -0.75, + "input_f64_hex": "0xBFE8000000000000", + "posit8_bits_hex": "0xC4", + "posit8_bits_int": 196, + "decoded_f64": -0.75, + "decoded_f64_hex": "0xBFE8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC5", + "input_f64": -0.6875, + "input_f64_hex": "0xBFE6000000000000", + "posit8_bits_hex": "0xC5", + "posit8_bits_int": 197, + "decoded_f64": -0.6875, + "decoded_f64_hex": "0xBFE6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC6", + "input_f64": -0.625, + "input_f64_hex": "0xBFE4000000000000", + "posit8_bits_hex": "0xC6", + "posit8_bits_int": 198, + "decoded_f64": -0.625, + "decoded_f64_hex": "0xBFE4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC7", + "input_f64": -0.5625, + "input_f64_hex": "0xBFE2000000000000", + "posit8_bits_hex": "0xC7", + "posit8_bits_int": 199, + "decoded_f64": -0.5625, + "decoded_f64_hex": "0xBFE2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC8", + "input_f64": -0.5, + "input_f64_hex": "0xBFE0000000000000", + "posit8_bits_hex": "0xC8", + "posit8_bits_int": 200, + "decoded_f64": -0.5, + "decoded_f64_hex": "0xBFE0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xC9", + "input_f64": -0.46875, + "input_f64_hex": "0xBFDE000000000000", + "posit8_bits_hex": "0xC9", + "posit8_bits_int": 201, + "decoded_f64": -0.46875, + "decoded_f64_hex": "0xBFDE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCA", + "input_f64": -0.4375, + "input_f64_hex": "0xBFDC000000000000", + "posit8_bits_hex": "0xCA", + "posit8_bits_int": 202, + "decoded_f64": -0.4375, + "decoded_f64_hex": "0xBFDC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCB", + "input_f64": -0.40625, + "input_f64_hex": "0xBFDA000000000000", + "posit8_bits_hex": "0xCB", + "posit8_bits_int": 203, + "decoded_f64": -0.40625, + "decoded_f64_hex": "0xBFDA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCC", + "input_f64": -0.375, + "input_f64_hex": "0xBFD8000000000000", + "posit8_bits_hex": "0xCC", + "posit8_bits_int": 204, + "decoded_f64": -0.375, + "decoded_f64_hex": "0xBFD8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCD", + "input_f64": -0.34375, + "input_f64_hex": "0xBFD6000000000000", + "posit8_bits_hex": "0xCD", + "posit8_bits_int": 205, + "decoded_f64": -0.34375, + "decoded_f64_hex": "0xBFD6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCE", + "input_f64": -0.3125, + "input_f64_hex": "0xBFD4000000000000", + "posit8_bits_hex": "0xCE", + "posit8_bits_int": 206, + "decoded_f64": -0.3125, + "decoded_f64_hex": "0xBFD4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xCF", + "input_f64": -0.28125, + "input_f64_hex": "0xBFD2000000000000", + "posit8_bits_hex": "0xCF", + "posit8_bits_int": 207, + "decoded_f64": -0.28125, + "decoded_f64_hex": "0xBFD2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD0", + "input_f64": -0.25, + "input_f64_hex": "0xBFD0000000000000", + "posit8_bits_hex": "0xD0", + "posit8_bits_int": 208, + "decoded_f64": -0.25, + "decoded_f64_hex": "0xBFD0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD1", + "input_f64": -0.234375, + "input_f64_hex": "0xBFCE000000000000", + "posit8_bits_hex": "0xD1", + "posit8_bits_int": 209, + "decoded_f64": -0.234375, + "decoded_f64_hex": "0xBFCE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD2", + "input_f64": -0.21875, + "input_f64_hex": "0xBFCC000000000000", + "posit8_bits_hex": "0xD2", + "posit8_bits_int": 210, + "decoded_f64": -0.21875, + "decoded_f64_hex": "0xBFCC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD3", + "input_f64": -0.203125, + "input_f64_hex": "0xBFCA000000000000", + "posit8_bits_hex": "0xD3", + "posit8_bits_int": 211, + "decoded_f64": -0.203125, + "decoded_f64_hex": "0xBFCA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD4", + "input_f64": -0.1875, + "input_f64_hex": "0xBFC8000000000000", + "posit8_bits_hex": "0xD4", + "posit8_bits_int": 212, + "decoded_f64": -0.1875, + "decoded_f64_hex": "0xBFC8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD5", + "input_f64": -0.171875, + "input_f64_hex": "0xBFC6000000000000", + "posit8_bits_hex": "0xD5", + "posit8_bits_int": 213, + "decoded_f64": -0.171875, + "decoded_f64_hex": "0xBFC6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD6", + "input_f64": -0.15625, + "input_f64_hex": "0xBFC4000000000000", + "posit8_bits_hex": "0xD6", + "posit8_bits_int": 214, + "decoded_f64": -0.15625, + "decoded_f64_hex": "0xBFC4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD7", + "input_f64": -0.140625, + "input_f64_hex": "0xBFC2000000000000", + "posit8_bits_hex": "0xD7", + "posit8_bits_int": 215, + "decoded_f64": -0.140625, + "decoded_f64_hex": "0xBFC2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD8", + "input_f64": -0.125, + "input_f64_hex": "0xBFC0000000000000", + "posit8_bits_hex": "0xD8", + "posit8_bits_int": 216, + "decoded_f64": -0.125, + "decoded_f64_hex": "0xBFC0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xD9", + "input_f64": -0.1171875, + "input_f64_hex": "0xBFBE000000000000", + "posit8_bits_hex": "0xD9", + "posit8_bits_int": 217, + "decoded_f64": -0.1171875, + "decoded_f64_hex": "0xBFBE000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDA", + "input_f64": -0.109375, + "input_f64_hex": "0xBFBC000000000000", + "posit8_bits_hex": "0xDA", + "posit8_bits_int": 218, + "decoded_f64": -0.109375, + "decoded_f64_hex": "0xBFBC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDB", + "input_f64": -0.1015625, + "input_f64_hex": "0xBFBA000000000000", + "posit8_bits_hex": "0xDB", + "posit8_bits_int": 219, + "decoded_f64": -0.1015625, + "decoded_f64_hex": "0xBFBA000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDC", + "input_f64": -0.09375, + "input_f64_hex": "0xBFB8000000000000", + "posit8_bits_hex": "0xDC", + "posit8_bits_int": 220, + "decoded_f64": -0.09375, + "decoded_f64_hex": "0xBFB8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDD", + "input_f64": -0.0859375, + "input_f64_hex": "0xBFB6000000000000", + "posit8_bits_hex": "0xDD", + "posit8_bits_int": 221, + "decoded_f64": -0.0859375, + "decoded_f64_hex": "0xBFB6000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDE", + "input_f64": -0.078125, + "input_f64_hex": "0xBFB4000000000000", + "posit8_bits_hex": "0xDE", + "posit8_bits_int": 222, + "decoded_f64": -0.078125, + "decoded_f64_hex": "0xBFB4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xDF", + "input_f64": -0.0703125, + "input_f64_hex": "0xBFB2000000000000", + "posit8_bits_hex": "0xDF", + "posit8_bits_int": 223, + "decoded_f64": -0.0703125, + "decoded_f64_hex": "0xBFB2000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE0", + "input_f64": -0.0625, + "input_f64_hex": "0xBFB0000000000000", + "posit8_bits_hex": "0xE0", + "posit8_bits_int": 224, + "decoded_f64": -0.0625, + "decoded_f64_hex": "0xBFB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE1", + "input_f64": -0.0546875, + "input_f64_hex": "0xBFAC000000000000", + "posit8_bits_hex": "0xE1", + "posit8_bits_int": 225, + "decoded_f64": -0.0546875, + "decoded_f64_hex": "0xBFAC000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE2", + "input_f64": -0.046875, + "input_f64_hex": "0xBFA8000000000000", + "posit8_bits_hex": "0xE2", + "posit8_bits_int": 226, + "decoded_f64": -0.046875, + "decoded_f64_hex": "0xBFA8000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE3", + "input_f64": -0.0390625, + "input_f64_hex": "0xBFA4000000000000", + "posit8_bits_hex": "0xE3", + "posit8_bits_int": 227, + "decoded_f64": -0.0390625, + "decoded_f64_hex": "0xBFA4000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE4", + "input_f64": -0.03125, + "input_f64_hex": "0xBFA0000000000000", + "posit8_bits_hex": "0xE4", + "posit8_bits_int": 228, + "decoded_f64": -0.03125, + "decoded_f64_hex": "0xBFA0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE5", + "input_f64": -0.02734375, + "input_f64_hex": "0xBF9C000000000000", + "posit8_bits_hex": "0xE5", + "posit8_bits_int": 229, + "decoded_f64": -0.02734375, + "decoded_f64_hex": "0xBF9C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE6", + "input_f64": -0.0234375, + "input_f64_hex": "0xBF98000000000000", + "posit8_bits_hex": "0xE6", + "posit8_bits_int": 230, + "decoded_f64": -0.0234375, + "decoded_f64_hex": "0xBF98000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE7", + "input_f64": -0.01953125, + "input_f64_hex": "0xBF94000000000000", + "posit8_bits_hex": "0xE7", + "posit8_bits_int": 231, + "decoded_f64": -0.01953125, + "decoded_f64_hex": "0xBF94000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE8", + "input_f64": -0.015625, + "input_f64_hex": "0xBF90000000000000", + "posit8_bits_hex": "0xE8", + "posit8_bits_int": 232, + "decoded_f64": -0.015625, + "decoded_f64_hex": "0xBF90000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xE9", + "input_f64": -0.013671875, + "input_f64_hex": "0xBF8C000000000000", + "posit8_bits_hex": "0xE9", + "posit8_bits_int": 233, + "decoded_f64": -0.013671875, + "decoded_f64_hex": "0xBF8C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEA", + "input_f64": -0.01171875, + "input_f64_hex": "0xBF88000000000000", + "posit8_bits_hex": "0xEA", + "posit8_bits_int": 234, + "decoded_f64": -0.01171875, + "decoded_f64_hex": "0xBF88000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEB", + "input_f64": -0.009765625, + "input_f64_hex": "0xBF84000000000000", + "posit8_bits_hex": "0xEB", + "posit8_bits_int": 235, + "decoded_f64": -0.009765625, + "decoded_f64_hex": "0xBF84000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEC", + "input_f64": -0.0078125, + "input_f64_hex": "0xBF80000000000000", + "posit8_bits_hex": "0xEC", + "posit8_bits_int": 236, + "decoded_f64": -0.0078125, + "decoded_f64_hex": "0xBF80000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xED", + "input_f64": -0.0068359375, + "input_f64_hex": "0xBF7C000000000000", + "posit8_bits_hex": "0xED", + "posit8_bits_int": 237, + "decoded_f64": -0.0068359375, + "decoded_f64_hex": "0xBF7C000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEE", + "input_f64": -0.005859375, + "input_f64_hex": "0xBF78000000000000", + "posit8_bits_hex": "0xEE", + "posit8_bits_int": 238, + "decoded_f64": -0.005859375, + "decoded_f64_hex": "0xBF78000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xEF", + "input_f64": -0.0048828125, + "input_f64_hex": "0xBF74000000000000", + "posit8_bits_hex": "0xEF", + "posit8_bits_int": 239, + "decoded_f64": -0.0048828125, + "decoded_f64_hex": "0xBF74000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF0", + "input_f64": -0.00390625, + "input_f64_hex": "0xBF70000000000000", + "posit8_bits_hex": "0xF0", + "posit8_bits_int": 240, + "decoded_f64": -0.00390625, + "decoded_f64_hex": "0xBF70000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF1", + "input_f64": -0.0029296875, + "input_f64_hex": "0xBF68000000000000", + "posit8_bits_hex": "0xF1", + "posit8_bits_int": 241, + "decoded_f64": -0.0029296875, + "decoded_f64_hex": "0xBF68000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF2", + "input_f64": -0.001953125, + "input_f64_hex": "0xBF60000000000000", + "posit8_bits_hex": "0xF2", + "posit8_bits_int": 242, + "decoded_f64": -0.001953125, + "decoded_f64_hex": "0xBF60000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF3", + "input_f64": -0.00146484375, + "input_f64_hex": "0xBF58000000000000", + "posit8_bits_hex": "0xF3", + "posit8_bits_int": 243, + "decoded_f64": -0.00146484375, + "decoded_f64_hex": "0xBF58000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF4", + "input_f64": -0.0009765625, + "input_f64_hex": "0xBF50000000000000", + "posit8_bits_hex": "0xF4", + "posit8_bits_int": 244, + "decoded_f64": -0.0009765625, + "decoded_f64_hex": "0xBF50000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF5", + "input_f64": -0.000732421875, + "input_f64_hex": "0xBF48000000000000", + "posit8_bits_hex": "0xF5", + "posit8_bits_int": 245, + "decoded_f64": -0.000732421875, + "decoded_f64_hex": "0xBF48000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF6", + "input_f64": -0.00048828125, + "input_f64_hex": "0xBF40000000000000", + "posit8_bits_hex": "0xF6", + "posit8_bits_int": 246, + "decoded_f64": -0.00048828125, + "decoded_f64_hex": "0xBF40000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF7", + "input_f64": -0.0003662109375, + "input_f64_hex": "0xBF38000000000000", + "posit8_bits_hex": "0xF7", + "posit8_bits_int": 247, + "decoded_f64": -0.0003662109375, + "decoded_f64_hex": "0xBF38000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF8", + "input_f64": -0.000244140625, + "input_f64_hex": "0xBF30000000000000", + "posit8_bits_hex": "0xF8", + "posit8_bits_int": 248, + "decoded_f64": -0.000244140625, + "decoded_f64_hex": "0xBF30000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xF9", + "input_f64": -0.0001220703125, + "input_f64_hex": "0xBF20000000000000", + "posit8_bits_hex": "0xF9", + "posit8_bits_int": 249, + "decoded_f64": -0.0001220703125, + "decoded_f64_hex": "0xBF20000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFA", + "input_f64": -6.103515625e-05, + "input_f64_hex": "0xBF10000000000000", + "posit8_bits_hex": "0xFA", + "posit8_bits_int": 250, + "decoded_f64": -6.103515625e-05, + "decoded_f64_hex": "0xBF10000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFB", + "input_f64": -3.0517578125e-05, + "input_f64_hex": "0xBF00000000000000", + "posit8_bits_hex": "0xFB", + "posit8_bits_int": 251, + "decoded_f64": -3.0517578125e-05, + "decoded_f64_hex": "0xBF00000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFC", + "input_f64": -1.52587890625e-05, + "input_f64_hex": "0xBEF0000000000000", + "posit8_bits_hex": "0xFC", + "posit8_bits_int": 252, + "decoded_f64": -1.52587890625e-05, + "decoded_f64_hex": "0xBEF0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFD", + "input_f64": -3.814697265625e-06, + "input_f64_hex": "0xBED0000000000000", + "posit8_bits_hex": "0xFD", + "posit8_bits_int": 253, + "decoded_f64": -3.814697265625e-06, + "decoded_f64_hex": "0xBED0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFE", + "input_f64": -9.5367431640625e-07, + "input_f64_hex": "0xBEB0000000000000", + "posit8_bits_hex": "0xFE", + "posit8_bits_int": 254, + "decoded_f64": -9.5367431640625e-07, + "decoded_f64_hex": "0xBEB0000000000000", + "abs_error": 0.0, + "category": "normal" + }, + { + "name": "code_0xFF", + "input_f64": -5.960464477539063e-08, + "input_f64_hex": "0xBE70000000000000", + "posit8_bits_hex": "0xFF", + "posit8_bits_int": 255, + "decoded_f64": -5.960464477539063e-08, + "decoded_f64_hex": "0xBE70000000000000", + "abs_error": 0.0, + "category": "normal" + } + ] +} \ No newline at end of file diff --git a/conformance/vectors/q_format_conformance_v0.json b/conformance/vectors/q_format_conformance_v0.json new file mode 100644 index 000000000..f22b9d0bd --- /dev/null +++ b/conformance/vectors/q_format_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "Q_FORMAT", + "format_name": "Q-format (Qm.n)", + "bitexact": false, + "format_notes": "Q-format (Qm.n) -- TI fixed-point", + "catalog": { + "id": "q_format", + "bits": 0, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "IntegerFixed", + "status": "Verified", + "standard": "TI fixed-point", + "use_case": "audio DSP, fixed-point ML", + "gf_relation": "orthogonal", + "source": "TI SPRA704", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/quad_double_conformance_v0.json b/conformance/vectors/quad_double_conformance_v0.json new file mode 100644 index 000000000..ac220f446 --- /dev/null +++ b/conformance/vectors/quad_double_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "QUAD_DOUBLE", + "format_name": "quad-double", + "bitexact": false, + "format_notes": "quad-double -- Bailey/Hida (software)", + "catalog": { + "id": "quad_double", + "bits": 256, + "s": 4, + "e": 44, + "m": 208, + "bias": 0, + "storage": "four_u64", + "cluster": "ExtendedFloat", + "status": "Verified", + "standard": "Bailey/Hida (software)", + "use_case": "astrophysics, quad-precision sims", + "gf_relation": "orthogonal", + "source": "Bailey-Hida 2001", + "phi_distance": -1.0 + }, + "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": "Extended-precision layout (explicit integer bit / multi-double components) is not a single S:E:M field; recorded structurally.", + "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/shared_exp_conformance_v0.json b/conformance/vectors/shared_exp_conformance_v0.json new file mode 100644 index 000000000..1f9e9058c --- /dev/null +++ b/conformance/vectors/shared_exp_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "SHARED_EXP", + "format_name": "shared-exponent formats", + "bitexact": false, + "format_notes": "shared-exponent formats -- generalised BFP", + "catalog": { + "id": "shared_exp", + "bits": 0, + "s": 0, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "CompressionTrick", + "status": "Verified", + "standard": "generalised BFP", + "use_case": "LLM quantization", + "gf_relation": "ally", + "source": "Darvish-Rouhani 2020", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/stochastic_rounding_conformance_v0.json b/conformance/vectors/stochastic_rounding_conformance_v0.json new file mode 100644 index 000000000..864012d61 --- /dev/null +++ b/conformance/vectors/stochastic_rounding_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "STOCHASTIC_ROUNDING", + "format_name": "stochastic rounding (technique)", + "bitexact": false, + "format_notes": "stochastic rounding (technique) -- Gupta 2015", + "catalog": { + "id": "stochastic_rounding", + "bits": 0, + "s": 0, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "CompressionTrick", + "status": "Verified", + "standard": "Gupta 2015", + "use_case": "training small networks at low precision", + "gf_relation": "ally", + "source": "Gupta 2015 (ICML)", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/takum16_conformance_v0.json b/conformance/vectors/takum16_conformance_v0.json new file mode 100644 index 000000000..6b4f75369 --- /dev/null +++ b/conformance/vectors/takum16_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TAKUM16", + "format_name": "takum16", + "bitexact": false, + "format_notes": "takum16 -- Hunhold 2024", + "catalog": { + "id": "takum16", + "bits": 16, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "u16", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Hunhold 2024", + "use_case": "single-rule ladder counterexample", + "gf_relation": "ally", + "source": "Hunhold 2024 (arXiv:2412.20273)", + "phi_distance": -1.0 + }, + "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": "Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. It is the live FL-002 counterexample and is recorded structurally pending a dedicated logarithmic decoder.", + "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/takum32_conformance_v0.json b/conformance/vectors/takum32_conformance_v0.json new file mode 100644 index 000000000..91f0331cb --- /dev/null +++ b/conformance/vectors/takum32_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TAKUM32", + "format_name": "takum32", + "bitexact": false, + "format_notes": "takum32 -- Hunhold 2024", + "catalog": { + "id": "takum32", + "bits": 32, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "u32", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Hunhold 2024", + "use_case": "tapered fp32-class", + "gf_relation": "ally", + "source": "Hunhold 2024", + "phi_distance": -1.0 + }, + "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": "Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. It is the live FL-002 counterexample and is recorded structurally pending a dedicated logarithmic decoder.", + "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/takum64_conformance_v0.json b/conformance/vectors/takum64_conformance_v0.json new file mode 100644 index 000000000..0b037aa5b --- /dev/null +++ b/conformance/vectors/takum64_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TAKUM64", + "format_name": "takum64", + "bitexact": false, + "format_notes": "takum64 -- Hunhold 2024", + "catalog": { + "id": "takum64", + "bits": 64, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "u64", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Hunhold 2024", + "use_case": "tapered fp64-class", + "gf_relation": "ally", + "source": "Hunhold 2024", + "phi_distance": -1.0 + }, + "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": "Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. It is the live FL-002 counterexample and is recorded structurally pending a dedicated logarithmic decoder.", + "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/takum8_conformance_v0.json b/conformance/vectors/takum8_conformance_v0.json new file mode 100644 index 000000000..63ca9dbad --- /dev/null +++ b/conformance/vectors/takum8_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TAKUM8", + "format_name": "takum8", + "bitexact": false, + "format_notes": "takum8 -- Hunhold 2024 (tapered-precision)", + "catalog": { + "id": "takum8", + "bits": 8, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "u8", + "cluster": "PositUnumIII", + "status": "Verified", + "standard": "Hunhold 2024 (tapered-precision)", + "use_case": "IEEE-754 backward-compatible tapered", + "gf_relation": "ally", + "source": "Hunhold 2024 (arXiv:2412.20273)", + "phi_distance": -1.0 + }, + "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": "Takum (Hunhold 2024) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. It is the live FL-002 counterexample and is recorded structurally pending a dedicated logarithmic decoder.", + "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/tapered_fp_conformance_v0.json b/conformance/vectors/tapered_fp_conformance_v0.json new file mode 100644 index 000000000..a626c33a0 --- /dev/null +++ b/conformance/vectors/tapered_fp_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TAPERED_FP", + "format_name": "tapered floating point", + "bitexact": false, + "format_notes": "tapered floating point -- Morris 1971; posit ancestor", + "catalog": { + "id": "tapered_fp", + "bits": 0, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "Theoretical", + "status": "Experimental", + "standard": "Morris 1971; posit ancestor", + "use_case": "variable mantissa via regime bits", + "gf_relation": "ally", + "source": "Morris 1971 (IEEE TC)", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/tf32_conformance_v0.json b/conformance/vectors/tf32_conformance_v0.json new file mode 100644 index 000000000..358deeadb --- /dev/null +++ b/conformance/vectors/tf32_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "TF32", + "format_name": "TensorFloat-32 (TF32)", + "bitexact": true, + "format_notes": "radix-2 float S1E8M10, bias 127. IEEE-style specials", + "catalog": { + "id": "tf32", + "bits": 19, + "s": 1, + "e": 8, + "m": 10, + "bias": 127, + "storage": "u32_padded", + "cluster": "MlLowPrecision", + "status": "Verified", + "standard": "NVIDIA Ampere", + "use_case": "A100/H100 mixed precision", + "gf_relation": "competitor", + "source": "NVIDIA Ampere whitepaper", + "phi_distance": 0.27 + }, + "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, + "tf32_bits_hex": "0x20200" + }, + "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", + "tf32_bits_hex": "0x00000", + "tf32_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", + "tf32_bits_hex": "0x1FC00", + "tf32_bits_int": 130048, + "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", + "tf32_bits_hex": "0x5FC00", + "tf32_bits_int": 392192, + "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", + "tf32_bits_hex": "0x20000", + "tf32_bits_int": 131072, + "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", + "tf32_bits_hex": "0x20200", + "tf32_bits_int": 131584, + "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", + "tf32_bits_hex": "0x1F800", + "tf32_bits_int": 129024, + "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", + "tf32_bits_hex": "0x20400", + "tf32_bits_int": 132096, + "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", + "tf32_bits_hex": "0x60200", + "tf32_bits_int": 393728, + "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/unum_i_conformance_v0.json b/conformance/vectors/unum_i_conformance_v0.json new file mode 100644 index 000000000..4dba5312c --- /dev/null +++ b/conformance/vectors/unum_i_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "UNUM_I", + "format_name": "Unum I (tapered + ubound)", + "bitexact": false, + "format_notes": "Unum I (tapered + ubound) -- Gustafson 2015 (predecessor to posit)", + "catalog": { + "id": "unum_i", + "bits": 0, + "s": 1, + "e": 0, + "m": 0, + "bias": 0, + "storage": "varies", + "cluster": "Theoretical", + "status": "Experimental", + "standard": "Gustafson 2015 (predecessor to posit)", + "use_case": "interval arithmetic", + "gf_relation": "ally", + "source": "Gustafson 2015 (The End of Error)", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/unum_ii_conformance_v0.json b/conformance/vectors/unum_ii_conformance_v0.json new file mode 100644 index 000000000..0ab2ea1fc --- /dev/null +++ b/conformance/vectors/unum_ii_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "UNUM_II", + "format_name": "Unum II (SORN projective)", + "bitexact": false, + "format_notes": "Unum II (SORN projective) -- Gustafson 2016", + "catalog": { + "id": "unum_ii", + "bits": 0, + "s": 0, + "e": 0, + "m": 0, + "bias": 0, + "storage": "lookup_table", + "cluster": "Theoretical", + "status": "Experimental", + "standard": "Gustafson 2016", + "use_case": "lookup-table real arithmetic; not GF-comparable", + "gf_relation": "orthogonal", + "source": "Gustafson 2016", + "phi_distance": -1.0 + }, + "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": "This format has no single fixed bit layout (parametric / technique / variable-width). A bit-precise round-trip vector table is not well-defined; the catalog metadata and anchor note are recorded instead.", + "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/vax_d_conformance_v0.json b/conformance/vectors/vax_d_conformance_v0.json new file mode 100644 index 000000000..3b2fb3f61 --- /dev/null +++ b/conformance/vectors/vax_d_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "VAX_D", + "format_name": "VAX D-float", + "bitexact": true, + "format_notes": "vendor radix-2 float S1E8M55, bias 128 (DEC VAX). vendor-specific specials", + "catalog": { + "id": "vax_d", + "bits": 64, + "s": 1, + "e": 8, + "m": 55, + "bias": 128, + "storage": "u64", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "DEC VAX", + "use_case": "DEC legacy double", + "gf_relation": "orthogonal", + "source": "VAX Architecture Reference", + "phi_distance": -1.0 + }, + "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, + "vax_d_bits_hex": "0x40C0000000000000" + }, + "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", + "vax_d_bits_hex": "0x0000000000000000", + "vax_d_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", + "vax_d_bits_hex": "0x4000000000000000", + "vax_d_bits_int": 4611686018427387904, + "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", + "vax_d_bits_hex": "0xC000000000000000", + "vax_d_bits_int": 13835058055282163712, + "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", + "vax_d_bits_hex": "0x4080000000000000", + "vax_d_bits_int": 4647714815446351872, + "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", + "vax_d_bits_hex": "0x40C0000000000000", + "vax_d_bits_int": 4665729213955833856, + "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", + "vax_d_bits_hex": "0x3F80000000000000", + "vax_d_bits_int": 4575657221408423936, + "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", + "vax_d_bits_hex": "0x4100000000000000", + "vax_d_bits_int": 4683743612465315840, + "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", + "vax_d_bits_hex": "0xC0C0000000000000", + "vax_d_bits_int": 13889101250810609664, + "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/vax_f_conformance_v0.json b/conformance/vectors/vax_f_conformance_v0.json new file mode 100644 index 000000000..5853a65ef --- /dev/null +++ b/conformance/vectors/vax_f_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "VAX_F", + "format_name": "VAX F-float", + "bitexact": true, + "format_notes": "vendor radix-2 float S1E8M23, bias 128 (DEC VAX). vendor-specific specials", + "catalog": { + "id": "vax_f", + "bits": 32, + "s": 1, + "e": 8, + "m": 23, + "bias": 128, + "storage": "u32", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "DEC VAX", + "use_case": "DEC legacy", + "gf_relation": "orthogonal", + "source": "VAX Architecture Reference", + "phi_distance": -1.0 + }, + "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, + "vax_f_bits_hex": "0x40C00000" + }, + "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", + "vax_f_bits_hex": "0x00000000", + "vax_f_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", + "vax_f_bits_hex": "0x40000000", + "vax_f_bits_int": 1073741824, + "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", + "vax_f_bits_hex": "0xC0000000", + "vax_f_bits_int": 3221225472, + "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", + "vax_f_bits_hex": "0x40800000", + "vax_f_bits_int": 1082130432, + "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", + "vax_f_bits_hex": "0x40C00000", + "vax_f_bits_int": 1086324736, + "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", + "vax_f_bits_hex": "0x3F800000", + "vax_f_bits_int": 1065353216, + "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", + "vax_f_bits_hex": "0x41000000", + "vax_f_bits_int": 1090519040, + "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", + "vax_f_bits_hex": "0xC0C00000", + "vax_f_bits_int": 3233808384, + "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/vax_g_conformance_v0.json b/conformance/vectors/vax_g_conformance_v0.json new file mode 100644 index 000000000..8b162fe2d --- /dev/null +++ b/conformance/vectors/vax_g_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "VAX_G", + "format_name": "VAX G-float", + "bitexact": true, + "format_notes": "vendor radix-2 float S1E11M52, bias 1024 (DEC VAX (IEEE-like)). vendor-specific specials", + "catalog": { + "id": "vax_g", + "bits": 64, + "s": 1, + "e": 11, + "m": 52, + "bias": 1024, + "storage": "u64", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "DEC VAX (IEEE-like)", + "use_case": "DEC legacy", + "gf_relation": "orthogonal", + "source": "VAX Architecture Reference", + "phi_distance": -1.0 + }, + "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, + "vax_g_bits_hex": "0x4018000000000000" + }, + "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", + "vax_g_bits_hex": "0x0000000000000000", + "vax_g_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", + "vax_g_bits_hex": "0x4000000000000000", + "vax_g_bits_int": 4611686018427387904, + "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", + "vax_g_bits_hex": "0xC000000000000000", + "vax_g_bits_int": 13835058055282163712, + "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", + "vax_g_bits_hex": "0x4010000000000000", + "vax_g_bits_int": 4616189618054758400, + "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", + "vax_g_bits_hex": "0x4018000000000000", + "vax_g_bits_int": 4618441417868443648, + "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", + "vax_g_bits_hex": "0x3FF0000000000000", + "vax_g_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", + "vax_g_bits_hex": "0x4020000000000000", + "vax_g_bits_int": 4620693217682128896, + "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", + "vax_g_bits_hex": "0xC018000000000000", + "vax_g_bits_int": 13841813454723219456, + "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/vax_h_conformance_v0.json b/conformance/vectors/vax_h_conformance_v0.json new file mode 100644 index 000000000..35fe3e470 --- /dev/null +++ b/conformance/vectors/vax_h_conformance_v0.json @@ -0,0 +1,125 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "VAX_H", + "format_name": "VAX H-float", + "bitexact": true, + "format_notes": "vendor radix-2 float S1E15M112, bias 16384 (DEC VAX). vendor-specific specials", + "catalog": { + "id": "vax_h", + "bits": 128, + "s": 1, + "e": 15, + "m": 112, + "bias": 16384, + "storage": "u128", + "cluster": "HistoricalVendor", + "status": "Historical", + "standard": "DEC VAX", + "use_case": "DEC quad", + "gf_relation": "orthogonal", + "source": "VAX Architecture Reference", + "phi_distance": -1.0 + }, + "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, + "vax_h_bits_hex": "0x40018000000000000000000000000000" + }, + "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", + "vax_h_bits_hex": "0x00000000000000000000000000000000", + "vax_h_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", + "vax_h_bits_hex": "0x40000000000000000000000000000000", + "vax_h_bits_int": 85070591730234615865843651857942052864, + "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", + "vax_h_bits_hex": "0xC0000000000000000000000000000000", + "vax_h_bits_int": 255211775190703847597530955573826158592, + "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", + "vax_h_bits_hex": "0x40010000000000000000000000000000", + "vax_h_bits_int": 85075784027093150693472182354271272960, + "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", + "vax_h_bits_hex": "0x40018000000000000000000000000000", + "vax_h_bits_int": 85078380175522418107286447602435883008, + "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", + "vax_h_bits_hex": "0x3FFF0000000000000000000000000000", + "vax_h_bits_int": 85065399433376081038215121361612832768, + "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", + "vax_h_bits_hex": "0x40020000000000000000000000000000", + "vax_h_bits_int": 85080976323951685521100712850600493056, + "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", + "vax_h_bits_hex": "0xC0018000000000000000000000000000", + "vax_h_bits_int": 255219563635991649838973751318319988736, + "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/x87_fp80_conformance_v0.json b/conformance/vectors/x87_fp80_conformance_v0.json new file mode 100644 index 000000000..ae3a09389 --- /dev/null +++ b/conformance/vectors/x87_fp80_conformance_v0.json @@ -0,0 +1,30 @@ +{ + "schema": "t27-conformance/v0.1", + "format": "X87_FP80", + "format_name": "x87 FP80", + "bitexact": false, + "format_notes": "x87 FP80 -- Intel x87 (explicit integer bit)", + "catalog": { + "id": "x87_fp80", + "bits": 80, + "s": 1, + "e": 15, + "m": 64, + "bias": 16383, + "storage": "u80_padded", + "cluster": "ExtendedFloat", + "status": "Historical", + "standard": "Intel x87 (explicit integer bit)", + "use_case": "legacy long double on x86", + "gf_relation": "orthogonal", + "source": "Intel SDM", + "phi_distance": -1.0 + }, + "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": "Extended-precision layout (explicit integer bit / multi-double components) is not a single S:E:M field; recorded structurally.", + "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/docs/NOW.md b/docs/NOW.md index f64955307..2ffdcf302 100644 --- a/docs/NOW.md +++ b/docs/NOW.md @@ -1,6 +1,12 @@ # NOW -- Trinity t27 sync -Last updated: 2026-06-13 +Last updated: 2026-06-14 + +## conformance-vectors-all-83-formats -- catalog-wide conformance packs, 49 bit-exact + 34 structural (Closes #1071) + +- **WHERE** (conformance vectors): extends the v0 packs (#1055, five Tier-1 packs) to full catalog coverage under `conformance/vectors/`. Adds 78 new `*_conformance_v0.json` packs so that all 83 formats in the numeric catalog SSOT have exactly one pack each, no gaps. 49 packs are bit-exact (fixed radix-2 S:E:M layout, full encode->decode->f64 round-trip with honest abs_error) and 34 are structural (formats without a fixed radix-2 S:E:M layout -- parametric, table-based, radix-16, tapered-log, extended-precision, or open-R&D-parameter -- marked `bitexact: false` with a `structural_reason` field and no round-trip rows). New `INDEX_all_formats.json` (`total_packs=83, bitexact_packs=49, structural_packs=34`) and new master generator `gen_all_formats.py` reading the catalog SSOT. `README.md` rewritten to document all 83 packs: coverage policy, 49-pack bit-exact index, 34-pack structural index with reasons, full SHA-256 block, schema, provenance. The five pre-existing hand-curated generators are kept. +- **Why**: gives the t27 numeric SSOT a citable conformance reference for every catalog format, not just the FP8/MXFP4/bf16 Tier-1 subset. Anchor identity phi^2 + 1/phi^2 = 3 lands exactly on grid for 43 of 49 bit-exact packs; the six exceptions (LNS-8/16/32/64, GF4, MXGF4) honestly record the nearest representable value and true abs_error -- log2(3) is not representable in LNS and the 4-bit grids are too coarse, so these are expected, not bugs. The six ml_dtypes-0.5.4-cross-checked packs (GF16, MXFP4 element, BF16, FP8 E4M3, FP8 E5M2, E8M0) remain a deeply-validated Tier-1 reference subset; absence of a pack is never a quality claim. Coverage policy: formats <=8-bit get exhaustive enumeration, >8-bit get curated named vectors, non-S:E:M get structural packs. ASCII-only. These are conformance data + reproduction scripts, not a quality claim; no [Verified] silicon claim is asserted beyond the existing GF16 rung. L6 gf16 SSOT untouched; L4 not applicable (data files, not specs); L2 (`gen/`) untouched. Context preprint: arXiv:2606.05017. Closes #1071. +- **Anchor**: phi^2 + phi^-2 = 3 ## ops-unify-email -- consolidate contact emails to admin@t27.ai (Closes #1067)