Crates.io | rufft |
lib.rs | rufft |
version | 0.1.0 |
source | src |
created_at | 2024-11-29 22:34:12.453343 |
updated_at | 2024-11-29 22:34:12.453343 |
description | A pure rust FFT library ! |
homepage | |
repository | https://github.com/emmet-horgan/rufft |
max_upload_size | |
id | 1466119 |
size | 46,771 |
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
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();
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.