1+ {
2+ "schema" : " t27-conformance/v0.1" ,
3+ "format" : " BFLOAT16" ,
4+ "format_notes" : " 1s8e7m, bias 127, same exponent range as fp32 (top 16 bits of fp32). HAS inf and NaN. Decode exact into f64." ,
5+ "ssot" : " https://github.com/gHashTag/t27/blob/master/conformance/FORMAT-SPEC-001.json" ,
6+ "preprint" : " https://arxiv.org/abs/2606.05017" ,
7+ "anchor_identity" : " phi^2 + 1/phi^2 = 3" ,
8+ "anchor_check" : {
9+ "value" : 3.0 ,
10+ "expected" : 3.0 ,
11+ "ieee754_exact" : true ,
12+ "bf16_bits_hex" : " 0x4040"
13+ },
14+ "issue_6252_note" : " Rounding-error accumulation in depth-31 fused trees. The all-close gap comes from accumulation ORDER, not single-op rounding. The golden_accumulation section gives an f64 golden reference plus sequential vs pairwise bf16 reductions; pairwise reduces the accumulated error. A reproducible all-close test needs (a) a clamped deterministic input set and (b) an f64 golden, both supplied here." ,
15+ "round_trip_policy" : " decode: bf16 bits -> f64 exact. encode: fp32->bf16 round-nearest-ties-even on the 16-bit truncation boundary. abs_error is nonzero only for inputs not representable in bf16 (e.g. 0.1) -- stated honestly, not hidden." ,
16+ "n_vectors" : 8 ,
17+ "vectors" : [
18+ {
19+ "name" : " pos_zero" ,
20+ "input_f64" : 0.0 ,
21+ "input_f64_hex" : " 0x0000000000000000" ,
22+ "bf16_bits_hex" : " 0x0000" ,
23+ "bf16_bits_int" : 0 ,
24+ "decoded_f64" : 0.0 ,
25+ "decoded_f64_hex" : " 0x0000000000000000" ,
26+ "abs_error" : 0.0 ,
27+ "category" : " zero"
28+ },
29+ {
30+ "name" : " pos_one" ,
31+ "input_f64" : 1.0 ,
32+ "input_f64_hex" : " 0x3FF0000000000000" ,
33+ "bf16_bits_hex" : " 0x3F80" ,
34+ "bf16_bits_int" : 16256 ,
35+ "decoded_f64" : 1.0 ,
36+ "decoded_f64_hex" : " 0x3FF0000000000000" ,
37+ "abs_error" : 0.0 ,
38+ "category" : " normal"
39+ },
40+ {
41+ "name" : " neg_one" ,
42+ "input_f64" : -1.0 ,
43+ "input_f64_hex" : " 0xBFF0000000000000" ,
44+ "bf16_bits_hex" : " 0xBF80" ,
45+ "bf16_bits_int" : 49024 ,
46+ "decoded_f64" : -1.0 ,
47+ "decoded_f64_hex" : " 0xBFF0000000000000" ,
48+ "abs_error" : 0.0 ,
49+ "category" : " normal"
50+ },
51+ {
52+ "name" : " pos_two" ,
53+ "input_f64" : 2.0 ,
54+ "input_f64_hex" : " 0x4000000000000000" ,
55+ "bf16_bits_hex" : " 0x4000" ,
56+ "bf16_bits_int" : 16384 ,
57+ "decoded_f64" : 2.0 ,
58+ "decoded_f64_hex" : " 0x4000000000000000" ,
59+ "abs_error" : 0.0 ,
60+ "category" : " normal"
61+ },
62+ {
63+ "name" : " pos_three" ,
64+ "input_f64" : 3.0 ,
65+ "input_f64_hex" : " 0x4008000000000000" ,
66+ "bf16_bits_hex" : " 0x4040" ,
67+ "bf16_bits_int" : 16448 ,
68+ "decoded_f64" : 3.0 ,
69+ "decoded_f64_hex" : " 0x4008000000000000" ,
70+ "abs_error" : 0.0 ,
71+ "category" : " normal"
72+ },
73+ {
74+ "name" : " pos_half" ,
75+ "input_f64" : 0.5 ,
76+ "input_f64_hex" : " 0x3FE0000000000000" ,
77+ "bf16_bits_hex" : " 0x3F00" ,
78+ "bf16_bits_int" : 16128 ,
79+ "decoded_f64" : 0.5 ,
80+ "decoded_f64_hex" : " 0x3FE0000000000000" ,
81+ "abs_error" : 0.0 ,
82+ "category" : " normal"
83+ },
84+ {
85+ "name" : " pos_quarter" ,
86+ "input_f64" : 0.25 ,
87+ "input_f64_hex" : " 0x3FD0000000000000" ,
88+ "bf16_bits_hex" : " 0x3E80" ,
89+ "bf16_bits_int" : 16000 ,
90+ "decoded_f64" : 0.25 ,
91+ "decoded_f64_hex" : " 0x3FD0000000000000" ,
92+ "abs_error" : 0.0 ,
93+ "category" : " normal"
94+ },
95+ {
96+ "name" : " pos_0p1" ,
97+ "input_f64" : 0.1 ,
98+ "input_f64_hex" : " 0x3FB999999999999A" ,
99+ "bf16_bits_hex" : " 0x3DCD" ,
100+ "bf16_bits_int" : 15821 ,
101+ "decoded_f64" : 0.10009765625 ,
102+ "decoded_f64_hex" : " 0x3FB9A00000000000" ,
103+ "abs_error" : 9.765624999999445e-05 ,
104+ "category" : " normal"
105+ }
106+ ],
107+ "golden_accumulation" : [
108+ {
109+ "element_f64" : 0.1 ,
110+ "element_f64_hex" : " 0x3FB999999999999A" ,
111+ "element_bf16_hex" : " 0x3DCD" ,
112+ "n_terms" : 1024 ,
113+ "golden_f64" : 102.4 ,
114+ "golden_f64_hex" : " 0x405999999999999A" ,
115+ "sequential_bf16" : 32.0 ,
116+ "pairwise_bf16" : 102.5 ,
117+ "abs_err_sequential" : 70.4 ,
118+ "abs_err_pairwise" : 0.09999999999999432 ,
119+ "rel_err_sequential" : 0.6875 ,
120+ "rel_err_pairwise" : 0.0009765624999999445 ,
121+ "pairwise_better" : true
122+ },
123+ {
124+ "element_f64" : 3.0 ,
125+ "element_f64_hex" : " 0x4008000000000000" ,
126+ "element_bf16_hex" : " 0x4040" ,
127+ "n_terms" : 1024 ,
128+ "golden_f64" : 3072.0 ,
129+ "golden_f64_hex" : " 0x40A8000000000000" ,
130+ "sequential_bf16" : 1024.0 ,
131+ "pairwise_bf16" : 3072.0 ,
132+ "abs_err_sequential" : 2048.0 ,
133+ "abs_err_pairwise" : 0.0 ,
134+ "rel_err_sequential" : 0.6666666666666666 ,
135+ "rel_err_pairwise" : 0.0 ,
136+ "pairwise_better" : true
137+ },
138+ {
139+ "element_f64" : 0.1 ,
140+ "element_f64_hex" : " 0x3FB999999999999A" ,
141+ "element_bf16_hex" : " 0x3DCD" ,
142+ "n_terms" : 4096 ,
143+ "golden_f64" : 409.6 ,
144+ "golden_f64_hex" : " 0x407999999999999A" ,
145+ "sequential_bf16" : 32.0 ,
146+ "pairwise_bf16" : 410.0 ,
147+ "abs_err_sequential" : 377.6 ,
148+ "abs_err_pairwise" : 0.39999999999997726 ,
149+ "rel_err_sequential" : 0.921875 ,
150+ "rel_err_pairwise" : 0.0009765624999999445 ,
151+ "pairwise_better" : true
152+ },
153+ {
154+ "element_f64" : 0.3333333333333333 ,
155+ "element_f64_hex" : " 0x3FD5555555555555" ,
156+ "element_bf16_hex" : " 0x3EAB" ,
157+ "n_terms" : 2048 ,
158+ "golden_f64" : 682.6666666666666 ,
159+ "golden_f64_hex" : " 0x4085555555555555" ,
160+ "sequential_bf16" : 128.0 ,
161+ "pairwise_bf16" : 684.0 ,
162+ "abs_err_sequential" : 554.6666666666666 ,
163+ "abs_err_pairwise" : 1.3333333333333712 ,
164+ "rel_err_sequential" : 0.8125 ,
165+ "rel_err_pairwise" : 0.0019531250000000555 ,
166+ "pairwise_better" : true
167+ }
168+ ]
169+ }
0 commit comments