|
numerics
|
std::experimental::simd butterfly for FFT. More...
Go to the source code of this file.
std::experimental::simd butterfly for FFT.
Uses the portable C++ SIMD abstraction (<experimental/simd>, GCC 11+). On AVX2 platforms vd::size() == 4 (4 doubles/register), on NEON == 2.
The gather uses the generator-lambda constructor: simd<double, abi> ur([](int k){ return a[j+k].real(); }); which the compiler maps to SIMD gather instructions when possible.
The scatter-store back to AoS is the main cost difference vs. the handwritten backend – the element-wise write loop is the comparison point.
Only compiled when NUMERICS_HAS_STD_SIMD is defined.
Definition in file impl.hpp.