Mercurial > octave
annotate libinterp/dldfcn/fftw.cc @ 20939:b17fda023ca6
maint: Use new C++ archetype in more files.
Place input validation first in files.
Move declaration of retval down in function to be closer to point of usage.
Eliminate else clause after if () error.
Use "return ovl()" where it makes sense.
* find.cc, gammainc.cc, gcd.cc, getgrent.cc, getpwent.cc, givens.cc,
graphics.cc, help.cc, hess.cc, hex2num.cc, input.cc, kron.cc, load-path.cc,
load-save.cc, lookup.cc, mappers.cc, matrix_type.cc, mgorth.cc, nproc.cc,
ordschur.cc, pager.cc, pinv.cc, pr-output.cc, profiler.cc, psi.cc, quad.cc,
rcond.cc, regexp.cc, schur.cc, sighandlers.cc, sparse.cc, str2double.cc,
strfind.cc, strfns.cc, sub2ind.cc, svd.cc, sylvester.cc, symtab.cc,
syscalls.cc, sysdep.cc, time.cc, toplev.cc, tril.cc, tsearch.cc, typecast.cc,
urlwrite.cc, utils.cc, variables.cc, __delaunayn__.cc, __eigs__.cc,
__glpk__.cc, __magick_read__.cc, __osmesa_print__.cc, __voronoi__.cc, amd.cc,
audiodevinfo.cc, audioread.cc, chol.cc, colamd.cc, dmperm.cc, fftw.cc, qr.cc,
symbfact.cc, symrcm.cc, ov-bool-mat.cc, ov-cell.cc, ov-class.cc,
ov-classdef.cc, ov-fcn-handle.cc, ov-fcn-inline.cc, ov-flt-re-mat.cc,
ov-java.cc, ov-null-mat.cc, ov-oncleanup.cc, ov-re-mat.cc, ov-struct.cc,
ov-typeinfo.cc, ov-usr-fcn.cc, ov.cc, octave.cc:
Use new C++ archetype in more files.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 18 Dec 2015 15:37:22 -0800 |
parents | 1142cf6abc0d |
children | e39e05d90788 |
rev | line source |
---|---|
6228 | 1 /* |
2 | |
19697
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19221
diff
changeset
|
3 Copyright (C) 2006-2015 David Bateman |
6228 | 4 |
5 This file is part of Octave. | |
6 | |
7 Octave is free software; you can redistribute it and/or modify it | |
8 under the terms of the GNU General Public License as published by the | |
7016 | 9 Free Software Foundation; either version 3 of the License, or (at your |
10 option) any later version. | |
6228 | 11 |
12 Octave is distributed in the hope that it will be useful, but WITHOUT | |
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
15 for more details. | |
16 | |
17 You should have received a copy of the GNU General Public License | |
7016 | 18 along with Octave; see the file COPYING. If not, see |
19 <http://www.gnu.org/licenses/>. | |
6228 | 20 |
21 */ | |
22 | |
23 #ifdef HAVE_CONFIG_H | |
24 #include <config.h> | |
25 #endif | |
26 | |
27 #include <algorithm> | |
9523
0ce82753dd72
more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents:
9516
diff
changeset
|
28 |
0ce82753dd72
more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents:
9516
diff
changeset
|
29 #include "oct-fftw.h" |
0ce82753dd72
more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents:
9516
diff
changeset
|
30 |
6228 | 31 #include "defun-dld.h" |
32 #include "error.h" | |
9523
0ce82753dd72
more configure changes for libraries
John W. Eaton <jwe@octave.org>
parents:
9516
diff
changeset
|
33 #include "ov.h" |
6228 | 34 |
19221
f5ad7470d957
fftw: Reword error messages to be consistent with other functions
Mike Miller <mtmiller@ieee.org>
parents:
19130
diff
changeset
|
35 #include "gripes.h" |
f5ad7470d957
fftw: Reword error messages to be consistent with other functions
Mike Miller <mtmiller@ieee.org>
parents:
19130
diff
changeset
|
36 |
6228 | 37 DEFUN_DLD (fftw, args, , |
17787
175b392e91fe
Use GNU style coding conventions for code in libinterp/
Rik <rik@octave.org>
parents:
17744
diff
changeset
|
38 "-*- texinfo -*-\n\ |
20853
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20790
diff
changeset
|
39 @deftypefn {} {@var{method} =} fftw (\"planner\")\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20790
diff
changeset
|
40 @deftypefnx {} {} fftw (\"planner\", @var{method})\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20790
diff
changeset
|
41 @deftypefnx {} {@var{wisdom} =} fftw (\"dwisdom\")\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20790
diff
changeset
|
42 @deftypefnx {} {} fftw (\"dwisdom\", @var{wisdom})\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20790
diff
changeset
|
43 @deftypefnx {} {} fftw (\"threads\", @var{nthreads})\n\ |
1142cf6abc0d
2015 Code Sprint: remove class of function from docstring for all C++ files.
Rik <rik@octave.org>
parents:
20790
diff
changeset
|
44 @deftypefnx {} {@var{nthreads} =} fftw (\"threads\")\n\ |
6228 | 45 \n\ |
20163
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
46 Manage @sc{fftw} wisdom data.\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
47 \n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
48 Wisdom data can be used to significantly accelerate the calculation of the\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
49 FFTs, but implies an initial cost in its calculation. When the @sc{fftw}\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
50 libraries are initialized, they read a system wide wisdom file (typically in\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
51 @file{/etc/fftw/wisdom}), allowing wisdom to be shared between applications\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
52 other than Octave. Alternatively, the @code{fftw} function can be used to\n\ |
075a5e2e1ba5
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
19743
diff
changeset
|
53 import wisdom. For example,\n\ |
6228 | 54 \n\ |
55 @example\n\ | |
14360
97883071e8e4
doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
56 @var{wisdom} = fftw (\"dwisdom\")\n\ |
6228 | 57 @end example\n\ |
58 \n\ | |
10846
a4f482e66b65
Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents:
10840
diff
changeset
|
59 @noindent\n\ |
6228 | 60 will save the existing wisdom used by Octave to the string @var{wisdom}.\n\ |
8115
37c1bdb9805c
Clarify fftw documentation
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
61 This string can then be saved to a file and restored using the @code{save}\n\ |
10846
a4f482e66b65
Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents:
10840
diff
changeset
|
62 and @code{load} commands respectively. This existing wisdom can be\n\ |
16826
a4969508008e
doc: Periodic spellcheck of the documentation.
Rik <rik@octave.org>
parents:
16816
diff
changeset
|
63 re-imported as follows\n\ |
6228 | 64 \n\ |
65 @example\n\ | |
14360
97883071e8e4
doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
66 fftw (\"dwisdom\", @var{wisdom})\n\ |
12642
f96b9b9f141b
doc: Periodic grammarcheck and spellcheck of documentation.
Rik <octave@nomad.inbox5.com>
parents:
11586
diff
changeset
|
67 @end example\n\ |
6228 | 68 \n\ |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
69 If @var{wisdom} is an empty string, then the wisdom used is cleared.\n\ |
6228 | 70 \n\ |
9072
bd8e388043c4
Cleanup documentation for signal.texi, image.texi, audio.texi
Rik <rdrider0-list@yahoo.com>
parents:
9064
diff
changeset
|
71 During the calculation of Fourier transforms further wisdom is generated.\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
72 The fashion in which this wisdom is generated is also controlled by\n\ |
9064
7c02ec148a3c
Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
73 the @code{fftw} function. There are five different manners in which the\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
74 wisdom can be treated:\n\ |
6228 | 75 \n\ |
76 @table @asis\n\ | |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
77 @item @qcode{\"estimate\"}\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
78 Specifies that no run-time measurement of the optimal means of\n\ |
6228 | 79 calculating a particular is performed, and a simple heuristic is used\n\ |
9064
7c02ec148a3c
Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
80 to pick a (probably sub-optimal) plan. The advantage of this method is\n\ |
6228 | 81 that there is little or no overhead in the generation of the plan, which\n\ |
9072
bd8e388043c4
Cleanup documentation for signal.texi, image.texi, audio.texi
Rik <rdrider0-list@yahoo.com>
parents:
9064
diff
changeset
|
82 is appropriate for a Fourier transform that will be calculated once.\n\ |
6228 | 83 \n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
84 @item @qcode{\"measure\"}\n\ |
6228 | 85 In this case a range of algorithms to perform the transform is considered\n\ |
86 and the best is selected based on their execution time.\n\ | |
87 \n\ | |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
88 @item @qcode{\"patient\"}\n\ |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
89 Similar to @qcode{\"measure\"}, but a wider range of algorithms is\n\ |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
90 considered.\n\ |
6228 | 91 \n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
92 @item @qcode{\"exhaustive\"}\n\ |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
93 Like @qcode{\"measure\"}, but all possible algorithms that may be used to\n\ |
6228 | 94 treat the transform are considered.\n\ |
95 \n\ | |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
96 @item @qcode{\"hybrid\"}\n\ |
6228 | 97 As run-time measurement of the algorithm can be expensive, this is a\n\ |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
98 compromise where @qcode{\"measure\"} is used for transforms up to the size\n\ |
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
99 of 8192 and beyond that the @qcode{\"estimate\"} method is used.\n\ |
6228 | 100 @end table\n\ |
101 \n\ | |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
16826
diff
changeset
|
102 The default method is @qcode{\"estimate\"}. The current method can\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
103 be queried with\n\ |
6228 | 104 \n\ |
105 @example\n\ | |
14360
97883071e8e4
doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
106 @var{method} = fftw (\"planner\")\n\ |
6228 | 107 @end example\n\ |
108 \n\ | |
10846
a4f482e66b65
Grammarcheck more of the documentation.
Rik <octave@nomad.inbox5.com>
parents:
10840
diff
changeset
|
109 @noindent\n\ |
11553
01f703952eff
Improve docstrings for functions in DLD-FUNCTIONS directory.
Rik <octave@nomad.inbox5.com>
parents:
11523
diff
changeset
|
110 or set by using\n\ |
6228 | 111 \n\ |
112 @example\n\ | |
14360
97883071e8e4
doc: Correct off-by-1 spacings in all .cc docstrings
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
113 fftw (\"planner\", @var{method})\n\ |
6228 | 114 @end example\n\ |
115 \n\ | |
9064
7c02ec148a3c
Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
116 Note that calculated wisdom will be lost when restarting Octave. However,\n\ |
6228 | 117 the wisdom data can be reloaded if it is saved to a file as described\n\ |
9064
7c02ec148a3c
Check grammar on all .cc files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
118 above. Saved wisdom files should not be used on different platforms since\n\ |
8115
37c1bdb9805c
Clarify fftw documentation
David Bateman <dbateman@free.fr>
parents:
7789
diff
changeset
|
119 they will not be efficient and the point of calculating the wisdom is lost.\n\ |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
120 \n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
121 The number of threads used for computing the plans and executing the\n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
122 transforms can be set with\n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
123 \n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
124 @example\n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
125 fftw (\"threads\", @var{NTHREADS})\n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
126 @end example\n\ |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
127 \n\ |
16816
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
15960
diff
changeset
|
128 Note that octave must be compiled with multi-threaded @sc{fftw} support for\n\ |
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
15960
diff
changeset
|
129 this feature. The number of processors available to the current process is\n\ |
12005245b645
doc: Periodic grammarcheck of documentation.
Rik <rik@octave.org>
parents:
15960
diff
changeset
|
130 used per default.\n\ |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
131 \n\ |
6228 | 132 @seealso{fft, ifft, fft2, ifft2, fftn, ifftn}\n\ |
133 @end deftypefn") | |
134 { | |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
135 #if defined (HAVE_FFTW) |
6228 | 136 |
14846
460a3c6d8bf1
maint: Use Octave coding convention for cuddled parenthis in function calls with empty argument lists.
Rik <octave@nomad.inbox5.com>
parents:
14361
diff
changeset
|
137 int nargin = args.length (); |
6228 | 138 |
139 if (nargin < 1 || nargin > 2) | |
20790
c2d9556d51d0
eliminate return statements after calls to print_usage
John W. Eaton <jwe@octave.org>
parents:
20711
diff
changeset
|
140 print_usage (); |
6228 | 141 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
142 octave_value retval; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
143 |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20579
diff
changeset
|
144 std::string arg0 = args(0).xstring_value ("fftw: first argument must be a string"); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
145 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
146 if (arg0 == "planner") |
6228 | 147 { |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
148 if (nargin == 2) // planner setter |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
149 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
150 // Use STL function to convert to lower case |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20700
diff
changeset
|
151 std::transform (arg0.begin (), arg0.end (), arg0.begin (), tolower); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
152 |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20700
diff
changeset
|
153 std::string arg1 = args(1).xstring_value ("fftw: METHOD must be a string"); |
19743
67f2c76f9f4d
Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
154 |
20711
7b608fadc663
Make error messages more specific about the variable and problem encountered.
Rik <rik@octave.org>
parents:
20700
diff
changeset
|
155 std::transform (arg1.begin (), arg1.end (), arg1.begin (), tolower); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
156 octave_fftw_planner::FftwMethod meth |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
157 = octave_fftw_planner::UNKNOWN; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
158 octave_float_fftw_planner::FftwMethod methf |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
159 = octave_float_fftw_planner::UNKNOWN; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
160 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
161 if (arg1 == "estimate") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
162 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
163 meth = octave_fftw_planner::ESTIMATE; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
164 methf = octave_float_fftw_planner::ESTIMATE; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
165 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
166 else if (arg1 == "measure") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
167 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
168 meth = octave_fftw_planner::MEASURE; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
169 methf = octave_float_fftw_planner::MEASURE; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
170 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
171 else if (arg1 == "patient") |
10154
40dfc0c99116
DLD-FUNCTIONS/*.cc: untabify
John W. Eaton <jwe@octave.org>
parents:
9523
diff
changeset
|
172 { |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
173 meth = octave_fftw_planner::PATIENT; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
174 methf = octave_float_fftw_planner::PATIENT; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
175 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
176 else if (arg1 == "exhaustive") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
177 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
178 meth = octave_fftw_planner::EXHAUSTIVE; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
179 methf = octave_float_fftw_planner::EXHAUSTIVE; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
180 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
181 else if (arg1 == "hybrid") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
182 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
183 meth = octave_fftw_planner::HYBRID; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
184 methf = octave_float_fftw_planner::HYBRID; |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
185 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
186 else |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
187 error ("fftw: unrecognized planner METHOD"); |
20555
f90c8372b7ba
eliminate many more simple uses of error_state
John W. Eaton <jwe@octave.org>
parents:
20163
diff
changeset
|
188 |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
189 meth = octave_fftw_planner::method (meth); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
190 octave_float_fftw_planner::method (methf); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
191 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
192 if (meth == octave_fftw_planner::MEASURE) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
193 retval = octave_value ("measure"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
194 else if (meth == octave_fftw_planner::PATIENT) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
195 retval = octave_value ("patient"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
196 else if (meth == octave_fftw_planner::EXHAUSTIVE) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
197 retval = octave_value ("exhaustive"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
198 else if (meth == octave_fftw_planner::HYBRID) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
199 retval = octave_value ("hybrid"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
200 else |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
201 retval = octave_value ("estimate"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
202 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
203 else //planner getter |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
204 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
205 octave_fftw_planner::FftwMethod meth = |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
206 octave_fftw_planner::method (); |
19743
67f2c76f9f4d
Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
207 |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
208 if (meth == octave_fftw_planner::MEASURE) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
209 retval = octave_value ("measure"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
210 else if (meth == octave_fftw_planner::PATIENT) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
211 retval = octave_value ("patient"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
212 else if (meth == octave_fftw_planner::EXHAUSTIVE) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
213 retval = octave_value ("exhaustive"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
214 else if (meth == octave_fftw_planner::HYBRID) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
215 retval = octave_value ("hybrid"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
216 else |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
217 retval = octave_value ("estimate"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
218 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
219 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
220 else if (arg0 == "dwisdom") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
221 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
222 if (nargin == 2) //dwisdom setter |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
223 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
224 // Use STL function to convert to lower case |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
225 std::transform (arg0.begin (), arg0.end (), arg0.begin (), |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
226 tolower); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
227 |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20579
diff
changeset
|
228 std::string arg1 = args(1).xstring_value ("fftw: WISDOM must be a string"); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
229 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
230 char *str = fftw_export_wisdom_to_string (); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
231 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
232 if (arg1.length () < 1) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
233 fftw_forget_wisdom (); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
234 else if (! fftw_import_wisdom_from_string (arg1.c_str ())) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
235 error ("fftw: could not import supplied WISDOM"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
236 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
237 retval = octave_value (std::string (str)); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
238 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
239 // FIXME: need to free string even if there is an exception. |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
240 free (str); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
241 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
242 else //dwisdom getter |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
243 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
244 char *str = fftw_export_wisdom_to_string (); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
245 retval = octave_value (std::string (str)); |
19743
67f2c76f9f4d
Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
246 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
247 // FIXME: need to free string even if there is an exception. |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
248 free (str); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
249 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
250 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
251 else if (arg0 == "swisdom") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
252 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
253 //swisdom uses fftwf_ functions (float), dwisdom fftw_ (real) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
254 if (nargin == 2) //swisdom setter |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
255 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
256 // Use STL function to convert to lower case |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
257 std::transform (arg0.begin (), arg0.end (), arg0.begin (), |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
258 tolower); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
259 |
20700
68e3a747ca02
rename octave_value value extractors that accept error message args
John W. Eaton <jwe@octave.org>
parents:
20579
diff
changeset
|
260 std::string arg1 = args(1).xstring_value ("fftw: WISDOM must be a string"); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
261 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
262 char *str = fftwf_export_wisdom_to_string (); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
263 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
264 if (arg1.length () < 1) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
265 fftwf_forget_wisdom (); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
266 else if (! fftwf_import_wisdom_from_string (arg1.c_str ())) |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
267 error ("fftw: could not import supplied WISDOM"); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
268 |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
269 retval = octave_value (std::string (str)); |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
270 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
271 // FIXME: need to free string even if there is an exception. |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
272 free (str); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
273 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
274 else //swisdom getter |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
275 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
276 char *str = fftwf_export_wisdom_to_string (); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
277 retval = octave_value (std::string (str)); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
278 |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
279 // FIXME: need to free string even if there is an exception. |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
280 free (str); |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
281 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
282 } |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
283 else if (arg0 == "threads") |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
284 { |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
285 if (nargin == 2) //threads setter |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
286 { |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
287 if (! args(1).is_real_scalar ()) |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
288 error ("fftw: setting threads needs one integer argument"); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
289 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
290 int nthreads = args(1).int_value(); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
291 if (nthreads < 1) |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
292 error ("fftw: number of threads must be >=1"); |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
293 |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
294 #if defined (HAVE_FFTW3_THREADS) |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
295 octave_fftw_planner::threads (nthreads); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
296 #else |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
297 gripe_disabled_feature ("fftw", "multithreaded FFTW"); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
298 #endif |
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
299 #if defined (HAVE_FFTW3F_THREADS) |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
300 octave_float_fftw_planner::threads (nthreads); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
301 #else |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
302 gripe_disabled_feature ("fftw", "multithreaded FFTW"); |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
303 #endif |
19743
67f2c76f9f4d
Remove unnecessary checking of error_state after is_string validation.
Rik <rik@octave.org>
parents:
19697
diff
changeset
|
304 } |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
305 else //threads getter |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
306 #if defined (HAVE_FFTW3_THREADS) |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
307 retval = octave_value (octave_fftw_planner::threads()); |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
308 #else |
20579
10ec79b47808
use new string_value method to handle value extraction errors
John W. Eaton <jwe@octave.org>
parents:
20555
diff
changeset
|
309 retval = 1; |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
310 #endif |
6228 | 311 } |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
312 else |
19221
f5ad7470d957
fftw: Reword error messages to be consistent with other functions
Mike Miller <mtmiller@ieee.org>
parents:
19130
diff
changeset
|
313 error ("fftw: unrecognized argument"); |
20939
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
314 |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
315 return retval; |
b17fda023ca6
maint: Use new C++ archetype in more files.
Rik <rik@octave.org>
parents:
20853
diff
changeset
|
316 |
6228 | 317 #else |
318 | |
19221
f5ad7470d957
fftw: Reword error messages to be consistent with other functions
Mike Miller <mtmiller@ieee.org>
parents:
19130
diff
changeset
|
319 gripe_disabled_feature ("fftw", "the FFTW3 planner"); |
6228 | 320 |
321 #endif | |
322 } | |
15741
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
323 |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
324 /* |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
325 %!testif HAVE_FFTW |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
326 %! def_method = fftw ("planner"); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
327 %! unwind_protect |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
328 %! method = "estimate"; |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
329 %! fftw ("planner", method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
330 %! assert (fftw ("planner"), method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
331 %! method = "measure"; |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
332 %! fftw ("planner", method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
333 %! assert (fftw ("planner"), method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
334 %! method = "patient"; |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
335 %! fftw ("planner", method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
336 %! assert (fftw ("planner"), method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
337 %! method = "exhaustive"; |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
338 %! fftw ("planner", method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
339 %! assert (fftw ("planner"), method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
340 %! method = "hybrid"; |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
341 %! fftw ("planner", method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
342 %! assert (fftw ("planner"), method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
343 %! unwind_protect_cleanup |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
344 %! fftw ("planner", def_method); |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
345 %! end_unwind_protect |
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
346 |
19130
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
347 %!testif HAVE_FFTW |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
348 %! def_dwisdom = fftw ("dwisdom"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
349 %! def_swisdom = fftw ("swisdom"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
350 %! unwind_protect |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
351 %! wisdom = fftw ("dwisdom"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
352 %! assert (ischar (wisdom)); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
353 %! fftw ("dwisdom", wisdom); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
354 %! assert (fftw ("dwisdom"), wisdom); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
355 %! wisdom = fftw ("swisdom"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
356 %! assert (ischar (wisdom)); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
357 %! fftw ("swisdom", wisdom); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
358 %! assert (fftw ("swisdom"), wisdom); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
359 %! unwind_protect_cleanup |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
360 %! fftw ("dwisdom", def_dwisdom); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
361 %! fftw ("swisdom", def_swisdom); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
362 %! end_unwind_protect |
15741
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
363 |
15960
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
364 %!testif HAVE_FFTW3_THREADS |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
365 %! n = fftw ("threads"); |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
366 %! unwind_protect |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
367 %! fftw ("threads", 3); |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
368 %! assert (fftw ("threads"), 3); |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
369 %! unwind_protect_cleanup |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
370 %! fftw ("threads", n); |
bde7731b2b83
added FFTW multithreaded library support
Andreas Weber <andy.weber.aw@gmail.com>
parents:
15818
diff
changeset
|
371 %! end_unwind_protect |
19130
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
372 |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
373 %!error <Invalid call to fftw> fftw (); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
374 %!error <Invalid call to fftw> fftw ("planner", "estimate", "measure"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
375 %!error fftw (3); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
376 %!error fftw ("invalid"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
377 %!error fftw ("planner", "invalid"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
378 %!error fftw ("planner", 2); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
379 %!error fftw ("dwisdom", "invalid"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
380 %!error fftw ("swisdom", "invalid"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
381 %!error fftw ("threads", "invalid"); |
90421e725f1d
codesprint: Tests for fftw
Mike Miller <mtmiller@ieee.org>
parents:
18678
diff
changeset
|
382 %!error fftw ("threads", -3); |
15741
f63a4f23bfe7
Fix infinite loop when setting fftw planner method (bug #37873)
Mike Miller <mtmiller@ieee.org>
parents:
14138
diff
changeset
|
383 */ |