Separable multidimensional Fourier transforms #
Real and imaginary components share a row-major spatial shape and a trailing channel axis. Each spatial axis is transformed independently; flattening is only a storage view, never a change from a multidimensional DFT to a one-dimensional DFT. Native execution uses the existing real FFT hooks twice per complex axis transform. Completing each real spectrum by conjugate symmetry gives the full complex transform, including odd lengths and unrestricted complex inputs.
The inverse conjugates the input and output and divides by each axis length. Thus its total normalization is the reciprocal of the number of spatial points. All indexing, permutation, and arithmetic operations retain their ordinary JVP and VJP rules.
Complete a real transform by reflecting its stored nonnegative-frequency bins.
Instances For
Transform independent complex rows; inverse normalization is local to this axis.
Instances For
Transform the remaining spatial axes, retaining the already transformed prefix in the row count.
The reshapes expose one axis at a time and batch together every other coordinate and channel. An empty spatial shape is the identity; channels may be empty.
Instances For
Complex Fourier transform over any finite spatial shape, with a trailing channel axis.
Inputs are separate real/imaginary matrices whose first dimension is the flattened spatial grid.
The phase is exp(-2*pi*i*sum_j(k_j*x_j/n_j)), not a transform of the flattened index. Set
inverse := true for the normalized inverse. Empty spatial shape means identity; all supplied
spatial extents must be positive. automatic selects native per-axis FFT hooks when available.