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