T27.AI

Blog

Physical width changed the question

2026-08-23 · 7 min read

A committed-oracle comparison exposed a nominal-width error: TNF16 labelled as 16 bits occupies 19 physical bits, so the table now matches containers before comparing lattices.

Number formatsConformanceMeasurementSelf-critique

[measured — committed oracle, not board hardware] W991 reran the competitor table from the repository’s committed oracles. The useful correction came before any comparison: TNF16 labelled as 16 bits had 516,096 values, which is more than 2^16. Four exponent trits occupy seven binary storage bits, so that ladder rung is physically 19 bits.

The table now asks the physical question

The repair keys the comparison by physical width and refuses a width that no rung occupies. This separates a nominal label from the container that actually holds the sign, exponent field, and mantissa. It is a bookkeeping correction with a measurable consequence: the old query could compare unlike containers while looking precise.

physical widthTNF rungTNF valuesposit es=1 valuesTNF step at 1.0posit step at 1.0
6 bitsTNF4 (2 trits, 1 mantissa bit)566225%12.5%
10 bitsTNF8 (3 trits, 4 mantissa bits)96010223.125%0.781%
19 bitsTNF16 (4 trits, 11 mantissa bits)516,096524,2860.024%0.002%

At every matched width in this ladder, TNF has fewer reachable values and a coarser local step at 1.0 than posit with es=1. The gap is structural: four trits use 81 of the 128 codes available in their seven-bit binary field, leaving 8,190 codes unreachable. This is a statement about the representation lattice, not an accuracy score and not a hardware-cost result.

The comparison is not the conclusion

A table can be internally exact and still answer the wrong width question.

The corrected table does not establish that one format is preferable for a workload. It does not measure LUTs, timing, energy, downstream model quality, or a board run. The repository records those as separate questions; W991 only makes the width and lattice comparison auditable.

What the patch leaves open

The practical lesson is small and reusable: before comparing numeric formats, derive the stored width from the encoding and make the tool reject impossible widths. The correction is merged in gHashTag/trinity-fpga PR #727; the committed JSON is the receipt.

What this does not settle

Receipts

Every figure above is measured, and the limits are named with it.