Repository navigation
rational: tables mirror-exact from the designer; the stage.h snap removed - #67
Merged
Merged
Conversation
…oved DspTap pinned at tap/DspTap#56: design_nyquist copies its second half from the first after the per-branch normalization, whose mirror branches were summed in opposite orders and could carry gains an ulp apart (equal under glibc, unequal under newlib for the third-band m = 8 design). That was the cause of the 2/3 super_economy Q15 table differing between the host and the Cortex-M legs in #65; the 2^-34 snap that PR added to stage.h is removed, since the ties it made exact are exact by construction now. Every Q15 pin holds. Two Q31 pins move on the host, ↓6 balanced and 3/4 economy: one LSB moves between the members of a mirror pair (branch 0 tap 8 to branch 4 tap 19; row 1 tap 11 to tap 17), the row sums unchanged, the two designs where glibc's mirror gains differed. The tables are the same on the host, the M33 and the M55. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA
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.
What this changes
mainwith nyquist: the two halves of a design bit-identical on every host DspTap#56:design_nyquistcopies its second half from the first after the per-branch normalization, so every design's halves are bit-identical on every host.stage.h: the 2^-34 snap of rational: Q15 mixed ratios going down at a power-of-two row gain #65 is removed (and the<cmath>include it brought). The ties it made exact are exact by construction now.test_fixed_point.cpp: ↓6balancedand 3/4economy.Why
#65 found the 2/3
super_economyQ15 table differing between the host and the Cortex-M legs and worked around it with a snap, leaving the cause as a finding. The cause is in the designer, not the quantizer:nyquist.hsummed branch j and its mirror branch in opposite orders, so their gains could differ by an ulp (equal under glibc, unequal under newlib for that design), and a mirrored pair that lands in one quantized row tied only by luck. DspTap#56 fixes it at the root; this PR takes the pin and drops the mitigation.Verification
balanced: branch 0 tap 8 → branch 4 tap 19; 3/4economy: row 1 tap 11 → tap 17), verified by dumping both tables against the old and new DspTap. These are the two designs where glibc's mirror gains had differed.bench/moves.Notes for the reviewer
main(ef6fdc4), the identical tree to rational M1: the skeleton, ratio<L, M> and the stage design #56's head.🤖 Generated with Claude Code
https://claude.ai/code/session_015VR1VC4SDGxHZQQsQvPBaA
Generated by Claude Code