Namespace NumSharp.Fourier
Classes
- PocketFFTComplexPlan
Flexible complex 1-D transform: FFTPACK mixed-radix or Bluestein.
- PocketFFTComplexPlanF
Single-precision flexible complex 1-D transform: FFTPACK mixed-radix or Bluestein.
- PocketFFTPlanCache
Bounded plan cache. Plans are immutable + deterministic, so sharing them across transforms of the same length is safe and reproduces numpy bit-for-bit (only the twiddle setup is saved). Bounded so a program touching many distinct lengths cannot leak.
- PocketFFTPlanCacheF
Bounded single-precision plan cache (companion to PocketFFTPlanCache, with an independent budget so float and double plans never evict one another). Plans are immutable + deterministic, so sharing them is bit-neutral.
- PocketFFTRealPlan
Flexible real 1-D transform: FFTPACK mixed-radix or Bluestein.
- PocketFFTRealPlanF
Single-precision flexible real 1-D transform: FFTPACK mixed-radix or Bluestein.
- PocketFFTUtil
Port of the pocketfft
utilsubset used by 1-D planning (lines 373-431): prime-factor test, cost model and the "good size" search for Bluestein padding.
- SinCos2PiByN
Port of pocketfft's
sincos_2pibyn<T>(lines 299-372) — accurate twiddle factors exp(-2πi·idx/N) via angle reduction into[0,π/4]and a two-level table so only ~2√n trig calls are made. Parity-critical: the recurrence and multiply order are kept exact. Thigh == double for the double engine.
Structs
- Cmplx
Port of pocketfft's
cmplx<T0>for the double engine (T0 == double). The field layout (rtheni) is identical to Complex (real then imaginary), so the two are bit-reinterpretable at the driver boundary. All operators reproduce pocketfft's exact real/imag operation order.
- CmplxF
Port of pocketfft's
cmplx<T0>for the single-precision engine (T0 == float). Field layout (rtheni) is identical to Cmplx and Complex; the driver reinterprets aCmplxF*as an interleavedfloat*for the real-transform packing (mirroring the double engine). All operators reproduce pocketfft's exact real/imag operation order, in float.