144#if defined (HAVE_FFTW)
146 int nargin = args.length ();
148 if (nargin < 1 || nargin > 2)
153 std::string arg0 = args(0).
xstring_value (
"fftw: first argument must be a string");
155 if (arg0 ==
"planner")
160 std::transform (arg0.begin (), arg0.end (), arg0.begin (), tolower);
162 std::string arg1 = args(1).xstring_value (
"fftw: METHOD must be a string");
164 std::transform (arg1.begin (), arg1.end (), arg1.begin (), tolower);
170 if (arg1 ==
"estimate")
175 else if (arg1 ==
"measure")
180 else if (arg1 ==
"patient")
185 else if (arg1 ==
"exhaustive")
190 else if (arg1 ==
"hybrid")
196 error (
"fftw: unrecognized planner METHOD");
229 else if (arg0 ==
"dwisdom")
234 std::transform (arg0.begin (), arg0.end (), arg0.begin (),
237 std::string arg1 = args(1).xstring_value (
"fftw: WISDOM must be a string");
239 char *str = fftw_export_wisdom_to_string ();
241 error (
"fftw: could not get current FFTW wisdom");
243 std::string wisdom_str (str);
246 if (arg1.length () < 1)
247 fftw_forget_wisdom ();
248 else if (! fftw_import_wisdom_from_string (arg1.c_str ()))
249 error (
"fftw: could not import supplied WISDOM");
255 char *str = fftw_export_wisdom_to_string ();
257 error (
"fftw: could not get current FFTW wisdom");
259 std::string wisdom_str (str);
264 else if (arg0 ==
"swisdom")
270 std::transform (arg0.begin (), arg0.end (), arg0.begin (),
273 std::string arg1 = args(1).xstring_value (
"fftw: WISDOM must be a string");
275 char *str = fftwf_export_wisdom_to_string ();
277 error (
"fftw: could not get current FFTW wisdom");
279 std::string wisdom_str (str);
282 if (arg1.length () < 1)
283 fftwf_forget_wisdom ();
284 else if (! fftwf_import_wisdom_from_string (arg1.c_str ()))
285 error (
"fftw: could not import supplied WISDOM");
291 char *str = fftwf_export_wisdom_to_string ();
293 error (
"fftw: could not get current FFTW wisdom");
295 std::string wisdom_str (str);
300 else if (arg0 ==
"threads")
304 if (! args(1).is_real_scalar ())
305 error (
"fftw: setting threads needs one integer argument");
307 int nthreads = args(1).int_value();
309 error (
"fftw: number of threads must be >=1");
311#if defined (HAVE_FFTW3_THREADS)
316#if defined (HAVE_FFTW3F_THREADS)
323#if defined (HAVE_FFTW3_THREADS)
330 error (
"fftw: unrecognized argument");
336 octave_unused_parameter (args);
#define DEFUN_DLD(name, args_name, nargout_name, doc)
Macro to define an at run time dynamically loadable builtin function.