1 unstable release

new 0.1.0 Nov 29, 2024

#662 in Math

40 downloads per month

MIT license

46KB
958 lines

Rufft

ci

Rufft is a purely rust implementation of several fast fourier transform algorithms. The libary functions operate on collection types which implement a library trait called Iterable which provides a method to get an iterator and to get the length of the collection. In the future other convenience modules will be added for things like waveform generation and improvements to the fft implementation to support things like paralleization, and SIMD acceleration

Usage

use rufft::{traits::Fft, Complex};

// Get the FFT of a Vec
let arr = vec![1.0, 2.0, 3.0, 4.0, 5.0];
let farr: Vec<Complex<f64>> = arr.fft();

Motivation

The project originally started for my own educational purposes to both improve my rust skills and also to implement fast fourier transform algorithms. As time went on I looked at some other more mature rust based FFT libaries such as,

These projects are great and very performent focussed especially rustfft but I realized that I wanted to use something that reflected a much simpler API like scipy in the python ecosystem but was still relatively performant, something that could be used in no_std environments, static dispatch based rather than dynamic dispatch and is compatible with most collection types and gives control over what types are used internally.

Dependencies

~2.5MB
~46K SLoC