Skip to content

stg/SYLT-FFT

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 

SYLT-FFT

DEVSOUND (I)FFT(R) LIBRARY

And some other funky fixed-point maths like gray-coding and pow(2, f)

Optimized (C-level) for Keil C Compiler and GCC on Cortex-M4.

Authors:

  • D. Taylor 2014 (gmail: senseitg)

License:

  • MHG (GPL compatible) - see LICENSE

Features:

  • FFT (Fast Fourier Transform) and IFFT (Inverse FFT)
  • Fixed-point 32-bit, Radix-2
  • Complex or real (with slight conversion overhead) data
  • No plan construction required before (I)FFT
  • No reliance on other libraries (including libm if using precomputed tables)

Options (config.h):

  • DIT (decimation-in-time) or DIF (decimation-in-frequency)
  • Rounding on divide (-speed, +accuracy)
  • Saturating math (-speed, +stability)
  • Table size vs. max. FFT length

Resource requirements:

  • Minimal memory requirements (in-place)
  • Minimal stack use (non-recursive)
  • Minimal twiddle tables (512 bytes for max N=512 FFT)

Notes:

  • Designed for optimal performance, not optimal accuracy

Caveats:

  • Care must be taken with input data to ensure no overflows
  • Requires C99 (-std=c99 for GCC)

Performance:

  • Comparing against: CMSIS DSP arm_cortexM4I_math.lib(1.4.2)
  • Platform: Freescale Kinetis K20 (Cortex-M4/ARMv7E-M)
  • KEIL = Keil C Compiler 5.01 -O3
  • GCC = GNU Tools for ARM Embedded Processors 4.8.4 -O3
Comparisons are of speed, +N% = faster than CMSIS, -N% = slower.
Please verify and do additional tests to add to the list.

  CMSIS-DSP             SYLT-FFT      N     KEIL     GCC
* arm_cfft_radix2_q31   fft_inverse   256   +25.6%   +15.1%

Thanks to:

  • Wikipedia - for existing and taking donations
  • KATJA - for intelligible merge/split spectra algorithm
  • XCORE - for intelligible (I)FFT algorithm
  • CMLAB - for intelligible FFT algorithm breakdown
  • BEVAN - for intelligible DIT vs. DIF, radix-2 vs. 4 overview

About

Optimized (I)FFT(R) for Cortex-M4

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages