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