Skip to main content

Module gen_any

Module gen_any 

Source
Expand description

Dispatch-layer codelet generation for arbitrary user-specified sizes.

Routes a user-specified FFT size N to the most appropriate code emitter:

  • Direct codelet set {2, 4, 8, 16, 32, 64}: delegates to the existing hand-optimised emitters (gen_notw).
  • Winograd odd {3, 5, 7}: delegates to gen_odd.
  • Rader hardcoded {11, 13}: delegates to gen_rader.
  • Smooth-7 composites (all prime factors in {2, 3, 5, 7}): emits a thin runtime wrapper that delegates to Plan::dft_1d.
  • Primes p <= 1021: runtime wrapper (runtime Rader/Generic path).
  • Everything else (large primes, non-smooth composites): emits a Bluestein runtime wrapper via Plan::dft_1d.

§Codelet convention

All generated functions follow the existing OxiFFT codelet convention:

pub fn codelet_any_{N}<T: crate::kernel::Float>(
    x: &mut [crate::kernel::Complex<T>],
    sign: i32,
)

where sign < 0 means forward (W = e^{-2pii/N}) and sign > 0 means inverse.

See Plan::dft_1d in the oxifft crate for the primary entry point.

Structs§

CodeletBuilder
Builder for programmatic codelet generation without proc-macros.

Enums§

CodegenError
Error variants produced during any-size codelet generation.
SizeClass
Classification of an FFT size for codelet routing.

Functions§

classify
Classify n for codelet generation.
generate
Generate a codelet TokenStream for size n.
generate_from_macro
Parse gen_any_codelet!(N) input and dispatch.