Every point is an actual measurement. The FFT is twice the filter length: 32K to 8M FFT points. K = 1,024; M = 1,048,576.
Nine filter sizes, three precisions, two signals and two overlap methods give 108 cases. MATLAB uses 53 significant bits; Advanpix uses 113 and 256 significant bits with zero guard digits.
Each size uses the same filter design (DC-normalized Hann-windowed sinc, cutoff 0.13 cycles/sample), stored Q1.31 coefficients, Q1.23 inputs, white-noise seed 741, and the same rule for positioning the transient sequence around block boundaries. The filter and signal lengths grow with the test. Each input spans two hops; all 3 × taps + 1 output samples, including the tail, are checked.
Peak error in bits.
Peak error means the largest absolute sample difference divided by the exact reference signal peak. Equivalent bits lost = p + 20 log10(error ratio) / 6.020599913. These are numerical error ratios, not converter ENOB or a guaranteed worst-case bound.
The summary tables show the larger observed peak error from overlap-add and overlap-save at each size. The full tables below list both methods separately.
White noise.
| Filter taps | FFT points | IEEE64 | IEEE128 | 256-bit mantissa |
|---|---|---|---|---|
| 16K | 32K | 2.519 | 2.519 | 2.256 |
| 32K | 64K | 2.518 | 2.741 | 2.255 |
| 64K | 128K | 2.426 | 2.649 | 2.163 |
| 128K | 256K | 2.650 | 2.843 | 2.235 |
| 256K | 512K | 2.606 | 2.799 | 2.606 |
| 512K | 1M | 2.781 | 2.951 | 3.103 |
| 1M | 2M | 2.705 | 2.875 | 3.027 |
| 2M | 4M | 2.704 | 3.026 | 3.026 |
| 4M | 8M | 2.665 | 3.058 | 3.125 |
Transient sequence.
| Filter taps | FFT points | IEEE64 | IEEE128 | 256-bit mantissa |
|---|---|---|---|---|
| 16K | 32K | 0.594 | 1.594 | 0.594 |
| 32K | 64K | 0.594 | 1.294 | 0.594 |
| 64K | 128K | 1.594 | 1.594 | 1.178 |
| 128K | 256K | 0.594 | 1.763 | -0.247 |
| 256K | 512K | 1.178 | 1.294 | 1.594 |
| 512K | 1M | 0.594 | 2.237 | 2.594 |
| 1M | 2M | 0.594 | 1.594 | 2.178 |
| 2M | 4M | 0.594 | 1.915 | 2.294 |
| 4M | 8M | 0.594 | 1.594 | 2.348 |
What the intermediate measurements show.
For 256-bit white-noise convolution, RMS error rises by 3.02 dB with overlap-add and 3.02 dB with overlap-save between 256K and 512K taps. The growth is not described by a single smooth logarithmic curve over this range. This experiment does not isolate the cause: FFT size, stored filter and signal length change together.
The largest observed peak-relative loss anywhere in this ladder is 3.125 bits. Peak errors can stay unchanged or decrease at the next size; they are maxima of particular output sequences, not a monotonic error bound. These results apply to the specified stored filter and signals.
The vertical axes show bits lost from each arithmetic type's own working precision. Equal heights therefore do not mean equal absolute errors. A negative loss means the measured error ratio is below 2^-p for that particular case; floating-point precision is not an absolute error floor, and this does not mean the arithmetic acquired extra working bits. Lines connect measured sizes and do not imply measurements between them.
Full measured values.
RMS/RMS uses error RMS divided by reference RMS. Peak/peak uses maximum absolute error divided by reference peak. Peak/RMS uses maximum absolute error divided by reference RMS. These normalizations must not be interchanged, particularly for a sparse transient sequence.
IEEE64 / 53 significant bits.
| Taps | Signal | Method | Peak absolute error | Peak/peak dB | Peak/RMS dB | RMS/RMS dB |
|---|---|---|---|---|---|---|
| 16K | noise | Overlap-add | 2.775558e-16 | -305.510 | -292.639 | -306.747 |
| 16K | noise | Overlap-save | 3.330669e-16 | -303.926 | -291.055 | -306.835 |
| 16K | transient | Overlap-add | 5.551115e-17 | -315.518 | -280.135 | -309.618 |
| 16K | transient | Overlap-save | 5.551115e-17 | -315.518 | -280.135 | -309.653 |
| 32K | noise | Overlap-add | 3.330669e-16 | -303.930 | -291.095 | -306.148 |
| 32K | noise | Overlap-save | 3.330669e-16 | -303.930 | -291.095 | -306.183 |
| 32K | transient | Overlap-add | 5.551115e-17 | -315.518 | -277.125 | -308.633 |
| 32K | transient | Overlap-save | 5.551115e-17 | -315.518 | -277.125 | -308.342 |
| 64K | noise | Overlap-add | 2.844947e-16 | -305.852 | -292.467 | -306.118 |
| 64K | noise | Overlap-save | 3.330669e-16 | -304.483 | -291.098 | -306.144 |
| 64K | transient | Overlap-add | 4.163336e-17 | -318.017 | -276.614 | -308.975 |
| 64K | transient | Overlap-save | 1.110223e-16 | -309.498 | -268.094 | -308.429 |
| 128K | noise | Overlap-add | 3.885781e-16 | -303.138 | -289.780 | -305.665 |
| 128K | noise | Overlap-save | 3.330669e-16 | -304.477 | -291.119 | -305.673 |
| 128K | transient | Overlap-add | 5.551115e-17 | -315.518 | -271.105 | -308.508 |
| 128K | transient | Overlap-save | 5.551115e-17 | -315.518 | -271.105 | -308.489 |
| 256K | noise | Overlap-add | 3.885781e-16 | -303.399 | -289.790 | -305.466 |
| 256K | noise | Overlap-save | 3.885781e-16 | -303.399 | -289.790 | -305.467 |
| 256K | transient | Overlap-add | 5.551115e-17 | -315.518 | -268.095 | -308.092 |
| 256K | transient | Overlap-save | 8.326673e-17 | -311.997 | -264.573 | -308.068 |
| 512K | noise | Overlap-add | 4.440892e-16 | -302.346 | -288.634 | -305.039 |
| 512K | noise | Overlap-save | 3.885781e-16 | -303.505 | -289.794 | -305.057 |
| 512K | transient | Overlap-add | 5.551115e-17 | -315.518 | -265.084 | -308.140 |
| 512K | transient | Overlap-save | 5.551115e-17 | -315.518 | -265.084 | -307.819 |
| 1.0M | noise | Overlap-add | 3.920475e-16 | -303.890 | -289.719 | -304.849 |
| 1.0M | noise | Overlap-save | 4.440892e-16 | -302.808 | -288.637 | -304.876 |
| 1.0M | transient | Overlap-add | 5.551115e-17 | -315.518 | -262.074 | -307.634 |
| 1.0M | transient | Overlap-save | 5.551115e-17 | -315.518 | -262.074 | -307.587 |
| 2.0M | noise | Overlap-add | 4.440892e-16 | -302.809 | -288.647 | -304.622 |
| 2.0M | noise | Overlap-save | 4.440892e-16 | -302.809 | -288.647 | -304.633 |
| 2.0M | transient | Overlap-add | 5.551115e-17 | -315.518 | -259.064 | -307.378 |
| 2.0M | transient | Overlap-save | 5.551115e-17 | -315.518 | -259.064 | -307.091 |
| 4.0M | noise | Overlap-add | 4.440892e-16 | -303.044 | -288.646 | -304.346 |
| 4.0M | noise | Overlap-save | 4.440892e-16 | -303.044 | -288.646 | -304.361 |
| 4.0M | transient | Overlap-add | 5.551115e-17 | -315.518 | -256.053 | -307.430 |
| 4.0M | transient | Overlap-save | 5.551115e-17 | -315.518 | -256.053 | -307.063 |
Advanpix IEEE128 / 113 significant bits.
| Taps | Signal | Method | Peak absolute error | Peak/peak dB | Peak/RMS dB | RMS/RMS dB |
|---|---|---|---|---|---|---|
| 16K | noise | Overlap-add | 2.888895e-34 | -665.162 | -652.291 | -666.648 |
| 16K | noise | Overlap-save | 2.888895e-34 | -665.162 | -652.291 | -666.655 |
| 16K | transient | Overlap-add | 4.814825e-35 | -676.754 | -641.371 | -669.347 |
| 16K | transient | Overlap-save | 9.629650e-35 | -670.734 | -635.351 | -669.011 |
| 32K | noise | Overlap-add | 2.888895e-34 | -665.166 | -652.331 | -666.076 |
| 32K | noise | Overlap-save | 3.370377e-34 | -663.827 | -650.992 | -666.052 |
| 32K | transient | Overlap-add | 4.814825e-35 | -676.754 | -638.361 | -669.253 |
| 32K | transient | Overlap-save | 7.824090e-35 | -672.537 | -634.144 | -668.636 |
| 64K | noise | Overlap-add | 3.370377e-34 | -664.380 | -650.995 | -665.752 |
| 64K | noise | Overlap-save | 3.370377e-34 | -664.380 | -650.995 | -665.743 |
| 64K | transient | Overlap-add | 4.814825e-35 | -676.754 | -635.351 | -668.737 |
| 64K | transient | Overlap-save | 9.629650e-35 | -670.734 | -629.330 | -668.029 |
| 128K | noise | Overlap-add | 3.851860e-34 | -663.214 | -649.856 | -665.278 |
| 128K | noise | Overlap-save | 3.851860e-34 | -663.214 | -649.856 | -665.293 |
| 128K | transient | Overlap-add | 9.629650e-35 | -670.734 | -626.320 | -668.326 |
| 128K | transient | Overlap-save | 1.083336e-34 | -669.711 | -625.297 | -667.967 |
| 256K | noise | Overlap-add | 3.851860e-34 | -663.475 | -649.866 | -665.197 |
| 256K | noise | Overlap-save | 3.851860e-34 | -663.475 | -649.866 | -665.198 |
| 256K | transient | Overlap-add | 7.824090e-35 | -672.537 | -625.113 | -668.343 |
| 256K | transient | Overlap-save | 7.222237e-35 | -673.233 | -625.809 | -667.920 |
| 512K | noise | Overlap-add | 4.333342e-34 | -662.559 | -648.847 | -664.648 |
| 512K | noise | Overlap-save | 3.851860e-34 | -663.582 | -649.870 | -664.668 |
| 512K | transient | Overlap-add | 7.222237e-35 | -673.233 | -622.798 | -667.947 |
| 512K | transient | Overlap-save | 1.504633e-34 | -666.857 | -616.423 | -666.923 |
| 1.0M | noise | Overlap-add | 4.333342e-34 | -663.021 | -648.850 | -664.457 |
| 1.0M | noise | Overlap-save | 4.092601e-34 | -663.517 | -649.346 | -664.478 |
| 1.0M | transient | Overlap-add | 7.222237e-35 | -673.233 | -619.788 | -667.677 |
| 1.0M | transient | Overlap-save | 9.629650e-35 | -670.734 | -617.289 | -667.180 |
| 2.0M | noise | Overlap-add | 4.814825e-34 | -662.107 | -647.945 | -663.900 |
| 2.0M | noise | Overlap-save | 4.814825e-34 | -662.107 | -647.945 | -663.916 |
| 2.0M | transient | Overlap-add | 1.083336e-34 | -669.711 | -613.256 | -667.250 |
| 2.0M | transient | Overlap-save | 1.203706e-34 | -668.796 | -612.341 | -666.457 |
| 4.0M | noise | Overlap-add | 4.814825e-34 | -662.342 | -647.943 | -663.884 |
| 4.0M | noise | Overlap-save | 5.055566e-34 | -661.918 | -647.520 | -663.894 |
| 4.0M | transient | Overlap-add | 9.629650e-35 | -670.734 | -611.269 | -667.182 |
| 4.0M | transient | Overlap-save | 9.629650e-35 | -670.734 | -611.269 | -666.667 |
Advanpix / 256-bit mantissa.
| Taps | Signal | Method | Peak absolute error | Peak/peak dB | Peak/RMS dB | RMS/RMS dB |
|---|---|---|---|---|---|---|
| 16K | noise | Overlap-add | 1.916150e-77 | -1528.728 | -1515.857 | -1530.301 |
| 16K | noise | Overlap-save | 2.159042e-77 | -1527.691 | -1514.821 | -1530.336 |
| 16K | transient | Overlap-add | 4.147564e-78 | -1538.050 | -1502.667 | -1532.810 |
| 16K | transient | Overlap-save | 4.318084e-78 | -1537.700 | -1502.317 | -1533.156 |
| 32K | noise | Overlap-add | 1.997114e-77 | -1528.373 | -1515.538 | -1529.962 |
| 32K | noise | Overlap-save | 2.159042e-77 | -1527.696 | -1514.860 | -1529.999 |
| 32K | transient | Overlap-add | 2.159042e-78 | -1543.721 | -1505.328 | -1532.512 |
| 32K | transient | Overlap-save | 4.318084e-78 | -1537.700 | -1499.307 | -1532.686 |
| 64K | noise | Overlap-add | 2.159042e-77 | -1528.249 | -1514.863 | -1529.542 |
| 64K | noise | Overlap-save | 2.159042e-77 | -1528.249 | -1514.863 | -1529.548 |
| 64K | transient | Overlap-add | 5.516834e-78 | -1535.572 | -1494.169 | -1532.094 |
| 64K | transient | Overlap-save | 6.477126e-78 | -1534.178 | -1492.775 | -1531.844 |
| 128K | noise | Overlap-add | 2.159042e-77 | -1528.242 | -1514.885 | -1529.425 |
| 128K | noise | Overlap-save | 2.266994e-77 | -1527.818 | -1514.461 | -1529.457 |
| 128K | transient | Overlap-add | 2.410927e-78 | -1542.762 | -1498.349 | -1532.079 |
| 128K | transient | Overlap-save | 2.159042e-78 | -1543.721 | -1499.307 | -1532.263 |
| 256K | noise | Overlap-add | 3.022659e-77 | -1525.581 | -1511.972 | -1527.505 |
| 256K | noise | Overlap-save | 3.022659e-77 | -1525.581 | -1511.972 | -1527.526 |
| 256K | transient | Overlap-add | 4.318084e-78 | -1537.700 | -1490.276 | -1530.107 |
| 256K | transient | Overlap-save | 8.636169e-78 | -1531.680 | -1484.256 | -1529.533 |
| 512K | noise | Overlap-add | 4.318084e-77 | -1522.589 | -1508.877 | -1524.486 |
| 512K | noise | Overlap-save | 3.886276e-77 | -1523.504 | -1509.793 | -1524.506 |
| 512K | transient | Overlap-add | 1.079521e-77 | -1529.741 | -1479.307 | -1527.890 |
| 512K | transient | Overlap-save | 1.727234e-77 | -1525.659 | -1475.225 | -1526.343 |
| 1.0M | noise | Overlap-add | 4.318084e-77 | -1523.051 | -1508.880 | -1524.510 |
| 1.0M | noise | Overlap-save | 4.318084e-77 | -1523.051 | -1508.880 | -1524.522 |
| 1.0M | transient | Overlap-add | 1.079521e-77 | -1529.741 | -1476.297 | -1527.892 |
| 1.0M | transient | Overlap-save | 1.295425e-77 | -1528.158 | -1474.713 | -1526.793 |
| 2.0M | noise | Overlap-add | 4.318084e-77 | -1523.053 | -1508.890 | -1524.212 |
| 2.0M | noise | Overlap-save | 4.318084e-77 | -1523.053 | -1508.890 | -1524.213 |
| 2.0M | transient | Overlap-add | 9.715690e-78 | -1530.657 | -1474.202 | -1527.736 |
| 2.0M | transient | Overlap-save | 1.403377e-77 | -1527.463 | -1471.008 | -1526.616 |
| 4.0M | noise | Overlap-add | 4.749893e-77 | -1522.460 | -1508.061 | -1523.996 |
| 4.0M | noise | Overlap-save | 4.749893e-77 | -1522.460 | -1508.061 | -1524.002 |
| 4.0M | transient | Overlap-add | 1.079521e-77 | -1529.741 | -1470.276 | -1527.295 |
| 4.0M | transient | Overlap-save | 1.457353e-77 | -1527.135 | -1467.670 | -1526.537 |
Reference and validation.
The reference uses exact integer polynomial convolution. Carry-free packing and signed-64-bit uniqueness bounds preserve every coefficient. Selected boundary and random samples are checked with exact integer dot products; the complete transient reference also agrees with a separate sparse direct integer convolution. Filter coefficients generated at 113 and 256 significant bits agree after Q1.31 quantization at every size.
Each output difference is calculated after promoting the computed output and exact integer reference to 665-bit precision. Overlap-add sums remain at the tested precision. Overlap-save checks retained samples and the final tail. Output counts and error metrics are checked for every case.
The test environment is MATLAB R2020b Update 2 and Advanpix 5.1.0.15432, with eight configured Advanpix threads.
See the actual 4M endpoint report for measured endpoint details and reference validation.
The same filter design, stored-value precision and signal construction are used across all nine lengths, allowing the tables to show how the measured error changes with filter size.