| Description: | PocketFFT for C++
=================
This is a heavily modified implementation of FFTPack [1,2], with the following
advantages:
- Strictly C++11 compliant
- More accurate twiddle factor computation
- Worst case complexity for transform sizes with large prime factors is
`N*log(N)`, because Bluestein's algorithm [3] is used for these cases.
- Supports multidimensional arrays and selection of the axes to be transformed.
- Supports `float`, `double`, and `long double` types.
- Supports fully complex and half-complex (i.e. complex-to-real and
real-to-complex) FFTs. For half-complex transforms, several conventions for
representing the complex-valued side are supported (reduced-size complex
array, FFTPACK-style half-complex format and Hartley transform).
- Supports discrete cosine and sine transforms (Types I-IV)
- Makes use of CPU vector instructions when performing 2D and higher-dimensional
transforms, if they are available.
- Has a small internal cache for transform plans, which speeds up repeated
transforms of the same length (most significant for 1D transforms).
- Has optional multi-threading support for multidimensional transforms |