Click here to Skip to main content
12,830,358 members (45,146 online)
Click here to Skip to main content
Add your own
alternative version


42 bookmarked
Posted 25 Apr 2002


, 25 Apr 2002 BSD
Rate this:
Please Sign up or sign in to vote.
A C# complex number and FFT library.
Online Documentation
Included Library Demos
Source Code and Binaries Downloads
Change Log


  • Single and double precision complex number structs
  • 1D, 2D and 3D complex fast Fourier transform functions
  • 1D real symmetric fast Fourier transform function
  • Statistical functions for complex data sets (i.e. mean, variance, std. dev., RMS, etc...)
  • Optimized for speed

Online Documentation

Click here to browse the full contents of the library in MSDN style format.  Much thanks goes out to the creators of NDoc -- it was used to generate all the documentation files for this lbrary.

Included Library Demos

Image Filtering Sample

Shows how to convert an image from a spatial representation (i.e. picture on the left) to a frequency representation (picture on the right) using a 2D fast Fourier transform.

Mandelbrot Generator

Just shows how to use the complex number structs to calculate the classic Mandelbrot fractal around zero.  Pretty simple but still nice to look at.

 Source Code and Binaries Downloads

Complete Source Code (95 KB)
Includes all source, docs, binaries and demos for this library.

Demo Installer (101 KB)
NOTE: Installer requires that you have already installed Microsoft .NET Framework v1.0.  If you don't yet have it you can download it here.


Regular updates can be found here.

Change Log

  • March 8, 2002 - Initial Release
  • March 20, 2002 - Added the 2 demo applications
  • March 22, 2002 - Added ComplexStats class
  • March 27, 2002 - Updated webpage design


This article, along with any associated source code and files, is licensed under The BSD License


About the Author

Ben Houston
Web Developer
Canada Canada
No Biography provided

You may also be interested in...

Comments and Discussions

QuestionCompact Framework error Pin
Oxcarz12-Jan-09 22:59
memberOxcarz12-Jan-09 22:59 
Questionextract pitch from a wav? Pin
Oxcarz27-Dec-08 23:17
memberOxcarz27-Dec-08 23:17 
GeneralComplex Conjugate FFT Pin
Ferry Mulyono28-Feb-07 21:11
memberFerry Mulyono28-Feb-07 21:11 
GeneralLicense Pin
Jonas Beckeman2-Jan-07 17:28
memberJonas Beckeman2-Jan-07 17:28 
GeneralProblems with backward transformation Pin
ComCoderCsharp27-Dec-06 4:32
memberComCoderCsharp27-Dec-06 4:32 
GeneralRe: Problems with backward transformation Pin
dssdss2-Mar-11 12:44
memberdssdss2-Mar-11 12:44 
GeneralRe: Problems with backward transformation Pin
Joe Best13-Aug-13 6:15
memberJoe Best13-Aug-13 6:15 
General- operator [modified] Pin
alisherr10-Nov-06 14:03
memberalisherr10-Nov-06 14:03 
GeneralFFT 1D Pin
Kenneth198525-Apr-06 9:01
memberKenneth198525-Apr-06 9:01 
GeneralRe: FFT 1D Pin
cbranje18-May-06 4:40
membercbranje18-May-06 4:40 
GeneralIndex was outside the bounds of the array problem Pin
christof.k27-Feb-06 23:11
memberchristof.k27-Feb-06 23:11 
GeneralRe: Index was outside the bounds of the array problem Pin
HansPfaff27-Jul-10 22:47
memberHansPfaff27-Jul-10 22:47 
Hi Christof,
I also tried EXOCORTEX_DSP DLL (version 1.2) fort my FFT needs.
Actually I have time arrays of 1000000 and more data points that I need to feed to FFT.
But EXOCORTEX fails for such large arrays with an error.

Later I found that EXOCORTEX has some severe issues:
===> The Fourier.FFT_Quick() function did not work in the beginning at all. Reason: The initialisation <Fourier.SyncLookupTableLength( length );> in the sources was commented out. Fix: Include the statement
Fourier.SyncLookupTableLength( length );

in the source code module Fourier.cs at line 722 .

===> Buffer size limitation: A little bit of debugging showed me that EXOCORTEX is limited to a maximum buffer size of 4096 data points. Look at these statements in Fourier.cs lines 79-83.
private const int   cMaxLength  = 4096;
       private const int   cMinLength  = 1;

        private const int   cMaxBits    = 12;
     private const int   cMinBits    = 0;
This explains your buffer size issue.
EXOCORTEX's maximum buffer size is 4096.

You may try to edit these limits (don't forget cMaxBits!!!) in the sources, recompile and see what happens.
I did not try it yet.

This reply unfortunately is 4 years late, but I stumbled over this last week and it may help somebody else.
GeneralRe: Index was outside the bounds of the array problem Pin
jinguman15-Feb-11 20:12
memberjinguman15-Feb-11 20:12 
GeneralHard-coded data length limit Pin
Malcolm_Sharpe23-Sep-04 16:22
memberMalcolm_Sharpe23-Sep-04 16:22 
GeneralRe: Hard-coded data length limit Pin
Laurence Bunnage19-Apr-06 3:14
memberLaurence Bunnage19-Apr-06 3:14 
GeneralRe: Hard-coded data length limit Pin
melchizedek18-Oct-07 6:55
membermelchizedek18-Oct-07 6:55 
Questionoperator- problem? Pin
Vigrid21-May-03 13:46
memberVigrid21-May-03 13:46 
AnswerRe: operator- problem? Pin
Ben_Houston21-May-03 13:53
sussBen_Houston21-May-03 13:53 
GeneralRe: operator- problem? Pin
Vigrid21-May-03 15:10
memberVigrid21-May-03 15:10 
GeneralSpeed Pin
okigan9-Oct-02 14:25
memberokigan9-Oct-02 14:25 
GeneralRe: Speed Pin
Christian Graus29-Mar-05 18:55
memberChristian Graus29-Mar-05 18:55 
GeneralRe: Speed Pin
okigan29-Mar-05 21:15
memberokigan29-Mar-05 21:15 
GeneralRe: Speed Pin
Ben Houston30-Mar-05 6:15
memberBen Houston30-Mar-05 6:15 
GeneralRe: Speed Pin
Christian Graus30-Mar-05 13:02
memberChristian Graus30-Mar-05 13:02 
GeneralNOTE: Use Alternative Source Download - bug in local copy Pin
Ben Houston20-May-02 13:13
memberBen Houston20-May-02 13:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.170326.1 | Last Updated 26 Apr 2002
Article Copyright 2002 by Ben Houston
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid