comparison src/fftw-3.3.8/doc/html/Guru-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: Guru Complex DFTs</title>
26
27 <meta name="description" content="FFTW 3.3.8: Guru Complex DFTs">
28 <meta name="keywords" content="FFTW 3.3.8: Guru 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="Guru-Interface.html#Guru-Interface" rel="up" title="Guru Interface">
37 <link href="Guru-Real_002ddata-DFTs.html#Guru-Real_002ddata-DFTs" rel="next" title="Guru Real-data DFTs">
38 <link href="Guru-vector-and-transform-sizes.html#Guru-vector-and-transform-sizes" rel="prev" title="Guru vector and transform sizes">
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="Guru-Complex-DFTs"></a>
72 <div class="header">
73 <p>
74 Next: <a href="Guru-Real_002ddata-DFTs.html#Guru-Real_002ddata-DFTs" accesskey="n" rel="next">Guru Real-data DFTs</a>, Previous: <a href="Guru-vector-and-transform-sizes.html#Guru-vector-and-transform-sizes" accesskey="p" rel="prev">Guru vector and transform sizes</a>, Up: <a href="Guru-Interface.html#Guru-Interface" accesskey="u" rel="up">Guru 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="Guru-Complex-DFTs-1"></a>
78 <h4 class="subsection">4.5.3 Guru Complex DFTs</h4>
79
80 <div class="example">
81 <pre class="example">fftw_plan fftw_plan_guru_dft(
82 int rank, const fftw_iodim *dims,
83 int howmany_rank, const fftw_iodim *howmany_dims,
84 fftw_complex *in, fftw_complex *out,
85 int sign, unsigned flags);
86
87 fftw_plan fftw_plan_guru_split_dft(
88 int rank, const fftw_iodim *dims,
89 int howmany_rank, const fftw_iodim *howmany_dims,
90 double *ri, double *ii, double *ro, double *io,
91 unsigned flags);
92 </pre></div>
93 <a name="index-fftw_005fplan_005fguru_005fdft"></a>
94 <a name="index-fftw_005fplan_005fguru_005fsplit_005fdft"></a>
95
96 <p>These two functions plan a complex-data, multi-dimensional DFT
97 for the interleaved and split format, respectively.
98 Transform dimensions are given by (<code>rank</code>, <code>dims</code>) over a
99 multi-dimensional vector (loop) of dimensions (<code>howmany_rank</code>,
100 <code>howmany_dims</code>). <code>dims</code> and <code>howmany_dims</code> should point
101 to <code>fftw_iodim</code> arrays of length <code>rank</code> and
102 <code>howmany_rank</code>, respectively.
103 </p>
104 <a name="index-flags-5"></a>
105 <p><code>flags</code> is a bitwise OR (&lsquo;<samp>|</samp>&rsquo;) of zero or more planner flags,
106 as defined in <a href="Planner-Flags.html#Planner-Flags">Planner Flags</a>.
107 </p>
108 <p>In the <code>fftw_plan_guru_dft</code> function, the pointers <code>in</code> and
109 <code>out</code> point to the interleaved input and output arrays,
110 respectively. The sign can be either <em>-1</em> (=
111 <code>FFTW_FORWARD</code>) or <em>+1</em> (= <code>FFTW_BACKWARD</code>). If the
112 pointers are equal, the transform is in-place.
113 </p>
114 <p>In the <code>fftw_plan_guru_split_dft</code> function,
115 <code>ri</code> and <code>ii</code> point to the real and imaginary input arrays,
116 and <code>ro</code> and <code>io</code> point to the real and imaginary output
117 arrays. The input and output pointers may be the same, indicating an
118 in-place transform. For example, for <code>fftw_complex</code> pointers
119 <code>in</code> and <code>out</code>, the corresponding parameters are:
120 </p>
121 <div class="example">
122 <pre class="example">ri = (double *) in;
123 ii = (double *) in + 1;
124 ro = (double *) out;
125 io = (double *) out + 1;
126 </pre></div>
127
128 <p>Because <code>fftw_plan_guru_split_dft</code> accepts split arrays, strides
129 are expressed in units of <code>double</code>. For a contiguous
130 <code>fftw_complex</code> array, the overall stride of the transform should
131 be 2, the distance between consecutive real parts or between
132 consecutive imaginary parts; see <a href="Guru-vector-and-transform-sizes.html#Guru-vector-and-transform-sizes">Guru vector and transform sizes</a>. Note that the dimension strides are applied equally to the
133 real and imaginary parts; real and imaginary arrays with different
134 strides are not supported.
135 </p>
136 <p>There is no <code>sign</code> parameter in <code>fftw_plan_guru_split_dft</code>.
137 This function always plans for an <code>FFTW_FORWARD</code> transform. To
138 plan for an <code>FFTW_BACKWARD</code> transform, you can exploit the
139 identity that the backwards DFT is equal to the forwards DFT with the
140 real and imaginary parts swapped. For example, in the case of the
141 <code>fftw_complex</code> arrays above, the <code>FFTW_BACKWARD</code> transform
142 is computed by the parameters:
143 </p>
144 <div class="example">
145 <pre class="example">ri = (double *) in + 1;
146 ii = (double *) in;
147 ro = (double *) out + 1;
148 io = (double *) out;
149 </pre></div>
150
151 <hr>
152 <div class="header">
153 <p>
154 Next: <a href="Guru-Real_002ddata-DFTs.html#Guru-Real_002ddata-DFTs" accesskey="n" rel="next">Guru Real-data DFTs</a>, Previous: <a href="Guru-vector-and-transform-sizes.html#Guru-vector-and-transform-sizes" accesskey="p" rel="prev">Guru vector and transform sizes</a>, Up: <a href="Guru-Interface.html#Guru-Interface" accesskey="u" rel="up">Guru 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>
155 </div>
156
157
158
159 </body>
160 </html>