Rename GF-T to TEF here too, and gate the prefix hazard that cost a spec - #514
Merged
Conversation
These edits were made early in the campaign and never committed; they kept reappearing as dirty files across branch switches. Landing them rather than stashing them away again. GFT16_BEATS_TEKUM16: the accuracy bins were labelled decades when they are powers of two. That is not cosmetic — GF-T16's exponent reaches +/-40 in powers of two, about +/-12 decades, so a reviewer checking the labelled axis finds overflow where the table promises a win and concludes the number was invented. The result is real; the label was not. The competitor is also renamed takum16, since the oracle labelled tekum decodes all 65,536 sixteen-bit codes identically to takum. ARXIV_GFT16_SNIPPET carries the superseded banner it was given when v2 replaced it. The fpga-synth skill absorbs the campaign's synthesis recipes and the trinet skill one cross-reference. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… control The suite that shipped before this campaign checked add/mul commutativity, which is structurally blind to a sign inversion — an inverted sign survives on both sides of a + b == b + a. That is exactly why a sign-placement defect lived in gft_ref for as long as it did. Round-trip catches that class; the other five catch its neighbours: monotonicity of the encoding, +/- symmetry, both ends of the finite range, zero, and the ladder's width rule 1 + E_t + M = N. Nine rungs, GF-T4 through GF-T1024, 600 probes each drawn inside the rung's own range and finer than its mantissa. All pass. The checks assert rather than print, and I verified they can fail rather than trusting that they would. Patching the oracle to invert the sign trips "sign flipped"; patching it to lose zero trips "zero lost"; passing GF-T16 the old M = 9 trips "1 + 4 + 9 != 16". A test that has never been seen red is not evidence. Picked up automatically by run_selftests.py: 21 passed, 0 failed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
t27 is the source of truth and now names the ladder TEF -- Ternary-Exponent
Float. This repository still said GF-T in the oracle, the RTL, the tests and the
paper, so it disagreed with the canon on the format's own name.
Renamed by explicit list rather than by glob, because a glob is what caused the
damage. `ls conformance/gft*.py` matches gfternary_ref.py, and in t27 the same
shape of command deleted specs/numeric/gfternary.t27 outright -- 384 lines of a
2-bit {-phi, 0, +phi} alphabet that is not a float at all and merely shares a
prefix.
conformance/gft_ref.py -> tef_ref.py
conformance/gft16_ref.py -> tef16_ref.py
conformance/gft_ref_roundtrip_test.py -> tef_ref_roundtrip_test.py
conformance/gft_ladder_invariants_test.py-> tef_ladder_invariants_test.py
fpga/gft/ -> fpga/tef/
research/arxiv_gft/ -> research/arxiv_tef/
GFTFormat -> TEFFormat
gfternary_ref.py, gf_ref.py and gf_mx_ref.py are untouched; verified by grepping
for corrupted mentions afterwards rather than by intending not to touch them.
The paper carries the decision from t27#2005 as well as the name. TEF16 is
M = 11: the design-space section no longer says the two positions are unallocated
and the decision deferred, it says where they went and why. They went to mantissa
because Corollary "the pair" forbids recommending a budget without naming a
workload, so we named one -- quantised-inference tensors span roughly 2^-14 to
2^14, E_t = 4 already clips nothing at +/-40 binades, and E_t = 6 would have
bought +/-364 at bit-identical error. Error falls by exactly 4.00 and the rung
stops losing the near bin: 3.70x / 11.37x / 22.28x against takum16.
The title changes with the name. "Ternary Floats" claimed the thing the paper's
own corollary refutes -- this is a binary-radix float whose exponent is ENCODED in
balanced ternary, and a genuine ternary-radix float measures 0.331 positions per
number worse. It is now "Ternary-Exponent Floats: a fixed-field ladder with no
regime to decode".
conformance/check_oracle_integrity.py is the gate: the three prefix-sharing
oracles must each be present, and every local _ref import must resolve. Verified
red by removing gfternary_ref.py and green again when restored.
Oracle self-tests 20 passed 0 failed; ladder invariants pass on all nine rungs;
the paper builds at 19 theorems.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ifted gen_figures.py transcribed its accuracy numbers by hand and they went stale: the figure still carried TEF16 at M = 9 and the label "tekum16" long after the rung moved to M = 11 and that oracle was shown to decode all 65,536 sixteen-bit codes identically to takum. So the figure disagreed with the table it illustrates, which is the same defect class as a gate that cannot go red -- a number nobody rechecks. It now derives the bins from tef_ref, takum_ref and gf_ref directly at a named seed, and annotates the ratios it computed rather than ratios written beside them. The ladder figure gains TEF64 at 7,479 LUTs and 48.20 MHz, which had been measured but never plotted. That changed three numbers, because the figure's seed and the table's were different and the ratios are sampled: 11.37x and 22.28x become 11.21x and 22.68x. Rather than pick whichever I preferred, the paper now names gen_figures.py at seed 20260809 as the single source for all three and says so in the text, so the figure and the table cannot drift apart again. Paper builds at 19 theorems. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
t27 is the source of truth and now names the ladder TEF — Ternary-Exponent Float (t27#2008, merged). This repository still said GF-T in the oracle, the RTL, the tests and the paper.
Renamed by explicit list, not by glob
A glob is what caused the damage.
ls conformance/gft*.pymatchesgfternary_ref.py, and in t27 the same shape of command deletedspecs/numeric/gfternary.t27outright — 384 lines of a 2-bit {−φ, 0, +φ} alphabet that is not a float at all and merely shares a prefix.conformance/gft_ref.pytef_ref.pyconformance/gft16_ref.pytef16_ref.pyconformance/gft_ref_roundtrip_test.pytef_ref_roundtrip_test.pyconformance/gft_ladder_invariants_test.pytef_ladder_invariants_test.pyfpga/gft/fpga/tef/research/arxiv_gft/research/arxiv_tef/GFTFormatTEFFormatgfternary_ref.py,gf_ref.pyandgf_mx_ref.pyare untouched — verified by grepping for corrupted mentions afterwards, not by intending not to touch them.The paper carries the decision, not just the name
TEF16 is M = 11. The design-space section no longer says the two positions are unallocated and the decision deferred; it says where they went and why.
They went to mantissa because the corollary forbids recommending a budget without naming a workload — so we named one. Quantised-inference tensors span roughly
2^-14to2^14,E_t = 4already clips nothing at ±40 binades (0 clips in 2000 values), andE_t = 6would have bought ±364 binades at bit-identical error.Error falls by exactly 4.00, and the rung stops losing the near bin: 3.70× / 11.37× / 22.28× against takum16.
The title changes with the name
"Ternary Floats" claimed the thing the paper's own corollary refutes. This is a binary-radix float whose exponent is encoded in balanced ternary, and a genuine ternary-radix float measures 0.331 positions per number worse.
The gate
conformance/check_oracle_integrity.py— the three prefix-sharing oracles must each be present, and every local_refimport must resolve. Verified red by removinggfternary_ref.py, green again when restored.Verification
🤖 Generated with Claude Code