comparison src/fftw-3.3.3/doc/html/64_002dbit-Guru-Interface.html @ 10:37bf6b4a2645

Add FFTW3
author Chris Cannam
date Wed, 20 Mar 2013 15:35:50 +0000
parents
children
comparison
equal deleted inserted replaced
9:c0fb53affa76 10:37bf6b4a2645
1 <html lang="en">
2 <head>
3 <title>64-bit Guru Interface - FFTW 3.3.3</title>
4 <meta http-equiv="Content-Type" content="text/html">
5 <meta name="description" content="FFTW 3.3.3">
6 <meta name="generator" content="makeinfo 4.13">
7 <link title="Top" rel="start" href="index.html#Top">
8 <link rel="up" href="Guru-Interface.html#Guru-Interface" title="Guru Interface">
9 <link rel="prev" href="Guru-Real_002dto_002dreal-Transforms.html#Guru-Real_002dto_002dreal-Transforms" title="Guru Real-to-real Transforms">
10 <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
11 <!--
12 This manual is for FFTW
13 (version 3.3.3, 25 November 2012).
14
15 Copyright (C) 2003 Matteo Frigo.
16
17 Copyright (C) 2003 Massachusetts Institute of Technology.
18
19 Permission is granted to make and distribute verbatim copies of
20 this manual provided the copyright notice and this permission
21 notice are preserved on all copies.
22
23 Permission is granted to copy and distribute modified versions of
24 this manual under the conditions for verbatim copying, provided
25 that the entire resulting derived work is distributed under the
26 terms of a permission notice identical to this one.
27
28 Permission is granted to copy and distribute translations of this
29 manual into another language, under the above conditions for
30 modified versions, except that this permission notice may be
31 stated in a translation approved by the Free Software Foundation.
32 -->
33 <meta http-equiv="Content-Style-Type" content="text/css">
34 <style type="text/css"><!--
35 pre.display { font-family:inherit }
36 pre.format { font-family:inherit }
37 pre.smalldisplay { font-family:inherit; font-size:smaller }
38 pre.smallformat { font-family:inherit; font-size:smaller }
39 pre.smallexample { font-size:smaller }
40 pre.smalllisp { font-size:smaller }
41 span.sc { font-variant:small-caps }
42 span.roman { font-family:serif; font-weight:normal; }
43 span.sansserif { font-family:sans-serif; font-weight:normal; }
44 --></style>
45 </head>
46 <body>
47 <div class="node">
48 <a name="64-bit-Guru-Interface"></a>
49 <a name="g_t64_002dbit-Guru-Interface"></a>
50 <p>
51 Previous:&nbsp;<a rel="previous" accesskey="p" href="Guru-Real_002dto_002dreal-Transforms.html#Guru-Real_002dto_002dreal-Transforms">Guru Real-to-real Transforms</a>,
52 Up:&nbsp;<a rel="up" accesskey="u" href="Guru-Interface.html#Guru-Interface">Guru Interface</a>
53 <hr>
54 </div>
55
56 <h4 class="subsection">4.5.6 64-bit Guru Interface</h4>
57
58 <p><a name="index-g_t64_002dbit-architecture-260"></a>
59 When compiled in 64-bit mode on a 64-bit architecture (where addresses
60 are 64 bits wide), FFTW uses 64-bit quantities internally for all
61 transform sizes, strides, and so on&mdash;you don't have to do anything
62 special to exploit this. However, in the ordinary FFTW interfaces,
63 you specify the transform size by an <code>int</code> quantity, which is
64 normally only 32 bits wide. This means that, even though FFTW is
65 using 64-bit sizes internally, you cannot specify a single transform
66 dimension larger than
67 2<sup><small>31</small></sup>&minus;1numbers.
68
69 <p>We expect that few users will require transforms larger than this, but,
70 for those who do, we provide a 64-bit version of the guru interface in
71 which all sizes are specified as integers of type <code>ptrdiff_t</code>
72 instead of <code>int</code>. (<code>ptrdiff_t</code> is a signed integer type
73 defined by the C standard to be wide enough to represent address
74 differences, and thus must be at least 64 bits wide on a 64-bit
75 machine.) We stress that there is <em>no performance advantage</em> to
76 using this interface&mdash;the same internal FFTW code is employed
77 regardless&mdash;and it is only necessary if you want to specify very
78 large transform sizes.
79 <a name="index-ptrdiff_005ft-261"></a>
80
81 <p>In particular, the 64-bit guru interface is a set of planner routines
82 that are exactly the same as the guru planner routines, except that
83 they are named with &lsquo;<samp><span class="samp">guru64</span></samp>&rsquo; instead of &lsquo;<samp><span class="samp">guru</span></samp>&rsquo; and they take
84 arguments of type <code>fftw_iodim64</code> instead of <code>fftw_iodim</code>.
85 For example, instead of <code>fftw_plan_guru_dft</code>, we have
86 <code>fftw_plan_guru64_dft</code>.
87
88 <pre class="example"> fftw_plan fftw_plan_guru64_dft(
89 int rank, const fftw_iodim64 *dims,
90 int howmany_rank, const fftw_iodim64 *howmany_dims,
91 fftw_complex *in, fftw_complex *out,
92 int sign, unsigned flags);
93 </pre>
94 <p><a name="index-fftw_005fplan_005fguru64_005fdft-262"></a>
95 The <code>fftw_iodim64</code> type is similar to <code>fftw_iodim</code>, with the
96 same interpretation, except that it uses type <code>ptrdiff_t</code> instead
97 of type <code>int</code>.
98
99 <pre class="example"> typedef struct {
100 ptrdiff_t n;
101 ptrdiff_t is;
102 ptrdiff_t os;
103 } fftw_iodim64;
104 </pre>
105 <p><a name="index-fftw_005fiodim64-263"></a>
106 Every other &lsquo;<samp><span class="samp">fftw_plan_guru</span></samp>&rsquo; function also has a
107 &lsquo;<samp><span class="samp">fftw_plan_guru64</span></samp>&rsquo; equivalent, but we do not repeat their
108 documentation here since they are identical to the 32-bit versions
109 except as noted above.
110
111 <!-- -->
112 </body></html>
113