Skip to content
/ realfft Public

realfft is the most accurate and best "sounding" real FFT/iFFT SIMD vector templated C++ class in existence

Notifications You must be signed in to change notification settings

mewza/realfft

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 

Repository files navigation

FFTReal v1.3

NEW (v1.3): I decided to give away the highly optimized NEON code! This is my gift and contribution to betterment of humanity. Enjoy, humanity, and (stop killing each other, stealing, plagirizing, work together and share fairly the winning! One more stipulation, if you somehow manage to create a faster optimization without sacrificing precision, and I dare you to! Then you must send me an email with your version of optimizations. That's it!

How to reach me: Dmitry Boldyrev [email protected] or [email protected]

TODO: Implement hybrid vectorization for base types : float, double utilizing vector simd_float8 and simd_double8 neon and non-neon instructions, or optimization of utilizing simd_float4 for simd_float8 template T for example.

This is the best (fastest, most precise and best sounding) real FFT/iFFT transform available in existence! I have gone through at least 10, and kept upgrading until I found this one, so I arranged it into a templated class that suports base types like float and double as well as simd vectors like simd_float8, simd_double4, which can be specified as a template parameter T.

This is what I am using for now in all of my audio projects instead of AVFFT, PFFFT, etc. It is by far the best sounding and precise FFT algorithm I found. Now, go make some awesome audio apps! // compute_fft_size() is an inline const function in your class

  const int fft_size = compute_fft_size(1024); 
  { 
        // Delcare instance of FFTReal
        FFTReal<simd_double2> fft(fft_size);

        fft.real_fft(data_in, data_out);
        
        // ... process data_out here ...
        
        // 3rd parameter optional, true = scale by 1/length, 
        // omitted or false = don't scale
        
        fft.real_ifft(data_out, data_in, true); 
  }

This style of initialization was not possible the way class was setup before (static), which required maximum FFT size initialization. Well, enjoy the world's best FFT class in the world! =)

Dmitry [email protected]

About

realfft is the most accurate and best "sounding" real FFT/iFFT SIMD vector templated C++ class in existence

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages