annotate src/DLD-FUNCTIONS/fftw_wisdom.cc @ 5307:4c8a2e4e0717

[project @ 2005-04-26 19:24:27 by jwe]
author jwe
date Tue, 26 Apr 2005 19:24:47 +0000
parents 23b37da9fd5b
children ebe5d7d15522
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
1 /*
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
2
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
3 Copyright (C) 2004 David Bateman
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
4
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
6
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
10 later version.
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
11
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
15 for more details.
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
16
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
5307
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5275
diff changeset
19 Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
4c8a2e4e0717 [project @ 2005-04-26 19:24:27 by jwe]
jwe
parents: 5275
diff changeset
20 02110-1301, USA.
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
21
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
22 */
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
23
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
24 #ifdef HAVE_CONFIG_H
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
25 #include <config.h>
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
26 #endif
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
27
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
28 #if defined (HAVE_FFTW3)
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
29 #include <fftw3.h>
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
30 #endif
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
31
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
32 #include "defaults.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
33 #include "defun-dld.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
34 #include "error.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
35 #include "file-ops.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
36 #include "gripes.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
37 #include "lo-mappers.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
38 #include "lo-sstream.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
39 #include "oct-env.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
40 #include "oct-obj.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
41 #include "sighandlers.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
42 #include "utils.h"
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
43
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
44 DEFUN_DLD (fftw_wisdom, args, ,
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
45 "-*- texinfo -*-\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
46 @deftypefn {Loadable Function} {} fftw_wisdom (@var{file}, @var{ow})\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
47 @deftypefnx {Loadable Function} {} fftw_wisdom (@var{n})\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
48 \n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
49 This function is used to manipulate the FFTW wisdom data. It can\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
50 be used to load previously stored wisdom from a file, create wisdom\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
51 needed by Octave and to save the current wisdom to a file. Wisdom\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
52 data can be used to significantly accelerate the calculation of the FFTs,\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
53 but is only profitable if the same FFT is called many times due to the\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
54 overhead in calculating the wisdom data.\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
55 \n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
56 Called with a single string argument, @code{fftw_wisdom (@var{file})}\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
57 will load the wisdom data found in @var{file}. If @var{file} does\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
58 not exist, then the current wisdom used by FFTW is saved to this\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
59 file. If the flag @var{ow} is non-zero, then even if @var{file}\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
60 exists, it will be overwritten.\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
61 \n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
62 It is assumed that each row of @var{n} represents the size of a FFT for\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
63 which it is desired to pre-calculate the wisdom needed to accelerate it.\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
64 Any value of the matrix that is less than 1, is assumed to indicate an\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
65 absent dimension. That is\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
66 \n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
67 @example\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
68 fftw_wisdom ([102, 0, 0; 103, 103, 0; 102, 103, 105]);\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
69 a = fft (rand (1,102));\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
70 b = fft (rand (103,103));\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
71 c = fftn (rand ([102, 103, 105]));\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
72 @end example\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
73 \n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
74 calculates the wisdom necessary to accelerate the 103, 102x102 and\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
75 the 102x103x105 FFTs. Note that calculated wisdom will be lost when\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
76 when restarting Octave. However, if it is saved as discussed above, it\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
77 can be reloaded. Also, any system-wide wisdom file that has been found\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
78 will also be used. Saved wisdom files should not be used on different\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
79 platforms since they will not be efficient and the point of calculating\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
80 the wisdom is lost.\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
81 \n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
82 Note that the program @code{fftw-wisdom} supplied with FFTW can equally\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
83 be used to create a file containing wisdom that can be imported into\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
84 Octave.\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
85 @end deftypefn\n\
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
86 @seealso {fft, ifft, fft2, ifft2, fftn, ifftn}")
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
87 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
88 octave_value retval;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
89
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
90 int nargin = args.length();
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
91
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
92 if (nargin < 1 || nargin > 2)
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
93 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
94 print_usage ("fftw_wisdom");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
95 return retval;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
96 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
97
4792
d2038299c683 [project @ 2004-02-20 18:44:43 by jwe]
jwe
parents: 4787
diff changeset
98 #if defined (HAVE_FFTW3)
d2038299c683 [project @ 2004-02-20 18:44:43 by jwe]
jwe
parents: 4787
diff changeset
99
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
100 if (args(0).is_string ())
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
101 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
102 bool overwrite = false;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
103
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
104 if (nargin != 1)
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
105 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
106 double dval = args (1).double_value ();
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4792
diff changeset
107 if (NINTbig (dval) != 0)
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
108 overwrite = true;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
109 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
110
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
111 std::string wisdom = octave_env::make_absolute
4787
02c748eb2ddc [project @ 2004-02-18 21:20:26 by jwe]
jwe
parents: 4776
diff changeset
112 (Vload_path_dir_path.find_first_of (args(0).string_value ()),
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
113 octave_env::getcwd ());
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
114
4787
02c748eb2ddc [project @ 2004-02-18 21:20:26 by jwe]
jwe
parents: 4776
diff changeset
115 // XXX FIXME XXX -- should probably protect FILE* resources with
02c748eb2ddc [project @ 2004-02-18 21:20:26 by jwe]
jwe
parents: 4776
diff changeset
116 // auto_ptr or similar...
02c748eb2ddc [project @ 2004-02-18 21:20:26 by jwe]
jwe
parents: 4776
diff changeset
117
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
118 if (wisdom.empty () || overwrite)
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
119 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
120 FILE *ofile = fopen (wisdom.c_str (), "wb");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
121 fftw_export_wisdom_to_file (ofile);
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
122 fclose (ofile);
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
123 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
124 else
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
125 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
126 FILE *ifile = fopen (wisdom.c_str (), "r");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
127 if (! fftw_import_wisdom_from_file (ifile))
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
128 error ("fftw_wisdom: can not import wisdom from file");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
129 fclose (ifile);
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
130 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
131
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
132 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
133 else
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
134 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
135 Matrix m = args (0).matrix_value ();
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
136
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
137 if (error_state)
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
138 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
139 error ("fftw_wisdom: argument must be a matrix or a string");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
140 return retval;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
141 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
142
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
143 std::string name = file_ops::tempnam ("", "oct-");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
144
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
145 if (name.empty ())
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
146 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
147 error ("fftw_wisdom: can not open temporary file");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
148 return retval;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
149 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
150
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
151 OSSTREAM cmd_buf;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
152 cmd_buf << Vfftw_wisdom_prog << " -n -o \"" << name << "\"";
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
153
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4792
diff changeset
154 for (octave_idx_type k = 0; k < m.rows (); k++)
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
155 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
156 bool first = true;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
157
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
158 cmd_buf << " ";
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
159
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
160 // Note reversal of dimensions for column major storage in FFTW
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4792
diff changeset
161 for (octave_idx_type j = m.columns()-1; j >= 0; j--)
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4792
diff changeset
162 if (NINTbig(m(k,j)) > 0)
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
163 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
164 if (first)
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
165 first = false;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
166 else
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
167 cmd_buf << "x";
5275
23b37da9fd5b [project @ 2005-04-08 16:07:35 by jwe]
jwe
parents: 4792
diff changeset
168 cmd_buf << NINTbig(m(k,j)) ;
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
169 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
170 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
171
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
172 cmd_buf << OSSTREAM_ENDS;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
173
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
174 volatile octave_interrupt_handler old_interrupt_handler
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
175 = octave_ignore_interrupts ();
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
176
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
177 int status = system (OSSTREAM_C_STR (cmd_buf));
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
178
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
179 OSSTREAM_FREEZE (cmd_buf);
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
180
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
181 octave_set_interrupt_handler (old_interrupt_handler);
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
182
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
183 if (WIFEXITED (status))
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
184 {
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
185 FILE *ifile = fopen (name.c_str (), "r");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
186 if (! fftw_import_wisdom_from_file (ifile))
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
187 error ("fftw_wisdom: can not import wisdom from temporary file");
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
188 fclose (ifile);
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
189 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
190 else
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
191 error ("fftw_wisdom: error running %s", Vfftw_wisdom_prog.c_str ());
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
192
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
193 }
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
194
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
195 #else
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
196
4787
02c748eb2ddc [project @ 2004-02-18 21:20:26 by jwe]
jwe
parents: 4776
diff changeset
197 warning ("fftw_wisdom: this copy of Octave was not configured to use FFTW3");
4776
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
198
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
199 #endif
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
200
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
201 return retval;
adf8d68d7143 [project @ 2004-02-16 20:32:20 by jwe]
jwe
parents:
diff changeset
202 }