Repository navigation
Conversation
nbecker
force-pushed
the
feat/rate-change-fir
branch
from
September 30, 2026 13:55
6a70d71 to
a89f65f
Compare
added 3 commits
October 9, 2026 13:08
Signed-off-by: Neal Becker <neal.becker@hughes.com>
Signed-off-by: Neal Becker <neal.becker@hughes.com>
Signed-off-by: Neal Becker <neal.becker@hughes.com>
nbecker
force-pushed
the
feat/rate-change-fir
branch
from
October 9, 2026 17:09
a89f65f to
5630d5d
Compare
This branch has not been deployed
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.
Applying the existing upsample/filter/downsample chain computes inserted zeros and discarded output phases. This adds
InterpolatingFIRandDecimatingFIR, using transposed and strided convolutions, and a composingUpFirDnblock.The blocks process consecutive chunks as one stream: concatenated call outputs match a single call on the whole input, without flushing between chunks. Interpolation emits
N*Lsamples per call and retains the FIR overlap. Decimation retains input history, decimation phase, and an optional output quota.flush()returns the final tail and resets the stream. Including that tail gives the same result as the existing full-convolution chain.The public exports and API documentation include all three blocks. Tests cover numerical equivalence, uneven and single-sample chunks, decimation offsets, output limits, and reset behavior.
Validation
pytest -q test/unit/signal/test_rate_change_fir.py test/unit/signal/test_upsampling.py test/unit/signal/test_downsampling.py test/unit/signal/test_filter.py --device=cpu259 passed, plus 18 phase subtests.
pytest -s -q test/benchmarks/test_rate_change_fir_benchmark.py --device=cpu1 passed. On one CPU run with batch 32, length 2048, factor 4, and 33 taps, interpolation measured 2.38x faster and decimation 2.10x faster, including
flush(). The benchmark is opt-in and has no timing threshold because results depend on hardware and input shape.LLM assistance
The implementation, tests, and benchmark scripts were written with the assistance of an LLM. I reviewed these files and found no obvious third-party copied code blocks or third-party attribution notices beyond the project license headers.