Skip to main content

ferray_fft/
lib.rs

1// ferray-fft: Complete numpy.fft parity with plan caching
2//
3//! FFT operations for the ferray numeric computing library.
4//!
5//! This crate provides the full `numpy.fft` surface:
6//!
7//! - **Complex FFTs**: [`fft`], [`ifft`], [`fft2`], [`ifft2`], [`fftn`], [`ifftn`]
8//! - **Real FFTs**: [`rfft`], [`irfft`], [`rfft2`], [`irfft2`], [`rfftn`], [`irfftn`]
9//! - **Hermitian FFTs**: [`hfft`], [`ihfft`]
10//! - **Frequency utilities**: [`fftfreq`], [`rfftfreq`]
11//! - **Shift utilities**: [`fftshift`], [`ifftshift`]
12//! - **Plan caching**: [`FftPlan`] for efficient repeated transforms
13//! - **Normalization**: [`FftNorm`] enum matching NumPy's `norm` parameter
14//!
15//! Internally powered by [`rustfft`](https://crates.io/crates/rustfft) with
16//! automatic plan caching for repeated transforms of the same size.
17
18pub mod complex;
19pub mod freq;
20pub mod hermitian;
21mod nd;
22pub mod norm;
23pub mod plan;
24pub mod real;
25pub mod shift;
26
27// Re-export public API at crate root for ergonomic access.
28
29// Normalization
30pub use norm::FftNorm;
31
32// Plan caching
33pub use plan::FftPlan;
34
35// Complex FFTs (REQ-1..REQ-4)
36pub use complex::{fft, fft2, fftn, ifft, ifft2, ifftn};
37
38// Real FFTs (REQ-5..REQ-7)
39pub use real::{irfft, irfft2, irfftn, rfft, rfft2, rfftn};
40
41// Hermitian FFTs (REQ-8)
42pub use hermitian::{hfft, ihfft};
43
44// Frequency utilities (REQ-9, REQ-10)
45pub use freq::{fftfreq, rfftfreq};
46
47// Shift utilities (REQ-11)
48pub use shift::{fftshift, ifftshift};