comparison src/fftw-3.3.8/doc/html/Complex-DFTs.html @ 167:bd3cc4d1df30

Add FFTW 3.3.8 source, and a Linux build
author Chris Cannam <cannam@all-day-breakfast.com>
date Tue, 19 Nov 2019 14:52:55 +0000
parents
children
comparison
equal deleted inserted replaced
166:cbd6d7e562c7 167:bd3cc4d1df30
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2 <html>
3 <!-- This manual is for FFTW
4 (version 3.3.8, 24 May 2018).
5
6 Copyright (C) 2003 Matteo Frigo.
7
8 Copyright (C) 2003 Massachusetts Institute of Technology.
9
10 Permission is granted to make and distribute verbatim copies of this
11 manual provided the copyright notice and this permission notice are
12 preserved on all copies.
13
14 Permission is granted to copy and distribute modified versions of this
15 manual under the conditions for verbatim copying, provided that the
16 entire resulting derived work is distributed under the terms of a
17 permission notice identical to this one.
18
19 Permission is granted to copy and distribute translations of this manual
20 into another language, under the above conditions for modified versions,
21 except that this permission notice may be stated in a translation
22 approved by the Free Software Foundation. -->
23 <!-- Created by GNU Texinfo 6.3, http://www.gnu.org/software/texinfo/ -->
24 <head>
25 <title>FFTW 3.3.8: Complex DFTs</title>
26
27 <meta name="description" content="FFTW 3.3.8: Complex DFTs">
28 <meta name="keywords" content="FFTW 3.3.8: Complex DFTs">
29 <meta name="resource-type" content="document">
30 <meta name="distribution" content="global">
31 <meta name="Generator" content="makeinfo">
32 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
33 <link href="index.html#Top" rel="start" title="Top">
34 <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
35 <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
36 <link href="Basic-Interface.html#Basic-Interface" rel="up" title="Basic Interface">
37 <link href="Planner-Flags.html#Planner-Flags" rel="next" title="Planner Flags">
38 <link href="Basic-Interface.html#Basic-Interface" rel="prev" title="Basic Interface">
39 <style type="text/css">
40 <!--
41 a.summary-letter {text-decoration: none}
42 blockquote.indentedblock {margin-right: 0em}
43 blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
44 blockquote.smallquotation {font-size: smaller}
45 div.display {margin-left: 3.2em}
46 div.example {margin-left: 3.2em}
47 div.lisp {margin-left: 3.2em}
48 div.smalldisplay {margin-left: 3.2em}
49 div.smallexample {margin-left: 3.2em}
50 div.smalllisp {margin-left: 3.2em}
51 kbd {font-style: oblique}
52 pre.display {font-family: inherit}
53 pre.format {font-family: inherit}
54 pre.menu-comment {font-family: serif}
55 pre.menu-preformatted {font-family: serif}
56 pre.smalldisplay {font-family: inherit; font-size: smaller}
57 pre.smallexample {font-size: smaller}
58 pre.smallformat {font-family: inherit; font-size: smaller}
59 pre.smalllisp {font-size: smaller}
60 span.nolinebreak {white-space: nowrap}
61 span.roman {font-family: initial; font-weight: normal}
62 span.sansserif {font-family: sans-serif; font-weight: normal}
63 ul.no-bullet {list-style: none}
64 -->
65 </style>
66
67
68 </head>
69
70 <body lang="en">
71 <a name="Complex-DFTs"></a>
72 <div class="header">
73 <p>
74 Next: <a href="Planner-Flags.html#Planner-Flags" accesskey="n" rel="next">Planner Flags</a>, Previous: <a href="Basic-Interface.html#Basic-Interface" accesskey="p" rel="prev">Basic Interface</a>, Up: <a href="Basic-Interface.html#Basic-Interface" accesskey="u" rel="up">Basic Interface</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
75 </div>
76 <hr>
77 <a name="Complex-DFTs-1"></a>
78 <h4 class="subsection">4.3.1 Complex DFTs</h4>
79
80 <div class="example">
81 <pre class="example">fftw_plan fftw_plan_dft_1d(int n0,
82 fftw_complex *in, fftw_complex *out,
83 int sign, unsigned flags);
84 fftw_plan fftw_plan_dft_2d(int n0, int n1,
85 fftw_complex *in, fftw_complex *out,
86 int sign, unsigned flags);
87 fftw_plan fftw_plan_dft_3d(int n0, int n1, int n2,
88 fftw_complex *in, fftw_complex *out,
89 int sign, unsigned flags);
90 fftw_plan fftw_plan_dft(int rank, const int *n,
91 fftw_complex *in, fftw_complex *out,
92 int sign, unsigned flags);
93 </pre></div>
94 <a name="index-fftw_005fplan_005fdft_005f1d-1"></a>
95 <a name="index-fftw_005fplan_005fdft_005f2d-1"></a>
96 <a name="index-fftw_005fplan_005fdft_005f3d-1"></a>
97 <a name="index-fftw_005fplan_005fdft-1"></a>
98
99 <p>Plan a complex input/output discrete Fourier transform (DFT) in zero or
100 more dimensions, returning an <code>fftw_plan</code> (see <a href="Using-Plans.html#Using-Plans">Using Plans</a>).
101 </p>
102 <p>Once you have created a plan for a certain transform type and
103 parameters, then creating another plan of the same type and parameters,
104 but for different arrays, is fast and shares constant data with the
105 first plan (if it still exists).
106 </p>
107 <p>The planner returns <code>NULL</code> if the plan cannot be created. In the
108 standard FFTW distribution, the basic interface is guaranteed to return
109 a non-<code>NULL</code> plan. A plan may be <code>NULL</code>, however, if you are
110 using a customized FFTW configuration supporting a restricted set of
111 transforms.
112 </p>
113 <a name="Arguments"></a>
114 <h4 class="subsubheading">Arguments</h4>
115 <ul>
116 <li> <code>rank</code> is the rank of the transform (it should be the size of the
117 array <code>*n</code>), and can be any non-negative integer. (See <a href="Complex-Multi_002dDimensional-DFTs.html#Complex-Multi_002dDimensional-DFTs">Complex Multi-Dimensional DFTs</a>, for the definition of &ldquo;rank&rdquo;.) The
118 &lsquo;<samp>_1d</samp>&rsquo;, &lsquo;<samp>_2d</samp>&rsquo;, and &lsquo;<samp>_3d</samp>&rsquo; planners correspond to a
119 <code>rank</code> of <code>1</code>, <code>2</code>, and <code>3</code>, respectively. The rank
120 may be zero, which is equivalent to a rank-1 transform of size 1, i.e. a
121 copy of one number from input to output.
122
123 </li><li> <code>n0</code>, <code>n1</code>, <code>n2</code>, or <code>n[0..rank-1]</code> (as appropriate
124 for each routine) specify the size of the transform dimensions. They
125 can be any positive integer.
126
127 <ul class="no-bullet">
128 <li>- <a name="index-row_002dmajor-1"></a>
129 Multi-dimensional arrays are stored in row-major order with dimensions:
130 <code>n0</code> x <code>n1</code>; or <code>n0</code> x <code>n1</code> x <code>n2</code>; or
131 <code>n[0]</code> x <code>n[1]</code> x ... x <code>n[rank-1]</code>.
132 See <a href="Multi_002ddimensional-Array-Format.html#Multi_002ddimensional-Array-Format">Multi-dimensional Array Format</a>.
133 </li><li>- FFTW is best at handling sizes of the form
134 2<sup>a</sup> 3<sup>b</sup> 5<sup>c</sup> 7<sup>d</sup>
135 11<sup>e</sup> 13<sup>f</sup>,
136 where <em>e+f</em> is either <em>0</em> or <em>1</em>, and the other exponents
137 are arbitrary. Other sizes are computed by means of a slow,
138 general-purpose algorithm (which nevertheless retains <i>O</i>(<i>n</i>&nbsp;log&nbsp;<i>n</i>)
139 performance even for prime sizes). It is possible to customize FFTW
140 for different array sizes; see <a href="Installation-and-Customization.html#Installation-and-Customization">Installation and Customization</a>.
141 Transforms whose sizes are powers of <em>2</em> are especially fast.
142 </li></ul>
143
144 </li><li> <code>in</code> and <code>out</code> point to the input and output arrays of the
145 transform, which may be the same (yielding an in-place transform).
146 <a name="index-in_002dplace-2"></a>
147 These arrays are overwritten during planning, unless
148 <code>FFTW_ESTIMATE</code> is used in the flags. (The arrays need not be
149 initialized, but they must be allocated.)
150
151 <p>If <code>in == out</code>, the transform is <em>in-place</em> and the input
152 array is overwritten. If <code>in != out</code>, the two arrays must
153 not overlap (but FFTW does not check for this condition).
154 </p>
155 </li><li> <a name="index-FFTW_005fFORWARD-2"></a>
156 <a name="index-FFTW_005fBACKWARD-2"></a>
157 <code>sign</code> is the sign of the exponent in the formula that defines the
158 Fourier transform. It can be <em>-1</em> (= <code>FFTW_FORWARD</code>) or
159 <em>+1</em> (= <code>FFTW_BACKWARD</code>).
160
161 </li><li> <a name="index-flags-2"></a>
162 <code>flags</code> is a bitwise OR (&lsquo;<samp>|</samp>&rsquo;) of zero or more planner flags,
163 as defined in <a href="Planner-Flags.html#Planner-Flags">Planner Flags</a>.
164
165 </li></ul>
166
167 <p>FFTW computes an unnormalized transform: computing a forward followed by
168 a backward transform (or vice versa) will result in the original data
169 multiplied by the size of the transform (the product of the dimensions).
170 <a name="index-normalization-5"></a>
171 For more information, see <a href="What-FFTW-Really-Computes.html#What-FFTW-Really-Computes">What FFTW Really Computes</a>.
172 </p>
173 <hr>
174 <div class="header">
175 <p>
176 Next: <a href="Planner-Flags.html#Planner-Flags" accesskey="n" rel="next">Planner Flags</a>, Previous: <a href="Basic-Interface.html#Basic-Interface" accesskey="p" rel="prev">Basic Interface</a>, Up: <a href="Basic-Interface.html#Basic-Interface" accesskey="u" rel="up">Basic Interface</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Concept-Index.html#Concept-Index" title="Index" rel="index">Index</a>]</p>
177 </div>
178
179
180
181 </body>
182 </html>