You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Span API support
- Remove auto cast `arr_real` to `arr_cmplx`;
- Add `complex(re)` function;
- Add `span` implementation;
- Return `span` from `slice` function for step=1;
- Remove `base_array` reference from `slice`;
- Check same array by pointer range;
- Simplify cast for `cmplx_t` type;
- Add span iterators;
- Add span api for some functions;
- Add span API for `concatenate`. Empty span support;
- Remove base_array::operator(int i);
- Add non-copy fft solve functions;
- Add CMakePresets.json;
- Remove deprecated;
- Rename `slice_t` to `mut_slice_t`;
- Rename `const_slice_t` to `slice_t`;
- Limit the set of types for base_array<T>;
- Rename `span` to `make_span`;
- Add some `DSPLIB_ASSERT`;
- Fix benchs error;
- Code refactoring;
- Fix CI config;
- Update tests;
The FFT/IFFT calculation table is cached on first run. To eliminate this behavior, you can use the FftPlan object.
94
+
The `FFT` implementation has no radix size limitations.
95
+
It supports power-of-two, prime, and semiprime radices.
96
+
97
+
If your platform has a faster implementation (e.g., `NE10` on `ARM`), you can set the `DSPLIB_EXCLUDE_FFT=ON` option and implement the `fft_plan_c`, `fft_plan_r`, `ifft_plan_c`, and `ifft_plan_r` functions (see the `FFTW` example).
98
+
99
+
The tables for the `FFT` are stored in the `LRU` cache and can be recalculated (if the pipeline uses many different bases). Use the `FftPlan` object to avoid this.
94
100
```cpp
101
+
//FFT fn
95
102
arr_real x = randn(500);
96
-
arr_cmplx y1 = fft(x); //500
97
-
arr_cmplx y2 = fft(x, 1024); //1024
103
+
arr_cmplx y1 = fft(x); // real fft, n=500
104
+
arr_cmplx y2 = fft(x, 1024); // real fft, n=1024, zero padding
0 commit comments