Skip to content

Commit 1a84f06

Browse files
author
gHashTag
committed
takum32/64: promote structural -> curated_named bitexact (SW 70->72)
Promote takum32 and takum64 conformance packs from structural (n_vectors=0) to bit-precise via a curated_named vector set (15 vectors each: zero, +1, -1, exp(c/2) grid points for c=+/-2,+/-4,+/-6 both signs). Each named vector is the correctly-rounded f64 of an exact grid value under the Takum decode law (Hunhold 2024, arXiv:2404.18603, value=exp(ell/2)), certified by an independent 400+bit mpmath oracle; abs_error=0 by construction. CURATED-BACKED, NOT exhaustive (2^32/2^64 infeasible) -- distinct from takum16 (exhaustive 2^16). 400k sample probe is supporting evidence only, NOT part of the bitexact claim. INDEX: bitexact 70->72, structural 13->11, total stays 83. WP-18 integrity-gate CLEAN locally (A/B/C/D/D2/E). [verified SW] curated named vectors; NOT [exhaustive]; NOT a silicon claim. Closes #1327
1 parent bc70a05 commit 1a84f06

4 files changed

Lines changed: 376 additions & 26 deletions

File tree

conformance/vectors/INDEX_all_formats.json

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
"preprint": "https://arxiv.org/abs/2606.05017",
66
"total_formats": 83,
77
"total_packs": 83,
8-
"bitexact_packs": 70,
8+
"bitexact_packs": 72,
99
"selfconsistent_packs": 0,
10-
"structural_packs": 13,
10+
"structural_packs": 11,
1111
"packs": [
1212
{
1313
"id": "binary16",
@@ -240,18 +240,18 @@
240240
{
241241
"id": "takum32",
242242
"file": "takum32_conformance_v0.json",
243-
"kind": "structural",
244-
"n_vectors": 0,
245-
"source": "generated by gen_all_formats.py",
246-
"sha256": "3dca713a5bc26040650929100e4bb48cc4c7dd50575b7333f2199152ac0b95b0"
243+
"kind": "bitexact",
244+
"n_vectors": 15,
245+
"source": "curated_named oracle (witness_takum_wide.py, mpmath 1200-bit); see format_notes",
246+
"sha256": "fd7ec34a74e4ae0577c64999ee2a972788020a6a62b80dd32312cc9082f6cf8a"
247247
},
248248
{
249249
"id": "takum64",
250250
"file": "takum64_conformance_v0.json",
251-
"kind": "structural",
252-
"n_vectors": 0,
253-
"source": "generated by gen_all_formats.py",
254-
"sha256": "716629d89176e0cddb6c3acf0e90808fd8a72743bbebe4cbe887e2c5529e0f1a"
251+
"kind": "bitexact",
252+
"n_vectors": 15,
253+
"source": "curated_named oracle (witness_takum_wide.py, mpmath 1200-bit); see format_notes",
254+
"sha256": "ab1bf903a5de88d784364e6bc6d54faea0e40a19725076bda65e6c8933b7b58e"
255255
},
256256
{
257257
"id": "lns8",

conformance/vectors/takum32_conformance_v0.json

Lines changed: 180 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"schema": "t27-conformance/v0.1",
33
"format": "TAKUM32",
44
"format_name": "takum32",
5-
"bitexact": false,
6-
"format_notes": "takum32 -- Hunhold 2024",
5+
"bitexact": true,
6+
"format_notes": "takum32 logarithmic (Hunhold 2024, arXiv:2404.18603): value = exp(ell/2). CURATED-BACKED (NOT exhaustive: 2^32 codes infeasible to enumerate) - distinct from takum16 which is exhaustive-backed (2^16). Each named vector is correctly-rounded f64 via an independent 400+-bit mpmath oracle (abs_error=0). Supporting evidence (NOT part of the bitexact claim): a 400k+ randomized+structured sample probe at 600-bit found min midpoint gap 2.27e-7 ULP >> oracle floor 2.5e-175, 0 ambiguous codes - no table-maker's dilemma observed on the sample. Exhaustive guarantee would require libtakum C-parity or an analytic separation bound (Variant B, separate step). zero at 0x0; NaR at MSB-set.",
77
"catalog": {
88
"id": "takum32",
99
"bits": 32,
@@ -17,14 +17,186 @@
1717
"standard": "Hunhold 2024",
1818
"use_case": "tapered fp32-class",
1919
"gf_relation": "ally",
20-
"source": "Hunhold 2024",
20+
"source": "Hunhold 2024 (arXiv:2404.18603)",
2121
"phi_distance": -1.0
2222
},
2323
"ssot": "https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json",
2424
"preprint": "https://arxiv.org/abs/2606.05017",
2525
"anchor_identity": "phi^2 + 1/phi^2 = 3",
26-
"structural_reason": "Takum (Hunhold 2024, arXiv:2404.18603) is a tapered LOGARITHMIC format; its decode is not a plain S:E:M field. takum8 and takum16 are promoted to bit-precise (exhaustive 256 / 65536 codes, independent high-precision witness); this wider rung stays structural pending an external libtakum oracle for the full-domain correctly-rounded gap proof.",
27-
"anchor_note": "Anchor identity phi^2 + 1/phi^2 = 3 recorded per shared schema.",
28-
"n_vectors": 0,
29-
"vectors": []
30-
}
26+
"anchor_check": {
27+
"value": null,
28+
"expected": 3.0,
29+
"ieee754_exact": false,
30+
"note": "3.0 is not an exact grid point of this format at this width"
31+
},
32+
"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.",
33+
"vector_mode": "curated_named",
34+
"n_vectors": 15,
35+
"vectors": [
36+
{
37+
"name": "pos_zero",
38+
"input_f64": 0.0,
39+
"input_f64_hex": "0x0000000000000000",
40+
"takum32_bits_hex": "0x00000000",
41+
"takum32_bits_int": 0,
42+
"decoded_f64": 0.0,
43+
"decoded_f64_hex": "0x0000000000000000",
44+
"abs_error": 0.0,
45+
"category": "zero"
46+
},
47+
{
48+
"name": "pos_one",
49+
"input_f64": 1.0,
50+
"input_f64_hex": "0x3FF0000000000000",
51+
"takum32_bits_hex": "0x40000000",
52+
"takum32_bits_int": 1073741824,
53+
"decoded_f64": 1.0,
54+
"decoded_f64_hex": "0x3FF0000000000000",
55+
"abs_error": 0.0,
56+
"category": "normal"
57+
},
58+
{
59+
"name": "neg_one",
60+
"input_f64": -1.0,
61+
"input_f64_hex": "0xBFF0000000000000",
62+
"takum32_bits_hex": "0xC0000000",
63+
"takum32_bits_int": 3221225472,
64+
"decoded_f64": -1.0,
65+
"decoded_f64_hex": "0xBFF0000000000000",
66+
"abs_error": 0.0,
67+
"category": "normal"
68+
},
69+
{
70+
"name": "pos_exp_c2",
71+
"input_f64": 2.718281828459045,
72+
"input_f64_hex": "0x4005BF0A8B145769",
73+
"takum32_bits_hex": "0x4C000000",
74+
"takum32_bits_int": 1275068416,
75+
"decoded_f64": 2.718281828459045,
76+
"decoded_f64_hex": "0x4005BF0A8B145769",
77+
"abs_error": 0.0,
78+
"category": "normal"
79+
},
80+
{
81+
"name": "neg_exp_c2",
82+
"input_f64": -0.36787944117144233,
83+
"input_f64_hex": "0xBFD78B56362CEF38",
84+
"takum32_bits_hex": "0xCC000000",
85+
"takum32_bits_int": 3422552064,
86+
"decoded_f64": -0.36787944117144233,
87+
"decoded_f64_hex": "0xBFD78B56362CEF38",
88+
"abs_error": 0.0,
89+
"category": "normal"
90+
},
91+
{
92+
"name": "pos_exp_c-2",
93+
"input_f64": 0.36787944117144233,
94+
"input_f64_hex": "0x3FD78B56362CEF38",
95+
"takum32_bits_hex": "0x34000000",
96+
"takum32_bits_int": 872415232,
97+
"decoded_f64": 0.36787944117144233,
98+
"decoded_f64_hex": "0x3FD78B56362CEF38",
99+
"abs_error": 0.0,
100+
"category": "normal"
101+
},
102+
{
103+
"name": "neg_exp_c-2",
104+
"input_f64": -2.718281828459045,
105+
"input_f64_hex": "0xC005BF0A8B145769",
106+
"takum32_bits_hex": "0xB4000000",
107+
"takum32_bits_int": 3019898880,
108+
"decoded_f64": -2.718281828459045,
109+
"decoded_f64_hex": "0xC005BF0A8B145769",
110+
"abs_error": 0.0,
111+
"category": "normal"
112+
},
113+
{
114+
"name": "pos_exp_c4",
115+
"input_f64": 7.38905609893065,
116+
"input_f64_hex": "0x401D8E64B8D4DDAE",
117+
"takum32_bits_hex": "0x52000000",
118+
"takum32_bits_int": 1375731712,
119+
"decoded_f64": 7.38905609893065,
120+
"decoded_f64_hex": "0x401D8E64B8D4DDAE",
121+
"abs_error": 0.0,
122+
"category": "normal"
123+
},
124+
{
125+
"name": "neg_exp_c4",
126+
"input_f64": -0.1353352832366127,
127+
"input_f64_hex": "0xBFC152AAA3BF81CC",
128+
"takum32_bits_hex": "0xD2000000",
129+
"takum32_bits_int": 3523215360,
130+
"decoded_f64": -0.1353352832366127,
131+
"decoded_f64_hex": "0xBFC152AAA3BF81CC",
132+
"abs_error": 0.0,
133+
"category": "normal"
134+
},
135+
{
136+
"name": "pos_exp_c-4",
137+
"input_f64": 0.1353352832366127,
138+
"input_f64_hex": "0x3FC152AAA3BF81CC",
139+
"takum32_bits_hex": "0x2E000000",
140+
"takum32_bits_int": 771751936,
141+
"decoded_f64": 0.1353352832366127,
142+
"decoded_f64_hex": "0x3FC152AAA3BF81CC",
143+
"abs_error": 0.0,
144+
"category": "normal"
145+
},
146+
{
147+
"name": "neg_exp_c-4",
148+
"input_f64": -7.38905609893065,
149+
"input_f64_hex": "0xC01D8E64B8D4DDAE",
150+
"takum32_bits_hex": "0xAE000000",
151+
"takum32_bits_int": 2919235584,
152+
"decoded_f64": -7.38905609893065,
153+
"decoded_f64_hex": "0xC01D8E64B8D4DDAE",
154+
"abs_error": 0.0,
155+
"category": "normal"
156+
},
157+
{
158+
"name": "pos_exp_c6",
159+
"input_f64": 20.085536923187668,
160+
"input_f64_hex": "0x403415E5BF6FB106",
161+
"takum32_bits_hex": "0x56000000",
162+
"takum32_bits_int": 1442840576,
163+
"decoded_f64": 20.085536923187668,
164+
"decoded_f64_hex": "0x403415E5BF6FB106",
165+
"abs_error": 0.0,
166+
"category": "normal"
167+
},
168+
{
169+
"name": "neg_exp_c6",
170+
"input_f64": -0.049787068367863944,
171+
"input_f64_hex": "0xBFA97DB0CCCEB0AF",
172+
"takum32_bits_hex": "0xD6000000",
173+
"takum32_bits_int": 3590324224,
174+
"decoded_f64": -0.049787068367863944,
175+
"decoded_f64_hex": "0xBFA97DB0CCCEB0AF",
176+
"abs_error": 0.0,
177+
"category": "normal"
178+
},
179+
{
180+
"name": "pos_exp_c-6",
181+
"input_f64": 0.049787068367863944,
182+
"input_f64_hex": "0x3FA97DB0CCCEB0AF",
183+
"takum32_bits_hex": "0x2A000000",
184+
"takum32_bits_int": 704643072,
185+
"decoded_f64": 0.049787068367863944,
186+
"decoded_f64_hex": "0x3FA97DB0CCCEB0AF",
187+
"abs_error": 0.0,
188+
"category": "normal"
189+
},
190+
{
191+
"name": "neg_exp_c-6",
192+
"input_f64": -20.085536923187668,
193+
"input_f64_hex": "0xC03415E5BF6FB106",
194+
"takum32_bits_hex": "0xAA000000",
195+
"takum32_bits_int": 2852126720,
196+
"decoded_f64": -20.085536923187668,
197+
"decoded_f64_hex": "0xC03415E5BF6FB106",
198+
"abs_error": 0.0,
199+
"category": "normal"
200+
}
201+
]
202+
}

0 commit comments

Comments
 (0)