annotate src/fftw-3.3.5/doc/html/Guru-Complex-DFTs.html @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 2cd0e3b3e1fd
children
rev   line source
Chris@42 1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
Chris@42 2 <html>
Chris@42 3 <!-- This manual is for FFTW
Chris@42 4 (version 3.3.5, 30 July 2016).
Chris@42 5
Chris@42 6 Copyright (C) 2003 Matteo Frigo.
Chris@42 7
Chris@42 8 Copyright (C) 2003 Massachusetts Institute of Technology.
Chris@42 9
Chris@42 10 Permission is granted to make and distribute verbatim copies of this
Chris@42 11 manual provided the copyright notice and this permission notice are
Chris@42 12 preserved on all copies.
Chris@42 13
Chris@42 14 Permission is granted to copy and distribute modified versions of this
Chris@42 15 manual under the conditions for verbatim copying, provided that the
Chris@42 16 entire resulting derived work is distributed under the terms of a
Chris@42 17 permission notice identical to this one.
Chris@42 18
Chris@42 19 Permission is granted to copy and distribute translations of this manual
Chris@42 20 into another language, under the above conditions for modified versions,
Chris@42 21 except that this permission notice may be stated in a translation
Chris@42 22 approved by the Free Software Foundation. -->
Chris@42 23 <!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
Chris@42 24 <head>
Chris@42 25 <title>FFTW 3.3.5: Guru Complex DFTs</title>
Chris@42 26
Chris@42 27 <meta name="description" content="FFTW 3.3.5: Guru Complex DFTs">
Chris@42 28 <meta name="keywords" content="FFTW 3.3.5: Guru Complex DFTs">
Chris@42 29 <meta name="resource-type" content="document">
Chris@42 30 <meta name="distribution" content="global">
Chris@42 31 <meta name="Generator" content="makeinfo">
Chris@42 32 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Chris@42 33 <link href="index.html#Top" rel="start" title="Top">
Chris@42 34 <link href="Concept-Index.html#Concept-Index" rel="index" title="Concept Index">
Chris@42 35 <link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
Chris@42 36 <link href="Guru-Interface.html#Guru-Interface" rel="up" title="Guru Interface">
Chris@42 37 <link href="Guru-Real_002ddata-DFTs.html#Guru-Real_002ddata-DFTs" rel="next" title="Guru Real-data DFTs">
Chris@42 38 <link href="Guru-vector-and-transform-sizes.html#Guru-vector-and-transform-sizes" rel="prev" title="Guru vector and transform sizes">
Chris@42 39 <style type="text/css">
Chris@42 40 <!--
Chris@42 41 a.summary-letter {text-decoration: none}
Chris@42 42 blockquote.smallquotation {font-size: smaller}
Chris@42 43 div.display {margin-left: 3.2em}
Chris@42 44 div.example {margin-left: 3.2em}
Chris@42 45 div.indentedblock {margin-left: 3.2em}
Chris@42 46 div.lisp {margin-left: 3.2em}
Chris@42 47 div.smalldisplay {margin-left: 3.2em}
Chris@42 48 div.smallexample {margin-left: 3.2em}
Chris@42 49 div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
Chris@42 50 div.smalllisp {margin-left: 3.2em}
Chris@42 51 kbd {font-style:oblique}
Chris@42 52 pre.display {font-family: inherit}
Chris@42 53 pre.format {font-family: inherit}
Chris@42 54 pre.menu-comment {font-family: serif}
Chris@42 55 pre.menu-preformatted {font-family: serif}
Chris@42 56 pre.smalldisplay {font-family: inherit; font-size: smaller}
Chris@42 57 pre.smallexample {font-size: smaller}
Chris@42 58 pre.smallformat {font-family: inherit; font-size: smaller}
Chris@42 59 pre.smalllisp {font-size: smaller}
Chris@42 60 span.nocodebreak {white-space:nowrap}
Chris@42 61 span.nolinebreak {white-space:nowrap}
Chris@42 62 span.roman {font-family:serif; font-weight:normal}
Chris@42 63 span.sansserif {font-family:sans-serif; font-weight:normal}
Chris@42 64 ul.no-bullet {list-style: none}
Chris@42 65 -->
Chris@42 66 </style>
Chris@42 67
Chris@42 68
Chris@42 69 </head>
Chris@42 70
Chris@42 71 <body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
Chris@42 72 <a name="Guru-Complex-DFTs"></a>
Chris@42 73 <div class="header">
Chris@42 74 <p>
Chris@42 75 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>
Chris@42 76 </div>
Chris@42 77 <hr>
Chris@42 78 <a name="Guru-Complex-DFTs-1"></a>
Chris@42 79 <h4 class="subsection">4.5.3 Guru Complex DFTs</h4>
Chris@42 80
Chris@42 81 <div class="example">
Chris@42 82 <pre class="example">fftw_plan fftw_plan_guru_dft(
Chris@42 83 int rank, const fftw_iodim *dims,
Chris@42 84 int howmany_rank, const fftw_iodim *howmany_dims,
Chris@42 85 fftw_complex *in, fftw_complex *out,
Chris@42 86 int sign, unsigned flags);
Chris@42 87
Chris@42 88 fftw_plan fftw_plan_guru_split_dft(
Chris@42 89 int rank, const fftw_iodim *dims,
Chris@42 90 int howmany_rank, const fftw_iodim *howmany_dims,
Chris@42 91 double *ri, double *ii, double *ro, double *io,
Chris@42 92 unsigned flags);
Chris@42 93 </pre></div>
Chris@42 94 <a name="index-fftw_005fplan_005fguru_005fdft"></a>
Chris@42 95 <a name="index-fftw_005fplan_005fguru_005fsplit_005fdft"></a>
Chris@42 96
Chris@42 97 <p>These two functions plan a complex-data, multi-dimensional DFT
Chris@42 98 for the interleaved and split format, respectively.
Chris@42 99 Transform dimensions are given by (<code>rank</code>, <code>dims</code>) over a
Chris@42 100 multi-dimensional vector (loop) of dimensions (<code>howmany_rank</code>,
Chris@42 101 <code>howmany_dims</code>). <code>dims</code> and <code>howmany_dims</code> should point
Chris@42 102 to <code>fftw_iodim</code> arrays of length <code>rank</code> and
Chris@42 103 <code>howmany_rank</code>, respectively.
Chris@42 104 </p>
Chris@42 105 <a name="index-flags-5"></a>
Chris@42 106 <p><code>flags</code> is a bitwise OR (&lsquo;<samp>|</samp>&rsquo;) of zero or more planner flags,
Chris@42 107 as defined in <a href="Planner-Flags.html#Planner-Flags">Planner Flags</a>.
Chris@42 108 </p>
Chris@42 109 <p>In the <code>fftw_plan_guru_dft</code> function, the pointers <code>in</code> and
Chris@42 110 <code>out</code> point to the interleaved input and output arrays,
Chris@42 111 respectively. The sign can be either <em>-1</em> (=
Chris@42 112 <code>FFTW_FORWARD</code>) or <em>+1</em> (= <code>FFTW_BACKWARD</code>). If the
Chris@42 113 pointers are equal, the transform is in-place.
Chris@42 114 </p>
Chris@42 115 <p>In the <code>fftw_plan_guru_split_dft</code> function,
Chris@42 116 <code>ri</code> and <code>ii</code> point to the real and imaginary input arrays,
Chris@42 117 and <code>ro</code> and <code>io</code> point to the real and imaginary output
Chris@42 118 arrays. The input and output pointers may be the same, indicating an
Chris@42 119 in-place transform. For example, for <code>fftw_complex</code> pointers
Chris@42 120 <code>in</code> and <code>out</code>, the corresponding parameters are:
Chris@42 121 </p>
Chris@42 122 <div class="example">
Chris@42 123 <pre class="example">ri = (double *) in;
Chris@42 124 ii = (double *) in + 1;
Chris@42 125 ro = (double *) out;
Chris@42 126 io = (double *) out + 1;
Chris@42 127 </pre></div>
Chris@42 128
Chris@42 129 <p>Because <code>fftw_plan_guru_split_dft</code> accepts split arrays, strides
Chris@42 130 are expressed in units of <code>double</code>. For a contiguous
Chris@42 131 <code>fftw_complex</code> array, the overall stride of the transform should
Chris@42 132 be 2, the distance between consecutive real parts or between
Chris@42 133 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
Chris@42 134 real and imaginary parts; real and imaginary arrays with different
Chris@42 135 strides are not supported.
Chris@42 136 </p>
Chris@42 137 <p>There is no <code>sign</code> parameter in <code>fftw_plan_guru_split_dft</code>.
Chris@42 138 This function always plans for an <code>FFTW_FORWARD</code> transform. To
Chris@42 139 plan for an <code>FFTW_BACKWARD</code> transform, you can exploit the
Chris@42 140 identity that the backwards DFT is equal to the forwards DFT with the
Chris@42 141 real and imaginary parts swapped. For example, in the case of the
Chris@42 142 <code>fftw_complex</code> arrays above, the <code>FFTW_BACKWARD</code> transform
Chris@42 143 is computed by the parameters:
Chris@42 144 </p>
Chris@42 145 <div class="example">
Chris@42 146 <pre class="example">ri = (double *) in + 1;
Chris@42 147 ii = (double *) in;
Chris@42 148 ro = (double *) out + 1;
Chris@42 149 io = (double *) out;
Chris@42 150 </pre></div>
Chris@42 151
Chris@42 152 <hr>
Chris@42 153 <div class="header">
Chris@42 154 <p>
Chris@42 155 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>
Chris@42 156 </div>
Chris@42 157
Chris@42 158
Chris@42 159
Chris@42 160 </body>
Chris@42 161 </html>