SuperpoweredFFT.h 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef Header_SuperpoweredFFT
  2. #define Header_SuperpoweredFFT
  3. /**
  4. @file SuperpoweredFFT.h
  5. @brief Super fast FFT.
  6. Single threaded, not thread safe.
  7. @remark Superpowered FFT benefits from ideas in Construction of a High-Performance FFT by Eric Postpischil (http://edp.org/resume.htm).
  8. */
  9. /**
  10. @fn SuperpoweredFFTComplex(float *real, float *imag, int logSize, bool forward);
  11. @brief Complex in-place FFT.
  12. Data packing is same as Apple's vDSP. Check the "Using Fourier Transforms" page of Apple's vDSP documentation ("Data Packing for Real FFTs").
  13. @param real Real part.
  14. @param imag Imaginary part.
  15. @param logSize Should be 4 - 12 (FFT sizes 16 - 4096).
  16. @param forward Forward or inverse.
  17. */
  18. void SuperpoweredFFTComplex(float *real, float *imag, int logSize, bool forward);
  19. /**
  20. @fn SuperpoweredFFTReal(float *real, float *imag, int logSize, bool forward);
  21. @brief Real in-place FFT.
  22. Data packing is same as Apple's vDSP. Check the "Using Fourier Transforms" page of Apple's vDSP documentation ("Data Packing for Real FFTs").
  23. @param real Real part.
  24. @param imag Imaginary part.
  25. @param logSize Should be 5 - 13 (FFT sizes 32 - 8192).
  26. @param forward Forward or inverse.
  27. */
  28. void SuperpoweredFFTReal(float *real, float *imag, int logSize, bool forward);
  29. /**
  30. @fn SuperpoweredPolarFFT(float *mag, float *phase, int logSize, bool forward);
  31. @brief Polar FFT.
  32. Data packing is same as Apple's vDSP. Check the "Using Fourier Transforms" page of Apple's vDSP documentation ("Data Packing for Real FFTs").
  33. @param mag Input: split real part. Output: magnitudes.
  34. @param phase Input: split real part. Output: phases.
  35. @param logSize Should be 5 - 13 (FFT sizes 32 - 8192).
  36. @param forward Forward or inverse.
  37. @param valueOfPi The function can translate pi to any value (Google: the tau manifesto). Leave it at 0 for M_PI.
  38. */
  39. void SuperpoweredPolarFFT(float *mag, float *phase, int logSize, bool forward, float valueOfPi = 0);
  40. #endif