Chris@82: \input texinfo @c -*-texinfo-*- Chris@82: @c Update by C-x C-e on: (texinfo-multiple-files-update "fftw3.texi" nil t) Chris@82: @setfilename fftw3.info Chris@82: @include version.texi Chris@82: @settitle FFTW @value{VERSION} Chris@82: @setchapternewpage odd Chris@82: @c define constant index (ct) Chris@82: @defcodeindex ct Chris@82: @syncodeindex ct fn Chris@82: @syncodeindex vr fn Chris@82: @syncodeindex pg fn Chris@82: @syncodeindex tp fn Chris@82: @c define foreign function index (ff) Chris@82: @defcodeindex ff Chris@82: @syncodeindex ff cp Chris@82: @c define foreign constant index (fc) Chris@82: @defcodeindex fc Chris@82: @syncodeindex fc cp Chris@82: @c define foreign program index (fp) Chris@82: @defcodeindex fp Chris@82: @syncodeindex fp cp Chris@82: @comment %**end of header Chris@82: Chris@82: @iftex Chris@82: @paragraphindent 0 Chris@82: @parskip=@medskipamount Chris@82: @end iftex Chris@82: Chris@82: @c Chris@82: @c The following macros are coded in a weird way: Chris@82: Chris@82: @c @macro FOO Chris@82: @c @noindent Chris@82: @c Chris@82: @c @refill Chris@82: @c @end macro Chris@82: Chris@82: @c The @noindent/@refill stuff is not necessary in texinfo up to version Chris@82: @c 4, but it is a hack necessary to make texinfo-5 work. Chris@82: Chris@82: @c Texinfo has been stable for the first 15 years of FFTW's history. Chris@82: @c Then some genius, with too much time in his hands and on a mission to Chris@82: @c deliver the world from the evil of the C language, decided to rewrite Chris@82: @c makeinfo in Perl, the old C version of makeinfo being, as I said, Chris@82: @c evil. The official excuse for the rewrite was that now I can have my Chris@82: @c manual in XML format, as if XML were a feature. Chris@82: Chris@82: @c The result of this stroke of genius is that texinfo-5 has different Chris@82: @c rules for macro expansion than texinfo-4 does, specifically regarding Chris@82: @c whether or not spaces after a macro are ignored. Texinfo-4 had weird Chris@82: @c rules, but at least they were constant and internally more or less Chris@82: @c consistent. Texinfo-5 has different rules, and even worse the rules Chris@82: @c in texinfo-5 are inconsistent between the TeX and HTML output Chris@82: @c processors. This situation makes it almost impossible for us to Chris@82: @c produce a manual that works with both texinfo 4 and 5 in all modes Chris@82: @c (TeX, info, and html). The @noindent/@refill hack is my best shot at Chris@82: @c patching this situation. Chris@82: Chris@82: @c "@noindent" has two effects: First, it makes texinfo-5 believe that Chris@82: @c the next "@ifinfo" is on a new line, otherwise texinfo-5 complains Chris@82: @c that it is not (even though it obviously is). Second, "@noindent" is Chris@82: @c a macro that eats extra space, and we want this effect because somehow Chris@82: @c macro expansion in texinfo-5 inserts extra spaces that were not there Chris@82: @c in texinfo-4. Chris@82: Chris@82: @c "@refill" stops texinfo-5 from interpreting the rest of the line after Chris@82: @c a macro invocation as an argument to "@end tex". For example, in Chris@82: @c "FFTW uses @Onlogn algorithms", somehow texinfo-5 thinks that Chris@82: @c "algorithms" is an argument to "@end tex". "@noindent" would have the Chris@82: @c same effect (as would any other macro invocation, I think), but, Chris@82: @c unlike "@noindent", "@refill" does not eat spaces and does not scan Chris@82: @c the rest of the input file for macro arguments. However, "@refill" is Chris@82: @c deemed "obsolete" in the texinfo-5 source code, so expect this to Chris@82: @c break at some point. Chris@82: Chris@82: @c This situation is wholly unsatisfactory, and the GNU project is Chris@82: @c obviously out of control. If this nonsense persists, we will abandon Chris@82: @c texinfo and produce a latex-only version of the manual. Chris@82: Chris@82: Chris@82: @macro Onlogn Chris@82: @noindent Chris@82: @ifinfo Chris@82: O(n log n) Chris@82: @end ifinfo Chris@82: @html Chris@82: O(n log n) Chris@82: @end html Chris@82: @tex Chris@82: $O(n \\log n)$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @macro ndims Chris@82: @noindent Chris@82: @ifinfo Chris@82: n[0] x n[1] x n[2] x ... x n[d-1] Chris@82: @end ifinfo Chris@82: @html Chris@82: n0 × n1 × n2 × … × nd-1 Chris@82: @end html Chris@82: @tex Chris@82: $n_0 \\times n_1 \\times n_2 \\times \\cdots \\times n_{d-1}$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @macro ndimshalf Chris@82: @noindent Chris@82: @ifinfo Chris@82: n[0] x n[1] x n[2] x ... x (n[d-1]/2 + 1) Chris@82: @end ifinfo Chris@82: @html Chris@82: n0 × n1 × n2 × … × (nd-1/2 + 1) Chris@82: @end html Chris@82: @tex Chris@82: $n_0 \\times n_1 \\times n_2 \\times \\cdots \\times (n_{d-1}/2 + 1)$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @macro ndimspad Chris@82: @noindent Chris@82: @ifinfo Chris@82: n[0] x n[1] x n[2] x ... x [2 (n[d-1]/2 + 1)] Chris@82: @end ifinfo Chris@82: @html Chris@82: n0 × n1 × n2 × … × [2 (nd-1/2 + 1)] Chris@82: @end html Chris@82: @tex Chris@82: $n_0 \\times n_1 \\times n_2 \\times \\cdots \\times [2(n_{d-1}/2 + 1)]$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @macro twodims{d1, d2} Chris@82: @noindent Chris@82: @ifinfo Chris@82: \d1\ x \d2\ Chris@82: @end ifinfo Chris@82: @html Chris@82: \d1\ × \d2\ Chris@82: @end html Chris@82: @tex Chris@82: $\d1\ \\times \d2\$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @macro threedims{d1, d2, d3} Chris@82: @noindent Chris@82: @ifinfo Chris@82: \d1\ x \d2\ x \d3\ Chris@82: @end ifinfo Chris@82: @html Chris@82: \d1\ × \d2\ × \d3\ Chris@82: @end html Chris@82: @tex Chris@82: $\d1\ \\times \d2\ \\times \d3\$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @macro dimk{k} Chris@82: @noindent Chris@82: @ifinfo Chris@82: n[\k\] Chris@82: @end ifinfo Chris@82: @html Chris@82: n\k\ Chris@82: @end html Chris@82: @tex Chris@82: $n_\k\$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: Chris@82: @macro ndimstrans Chris@82: @noindent Chris@82: @ifinfo Chris@82: n[1] x n[0] x n[2] x ... x n[d-1] Chris@82: @end ifinfo Chris@82: @html Chris@82: n1 × n0 × n2 ×…× nd-1 Chris@82: @end html Chris@82: @tex Chris@82: $n_1 \\times n_0 \\times n_2 \\times \\cdots \\times n_{d-1}$ Chris@82: @end tex Chris@82: @refill Chris@82: @end macro Chris@82: Chris@82: @copying Chris@82: This manual is for FFTW Chris@82: (version @value{VERSION}, @value{UPDATED}). Chris@82: Chris@82: Copyright @copyright{} 2003 Matteo Frigo. Chris@82: Chris@82: Copyright @copyright{} 2003 Massachusetts Institute of Technology. Chris@82: Chris@82: @quotation Chris@82: Permission is granted to make and distribute verbatim copies of this Chris@82: manual provided the copyright notice and this permission notice are Chris@82: preserved on all copies. Chris@82: Chris@82: Permission is granted to copy and distribute modified versions of this Chris@82: manual under the conditions for verbatim copying, provided that the Chris@82: entire resulting derived work is distributed under the terms of a Chris@82: permission notice identical to this one. Chris@82: Chris@82: Permission is granted to copy and distribute translations of this manual Chris@82: into another language, under the above conditions for modified versions, Chris@82: except that this permission notice may be stated in a translation Chris@82: approved by the Free Software Foundation. Chris@82: @end quotation Chris@82: @end copying Chris@82: Chris@82: @dircategory Development Chris@82: @direntry Chris@82: * fftw3: (fftw3). FFTW User's Manual. Chris@82: @end direntry Chris@82: Chris@82: @titlepage Chris@82: @title FFTW Chris@82: @subtitle for version @value{VERSION}, @value{UPDATED} Chris@82: @author Matteo Frigo Chris@82: @author Steven G. Johnson Chris@82: @page Chris@82: @vskip 0pt plus 1filll Chris@82: @insertcopying Chris@82: @end titlepage Chris@82: Chris@82: @contents Chris@82: Chris@82: @ifnottex Chris@82: @node Top, Introduction, (dir), (dir) Chris@82: @top FFTW User Manual Chris@82: Welcome to FFTW, the Fastest Fourier Transform in the West. FFTW is a Chris@82: collection of fast C routines to compute the discrete Fourier transform. Chris@82: This manual documents FFTW version @value{VERSION}. Chris@82: @end ifnottex Chris@82: Chris@82: @menu Chris@82: * Introduction:: Chris@82: * Tutorial:: Chris@82: * Other Important Topics:: Chris@82: * FFTW Reference:: Chris@82: * Multi-threaded FFTW:: Chris@82: * Distributed-memory FFTW with MPI:: Chris@82: * Calling FFTW from Modern Fortran:: Chris@82: * Calling FFTW from Legacy Fortran:: Chris@82: * Upgrading from FFTW version 2:: Chris@82: * Installation and Customization:: Chris@82: * Acknowledgments:: Chris@82: * License and Copyright:: Chris@82: * Concept Index:: Chris@82: * Library Index:: Chris@82: @end menu Chris@82: Chris@82: @c ************************************************************ Chris@82: @include intro.texi Chris@82: @include tutorial.texi Chris@82: @include other.texi Chris@82: @include reference.texi Chris@82: @include threads.texi Chris@82: @include mpi.texi Chris@82: @include modern-fortran.texi Chris@82: @include legacy-fortran.texi Chris@82: @include upgrading.texi Chris@82: @include install.texi Chris@82: @include acknowledgements.texi Chris@82: @include license.texi Chris@82: @include cindex.texi Chris@82: @include findex.texi Chris@82: @c ************************************************************ Chris@82: Chris@82: @bye