Mercurial > hg > batch-feature-extraction-tool
diff Lib/fftw-3.2.1/doc/html/.svn/text-base/Fortran-Examples.html.svn-base @ 15:585caf503ef5 tip
Tidy up for ROLI
author | Geogaddi\David <d.m.ronan@qmul.ac.uk> |
---|---|
date | Tue, 17 May 2016 18:50:19 +0100 |
parents | 636c989477e7 |
children |
line wrap: on
line diff
--- a/Lib/fftw-3.2.1/doc/html/.svn/text-base/Fortran-Examples.html.svn-base Wed May 04 11:02:59 2016 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,151 +0,0 @@ -<html lang="en"> -<head> -<title>Fortran Examples - FFTW 3.2.1</title> -<meta http-equiv="Content-Type" content="text/html"> -<meta name="description" content="FFTW 3.2.1"> -<meta name="generator" content="makeinfo 4.8"> -<link title="Top" rel="start" href="index.html#Top"> -<link rel="up" href="Calling-FFTW-from-Fortran.html#Calling-FFTW-from-Fortran" title="Calling FFTW from Fortran"> -<link rel="prev" href="FFTW-Execution-in-Fortran.html#FFTW-Execution-in-Fortran" title="FFTW Execution in Fortran"> -<link rel="next" href="Wisdom-of-Fortran_003f.html#Wisdom-of-Fortran_003f" title="Wisdom of Fortran?"> -<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> -<!-- -This manual is for FFTW -(version 3.2.1, 5 February 2009). - -Copyright (C) 2003 Matteo Frigo. - -Copyright (C) 2003 Massachusetts Institute of Technology. - - Permission is granted to make and distribute verbatim copies of - this manual provided the copyright notice and this permission - notice are preserved on all copies. - - Permission is granted to copy and distribute modified versions of - this manual under the conditions for verbatim copying, provided - that the entire resulting derived work is distributed under the - terms of a permission notice identical to this one. - - Permission is granted to copy and distribute translations of this - manual into another language, under the above conditions for - modified versions, except that this permission notice may be - stated in a translation approved by the Free Software Foundation. - --> -<meta http-equiv="Content-Style-Type" content="text/css"> -<style type="text/css"><!-- - pre.display { font-family:inherit } - pre.format { font-family:inherit } - pre.smalldisplay { font-family:inherit; font-size:smaller } - pre.smallformat { font-family:inherit; font-size:smaller } - pre.smallexample { font-size:smaller } - pre.smalllisp { font-size:smaller } - span.sc { font-variant:small-caps } - span.roman { font-family:serif; font-weight:normal; } - span.sansserif { font-family:sans-serif; font-weight:normal; } ---></style> -</head> -<body> -<div class="node"> -<p> -<a name="Fortran-Examples"></a> -Next: <a rel="next" accesskey="n" href="Wisdom-of-Fortran_003f.html#Wisdom-of-Fortran_003f">Wisdom of Fortran?</a>, -Previous: <a rel="previous" accesskey="p" href="FFTW-Execution-in-Fortran.html#FFTW-Execution-in-Fortran">FFTW Execution in Fortran</a>, -Up: <a rel="up" accesskey="u" href="Calling-FFTW-from-Fortran.html#Calling-FFTW-from-Fortran">Calling FFTW from Fortran</a> -<hr> -</div> - -<h3 class="section">7.4 Fortran Examples</h3> - -<p>In C, you might have something like the following to transform a -one-dimensional complex array: - -<pre class="example"> fftw_complex in[N], out[N]; - fftw_plan plan; - - plan = fftw_plan_dft_1d(N,in,out,FFTW_FORWARD,FFTW_ESTIMATE); - fftw_execute(plan); - fftw_destroy_plan(plan); -</pre> - <p>In Fortran, you would use the following to accomplish the same thing: - -<pre class="example"> double complex in, out - dimension in(N), out(N) - integer*8 plan - - call dfftw_plan_dft_1d(plan,N,in,out,FFTW_FORWARD,FFTW_ESTIMATE) - call dfftw_execute_dft(plan, in, out) - call dfftw_destroy_plan(plan) -</pre> - <p><a name="index-dfftw_005fplan_005fdft_005f1d-341"></a><a name="index-dfftw_005fexecute_005fdft-342"></a><a name="index-dfftw_005fdestroy_005fplan-343"></a> -Notice how all routines are called as Fortran subroutines, and the -plan is returned via the first argument to <code>dfftw_plan_dft_1d</code>. -Notice also that we changed <code>fftw_execute</code> to -<code>dfftw_execute_dft</code> (see <a href="FFTW-Execution-in-Fortran.html#FFTW-Execution-in-Fortran">FFTW Execution in Fortran</a>). To do -the same thing, but using 8 threads in parallel (see <a href="Multi_002dthreaded-FFTW.html#Multi_002dthreaded-FFTW">Multi-threaded FFTW</a>), you would simply prefix these calls with: - -<pre class="example"> call dfftw_init_threads - call dfftw_plan_with_nthreads(8) -</pre> - <p><a name="index-dfftw_005finit_005fthreads-344"></a><a name="index-dfftw_005fplan_005fwith_005fnthreads-345"></a> -To transform a three-dimensional array in-place with C, you might do: - -<pre class="example"> fftw_complex arr[L][M][N]; - fftw_plan plan; - - plan = fftw_plan_dft_3d(L,M,N, arr,arr, - FFTW_FORWARD, FFTW_ESTIMATE); - fftw_execute(plan); - fftw_destroy_plan(plan); -</pre> - <p>In Fortran, you would use this instead: - -<pre class="example"> double complex arr - dimension arr(L,M,N) - integer*8 plan - - call dfftw_plan_dft_3d(plan, L,M,N, arr,arr, - & FFTW_FORWARD, FFTW_ESTIMATE) - call dfftw_execute_dft(plan, arr, arr) - call dfftw_destroy_plan(plan) -</pre> - <p><a name="index-dfftw_005fplan_005fdft_005f3d-346"></a> -Note that we pass the array dimensions in the “natural” order in both C -and Fortran. - - <p>To transform a one-dimensional real array in Fortran, you might do: - -<pre class="example"> double precision in - dimension in(N) - double complex out - dimension out(N/2 + 1) - integer*8 plan - - call dfftw_plan_dft_r2c_1d(plan,N,in,out,FFTW_ESTIMATE) - call dfftw_execute_dft_r2c(plan, in, out) - call dfftw_destroy_plan(plan) -</pre> - <p><a name="index-dfftw_005fplan_005fdft_005fr2c_005f1d-347"></a><a name="index-dfftw_005fexecute_005fdft_005fr2c-348"></a> -To transform a two-dimensional real array, out of place, you might use -the following: - -<pre class="example"> double precision in - dimension in(M,N) - double complex out - dimension out(M/2 + 1, N) - integer*8 plan - - call dfftw_plan_dft_r2c_2d(plan,M,N,in,out,FFTW_ESTIMATE) - call dfftw_execute_dft_r2c(plan, in, out) - call dfftw_destroy_plan(plan) -</pre> - <p><a name="index-dfftw_005fplan_005fdft_005fr2c_005f2d-349"></a> -<strong>Important:</strong> Notice that it is the <em>first</em> dimension of the -complex output array that is cut in half in Fortran, rather than the -last dimension as in C. This is a consequence of the interface routines -reversing the order of the array dimensions passed to FFTW so that the -Fortran program can use its ordinary column-major order. -<a name="index-column_002dmajor-350"></a><a name="index-r2c_002fc2r-multi_002ddimensional-array-format-351"></a> -<!-- --> - - </body></html> -