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
							 |