comparison src/fftw-3.3.5/doc/html/Real_002ddata-DFT-Array-Format.html @ 42:2cd0e3b3e1fd

Current fftw source
author Chris Cannam
date Tue, 18 Oct 2016 13:40:26 +0100
parents
children
comparison
equal deleted inserted replaced
41:481f5f8c5634 42:2cd0e3b3e1fd
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.5, 30 July 2016).
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 5.2, http://www.gnu.org/software/texinfo/ -->
24 <head>
25 <title>FFTW 3.3.5: Real-data DFT Array Format</title>
26
27 <meta name="description" content="FFTW 3.3.5: Real-data DFT Array Format">
28 <meta name="keywords" content="FFTW 3.3.5: Real-data DFT Array Format">
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="Real_002dto_002dReal-Transforms.html#Real_002dto_002dReal-Transforms" rel="next" title="Real-to-Real Transforms">
38 <link href="Real_002ddata-DFTs.html#Real_002ddata-DFTs" rel="prev" title="Real-data DFTs">
39 <style type="text/css">
40 <!--
41 a.summary-letter {text-decoration: none}
42 blockquote.smallquotation {font-size: smaller}
43 div.display {margin-left: 3.2em}
44 div.example {margin-left: 3.2em}
45 div.indentedblock {margin-left: 3.2em}
46 div.lisp {margin-left: 3.2em}
47 div.smalldisplay {margin-left: 3.2em}
48 div.smallexample {margin-left: 3.2em}
49 div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
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.nocodebreak {white-space:nowrap}
61 span.nolinebreak {white-space:nowrap}
62 span.roman {font-family:serif; font-weight:normal}
63 span.sansserif {font-family:sans-serif; font-weight:normal}
64 ul.no-bullet {list-style: none}
65 -->
66 </style>
67
68
69 </head>
70
71 <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
72 <a name="Real_002ddata-DFT-Array-Format"></a>
73 <div class="header">
74 <p>
75 Next: <a href="Real_002dto_002dReal-Transforms.html#Real_002dto_002dReal-Transforms" accesskey="n" rel="next">Real-to-Real Transforms</a>, Previous: <a href="Real_002ddata-DFTs.html#Real_002ddata-DFTs" accesskey="p" rel="prev">Real-data DFTs</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>
76 </div>
77 <hr>
78 <a name="Real_002ddata-DFT-Array-Format-1"></a>
79 <h4 class="subsection">4.3.4 Real-data DFT Array Format</h4>
80 <a name="index-r2c_002fc2r-multi_002ddimensional-array-format-1"></a>
81
82 <p>The output of a DFT of real data (r2c) contains symmetries that, in
83 principle, make half of the outputs redundant (see <a href="What-FFTW-Really-Computes.html#What-FFTW-Really-Computes">What FFTW Really Computes</a>). (Similarly for the input of an inverse c2r transform.) In
84 practice, it is not possible to entirely realize these savings in an
85 efficient and understandable format that generalizes to
86 multi-dimensional transforms. Instead, the output of the r2c
87 transforms is <em>slightly</em> over half of the output of the
88 corresponding complex transform. We do not &ldquo;pack&rdquo; the data in any
89 way, but store it as an ordinary array of <code>fftw_complex</code> values.
90 In fact, this data is simply a subsection of what would be the array in
91 the corresponding complex transform.
92 </p>
93 <p>Specifically, for a real transform of <em>d</em> (= <code>rank</code>)
94 dimensions n<sub>0</sub>&nbsp;&times;&nbsp;n<sub>1</sub>&nbsp;&times;&nbsp;n<sub>2</sub>&nbsp;&times;&nbsp;&hellip;&nbsp;&times;&nbsp;n<sub>d-1</sub>, the complex data is an n<sub>0</sub>&nbsp;&times;&nbsp;n<sub>1</sub>&nbsp;&times;&nbsp;n<sub>2</sub>&nbsp;&times;&nbsp;&hellip;&nbsp;&times;&nbsp;(n<sub>d-1</sub>/2 + 1) array of
95 <code>fftw_complex</code> values in row-major order (with the division rounded
96 down). That is, we only store the <em>lower</em> half (non-negative
97 frequencies), plus one element, of the last dimension of the data from
98 the ordinary complex transform. (We could have instead taken half of
99 any other dimension, but implementation turns out to be simpler if the
100 last, contiguous, dimension is used.)
101 </p>
102 <a name="index-out_002dof_002dplace-1"></a>
103 <p>For an out-of-place transform, the real data is simply an array with
104 physical dimensions n<sub>0</sub>&nbsp;&times;&nbsp;n<sub>1</sub>&nbsp;&times;&nbsp;n<sub>2</sub>&nbsp;&times;&nbsp;&hellip;&nbsp;&times;&nbsp;n<sub>d-1</sub> in row-major order.
105 </p>
106 <a name="index-in_002dplace-4"></a>
107 <a name="index-padding-3"></a>
108 <p>For an in-place transform, some complications arise since the complex data
109 is slightly larger than the real data. In this case, the final
110 dimension of the real data must be <em>padded</em> with extra values to
111 accommodate the size of the complex data&mdash;two extra if the last
112 dimension is even and one if it is odd. That is, the last dimension of
113 the real data must physically contain
114 2 * (n<sub>d-1</sub>/2+1)<code>double</code> values (exactly enough to hold the complex data). This
115 physical array size does not, however, change the <em>logical</em> array
116 size&mdash;only
117 n<sub>d-1</sub>values are actually stored in the last dimension, and
118 n<sub>d-1</sub>is the last dimension passed to the planner.
119 </p>
120 <hr>
121 <div class="header">
122 <p>
123 Next: <a href="Real_002dto_002dReal-Transforms.html#Real_002dto_002dReal-Transforms" accesskey="n" rel="next">Real-to-Real Transforms</a>, Previous: <a href="Real_002ddata-DFTs.html#Real_002ddata-DFTs" accesskey="p" rel="prev">Real-data DFTs</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>
124 </div>
125
126
127
128 </body>
129 </html>