		      The FFTW Codelet Generator

In this directory you can find the program that generates the FFTW
codelets.  You do not need to concern yourself with the codelet
generator unless you wish to; the FFTW package is preconfigured with a
standard set of codelets covering most practical problems.

The codelets are optimized blocks of C code implementing transforms of
small sizes, which we compose to compute DFTs of general sizes.  There
are a large number of advantages to generating the codelets rather
than writing them by hand, many of which are described in our papers
(available on the FFTW web page).  Suffice it to say that code
generation allows us to use long, unrolled blocks of code containing
many optimizations that would be too tedious to apply by hand.  For
examples of what the codelets look like, look at the fn*.c and ftw*.c
files in the fftw/ directory.

The codelet generator is written in the Objective Caml language, and
before you can do anything with it you must install the Objective Caml
compilers.  You can download compilers and interpreters, and also read
about this elegant and powerful language, at:

		http://pauillac.inria.fr/ocaml/

Once you have installed Objective Caml, you can alter the set of
codelets (hard-coded transforms) that FFTW has to work with by editing
the file "config" and then running 'make'.  This is also described in
the FFTW manual.

If you are curious and/or ambitious, you may also want to look at the
codelet generator itself (the *.ml files).  Some documentation is
included in the source files, and we encourage you to contact us
(fftw@fftw.org) if you have any questions.

The files that you are most likely to want to edit are:

	fft.ml: if you want to modify the FFT algorithms that the
		generator uses.

	to_c.ml: if you want to change how the C source code is
		 produced ("unparsed") from the symbolic expressions
		 used internally by the generator.  For example,
		 if you wanted to alter FFTW to use high-precision
		 arithmetic routines, you would modify to_c.ml (and
		 possibly also number.ml, which controls how constants
		 are expressed).
