Measured intermediate ladder, every doubling from 16K to 4M taps.
These are measured results for 4,194,304 filter taps with 8,388,608-point FFTs.
One white-noise signal (seed 741) and one boundary-aligned sequence of impulses and decaying oscillations. Each input has 8,388,610 samples, spanning two hops; full convolution has 12,582,913 output samples. Hop length 4,194,305. Both overlap-add and overlap-save are measured at 53,113 and 256 significant bits: 12 cases in total.
Measured peak absolute sample errors.
Each value is max(abs(computed output − exact integer reference)) over all 12,582,913 samples of that case.
| Arithmetic | White OLA | White OLS | Transients OLA | Transients OLS |
|---|---|---|---|---|
| MATLAB IEEE64 | 4.4409e-16 | 4.4409e-16 | 5.5511e-17 | 5.5511e-17 |
| Advanpix IEEE128 (113 bits) | 4.8148e-34 | 5.0556e-34 | 9.6296e-35 | 9.6296e-35 |
| Advanpix 256-bit mantissa | 4.7499e-77 | 4.7499e-77 | 1.0795e-77 | 1.4574e-77 |
Measured dB and bit values.
Peak/peak divides maximum absolute error by the reference signal peak. Peak/RMS divides it by the reference signal RMS. RMS/RMS divides error RMS by signal RMS. Transient silence changes signal RMS, so these denominators must not be interchanged.
| Arithmetic | Input | Method | Peak/peak dB | Peak/RMS dB | RMS/RMS dB | Peak-normalized bit loss | RMS bit loss |
|---|---|---|---|---|---|---|---|
| MATLAB IEEE64 | noise | Overlap-add | -303.04 | -288.65 | -304.35 | 2.665 | 2.449 |
| MATLAB IEEE64 | noise | Overlap-save | -303.04 | -288.65 | -304.36 | 2.665 | 2.447 |
| MATLAB IEEE64 | transient | Overlap-add | -315.52 | -256.05 | -307.43 | 0.594 | 1.937 |
| MATLAB IEEE64 | transient | Overlap-save | -315.52 | -256.05 | -307.06 | 0.594 | 1.998 |
| Advanpix IEEE128 (113 bits) | noise | Overlap-add | -662.34 | -647.94 | -663.88 | 2.987 | 2.731 |
| Advanpix IEEE128 (113 bits) | noise | Overlap-save | -661.92 | -647.52 | -663.89 | 3.058 | 2.730 |
| Advanpix IEEE128 (113 bits) | transient | Overlap-add | -670.73 | -611.27 | -667.18 | 1.594 | 2.184 |
| Advanpix IEEE128 (113 bits) | transient | Overlap-save | -670.73 | -611.27 | -666.67 | 1.594 | 2.269 |
| Advanpix 256-bit mantissa | noise | Overlap-add | -1522.46 | -1508.06 | -1524.00 | 3.125 | 2.870 |
| Advanpix 256-bit mantissa | noise | Overlap-save | -1522.46 | -1508.06 | -1524.00 | 3.125 | 2.869 |
| Advanpix 256-bit mantissa | transient | Overlap-add | -1529.74 | -1470.28 | -1527.29 | 1.915 | 2.322 |
| Advanpix 256-bit mantissa | transient | Overlap-save | -1527.13 | -1467.67 | -1526.54 | 2.348 | 2.448 |
Bits lost = p + error_dB/(20log10(2)), using the stated error normalization. This is numerical error relative to the signal, not converter ENOB or a guarantee for every input. The observed peak is a maximum in these test signals, not a proven worst-case bound.
Exact reference and validation.
The 4M-tap Hann-windowed sinc filter has cutoff 0.13 cycles/sample. Advanpix generates it at both 113 and 256 significant bits; both produce identical stored Q1.31 coefficients. Inputs use Q1.23. This excludes shared input/coefficient quantization and final output quantization from the arithmetic-error measurement.
The reference uses GMP 6.3.0 through gmpy2 2.3.1 to multiply packed integer polynomials exactly. Digit width prevents coefficient carries. Offset terms are removed modulo 2^64; a proved signed64 absolute-partial-sum bound uniquely recovers each true coefficient. No floating-point convolution provides the reference. Results are scaled by 2^-54 only after exact integer computation.
The exact reference is verified independently at selected boundary and random samples using direct integer dot products. The complete transient output also agrees, sample for sample, with a separate sparse direct integer convolution.
Output errors are calculated in chunks after promoting both the computed output and exact integer reference to 665-bit precision. Overlap-add sums remain at the tested precision. Overlap-save excludes discarded samples and checks every valid sample, including the final tail.
Test environment and timing.
The table separates block-filtering time from filtering plus high-precision error analysis. The filter spectrum is reused across the four signal/method combinations at each precision.
| Arithmetic | Input | Method | Block filtering (s) | Filtering plus error analysis (s) |
|---|---|---|---|---|
| MATLAB IEEE64 | noise | Overlap-add | 0.84 | 34.44 |
| MATLAB IEEE64 | noise | Overlap-save | 1.37 | 36.77 |
| MATLAB IEEE64 | transient | Overlap-add | 1.17 | 43.17 |
| MATLAB IEEE64 | transient | Overlap-save | 1.47 | 44.83 |
| Advanpix IEEE128 (113 bits) | noise | Overlap-add | 17.42 | 54.44 |
| Advanpix IEEE128 (113 bits) | noise | Overlap-save | 19.87 | 54.88 |
| Advanpix IEEE128 (113 bits) | transient | Overlap-add | 12.76 | 87.08 |
| Advanpix IEEE128 (113 bits) | transient | Overlap-save | 42.94 | 191.22 |
| Advanpix 256-bit mantissa | noise | Overlap-add | 89.11 | 131.04 |
| Advanpix 256-bit mantissa | noise | Overlap-save | 75.08 | 113.45 |
| Advanpix 256-bit mantissa | transient | Overlap-add | 45.62 | 77.50 |
| Advanpix 256-bit mantissa | transient | Overlap-save | 62.51 | 94.57 |
Timings exclude filter-spectrum construction, MATLAB startup and exact-reference preparation. Test environment: MATLAB R2020b Update 2 and Advanpix 5.1.0.15432, with zero guard digits and eight configured Advanpix threads.
These measurements isolate arithmetic error in the stated FIR filter, signals and block-processing methods.