|
- package gpudemod
-
- import "testing"
-
- func TestCPUOracleMonolithicVsChunkedPolyphase(t *testing.T) {
- iq := makeDeterministicIQ(120000)
- mk := func() *CPUOracleState {
- taps := makeLowpassTaps(65)
- return &CPUOracleState{
- SignalID: 1,
- ConfigHash: 999,
- NCOPhase: 0,
- Decim: 20,
- PhaseCount: 0,
- NumTaps: 65,
- ShiftedHistory: make([]complex64, 0, 64),
- BaseTaps: taps,
- PolyphaseTaps: BuildPolyphaseTapsPhaseMajor(taps, 20),
- }
- }
- phaseInc := 0.013
- mono := CPUOracleExtractPolyphase(iq, mk(), phaseInc)
- chunked := func() []complex64 {
- state := mk()
- out := make([]complex64, 0)
- chunks := []int{4096, 3000, 8192, 7777, 12000}
- pos := 0
- for _, n := range chunks {
- if pos >= len(iq) {
- break
- }
- end := pos + n
- if end > len(iq) {
- end = len(iq)
- }
- out = append(out, CPUOracleExtractPolyphase(iq[pos:end], state, phaseInc)...)
- pos = end
- }
- if pos < len(iq) {
- out = append(out, CPUOracleExtractPolyphase(iq[pos:], state, phaseInc)...)
- }
- return out
- }()
- requireComplexSlicesClose(t, mono, chunked, 1e-5)
- }
|