GNU C-Graph Version 2.0

Visualize convolution with GNU C-Graph, an interactive tool for demonstrating the convolution theorem.

Get GNU's convolution demo from the GNU servers, via HTTP or FTP. You may also download pre-release builds of C-Graph 2.0 from the cabinet below.

  • 17 October 2011

Here is GNU C-Graph 2.0 !!! RMS dubbed C-Graph a GNU package on August 22, but we've had lots of legal issues to sort out (associated with my 1983 BSc. dissertation from which C-Graph is derived) since March. Get GNU C-Graph here for the next couple of days until we have sorted out the upload process to the official sites <>and<>.

  • 14 March 2011

The manual is almost complete. There are just a few bugs to exterminate now.

  • 16 February 2011

I've added the command line interface for displaying C-Graph's basic options, re-coded the Gnuplot command files, provided for the selection of signal frequency (as originally planned), included the option to scale the signals, and coded error handling of user input. There's a little way to go yet!

  • 22 December 2010

I spent months searching for information on how to display the GPL without using environment variables. A few months ago, after taking a much needed break, I discovered that not only did Fortran use the C preprocessor,[1] but that the latter may be used to define macros whose values can be inserted into Fortran source code from the command line, and therefore via the CPPFLAGS of GNU make. By then I was in the throes of composing the sketch for Regnier's portrait, but have now returned to the task of completing C-Graph 2.0.

  • 24 April 2009

C-Graphv2-pv.tgz is a preview of version 2, which will be released in soon. C-Graph version 2 is a Fortran 90/95 program for GNU/Linux.

This preview is a snapshot of the work in progress that marks the stage at which I completed the Fortran 77 program in my Honours dissertation "Interactive Computer Package Demonstrating: Sampling Convolution and the FFT" submitted April/May 1983 to the Department of Engineering, University of Aberdeen (Scotland).

Development of the version 2 preview required more time than my creation of the original at the University of Aberdeen. This time, I had to relearn Fortran - not having coded in the language since 1983 - and Fortran 90/95 is considerably more sophisticated. I began the project to learn Fortran on 5 February 2009. I spent a considerable proportion of the development time searching the web for an appropriate plotting program and a Fast Fourier Transform Fortran 90 implementation compatible with C-Graph's GPL version 3 (or later) license. In 1983 at the University of Aberdeen, I was limited to the Gino graphics library, and the single Fortran 77 FFT implementation indicated by my "supervisors".:-)

My original intention was to reconstruct the program in Fortran 77 as I thought this would save time in my already tight schedule, but my fellow Fortraners on comp.lang.fortran made it clear that using f77 was a silly idea.:-). I then also decided that reconstruction would be far more time intensive than to rewrite the program from scratch, and accordingly opted for the latter.

I may have decided to postpone automation of graphs until version 3, but there is some development still to do for version 2. Error checking procedures (which I omitted in my Thesis) will be added. At the moment, C-Graph will abort if, for example, you enter a character when the program expects an integer. The provision for pulses is new to version 2; I have not yet implemented these, but pulses of equal length may be selected by choosing the period to be twice the total number of samples "N". Try values for N in the range 128 - 1024, for starters. The preview code utilizes Arthur Wouk's f77 FFT, which has been converted to f90 code by Alan Miller. This FFT requires the number of samples to be a power of 2, so any integer value entered by the user will automatically be converted to the nearest power of 2. I have not yet decided, however, on the FFT implementation for the release.

The official release of C-Graph version 2 will have a makefile and configure script. For now, just unpack C-Graphv2-pv.tgz, compile C-Graphv2-preview.f90 with your favourite compiler, and run the executable in the same directory as C-Graph-license.txt. C-Graph uses Gnuplot, so you'll need to run it in X.

I am using G95 to develop C-Graph. Send bug reports to



[1] As another member of comp.lang.fortran pointed out, the Fortran standards do not include the C preprocessor, but some Fortran compilers (such as Gfortran and G95) do feature preprocessor support.

C-Graph Pre-Release Builds