FFT Utilities

FFT is used everywhere. Image, video, audio and biomedical signal processing, just to name a few. FFT is a very CPU-intensive transformation and everybody wants the fastest solution. It’s here.

The Superpowered FFT processes with the same speed as Apple’s vDSP. We don’t claim we’re faster (sometimes we do), but definitely not slower.

FFT by itself is not really useful when you need to work with magnitudes and phases (such as audio), not just complex numbers. In this case, you need Polar FFT.

We made it super convenient for you: just one call to do the whole transformation. And here is the big deal: the Superpowered Polar FFT is at least 2x faster than Apple’s vDSP.

  • FFTComplex

    METHOD
    Complex in-place FFT. Data packing is same as Apple's vDSP. Check the 'Using Fourier Transforms' page of Apple's vDSP documentation ('Data Packing for Real FFTs').
    Parameters
    NameTypeDescription
    realNumber (pointer in Linear Memory)Real part.
    imagNumber (pointer in Linear Memory)Imaginary part.
    logSizeNumberShould be between 4 and 12 (FFT sizes 16 - 4096).
    forwardBooleanForward or inverse.
    Returns
    None
  • FFTComplex

    METHOD
    Complex in-place FFT. Data packing is same as Apple's vDSP. Check the 'Using Fourier Transforms' page of Apple's vDSP documentation ('Data Packing for Real FFTs').
    Parameters
    NameTypeDefaultDescription
    realfloat *Real part.
    imagfloat *Imaginary part.
    logSizeintShould be between 4 and 12 (FFT sizes 16 - 4096).
    forwardboolForward or inverse.
    Returns
    None
  • FFTReal

    METHOD
    Real in-place FFT. Data packing is same as Apple's vDSP. Check the 'Using Fourier Transforms' page of Apple's vDSP documentation ('Data Packing for Real FFTs').
    Parameters
    NameTypeDescription
    realNumber (pointer in Linear Memory)Real part.
    imagNumber (pointer in Linear Memory)Imaginary part.
    logSizeNumberShould be between 5 - 13 (FFT sizes 32 - 8192).
    forwardBooleanForward or inverse.
    Returns
    None
  • FFTReal

    METHOD
    Real in-place FFT. Data packing is same as Apple's vDSP. Check the 'Using Fourier Transforms' page of Apple's vDSP documentation ('Data Packing for Real FFTs').
    Parameters
    NameTypeDefaultDescription
    realfloat *Real part.
    imagfloat *Imaginary part.
    logSizeintShould be between 5 - 13 (FFT sizes 32 - 8192).
    forwardboolForward or inverse.
    Returns
    None
  • PolarFFT

    METHOD
    Polar FFT. Data packing is same as Apple's vDSP. Check the 'Using Fourier Transforms' page of Apple's vDSP documentation ('Data Packing for Real FFTs').
    Parameters
    NameTypeDescription
    magNumber (pointer in Linear Memory)Input: split real part. Output: magnitudes.
    phaseNumber (pointer in Linear Memory)Input: split real part. Output: phases.
    logSizeNumberShould be between 5 - 13 (FFT sizes 32 - 8192).
    forwardBooleanForward or inverse. Inverse PolarFFT will clear (zero) the DC offset.
    valueOfPiNumberThe function can translate pi to any value (Google: the tau manifesto). Use 0 for M_PI.
    Returns
    None
  • PolarFFT

    METHOD
    Polar FFT. Data packing is same as Apple's vDSP. Check the 'Using Fourier Transforms' page of Apple's vDSP documentation ('Data Packing for Real FFTs').
    Parameters
    NameTypeDefaultDescription
    magfloat *Input: split real part. Output: magnitudes.
    phasefloat *Input: split real part. Output: phases.
    logSizeintShould be between 5 - 13 (FFT sizes 32 - 8192).
    forwardboolForward or inverse. Inverse PolarFFT will clear (zero) the DC offset.
    valueOfPifloat0.0The function can translate pi to any value (Google: the tau manifesto). Use 0 for M_PI.
    Returns
    None
v1.0.32