/* for ptrdiff_t */
104 | struct fftw_iodim64_do_not_use_me {
105 | ptrdiff_t n; /* dimension size */
106 | ptrdiff_t is; /* input stride */
107 | ptrdiff_t os; /* output stride */
108 | };
109 |
110 | typedef void (*fftw_write_char_func_do_not_use_me)(char c, void *);
111 | typedef int (*fftw_read_char_func_do_not_use_me)(void *);
112 |
113 | /*
114 | huge second-order macro that defines prototypes for all API
115 | functions. We expand this macro for each supported precision
116 |
117 | X: name-mangling macro
118 | R: real data type
119 | C: complex data type
120 | */
121 |
122 | #define FFTW_DEFINE_API(X, R, C) \
123 | \
124 | FFTW_DEFINE_COMPLEX(R, C); \
125 | \
126 | typedef struct X(plan_s) *X(plan); \
127 | \
128 | typedef struct fftw_iodim_do_not_use_me X(iodim); \
129 | typedef struct fftw_iodim64_do_not_use_me X(iodim64); \
130 | \
131 | typedef enum fftw_r2r_kind_do_not_use_me X(r2r_kind); \
132 | \
133 | typedef fftw_write_char_func_do_not_use_me X(write_char_func); \
134 | typedef fftw_read_char_func_do_not_use_me X(read_char_func); \
135 | \
136 | FFTW_EXTERN void X(execute)(const X(plan) p); \
137 | \
138 | FFTW_EXTERN X(plan) X(plan_dft)(int rank, const int *n, \
139 | C *in, C *out, int sign, unsigned flags); \
140 | \
141 | FFTW_EXTERN X(plan) X(plan_dft_1d)(int n, C *in, C *out, int sign, \
142 | unsigned flags); \
143 | FFTW_EXTERN X(plan) X(plan_dft_2d)(int n0, int n1, \
144 | C *in, C *out, int sign, unsigned flags); \
145 | FFTW_EXTERN X(plan) X(plan_dft_3d)(int n0, int n1, int n2, \
146 | C *in, C *out, int sign, unsigned flags); \
147 | \
148 | FFTW_EXTERN X(plan) X(plan_many_dft)(int rank, const int *n, \
149 | int howmany, \
150 | C *in, const int *inembed, \
151 | int istride, int idist, \
152 | C *out, const int *onembed, \
153 | int ostride, int odist, \
154 | int sign, unsigned flags); \
155 | \
156 | FFTW_EXTERN X(plan) X(plan_guru_dft)(int rank, const X(iodim) *dims, \
157 | int howmany_rank, \
158 | const X(iodim) *howmany_dims, \
159 | C *in, C *out, \
160 | int sign, unsigned flags); \
161 | FFTW_EXTERN X(plan) X(plan_guru_split_dft)(int rank, const X(iodim) *dims, \
162 | int howmany_rank, \
163 | const X(iodim) *howmany_dims, \
164 | R *ri, R *ii, R *ro, R *io, \
165 | unsigned flags); \
166 | \
167 | FFTW_EXTERN X(plan) X(plan_guru64_dft)(int rank, \
168 | const X(iodim64) *dims, \
169 | int howmany_rank, \
170 | const X(iodim64) *howmany_dims, \
171 | C *in, C *out, \
172 | int sign, unsigned flags); \
173 | FFTW_EXTERN X(plan) X(plan_guru64_split_dft)(int rank, \
174 | const X(iodim64) *dims, \
175 | int howmany_rank, \
176 | const X(iodim64) *howmany_dims, \
177 | R *ri, R *ii, R *ro, R *io, \
178 | unsigned flags); \
179 | \
180 | FFTW_EXTERN void X(execute_dft)(const X(plan) p, C *in, C *out); \
181 | FFTW_EXTERN void X(execute_split_dft)(const X(plan) p, R *ri, R *ii, \
182 | R *ro, R *io); \
183 | \
184 | FFTW_EXTERN X(plan) X(plan_many_dft_r2c)(int rank, const int *n, \
185 | int howmany, \
186 | R *in, const int *inembed, \
187 | int istride, int idist, \
188 | C *out, const int *onembed, \
189 | int ostride, int odist, \
190 | unsigned flags); \
191 | \
192 | FFTW_EXTERN X(plan) X(plan_dft_r2c)(int rank, const int *n, \
193 | R *in, C *out, unsigned flags); \
194 | \
195 | FFTW_EXTERN X(plan) X(plan_dft_r2c_1d)(int n,R *in,C *out,unsigned flags); \
196 | FFTW_EXTERN X(plan) X(plan_dft_r2c_2d)(int n0, int n1, \
197 | R *in, C *out, unsigned flags); \
198 | FFTW_EXTERN X(plan) X(plan_dft_r2c_3d)(int n0, int n1, \
199 | int n2, \
200 | R *in, C *out, unsigned flags); \
201 | \
202 | \
203 | FFTW_EXTERN X(plan) X(plan_many_dft_c2r)(int rank, const int *n, \
204 | int howmany, \
205 | C *in, const int *inembed, \
206 | int istride, int idist, \
207 | R *out, const int *onembed, \
208 | int ostride, int odist, \
209 | unsigned flags); \
210 | \
211 | FFTW_EXTERN X(plan) X(plan_dft_c2r)(int rank, const int *n, \
212 | C *in, R *out, unsigned flags); \
213 | \
214 | FFTW_EXTERN X(plan) X(plan_dft_c2r_1d)(int n,C *in,R *out,unsigned flags); \
215 | FFTW_EXTERN X(plan) X(plan_dft_c2r_2d)(int n0, int n1, \
216 | C *in, R *out, unsigned flags); \
217 | FFTW_EXTERN X(plan) X(plan_dft_c2r_3d)(int n0, int n1, \
218 | int n2, \
219 | C *in, R *out, unsigned flags); \
220 | \
221 | FFTW_EXTERN X(plan) X(plan_guru_dft_r2c)(int rank, const X(iodim) *dims, \
222 | int howmany_rank, \
223 | const X(iodim) *howmany_dims, \
224 | R *in, C *out, \
225 | unsigned flags); \
226 | FFTW_EXTERN X(plan) X(plan_guru_dft_c2r)(int rank, const X(iodim) *dims, \
227 | int howmany_rank, \
228 | const X(iodim) *howmany_dims, \
229 | C *in, R *out, \
230 | unsigned flags); \
231 | \
232 | FFTW_EXTERN X(plan) X(plan_guru_split_dft_r2c)( \
233 | int rank, const X(iodim) *dims, \
234 | int howmany_rank, \
235 | const X(iodim) *howmany_dims, \
236 | R *in, R *ro, R *io, \
237 | unsigned flags); \
238 | FFTW_EXTERN X(plan) X(plan_guru_split_dft_c2r)( \
239 | int rank, const X(iodim) *dims, \
240 | int howmany_rank, \
241 | const X(iodim) *howmany_dims, \
242 | R *ri, R *ii, R *out, \
243 | unsigned flags); \
244 | \
245 | FFTW_EXTERN X(plan) X(plan_guru64_dft_r2c)(int rank, \
246 | const X(iodim64) *dims, \
247 | int howmany_rank, \
248 | const X(iodim64) *howmany_dims, \
249 | R *in, C *out, \
250 | unsigned flags); \
251 | FFTW_EXTERN X(plan) X(plan_guru64_dft_c2r)(int rank, \
252 | const X(iodim64) *dims, \
253 | int howmany_rank, \
254 | const X(iodim64) *howmany_dims, \
255 | C *in, R *out, \
256 | unsigned flags); \
257 | \
258 | FFTW_EXTERN X(plan) X(plan_guru64_split_dft_r2c)( \
259 | int rank, const X(iodim64) *dims, \
260 | int howmany_rank, \
261 | const X(iodim64) *howmany_dims, \
262 | R *in, R *ro, R *io, \
263 | unsigned flags); \
264 | FFTW_EXTERN X(plan) X(plan_guru64_split_dft_c2r)( \
265 | int rank, const X(iodim64) *dims, \
266 | int howmany_rank, \
267 | const X(iodim64) *howmany_dims, \
268 | R *ri, R *ii, R *out, \
269 | unsigned flags); \
270 | \
271 | FFTW_EXTERN void X(execute_dft_r2c)(const X(plan) p, R *in, C *out); \
272 | FFTW_EXTERN void X(execute_dft_c2r)(const X(plan) p, C *in, R *out); \
273 | \
274 | FFTW_EXTERN void X(execute_split_dft_r2c)(const X(plan) p, \
275 | R *in, R *ro, R *io); \
276 | FFTW_EXTERN void X(execute_split_dft_c2r)(const X(plan) p, \
277 | R *ri, R *ii, R *out); \
278 | \
279 | FFTW_EXTERN X(plan) X(plan_many_r2r)(int rank, const int *n, \
280 | int howmany, \
281 | R *in, const int *inembed, \
282 | int istride, int idist, \
283 | R *out, const int *onembed, \
284 | int ostride, int odist, \
285 | const X(r2r_kind) *kind, unsigned flags); \
286 | \
287 | FFTW_EXTERN X(plan) X(plan_r2r)(int rank, const int *n, R *in, R *out, \
288 | const X(r2r_kind) *kind, unsigned flags); \
289 | \
290 | FFTW_EXTERN X(plan) X(plan_r2r_1d)(int n, R *in, R *out, \
291 | X(r2r_kind) kind, unsigned flags); \
292 | FFTW_EXTERN X(plan) X(plan_r2r_2d)(int n0, int n1, R *in, R *out, \
293 | X(r2r_kind) kind0, X(r2r_kind) kind1, \
294 | unsigned flags); \
295 | FFTW_EXTERN X(plan) X(plan_r2r_3d)(int n0, int n1, int n2, \
296 | R *in, R *out, X(r2r_kind) kind0, \
297 | X(r2r_kind) kind1, X(r2r_kind) kind2, \
298 | unsigned flags); \
299 | \
300 | FFTW_EXTERN X(plan) X(plan_guru_r2r)(int rank, const X(iodim) *dims, \
301 | int howmany_rank, \
302 | const X(iodim) *howmany_dims, \
303 | R *in, R *out, \
304 | const X(r2r_kind) *kind, unsigned flags); \
305 | \
306 | FFTW_EXTERN X(plan) X(plan_guru64_r2r)(int rank, const X(iodim64) *dims, \
307 | int howmany_rank, \
308 | const X(iodim64) *howmany_dims, \
309 | R *in, R *out, \
310 | const X(r2r_kind) *kind, unsigned flags); \
311 | \
312 | FFTW_EXTERN void X(execute_r2r)(const X(plan) p, R *in, R *out); \
313 | \
314 | FFTW_EXTERN void X(destroy_plan)(X(plan) p); \
315 | FFTW_EXTERN void X(forget_wisdom)(void); \
316 | FFTW_EXTERN void X(cleanup)(void); \
317 | \
318 | FFTW_EXTERN void X(set_timelimit)(double t); \
319 | \
320 | FFTW_EXTERN void X(plan_with_nthreads)(int nthreads); \
321 | FFTW_EXTERN int X(init_threads)(void); \
322 | FFTW_EXTERN void X(cleanup_threads)(void); \
323 | FFTW_EXTERN void X(make_planner_thread_safe)(void); \
324 | \
325 | FFTW_EXTERN int X(export_wisdom_to_filename)(const char *filename); \
326 | FFTW_EXTERN void X(export_wisdom_to_file)(FILE *output_file); \
327 | FFTW_EXTERN char *X(export_wisdom_to_string)(void); \
328 | FFTW_EXTERN void X(export_wisdom)(X(write_char_func) write_char, \
329 | void *data); \
330 | FFTW_EXTERN int X(import_system_wisdom)(void); \
331 | FFTW_EXTERN int X(import_wisdom_from_filename)(const char *filename); \
332 | FFTW_EXTERN int X(import_wisdom_from_file)(FILE *input_file); \
333 | FFTW_EXTERN int X(import_wisdom_from_string)(const char *input_string); \
334 | FFTW_EXTERN int X(import_wisdom)(X(read_char_func) read_char, void *data); \
335 | \
336 | FFTW_EXTERN void X(fprint_plan)(const X(plan) p, FILE *output_file); \
337 | FFTW_EXTERN void X(print_plan)(const X(plan) p); \
338 | FFTW_EXTERN char *X(sprint_plan)(const X(plan) p); \
339 | \
340 | FFTW_EXTERN void *X(malloc)(size_t n); \
341 | FFTW_EXTERN R *X(alloc_real)(size_t n); \
342 | FFTW_EXTERN C *X(alloc_complex)(size_t n); \
343 | FFTW_EXTERN void X(free)(void *p); \
344 | \
345 | FFTW_EXTERN void X(flops)(const X(plan) p, \
346 | double *add, double *mul, double *fmas); \
347 | FFTW_EXTERN double X(estimate_cost)(const X(plan) p); \
348 | FFTW_EXTERN double X(cost)(const X(plan) p); \
349 | \
350 | FFTW_EXTERN int X(alignment_of)(R *p); \
351 | FFTW_EXTERN const char X(version)[]; \
352 | FFTW_EXTERN const char X(cc)[]; \
353 | FFTW_EXTERN const char X(codelet_optim)[];
354 |
355 |
356 | /* end of FFTW_DEFINE_API macro */
357 |
358 | FFTW_DEFINE_API(FFTW_MANGLE_DOUBLE, double, fftw_complex)
359 | FFTW_DEFINE_API(FFTW_MANGLE_FLOAT, float, fftwf_complex)
360 | FFTW_DEFINE_API(FFTW_MANGLE_LONG_DOUBLE, long double, fftwl_complex)
361 |
362 | /* __float128 (quad precision) is a gcc extension on i386, x86_64, and ia64
363 | for gcc >= 4.6 (compiled in FFTW with --enable-quad-precision) */
364 | #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) \
365 | && !(defined(__ICC) || defined(__INTEL_COMPILER) || defined(__CUDACC__) || defined(__PGI)) \
366 | && (defined(__i386__) || defined(__x86_64__) || defined(__ia64__))
367 | # if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I)
368 | /* note: __float128 is a typedef, which is not supported with the _Complex
369 | keyword in gcc, so instead we use this ugly __attribute__ version.
370 | However, we can't simply pass the __attribute__ version to
371 | FFTW_DEFINE_API because the __attribute__ confuses gcc in pointer
372 | types. Hence redefining FFTW_DEFINE_COMPLEX. Ugh. */
373 | # undef FFTW_DEFINE_COMPLEX
374 | # define FFTW_DEFINE_COMPLEX(R, C) typedef _Complex float __attribute__((mode(TC))) C
375 | # endif
376 | FFTW_DEFINE_API(FFTW_MANGLE_QUAD, __float128, fftwq_complex)
377 | #endif
378 |
379 | #define FFTW_FORWARD (-1)
380 | #define FFTW_BACKWARD (+1)
381 |
382 | #define FFTW_NO_TIMELIMIT (-1.0)
383 |
384 | /* documented flags */
385 | #define FFTW_MEASURE (0U)
386 | #define FFTW_DESTROY_INPUT (1U << 0)
387 | #define FFTW_UNALIGNED (1U << 1)
388 | #define FFTW_CONSERVE_MEMORY (1U << 2)
389 | #define FFTW_EXHAUSTIVE (1U << 3) /* NO_EXHAUSTIVE is default */
390 | #define FFTW_PRESERVE_INPUT (1U << 4) /* cancels FFTW_DESTROY_INPUT */
391 | #define FFTW_PATIENT (1U << 5) /* IMPATIENT is default */
392 | #define FFTW_ESTIMATE (1U << 6)
393 | #define FFTW_WISDOM_ONLY (1U << 21)
394 |
395 | /* undocumented beyond-guru flags */
396 | #define FFTW_ESTIMATE_PATIENT (1U << 7)
397 | #define FFTW_BELIEVE_PCOST (1U << 8)
398 | #define FFTW_NO_DFT_R2HC (1U << 9)
399 | #define FFTW_NO_NONTHREADED (1U << 10)
400 | #define FFTW_NO_BUFFERING (1U << 11)
401 | #define FFTW_NO_INDIRECT_OP (1U << 12)
402 | #define FFTW_ALLOW_LARGE_GENERIC (1U << 13) /* NO_LARGE_GENERIC is default */
403 | #define FFTW_NO_RANK_SPLITS (1U << 14)
404 | #define FFTW_NO_VRANK_SPLITS (1U << 15)
405 | #define FFTW_NO_VRECURSE (1U << 16)
406 | #define FFTW_NO_SIMD (1U << 17)
407 | #define FFTW_NO_SLOW (1U << 18)
408 | #define FFTW_NO_FIXED_RADIX_LARGE_N (1U << 19)
409 | #define FFTW_ALLOW_PRUNING (1U << 20)
410 |
411 | #ifdef __cplusplus
412 | } /* extern "C" */
413 | #endif /* __cplusplus */
414 |
415 | #endif /* FFTW3_H */
416 |
--------------------------------------------------------------------------------
/src/winlibs/fftw/ffwt_license-and-copyright.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
23 |
24 |
25 | FFTW 3.3.8: License and Copyright
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
76 |
77 |
78 | 12 License and Copyright
79 |
80 | FFTW is Copyright © 2003, 2007-11 Matteo Frigo, Copyright
81 | © 2003, 2007-11 Massachusetts Institute of Technology.
82 |
83 | FFTW is free software; you can redistribute it and/or modify
84 | it under the terms of the GNU General Public License as published by
85 | the Free Software Foundation; either version 2 of the License, or
86 | (at your option) any later version.
87 |
88 | This program is distributed in the hope that it will be useful,
89 | but WITHOUT ANY WARRANTY; without even the implied warranty of
90 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
91 | GNU General Public License for more details.
92 |
93 | You should have received a copy of the GNU General Public License along
94 | with this program; if not, write to the Free Software Foundation, Inc.,
95 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA You can also
96 | find the GPL on the GNU
97 | web site .
98 |
99 | In addition, we kindly ask you to acknowledge FFTW and its authors in
100 | any program or publication in which you use FFTW. (You are not
101 | required to do so; it is up to your common sense to decide
102 | whether you want to comply with this request or not.) For general
103 | publications, we suggest referencing: Matteo Frigo and Steven
104 | G. Johnson, “The design and implementation of FFTW3,”
105 | Proc. IEEE 93 (2), 216–231 (2005).
106 |
107 | Non-free versions of FFTW are available under terms different from those
108 | of the General Public License. (e.g. they do not require you to
109 | accompany any object code using FFTW with the corresponding source
110 | code.) For these alternative terms you must purchase a license from MIT’s
111 | Technology Licensing Office. Users interested in such a license should
112 | contact us (fftw@fftw.org ) for more information.
113 |
114 |
115 |
116 |
120 |
121 |
122 |
123 |
124 |
125 |
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3-3.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3-3.dll
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3-3.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3-3.exp
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3-3.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3-3.lib
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3f-3.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3f-3.dll
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3f-3.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3f-3.exp
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3f-3.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3f-3.lib
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3l-3.def:
--------------------------------------------------------------------------------
1 | LIBRARY libfftw3l-3.dll
2 | EXPORTS
3 | fftwl_alignment_of
4 | fftwl_alloc_complex
5 | fftwl_alloc_real
6 | fftwl_assertion_failed
7 | fftwl_bufdist
8 | fftwl_choose_radix
9 | fftwl_cleanup
10 | fftwl_cleanup_threads
11 | fftwl_codelet_e01_8
12 | fftwl_codelet_e10_8
13 | fftwl_codelet_hb_10
14 | fftwl_codelet_hb_12
15 | fftwl_codelet_hb_15
16 | fftwl_codelet_hb_16
17 | fftwl_codelet_hb_2
18 | fftwl_codelet_hb_20
19 | fftwl_codelet_hb2_16
20 | fftwl_codelet_hb2_20
21 | fftwl_codelet_hb2_25
22 | fftwl_codelet_hb2_32
23 | fftwl_codelet_hb2_4
24 | fftwl_codelet_hb_25
25 | fftwl_codelet_hb2_5
26 | fftwl_codelet_hb2_8
27 | fftwl_codelet_hb_3
28 | fftwl_codelet_hb_32
29 | fftwl_codelet_hb_4
30 | fftwl_codelet_hb_5
31 | fftwl_codelet_hb_6
32 | fftwl_codelet_hb_64
33 | fftwl_codelet_hb_7
34 | fftwl_codelet_hb_8
35 | fftwl_codelet_hb_9
36 | fftwl_codelet_hc2cb_10
37 | fftwl_codelet_hc2cb_12
38 | fftwl_codelet_hc2cb_16
39 | fftwl_codelet_hc2cb_2
40 | fftwl_codelet_hc2cb_20
41 | fftwl_codelet_hc2cb2_16
42 | fftwl_codelet_hc2cb2_20
43 | fftwl_codelet_hc2cb2_32
44 | fftwl_codelet_hc2cb2_4
45 | fftwl_codelet_hc2cb2_8
46 | fftwl_codelet_hc2cb_32
47 | fftwl_codelet_hc2cb_4
48 | fftwl_codelet_hc2cb_6
49 | fftwl_codelet_hc2cb_8
50 | fftwl_codelet_hc2cbdft_10
51 | fftwl_codelet_hc2cbdft_12
52 | fftwl_codelet_hc2cbdft_16
53 | fftwl_codelet_hc2cbdft_2
54 | fftwl_codelet_hc2cbdft_20
55 | fftwl_codelet_hc2cbdft2_16
56 | fftwl_codelet_hc2cbdft2_20
57 | fftwl_codelet_hc2cbdft2_32
58 | fftwl_codelet_hc2cbdft2_4
59 | fftwl_codelet_hc2cbdft2_8
60 | fftwl_codelet_hc2cbdft_32
61 | fftwl_codelet_hc2cbdft_4
62 | fftwl_codelet_hc2cbdft_6
63 | fftwl_codelet_hc2cbdft_8
64 | fftwl_codelet_hc2cf_10
65 | fftwl_codelet_hc2cf_12
66 | fftwl_codelet_hc2cf_16
67 | fftwl_codelet_hc2cf_2
68 | fftwl_codelet_hc2cf_20
69 | fftwl_codelet_hc2cf2_16
70 | fftwl_codelet_hc2cf2_20
71 | fftwl_codelet_hc2cf2_32
72 | fftwl_codelet_hc2cf2_4
73 | fftwl_codelet_hc2cf2_8
74 | fftwl_codelet_hc2cf_32
75 | fftwl_codelet_hc2cf_4
76 | fftwl_codelet_hc2cf_6
77 | fftwl_codelet_hc2cf_8
78 | fftwl_codelet_hc2cfdft_10
79 | fftwl_codelet_hc2cfdft_12
80 | fftwl_codelet_hc2cfdft_16
81 | fftwl_codelet_hc2cfdft_2
82 | fftwl_codelet_hc2cfdft_20
83 | fftwl_codelet_hc2cfdft2_16
84 | fftwl_codelet_hc2cfdft2_20
85 | fftwl_codelet_hc2cfdft2_32
86 | fftwl_codelet_hc2cfdft2_4
87 | fftwl_codelet_hc2cfdft2_8
88 | fftwl_codelet_hc2cfdft_32
89 | fftwl_codelet_hc2cfdft_4
90 | fftwl_codelet_hc2cfdft_6
91 | fftwl_codelet_hc2cfdft_8
92 | fftwl_codelet_hf_10
93 | fftwl_codelet_hf_12
94 | fftwl_codelet_hf_15
95 | fftwl_codelet_hf_16
96 | fftwl_codelet_hf_2
97 | fftwl_codelet_hf_20
98 | fftwl_codelet_hf2_16
99 | fftwl_codelet_hf2_20
100 | fftwl_codelet_hf2_25
101 | fftwl_codelet_hf2_32
102 | fftwl_codelet_hf2_4
103 | fftwl_codelet_hf_25
104 | fftwl_codelet_hf2_5
105 | fftwl_codelet_hf2_8
106 | fftwl_codelet_hf_3
107 | fftwl_codelet_hf_32
108 | fftwl_codelet_hf_4
109 | fftwl_codelet_hf_5
110 | fftwl_codelet_hf_6
111 | fftwl_codelet_hf_64
112 | fftwl_codelet_hf_7
113 | fftwl_codelet_hf_8
114 | fftwl_codelet_hf_9
115 | fftwl_codelet_n1_10
116 | fftwl_codelet_n1_11
117 | fftwl_codelet_n1_12
118 | fftwl_codelet_n1_13
119 | fftwl_codelet_n1_14
120 | fftwl_codelet_n1_15
121 | fftwl_codelet_n1_16
122 | fftwl_codelet_n1_2
123 | fftwl_codelet_n1_20
124 | fftwl_codelet_n1_25
125 | fftwl_codelet_n1_3
126 | fftwl_codelet_n1_32
127 | fftwl_codelet_n1_4
128 | fftwl_codelet_n1_5
129 | fftwl_codelet_n1_6
130 | fftwl_codelet_n1_64
131 | fftwl_codelet_n1_7
132 | fftwl_codelet_n1_8
133 | fftwl_codelet_n1_9
134 | fftwl_codelet_q1_2
135 | fftwl_codelet_q1_3
136 | fftwl_codelet_q1_4
137 | fftwl_codelet_q1_5
138 | fftwl_codelet_q1_6
139 | fftwl_codelet_q1_8
140 | fftwl_codelet_r2cb_10
141 | fftwl_codelet_r2cb_11
142 | fftwl_codelet_r2cb_12
143 | fftwl_codelet_r2cb_128
144 | fftwl_codelet_r2cb_13
145 | fftwl_codelet_r2cb_14
146 | fftwl_codelet_r2cb_15
147 | fftwl_codelet_r2cb_16
148 | fftwl_codelet_r2cb_2
149 | fftwl_codelet_r2cb_20
150 | fftwl_codelet_r2cb_25
151 | fftwl_codelet_r2cb_3
152 | fftwl_codelet_r2cb_32
153 | fftwl_codelet_r2cb_4
154 | fftwl_codelet_r2cb_5
155 | fftwl_codelet_r2cb_6
156 | fftwl_codelet_r2cb_64
157 | fftwl_codelet_r2cb_7
158 | fftwl_codelet_r2cb_8
159 | fftwl_codelet_r2cb_9
160 | fftwl_codelet_r2cbIII_10
161 | fftwl_codelet_r2cbIII_12
162 | fftwl_codelet_r2cbIII_15
163 | fftwl_codelet_r2cbIII_16
164 | fftwl_codelet_r2cbIII_2
165 | fftwl_codelet_r2cbIII_20
166 | fftwl_codelet_r2cbIII_25
167 | fftwl_codelet_r2cbIII_3
168 | fftwl_codelet_r2cbIII_32
169 | fftwl_codelet_r2cbIII_4
170 | fftwl_codelet_r2cbIII_5
171 | fftwl_codelet_r2cbIII_6
172 | fftwl_codelet_r2cbIII_64
173 | fftwl_codelet_r2cbIII_7
174 | fftwl_codelet_r2cbIII_8
175 | fftwl_codelet_r2cbIII_9
176 | fftwl_codelet_r2cf_10
177 | fftwl_codelet_r2cf_11
178 | fftwl_codelet_r2cf_12
179 | fftwl_codelet_r2cf_128
180 | fftwl_codelet_r2cf_13
181 | fftwl_codelet_r2cf_14
182 | fftwl_codelet_r2cf_15
183 | fftwl_codelet_r2cf_16
184 | fftwl_codelet_r2cf_2
185 | fftwl_codelet_r2cf_20
186 | fftwl_codelet_r2cf_25
187 | fftwl_codelet_r2cf_3
188 | fftwl_codelet_r2cf_32
189 | fftwl_codelet_r2cf_4
190 | fftwl_codelet_r2cf_5
191 | fftwl_codelet_r2cf_6
192 | fftwl_codelet_r2cf_64
193 | fftwl_codelet_r2cf_7
194 | fftwl_codelet_r2cf_8
195 | fftwl_codelet_r2cf_9
196 | fftwl_codelet_r2cfII_10
197 | fftwl_codelet_r2cfII_12
198 | fftwl_codelet_r2cfII_15
199 | fftwl_codelet_r2cfII_16
200 | fftwl_codelet_r2cfII_2
201 | fftwl_codelet_r2cfII_20
202 | fftwl_codelet_r2cfII_25
203 | fftwl_codelet_r2cfII_3
204 | fftwl_codelet_r2cfII_32
205 | fftwl_codelet_r2cfII_4
206 | fftwl_codelet_r2cfII_5
207 | fftwl_codelet_r2cfII_6
208 | fftwl_codelet_r2cfII_64
209 | fftwl_codelet_r2cfII_7
210 | fftwl_codelet_r2cfII_8
211 | fftwl_codelet_r2cfII_9
212 | fftwl_codelet_t1_10
213 | fftwl_codelet_t1_12
214 | fftwl_codelet_t1_15
215 | fftwl_codelet_t1_16
216 | fftwl_codelet_t1_2
217 | fftwl_codelet_t1_20
218 | fftwl_codelet_t1_25
219 | fftwl_codelet_t1_3
220 | fftwl_codelet_t1_32
221 | fftwl_codelet_t1_4
222 | fftwl_codelet_t1_5
223 | fftwl_codelet_t1_6
224 | fftwl_codelet_t1_64
225 | fftwl_codelet_t1_7
226 | fftwl_codelet_t1_8
227 | fftwl_codelet_t1_9
228 | fftwl_codelet_t2_10
229 | fftwl_codelet_t2_16
230 | fftwl_codelet_t2_20
231 | fftwl_codelet_t2_25
232 | fftwl_codelet_t2_32
233 | fftwl_codelet_t2_4
234 | fftwl_codelet_t2_5
235 | fftwl_codelet_t2_64
236 | fftwl_codelet_t2_8
237 | fftwl_compute_tilesz
238 | fftwl_configure_planner
239 | fftwl_cost
240 | fftwl_cpy1d
241 | fftwl_cpy2d
242 | fftwl_cpy2d_ci
243 | fftwl_cpy2d_co
244 | fftwl_cpy2d_pair
245 | fftwl_cpy2d_pair_ci
246 | fftwl_cpy2d_pair_co
247 | fftwl_cpy2d_tiled
248 | fftwl_cpy2d_tiledbuf
249 | fftwl_ct_applicable
250 | fftwl_ct_genericbuf_register
251 | fftwl_ct_generic_register
252 | fftwl_ct_uglyp
253 | fftwl_destroy_plan
254 | fftwl_dft_bluestein_register
255 | fftwl_dft_buffered_register
256 | fftwl_dft_conf_standard
257 | fftwl_dft_generic_register
258 | fftwl_dft_indirect_register
259 | fftwl_dft_indirect_transpose_register
260 | fftwl_dft_nop_register
261 | fftwl_dft_r2hc_register
262 | fftwl_dft_rader_register
263 | fftwl_dft_rank_geq2_register
264 | fftwl_dft_solve
265 | fftwl_dft_thr_vrank_geq1_register
266 | fftwl_dft_vrank_geq1_register
267 | fftwl_dft_zerotens
268 | fftwl_dht_r2hc_register
269 | fftwl_dht_rader_register
270 | fftwl_dimcmp
271 | fftwl_elapsed_since
272 | fftwl_estimate_cost
273 | fftwl_execute
274 | fftwl_execute_dft
275 | fftwl_execute_dft_c2r
276 | fftwl_execute_dft_r2c
277 | fftwl_execute_r2r
278 | fftwl_execute_split_dft
279 | fftwl_execute_split_dft_c2r
280 | fftwl_execute_split_dft_r2c
281 | fftwl_export_wisdom
282 | fftwl_export_wisdom_to_file
283 | fftwl_export_wisdom_to_filename
284 | fftwl_export_wisdom_to_string
285 | fftwl_extract_reim
286 | fftwl_factors_into
287 | fftwl_factors_into_small_primes
288 | fftwl_find_generator
289 | fftwl_first_divisor
290 | fftwl_flops
291 | fftwl_forget_wisdom
292 | fftwl_fprint_plan
293 | fftwl_free
294 | fftwl_get_crude_time
295 | fftwl_guru64_kosherp
296 | fftwl_guru_kosherp
297 | fftwl_hash
298 | fftwl_hc2hc_applicable
299 | fftwl_hc2hc_generic_register
300 | fftwl_iabs
301 | fftwl_ialignment_of
302 | fftwl_iestimate_cost
303 | fftwl_ifree
304 | fftwl_ifree0
305 | fftwl_imax
306 | fftwl_imin
307 | fftwl_import_system_wisdom
308 | fftwl_import_wisdom
309 | fftwl_import_wisdom_from_file
310 | fftwl_import_wisdom_from_filename
311 | fftwl_import_wisdom_from_string
312 | fftwl_init_threads
313 | fftwl_is_prime
314 | fftwl_isqrt
315 | fftwl_ithreads_init
316 | fftwl_kdft_dif_register
317 | fftwl_kdft_difsq_register
318 | fftwl_kdft_dit_register
319 | fftwl_kdft_register
320 | fftwl_kernel_free
321 | fftwl_kernel_malloc
322 | fftwl_khc2c_register
323 | fftwl_khc2hc_register
324 | fftwl_kr2c_register
325 | fftwl_kr2r_register
326 | fftwl_make_planner_thread_safe
327 | fftwl_malloc
328 | fftwl_malloc_plain
329 | fftwl_many_kosherp
330 | fftwl_mapflags
331 | fftwl_map_r2r_kind
332 | fftwl_md5begin
333 | fftwl_md5end
334 | fftwl_md5int
335 | fftwl_md5INT
336 | fftwl_md5putb
337 | fftwl_md5putc
338 | fftwl_md5puts
339 | fftwl_md5unsigned
340 | fftwl_measure_execution_time
341 | fftwl_mkapiplan
342 | fftwl_mkplan
343 | fftwl_mkplan_d
344 | fftwl_mkplan_dft
345 | fftwl_mkplan_dftw
346 | fftwl_mkplan_f_d
347 | fftwl_mkplan_hc2c
348 | fftwl_mkplan_hc2hc
349 | fftwl_mkplanner
350 | fftwl_mkplan_rdft
351 | fftwl_mkplan_rdft2
352 | fftwl_mkprinter
353 | fftwl_mkprinter_cnt
354 | fftwl_mkprinter_file
355 | fftwl_mkprinter_str
356 | fftwl_mkproblem
357 | fftwl_mkproblem_dft
358 | fftwl_mkproblem_dft_d
359 | fftwl_mkproblem_rdft
360 | fftwl_mkproblem_rdft_0_d
361 | fftwl_mkproblem_rdft_1
362 | fftwl_mkproblem_rdft_1_d
363 | fftwl_mkproblem_rdft2
364 | fftwl_mkproblem_rdft2_d
365 | fftwl_mkproblem_rdft2_d_3pointers
366 | fftwl_mkproblem_rdft_d
367 | fftwl_mkproblem_unsolvable
368 | fftwl_mkscanner
369 | fftwl_mksolver
370 | fftwl_mksolver_ct
371 | fftwl_mksolver_ct_threads
372 | fftwl_mksolver_dft_direct
373 | fftwl_mksolver_dft_directbuf
374 | fftwl_mksolver_hc2c
375 | fftwl_mksolver_hc2hc
376 | fftwl_mksolver_hc2hc_threads
377 | fftwl_mksolver_rdft2_direct
378 | fftwl_mksolver_rdft_r2c_direct
379 | fftwl_mksolver_rdft_r2c_directbuf
380 | fftwl_mksolver_rdft_r2r_direct
381 | fftwl_mktensor
382 | fftwl_mktensor_0d
383 | fftwl_mktensor_1d
384 | fftwl_mktensor_2d
385 | fftwl_mktensor_3d
386 | fftwl_mktensor_4d
387 | fftwl_mktensor_5d
388 | fftwl_mktensor_iodims
389 | fftwl_mktensor_iodims64
390 | fftwl_mktensor_rowmajor
391 | fftwl_mktriggen
392 | fftwl_modulo
393 | fftwl_nbuf
394 | fftwl_nbuf_redundant
395 | fftwl_next_prime
396 | fftwl_null_awake
397 | fftwl_ops_add
398 | fftwl_ops_add2
399 | fftwl_ops_cpy
400 | fftwl_ops_madd
401 | fftwl_ops_madd2
402 | fftwl_ops_other
403 | fftwl_ops_zero
404 | fftwl_pickdim
405 | fftwl_plan_awake
406 | fftwl_plan_destroy_internal
407 | fftwl_plan_dft
408 | fftwl_plan_dft_1d
409 | fftwl_plan_dft_2d
410 | fftwl_plan_dft_3d
411 | fftwl_plan_dft_c2r
412 | fftwl_plan_dft_c2r_1d
413 | fftwl_plan_dft_c2r_2d
414 | fftwl_plan_dft_c2r_3d
415 | fftwl_plan_dft_r2c
416 | fftwl_plan_dft_r2c_1d
417 | fftwl_plan_dft_r2c_2d
418 | fftwl_plan_dft_r2c_3d
419 | fftwl_plan_guru64_dft
420 | fftwl_plan_guru64_dft_c2r
421 | fftwl_plan_guru64_dft_r2c
422 | fftwl_plan_guru64_r2r
423 | fftwl_plan_guru64_split_dft
424 | fftwl_plan_guru64_split_dft_c2r
425 | fftwl_plan_guru64_split_dft_r2c
426 | fftwl_plan_guru_dft
427 | fftwl_plan_guru_dft_c2r
428 | fftwl_plan_guru_dft_r2c
429 | fftwl_plan_guru_r2r
430 | fftwl_plan_guru_split_dft
431 | fftwl_plan_guru_split_dft_c2r
432 | fftwl_plan_guru_split_dft_r2c
433 | fftwl_plan_many_dft
434 | fftwl_plan_many_dft_c2r
435 | fftwl_plan_many_dft_r2c
436 | fftwl_plan_many_r2r
437 | fftwl_planner_destroy
438 | fftwl_plan_null_destroy
439 | fftwl_plan_r2r
440 | fftwl_plan_r2r_1d
441 | fftwl_plan_r2r_2d
442 | fftwl_plan_r2r_3d
443 | fftwl_plan_with_nthreads
444 | fftwl_power_mod
445 | fftwl_printer_destroy
446 | fftwl_print_plan
447 | fftwl_problem_destroy
448 | fftwl_rader_tl_delete
449 | fftwl_rader_tl_find
450 | fftwl_rader_tl_insert
451 | fftwl_rdft2_buffered_register
452 | fftwl_rdft2_complex_n
453 | fftwl_rdft2_inplace_strides
454 | fftwl_rdft2_nop_register
455 | fftwl_rdft2_pad
456 | fftwl_rdft2_rank0_register
457 | fftwl_rdft2_rank_geq2_register
458 | fftwl_rdft2_rdft_register
459 | fftwl_rdft2_solve
460 | fftwl_rdft2_strides
461 | fftwl_rdft2_tensor_max_index
462 | fftwl_rdft2_thr_vrank_geq1_register
463 | fftwl_rdft2_vrank_geq1_register
464 | fftwl_rdft_buffered_register
465 | fftwl_rdft_conf_standard
466 | fftwl_rdft_dht_register
467 | fftwl_rdft_generic_register
468 | fftwl_rdft_indirect_register
469 | fftwl_rdft_kind_str
470 | fftwl_rdft_nop_register
471 | fftwl_rdft_rank0_register
472 | fftwl_rdft_rank_geq2_register
473 | fftwl_rdft_solve
474 | fftwl_rdft_thr_vrank_geq1_register
475 | fftwl_rdft_vrank3_transpose_register
476 | fftwl_rdft_vrank_geq1_register
477 | fftwl_rdft_zerotens
478 | fftwl_redft00e_r2hc_pad_register
479 | fftwl_regsolver_ct_directw
480 | fftwl_regsolver_ct_directwsq
481 | fftwl_regsolver_hc2c_direct
482 | fftwl_regsolver_hc2hc_direct
483 | fftwl_reodft00e_splitradix_register
484 | fftwl_reodft010e_r2hc_register
485 | fftwl_reodft11e_r2hc_odd_register
486 | fftwl_reodft11e_radix2_r2hc_register
487 | fftwl_reodft_conf_standard
488 | fftwl_rodft00e_r2hc_pad_register
489 | fftwl_safe_mulmod
490 | fftwl_scanner_destroy
491 | fftwl_set_planner_hooks
492 | fftwl_set_timelimit
493 | fftwl_solver_destroy
494 | fftwl_solver_register
495 | fftwl_solver_use
496 | fftwl_solvtab_exec
497 | fftwl_spawn_loop
498 | fftwl_sprint_plan
499 | fftwl_tensor_append
500 | fftwl_tensor_compress
501 | fftwl_tensor_compress_contiguous
502 | fftwl_tensor_copy
503 | fftwl_tensor_copy_except
504 | fftwl_tensor_copy_inplace
505 | fftwl_tensor_copy_sub
506 | fftwl_tensor_destroy
507 | fftwl_tensor_destroy2
508 | fftwl_tensor_destroy4
509 | fftwl_tensor_equal
510 | fftwl_tensor_inplace_locations
511 | fftwl_tensor_inplace_strides
512 | fftwl_tensor_inplace_strides2
513 | fftwl_tensor_kosherp
514 | fftwl_tensor_max_index
515 | fftwl_tensor_md5
516 | fftwl_tensor_min_istride
517 | fftwl_tensor_min_ostride
518 | fftwl_tensor_min_stride
519 | fftwl_tensor_print
520 | fftwl_tensor_split
521 | fftwl_tensor_strides_decrease
522 | fftwl_tensor_sz
523 | fftwl_tensor_tornk1
524 | fftwl_the_planner
525 | fftwl_threads_cleanup
526 | fftwl_threads_conf_standard
527 | fftwl_threads_register_planner_hooks
528 | fftwl_tile2d
529 | fftwl_toobig
530 | fftwl_transpose
531 | fftwl_transpose_tiled
532 | fftwl_transpose_tiledbuf
533 | fftwl_triggen_destroy
534 | fftwl_twiddle_awake
535 | fftwl_twiddle_length
536 | fftwl_zero1d_pair
537 | lfftw_cleanup_
538 | lfftw_cleanup__
539 | lfftw_cleanup_threads_
540 | lfftw_cleanup_threads__
541 | lfftw_cost_
542 | lfftw_cost__
543 | lfftw_destroy_plan_
544 | lfftw_destroy_plan__
545 | lfftw_estimate_cost_
546 | lfftw_estimate_cost__
547 | lfftw_execute_
548 | lfftw_execute__
549 | lfftw_execute_dft_
550 | lfftw_execute_dft__
551 | lfftw_execute_dft_c2r_
552 | lfftw_execute_dft_c2r__
553 | lfftw_execute_dft_r2c_
554 | lfftw_execute_dft_r2c__
555 | lfftw_execute_r2r_
556 | lfftw_execute_r2r__
557 | lfftw_execute_split_dft_
558 | lfftw_execute_split_dft__
559 | lfftw_execute_split_dft_c2r_
560 | lfftw_execute_split_dft_c2r__
561 | lfftw_execute_split_dft_r2c_
562 | lfftw_execute_split_dft_r2c__
563 | lfftw_export_wisdom_
564 | lfftw_export_wisdom__
565 | lfftw_flops_
566 | lfftw_flops__
567 | lfftw_forget_wisdom_
568 | lfftw_forget_wisdom__
569 | lfftw_import_system_wisdom_
570 | lfftw_import_system_wisdom__
571 | lfftw_import_wisdom_
572 | lfftw_import_wisdom__
573 | lfftw_init_threads_
574 | lfftw_init_threads__
575 | lfftw_plan_dft_
576 | lfftw_plan_dft__
577 | lfftw_plan_dft_1d_
578 | lfftw_plan_dft_1d__
579 | lfftw_plan_dft_2d_
580 | lfftw_plan_dft_2d__
581 | lfftw_plan_dft_3d_
582 | lfftw_plan_dft_3d__
583 | lfftw_plan_dft_c2r_
584 | lfftw_plan_dft_c2r__
585 | lfftw_plan_dft_c2r_1d_
586 | lfftw_plan_dft_c2r_1d__
587 | lfftw_plan_dft_c2r_2d_
588 | lfftw_plan_dft_c2r_2d__
589 | lfftw_plan_dft_c2r_3d_
590 | lfftw_plan_dft_c2r_3d__
591 | lfftw_plan_dft_r2c_
592 | lfftw_plan_dft_r2c__
593 | lfftw_plan_dft_r2c_1d_
594 | lfftw_plan_dft_r2c_1d__
595 | lfftw_plan_dft_r2c_2d_
596 | lfftw_plan_dft_r2c_2d__
597 | lfftw_plan_dft_r2c_3d_
598 | lfftw_plan_dft_r2c_3d__
599 | lfftw_plan_guru_dft_
600 | lfftw_plan_guru_dft__
601 | lfftw_plan_guru_dft_c2r_
602 | lfftw_plan_guru_dft_c2r__
603 | lfftw_plan_guru_dft_r2c_
604 | lfftw_plan_guru_dft_r2c__
605 | lfftw_plan_guru_r2r_
606 | lfftw_plan_guru_r2r__
607 | lfftw_plan_guru_split_dft_
608 | lfftw_plan_guru_split_dft__
609 | lfftw_plan_guru_split_dft_c2r_
610 | lfftw_plan_guru_split_dft_c2r__
611 | lfftw_plan_guru_split_dft_r2c_
612 | lfftw_plan_guru_split_dft_r2c__
613 | lfftw_plan_many_dft_
614 | lfftw_plan_many_dft__
615 | lfftw_plan_many_dft_c2r_
616 | lfftw_plan_many_dft_c2r__
617 | lfftw_plan_many_dft_r2c_
618 | lfftw_plan_many_dft_r2c__
619 | lfftw_plan_many_r2r_
620 | lfftw_plan_many_r2r__
621 | lfftw_plan_r2r_
622 | lfftw_plan_r2r__
623 | lfftw_plan_r2r_1d_
624 | lfftw_plan_r2r_1d__
625 | lfftw_plan_r2r_2d_
626 | lfftw_plan_r2r_2d__
627 | lfftw_plan_r2r_3d_
628 | lfftw_plan_r2r_3d__
629 | lfftw_plan_with_nthreads_
630 | lfftw_plan_with_nthreads__
631 | lfftw_print_plan_
632 | lfftw_print_plan__
633 | lfftw_set_timelimit_
634 | lfftw_set_timelimit__
635 |
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3l-3.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3l-3.dll
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3l-3.exp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3l-3.exp
--------------------------------------------------------------------------------
/src/winlibs/fftw/libfftw3l-3.lib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/KlugerLab/FIt-SNE/47ff14f1defc1ff3a8065c8b7baaf45c33e7e0b2/src/winlibs/fftw/libfftw3l-3.lib
--------------------------------------------------------------------------------
/src/winlibs/fftw3.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2003, 2007-14 Matteo Frigo
3 | * Copyright (c) 2003, 2007-14 Massachusetts Institute of Technology
4 | *
5 | * The following statement of license applies *only* to this header file,
6 | * and *not* to the other files distributed with FFTW or derived therefrom:
7 | *
8 | * Redistribution and use in source and binary forms, with or without
9 | * modification, are permitted provided that the following conditions
10 | * are met:
11 | *
12 | * 1. Redistributions of source code must retain the above copyright
13 | * notice, this list of conditions and the following disclaimer.
14 | *
15 | * 2. Redistributions in binary form must reproduce the above copyright
16 | * notice, this list of conditions and the following disclaimer in the
17 | * documentation and/or other materials provided with the distribution.
18 | *
19 | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
20 | * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
23 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
25 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27 | * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 | */
31 |
32 | /***************************** NOTE TO USERS *********************************
33 | *
34 | * THIS IS A HEADER FILE, NOT A MANUAL
35 | *
36 | * If you want to know how to use FFTW, please read the manual,
37 | * online at http://www.fftw.org/doc/ and also included with FFTW.
38 | * For a quick start, see the manual's tutorial section.
39 | *
40 | * (Reading header files to learn how to use a library is a habit
41 | * stemming from code lacking a proper manual. Arguably, it's a
42 | * *bad* habit in most cases, because header files can contain
43 | * interfaces that are not part of the public, stable API.)
44 | *
45 | ****************************************************************************/
46 |
47 | #ifndef FFTW3_H
48 | #define FFTW3_H
49 |
50 | #include
51 |
52 | #ifdef __cplusplus
53 | extern "C"
54 | {
55 | #endif /* __cplusplus */
56 |
57 | /* If is included, use the C99 complex type. Otherwise
58 | define a type bit-compatible with C99 complex */
59 | #if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I)
60 | # define FFTW_DEFINE_COMPLEX(R, C) typedef R _Complex C
61 | #else
62 | # define FFTW_DEFINE_COMPLEX(R, C) typedef R C[2]
63 | #endif
64 |
65 | #define FFTW_CONCAT(prefix, name) prefix ## name
66 | #define FFTW_MANGLE_DOUBLE(name) FFTW_CONCAT(fftw_, name)
67 | #define FFTW_MANGLE_FLOAT(name) FFTW_CONCAT(fftwf_, name)
68 | #define FFTW_MANGLE_LONG_DOUBLE(name) FFTW_CONCAT(fftwl_, name)
69 | #define FFTW_MANGLE_QUAD(name) FFTW_CONCAT(fftwq_, name)
70 |
71 | /* IMPORTANT: for Windows compilers, you should add a line
72 | */
73 | #define FFTW_DLL
74 | /*
75 | here and in kernel/ifftw.h if you are compiling/using FFTW as a
76 | DLL, in order to do the proper importing/exporting, or
77 | alternatively compile with -DFFTW_DLL or the equivalent
78 | command-line flag. This is not necessary under MinGW/Cygwin, where
79 | libtool does the imports/exports automatically. */
80 | #if defined(FFTW_DLL) && (defined(_WIN32) || defined(__WIN32__))
81 | /* annoying Windows syntax for shared-library declarations */
82 | # if defined(COMPILING_FFTW) /* defined in api.h when compiling FFTW */
83 | # define FFTW_EXTERN extern __declspec(dllexport)
84 | # else /* user is calling FFTW; import symbol */
85 | # define FFTW_EXTERN extern __declspec(dllimport)
86 | # endif
87 | #else
88 | # define FFTW_EXTERN extern
89 | #endif
90 |
91 | enum fftw_r2r_kind_do_not_use_me {
92 | FFTW_R2HC=0, FFTW_HC2R=1, FFTW_DHT=2,
93 | FFTW_REDFT00=3, FFTW_REDFT01=4, FFTW_REDFT10=5, FFTW_REDFT11=6,
94 | FFTW_RODFT00=7, FFTW_RODFT01=8, FFTW_RODFT10=9, FFTW_RODFT11=10
95 | };
96 |
97 | struct fftw_iodim_do_not_use_me {
98 | int n; /* dimension size */
99 | int is; /* input stride */
100 | int os; /* output stride */
101 | };
102 |
103 | #include /* for ptrdiff_t */
104 | struct fftw_iodim64_do_not_use_me {
105 | ptrdiff_t n; /* dimension size */
106 | ptrdiff_t is; /* input stride */
107 | ptrdiff_t os; /* output stride */
108 | };
109 |
110 | typedef void (*fftw_write_char_func_do_not_use_me)(char c, void *);
111 | typedef int (*fftw_read_char_func_do_not_use_me)(void *);
112 |
113 | /*
114 | huge second-order macro that defines prototypes for all API
115 | functions. We expand this macro for each supported precision
116 |
117 | X: name-mangling macro
118 | R: real data type
119 | C: complex data type
120 | */
121 |
122 | #define FFTW_DEFINE_API(X, R, C) \
123 | \
124 | FFTW_DEFINE_COMPLEX(R, C); \
125 | \
126 | typedef struct X(plan_s) *X(plan); \
127 | \
128 | typedef struct fftw_iodim_do_not_use_me X(iodim); \
129 | typedef struct fftw_iodim64_do_not_use_me X(iodim64); \
130 | \
131 | typedef enum fftw_r2r_kind_do_not_use_me X(r2r_kind); \
132 | \
133 | typedef fftw_write_char_func_do_not_use_me X(write_char_func); \
134 | typedef fftw_read_char_func_do_not_use_me X(read_char_func); \
135 | \
136 | FFTW_EXTERN void X(execute)(const X(plan) p); \
137 | \
138 | FFTW_EXTERN X(plan) X(plan_dft)(int rank, const int *n, \
139 | C *in, C *out, int sign, unsigned flags); \
140 | \
141 | FFTW_EXTERN X(plan) X(plan_dft_1d)(int n, C *in, C *out, int sign, \
142 | unsigned flags); \
143 | FFTW_EXTERN X(plan) X(plan_dft_2d)(int n0, int n1, \
144 | C *in, C *out, int sign, unsigned flags); \
145 | FFTW_EXTERN X(plan) X(plan_dft_3d)(int n0, int n1, int n2, \
146 | C *in, C *out, int sign, unsigned flags); \
147 | \
148 | FFTW_EXTERN X(plan) X(plan_many_dft)(int rank, const int *n, \
149 | int howmany, \
150 | C *in, const int *inembed, \
151 | int istride, int idist, \
152 | C *out, const int *onembed, \
153 | int ostride, int odist, \
154 | int sign, unsigned flags); \
155 | \
156 | FFTW_EXTERN X(plan) X(plan_guru_dft)(int rank, const X(iodim) *dims, \
157 | int howmany_rank, \
158 | const X(iodim) *howmany_dims, \
159 | C *in, C *out, \
160 | int sign, unsigned flags); \
161 | FFTW_EXTERN X(plan) X(plan_guru_split_dft)(int rank, const X(iodim) *dims, \
162 | int howmany_rank, \
163 | const X(iodim) *howmany_dims, \
164 | R *ri, R *ii, R *ro, R *io, \
165 | unsigned flags); \
166 | \
167 | FFTW_EXTERN X(plan) X(plan_guru64_dft)(int rank, \
168 | const X(iodim64) *dims, \
169 | int howmany_rank, \
170 | const X(iodim64) *howmany_dims, \
171 | C *in, C *out, \
172 | int sign, unsigned flags); \
173 | FFTW_EXTERN X(plan) X(plan_guru64_split_dft)(int rank, \
174 | const X(iodim64) *dims, \
175 | int howmany_rank, \
176 | const X(iodim64) *howmany_dims, \
177 | R *ri, R *ii, R *ro, R *io, \
178 | unsigned flags); \
179 | \
180 | FFTW_EXTERN void X(execute_dft)(const X(plan) p, C *in, C *out); \
181 | FFTW_EXTERN void X(execute_split_dft)(const X(plan) p, R *ri, R *ii, \
182 | R *ro, R *io); \
183 | \
184 | FFTW_EXTERN X(plan) X(plan_many_dft_r2c)(int rank, const int *n, \
185 | int howmany, \
186 | R *in, const int *inembed, \
187 | int istride, int idist, \
188 | C *out, const int *onembed, \
189 | int ostride, int odist, \
190 | unsigned flags); \
191 | \
192 | FFTW_EXTERN X(plan) X(plan_dft_r2c)(int rank, const int *n, \
193 | R *in, C *out, unsigned flags); \
194 | \
195 | FFTW_EXTERN X(plan) X(plan_dft_r2c_1d)(int n,R *in,C *out,unsigned flags); \
196 | FFTW_EXTERN X(plan) X(plan_dft_r2c_2d)(int n0, int n1, \
197 | R *in, C *out, unsigned flags); \
198 | FFTW_EXTERN X(plan) X(plan_dft_r2c_3d)(int n0, int n1, \
199 | int n2, \
200 | R *in, C *out, unsigned flags); \
201 | \
202 | \
203 | FFTW_EXTERN X(plan) X(plan_many_dft_c2r)(int rank, const int *n, \
204 | int howmany, \
205 | C *in, const int *inembed, \
206 | int istride, int idist, \
207 | R *out, const int *onembed, \
208 | int ostride, int odist, \
209 | unsigned flags); \
210 | \
211 | FFTW_EXTERN X(plan) X(plan_dft_c2r)(int rank, const int *n, \
212 | C *in, R *out, unsigned flags); \
213 | \
214 | FFTW_EXTERN X(plan) X(plan_dft_c2r_1d)(int n,C *in,R *out,unsigned flags); \
215 | FFTW_EXTERN X(plan) X(plan_dft_c2r_2d)(int n0, int n1, \
216 | C *in, R *out, unsigned flags); \
217 | FFTW_EXTERN X(plan) X(plan_dft_c2r_3d)(int n0, int n1, \
218 | int n2, \
219 | C *in, R *out, unsigned flags); \
220 | \
221 | FFTW_EXTERN X(plan) X(plan_guru_dft_r2c)(int rank, const X(iodim) *dims, \
222 | int howmany_rank, \
223 | const X(iodim) *howmany_dims, \
224 | R *in, C *out, \
225 | unsigned flags); \
226 | FFTW_EXTERN X(plan) X(plan_guru_dft_c2r)(int rank, const X(iodim) *dims, \
227 | int howmany_rank, \
228 | const X(iodim) *howmany_dims, \
229 | C *in, R *out, \
230 | unsigned flags); \
231 | \
232 | FFTW_EXTERN X(plan) X(plan_guru_split_dft_r2c)( \
233 | int rank, const X(iodim) *dims, \
234 | int howmany_rank, \
235 | const X(iodim) *howmany_dims, \
236 | R *in, R *ro, R *io, \
237 | unsigned flags); \
238 | FFTW_EXTERN X(plan) X(plan_guru_split_dft_c2r)( \
239 | int rank, const X(iodim) *dims, \
240 | int howmany_rank, \
241 | const X(iodim) *howmany_dims, \
242 | R *ri, R *ii, R *out, \
243 | unsigned flags); \
244 | \
245 | FFTW_EXTERN X(plan) X(plan_guru64_dft_r2c)(int rank, \
246 | const X(iodim64) *dims, \
247 | int howmany_rank, \
248 | const X(iodim64) *howmany_dims, \
249 | R *in, C *out, \
250 | unsigned flags); \
251 | FFTW_EXTERN X(plan) X(plan_guru64_dft_c2r)(int rank, \
252 | const X(iodim64) *dims, \
253 | int howmany_rank, \
254 | const X(iodim64) *howmany_dims, \
255 | C *in, R *out, \
256 | unsigned flags); \
257 | \
258 | FFTW_EXTERN X(plan) X(plan_guru64_split_dft_r2c)( \
259 | int rank, const X(iodim64) *dims, \
260 | int howmany_rank, \
261 | const X(iodim64) *howmany_dims, \
262 | R *in, R *ro, R *io, \
263 | unsigned flags); \
264 | FFTW_EXTERN X(plan) X(plan_guru64_split_dft_c2r)( \
265 | int rank, const X(iodim64) *dims, \
266 | int howmany_rank, \
267 | const X(iodim64) *howmany_dims, \
268 | R *ri, R *ii, R *out, \
269 | unsigned flags); \
270 | \
271 | FFTW_EXTERN void X(execute_dft_r2c)(const X(plan) p, R *in, C *out); \
272 | FFTW_EXTERN void X(execute_dft_c2r)(const X(plan) p, C *in, R *out); \
273 | \
274 | FFTW_EXTERN void X(execute_split_dft_r2c)(const X(plan) p, \
275 | R *in, R *ro, R *io); \
276 | FFTW_EXTERN void X(execute_split_dft_c2r)(const X(plan) p, \
277 | R *ri, R *ii, R *out); \
278 | \
279 | FFTW_EXTERN X(plan) X(plan_many_r2r)(int rank, const int *n, \
280 | int howmany, \
281 | R *in, const int *inembed, \
282 | int istride, int idist, \
283 | R *out, const int *onembed, \
284 | int ostride, int odist, \
285 | const X(r2r_kind) *kind, unsigned flags); \
286 | \
287 | FFTW_EXTERN X(plan) X(plan_r2r)(int rank, const int *n, R *in, R *out, \
288 | const X(r2r_kind) *kind, unsigned flags); \
289 | \
290 | FFTW_EXTERN X(plan) X(plan_r2r_1d)(int n, R *in, R *out, \
291 | X(r2r_kind) kind, unsigned flags); \
292 | FFTW_EXTERN X(plan) X(plan_r2r_2d)(int n0, int n1, R *in, R *out, \
293 | X(r2r_kind) kind0, X(r2r_kind) kind1, \
294 | unsigned flags); \
295 | FFTW_EXTERN X(plan) X(plan_r2r_3d)(int n0, int n1, int n2, \
296 | R *in, R *out, X(r2r_kind) kind0, \
297 | X(r2r_kind) kind1, X(r2r_kind) kind2, \
298 | unsigned flags); \
299 | \
300 | FFTW_EXTERN X(plan) X(plan_guru_r2r)(int rank, const X(iodim) *dims, \
301 | int howmany_rank, \
302 | const X(iodim) *howmany_dims, \
303 | R *in, R *out, \
304 | const X(r2r_kind) *kind, unsigned flags); \
305 | \
306 | FFTW_EXTERN X(plan) X(plan_guru64_r2r)(int rank, const X(iodim64) *dims, \
307 | int howmany_rank, \
308 | const X(iodim64) *howmany_dims, \
309 | R *in, R *out, \
310 | const X(r2r_kind) *kind, unsigned flags); \
311 | \
312 | FFTW_EXTERN void X(execute_r2r)(const X(plan) p, R *in, R *out); \
313 | \
314 | FFTW_EXTERN void X(destroy_plan)(X(plan) p); \
315 | FFTW_EXTERN void X(forget_wisdom)(void); \
316 | FFTW_EXTERN void X(cleanup)(void); \
317 | \
318 | FFTW_EXTERN void X(set_timelimit)(double t); \
319 | \
320 | FFTW_EXTERN void X(plan_with_nthreads)(int nthreads); \
321 | FFTW_EXTERN int X(init_threads)(void); \
322 | FFTW_EXTERN void X(cleanup_threads)(void); \
323 | FFTW_EXTERN void X(make_planner_thread_safe)(void); \
324 | \
325 | FFTW_EXTERN int X(export_wisdom_to_filename)(const char *filename); \
326 | FFTW_EXTERN void X(export_wisdom_to_file)(FILE *output_file); \
327 | FFTW_EXTERN char *X(export_wisdom_to_string)(void); \
328 | FFTW_EXTERN void X(export_wisdom)(X(write_char_func) write_char, \
329 | void *data); \
330 | FFTW_EXTERN int X(import_system_wisdom)(void); \
331 | FFTW_EXTERN int X(import_wisdom_from_filename)(const char *filename); \
332 | FFTW_EXTERN int X(import_wisdom_from_file)(FILE *input_file); \
333 | FFTW_EXTERN int X(import_wisdom_from_string)(const char *input_string); \
334 | FFTW_EXTERN int X(import_wisdom)(X(read_char_func) read_char, void *data); \
335 | \
336 | FFTW_EXTERN void X(fprint_plan)(const X(plan) p, FILE *output_file); \
337 | FFTW_EXTERN void X(print_plan)(const X(plan) p); \
338 | FFTW_EXTERN char *X(sprint_plan)(const X(plan) p); \
339 | \
340 | FFTW_EXTERN void *X(malloc)(size_t n); \
341 | FFTW_EXTERN R *X(alloc_real)(size_t n); \
342 | FFTW_EXTERN C *X(alloc_complex)(size_t n); \
343 | FFTW_EXTERN void X(free)(void *p); \
344 | \
345 | FFTW_EXTERN void X(flops)(const X(plan) p, \
346 | double *add, double *mul, double *fmas); \
347 | FFTW_EXTERN double X(estimate_cost)(const X(plan) p); \
348 | FFTW_EXTERN double X(cost)(const X(plan) p); \
349 | \
350 | FFTW_EXTERN int X(alignment_of)(R *p); \
351 | FFTW_EXTERN const char X(version)[]; \
352 | FFTW_EXTERN const char X(cc)[]; \
353 | FFTW_EXTERN const char X(codelet_optim)[];
354 |
355 |
356 | /* end of FFTW_DEFINE_API macro */
357 |
358 | FFTW_DEFINE_API(FFTW_MANGLE_DOUBLE, double, fftw_complex)
359 | FFTW_DEFINE_API(FFTW_MANGLE_FLOAT, float, fftwf_complex)
360 | FFTW_DEFINE_API(FFTW_MANGLE_LONG_DOUBLE, long double, fftwl_complex)
361 |
362 | /* __float128 (quad precision) is a gcc extension on i386, x86_64, and ia64
363 | for gcc >= 4.6 (compiled in FFTW with --enable-quad-precision) */
364 | #if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) \
365 | && !(defined(__ICC) || defined(__INTEL_COMPILER) || defined(__CUDACC__) || defined(__PGI)) \
366 | && (defined(__i386__) || defined(__x86_64__) || defined(__ia64__))
367 | # if !defined(FFTW_NO_Complex) && defined(_Complex_I) && defined(complex) && defined(I)
368 | /* note: __float128 is a typedef, which is not supported with the _Complex
369 | keyword in gcc, so instead we use this ugly __attribute__ version.
370 | However, we can't simply pass the __attribute__ version to
371 | FFTW_DEFINE_API because the __attribute__ confuses gcc in pointer
372 | types. Hence redefining FFTW_DEFINE_COMPLEX. Ugh. */
373 | # undef FFTW_DEFINE_COMPLEX
374 | # define FFTW_DEFINE_COMPLEX(R, C) typedef _Complex float __attribute__((mode(TC))) C
375 | # endif
376 | FFTW_DEFINE_API(FFTW_MANGLE_QUAD, __float128, fftwq_complex)
377 | #endif
378 |
379 | #define FFTW_FORWARD (-1)
380 | #define FFTW_BACKWARD (+1)
381 |
382 | #define FFTW_NO_TIMELIMIT (-1.0)
383 |
384 | /* documented flags */
385 | #define FFTW_MEASURE (0U)
386 | #define FFTW_DESTROY_INPUT (1U << 0)
387 | #define FFTW_UNALIGNED (1U << 1)
388 | #define FFTW_CONSERVE_MEMORY (1U << 2)
389 | #define FFTW_EXHAUSTIVE (1U << 3) /* NO_EXHAUSTIVE is default */
390 | #define FFTW_PRESERVE_INPUT (1U << 4) /* cancels FFTW_DESTROY_INPUT */
391 | #define FFTW_PATIENT (1U << 5) /* IMPATIENT is default */
392 | #define FFTW_ESTIMATE (1U << 6)
393 | #define FFTW_WISDOM_ONLY (1U << 21)
394 |
395 | /* undocumented beyond-guru flags */
396 | #define FFTW_ESTIMATE_PATIENT (1U << 7)
397 | #define FFTW_BELIEVE_PCOST (1U << 8)
398 | #define FFTW_NO_DFT_R2HC (1U << 9)
399 | #define FFTW_NO_NONTHREADED (1U << 10)
400 | #define FFTW_NO_BUFFERING (1U << 11)
401 | #define FFTW_NO_INDIRECT_OP (1U << 12)
402 | #define FFTW_ALLOW_LARGE_GENERIC (1U << 13) /* NO_LARGE_GENERIC is default */
403 | #define FFTW_NO_RANK_SPLITS (1U << 14)
404 | #define FFTW_NO_VRANK_SPLITS (1U << 15)
405 | #define FFTW_NO_VRECURSE (1U << 16)
406 | #define FFTW_NO_SIMD (1U << 17)
407 | #define FFTW_NO_SLOW (1U << 18)
408 | #define FFTW_NO_FIXED_RADIX_LARGE_N (1U << 19)
409 | #define FFTW_ALLOW_PRUNING (1U << 20)
410 |
411 | #ifdef __cplusplus
412 | } /* extern "C" */
413 | #endif /* __cplusplus */
414 |
415 | #endif /* FFTW3_H */
416 |
--------------------------------------------------------------------------------
/src/winlibs/mman.c:
--------------------------------------------------------------------------------
1 |
2 | #include
3 | #include
4 | #include
5 |
6 | #include "mman.h"
7 |
8 | #ifndef FILE_MAP_EXECUTE
9 | #define FILE_MAP_EXECUTE 0x0020
10 | #endif /* FILE_MAP_EXECUTE */
11 |
12 | static int __map_mman_error(const DWORD err, const int deferr)
13 | {
14 | if (err == 0)
15 | return 0;
16 | //TODO: implement
17 | return err;
18 | }
19 |
20 | static DWORD __map_mmap_prot_page(const int prot)
21 | {
22 | DWORD protect = 0;
23 |
24 | if (prot == PROT_NONE)
25 | return protect;
26 |
27 | if ((prot & PROT_EXEC) != 0)
28 | {
29 | protect = ((prot & PROT_WRITE) != 0) ?
30 | PAGE_EXECUTE_READWRITE : PAGE_EXECUTE_READ;
31 | }
32 | else
33 | {
34 | protect = ((prot & PROT_WRITE) != 0) ?
35 | PAGE_READWRITE : PAGE_READONLY;
36 | }
37 |
38 | return protect;
39 | }
40 |
41 | static DWORD __map_mmap_prot_file(const int prot)
42 | {
43 | DWORD desiredAccess = 0;
44 |
45 | if (prot == PROT_NONE)
46 | return desiredAccess;
47 |
48 | if ((prot & PROT_READ) != 0)
49 | desiredAccess |= FILE_MAP_READ;
50 | if ((prot & PROT_WRITE) != 0)
51 | desiredAccess |= FILE_MAP_WRITE;
52 | if ((prot & PROT_EXEC) != 0)
53 | desiredAccess |= FILE_MAP_EXECUTE;
54 |
55 | return desiredAccess;
56 | }
57 |
58 | void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType off)
59 | {
60 | HANDLE fm, h;
61 |
62 | void * map = MAP_FAILED;
63 |
64 | #ifdef _MSC_VER
65 | #pragma warning(push)
66 | #pragma warning(disable: 4293)
67 | #endif
68 |
69 | const DWORD dwFileOffsetLow = (sizeof(OffsetType) <= sizeof(DWORD)) ?
70 | (DWORD)off : (DWORD)(off & 0xFFFFFFFFL);
71 | const DWORD dwFileOffsetHigh = (sizeof(OffsetType) <= sizeof(DWORD)) ?
72 | (DWORD)0 : (DWORD)((off >> 32) & 0xFFFFFFFFL);
73 | const DWORD protect = __map_mmap_prot_page(prot);
74 | const DWORD desiredAccess = __map_mmap_prot_file(prot);
75 |
76 | const OffsetType maxSize = off + (OffsetType)len;
77 |
78 | const DWORD dwMaxSizeLow = (sizeof(OffsetType) <= sizeof(DWORD)) ?
79 | (DWORD)maxSize : (DWORD)(maxSize & 0xFFFFFFFFL);
80 | const DWORD dwMaxSizeHigh = (sizeof(OffsetType) <= sizeof(DWORD)) ?
81 | (DWORD)0 : (DWORD)((maxSize >> 32) & 0xFFFFFFFFL);
82 |
83 | #ifdef _MSC_VER
84 | #pragma warning(pop)
85 | #endif
86 |
87 | errno = 0;
88 |
89 | if (len == 0
90 | /* Unsupported flag combinations */
91 | || (flags & MAP_FIXED) != 0
92 | /* Usupported protection combinations */
93 | || prot == PROT_EXEC)
94 | {
95 | errno = EINVAL;
96 | return MAP_FAILED;
97 | }
98 |
99 | h = ((flags & MAP_ANONYMOUS) == 0) ?
100 | (HANDLE)_get_osfhandle(fildes) : INVALID_HANDLE_VALUE;
101 |
102 | if ((flags & MAP_ANONYMOUS) == 0 && h == INVALID_HANDLE_VALUE)
103 | {
104 | errno = EBADF;
105 | return MAP_FAILED;
106 | }
107 |
108 | fm = CreateFileMapping(h, NULL, protect, dwMaxSizeHigh, dwMaxSizeLow, NULL);
109 |
110 | if (fm == NULL)
111 | {
112 | errno = __map_mman_error(GetLastError(), EPERM);
113 | return MAP_FAILED;
114 | }
115 |
116 | map = MapViewOfFile(fm, desiredAccess, dwFileOffsetHigh, dwFileOffsetLow, len);
117 |
118 | CloseHandle(fm);
119 |
120 | if (map == NULL)
121 | {
122 | errno = __map_mman_error(GetLastError(), EPERM);
123 | return MAP_FAILED;
124 | }
125 |
126 | return map;
127 | }
128 |
129 | int munmap(void *addr, size_t len)
130 | {
131 | if (UnmapViewOfFile(addr))
132 | return 0;
133 |
134 | errno = __map_mman_error(GetLastError(), EPERM);
135 |
136 | return -1;
137 | }
138 |
139 | int _mprotect(void *addr, size_t len, int prot)
140 | {
141 | DWORD newProtect = __map_mmap_prot_page(prot);
142 | DWORD oldProtect = 0;
143 |
144 | if (VirtualProtect(addr, len, newProtect, &oldProtect))
145 | return 0;
146 |
147 | errno = __map_mman_error(GetLastError(), EPERM);
148 |
149 | return -1;
150 | }
151 |
152 | int msync(void *addr, size_t len, int flags)
153 | {
154 | if (FlushViewOfFile(addr, len))
155 | return 0;
156 |
157 | errno = __map_mman_error(GetLastError(), EPERM);
158 |
159 | return -1;
160 | }
161 |
162 | int mlock(const void *addr, size_t len)
163 | {
164 | if (VirtualLock((LPVOID)addr, len))
165 | return 0;
166 |
167 | errno = __map_mman_error(GetLastError(), EPERM);
168 |
169 | return -1;
170 | }
171 |
172 | int munlock(const void *addr, size_t len)
173 | {
174 | if (VirtualUnlock((LPVOID)addr, len))
175 | return 0;
176 |
177 | errno = __map_mman_error(GetLastError(), EPERM);
178 |
179 | return -1;
180 | }
181 | #if !defined(__MINGW32__)
182 | int ftruncate(int fd, unsigned int size) {
183 | if (fd < 0) {
184 | errno = EBADF;
185 | return -1;
186 | }
187 |
188 | HANDLE h = (HANDLE)_get_osfhandle(fd);
189 | unsigned int cur = SetFilePointer(h, 0, NULL, FILE_CURRENT);
190 | if (cur == ~0 || SetFilePointer(h, size, NULL, FILE_BEGIN) == ~0 || !SetEndOfFile(h)) {
191 | int error = GetLastError();
192 | switch (GetLastError()) {
193 | case ERROR_INVALID_HANDLE:
194 | errno = EBADF;
195 | break;
196 | default:
197 | errno = EIO;
198 | break;
199 | }
200 | return -1;
201 | }
202 |
203 | return 0;
204 | }
205 | #endif
--------------------------------------------------------------------------------
/src/winlibs/mman.h:
--------------------------------------------------------------------------------
1 | /*
2 | * sys/mman.h
3 | * mman-win32
4 | */
5 |
6 | #ifndef _SYS_MMAN_H_
7 | #define _SYS_MMAN_H_
8 |
9 | #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
10 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
11 | #endif
12 |
13 | /* All the headers include this file. */
14 | #ifndef _MSC_VER
15 | #include <_mingw.h>
16 | #endif
17 |
18 | #if defined(MMAN_LIBRARY_DLL)
19 | /* Windows shared libraries (DLL) must be declared export when building the lib and import when building the
20 | application which links against the library. */
21 | #if defined(MMAN_LIBRARY)
22 | #define MMANSHARED_EXPORT __declspec(dllexport)
23 | #else
24 | #define MMANSHARED_EXPORT __declspec(dllimport)
25 | #endif /* MMAN_LIBRARY */
26 | #else
27 | /* Static libraries do not require a __declspec attribute.*/
28 | #define MMANSHARED_EXPORT
29 | #endif /* MMAN_LIBRARY_DLL */
30 |
31 | /* Determine offset type */
32 | #include
33 | #if defined(_WIN64)
34 | typedef int64_t OffsetType;
35 | #else
36 | typedef uint32_t OffsetType;
37 | #endif
38 |
39 | #include
40 |
41 | #ifdef __cplusplus
42 | extern "C" {
43 | #endif
44 |
45 | #define PROT_NONE 0
46 | #define PROT_READ 1
47 | #define PROT_WRITE 2
48 | #define PROT_EXEC 4
49 |
50 | #define MAP_FILE 0
51 | #define MAP_SHARED 1
52 | #define MAP_PRIVATE 2
53 | #define MAP_TYPE 0xf
54 | #define MAP_FIXED 0x10
55 | #define MAP_ANONYMOUS 0x20
56 | #define MAP_ANON MAP_ANONYMOUS
57 |
58 | #define MAP_FAILED ((void *)-1)
59 |
60 | /* Flags for msync. */
61 | #define MS_ASYNC 1
62 | #define MS_SYNC 2
63 | #define MS_INVALIDATE 4
64 |
65 | MMANSHARED_EXPORT void* mmap(void *addr, size_t len, int prot, int flags, int fildes, OffsetType off);
66 | MMANSHARED_EXPORT int munmap(void *addr, size_t len);
67 | MMANSHARED_EXPORT int _mprotect(void *addr, size_t len, int prot);
68 | MMANSHARED_EXPORT int msync(void *addr, size_t len, int flags);
69 | MMANSHARED_EXPORT int mlock(const void *addr, size_t len);
70 | MMANSHARED_EXPORT int munlock(const void *addr, size_t len);
71 | #if !defined(__MINGW32__)
72 | MMANSHARED_EXPORT int ftruncate(int fd, unsigned int size);
73 | #endif
74 | #ifdef __cplusplus
75 | }
76 | #endif
77 |
78 |
79 |
80 |
81 |
82 | #endif /* _SYS_MMAN_H_ */
83 |
--------------------------------------------------------------------------------
/src/winlibs/stdafx.cpp:
--------------------------------------------------------------------------------
1 | // stdafx.cpp : source file that includes just the standard includes
2 | // FItSNE.pch will be the pre-compiled header
3 | // stdafx.obj will contain the pre-compiled type information
4 |
5 | #include "stdafx.h"
6 |
7 | // TODO: reference any additional headers you need in STDAFX.H
8 | // and not in this file
9 |
--------------------------------------------------------------------------------
/src/winlibs/stdafx.h:
--------------------------------------------------------------------------------
1 | // stdafx.h : include file for standard system include files,
2 | // or project specific include files that are used frequently, but
3 | // are changed infrequently
4 | //
5 |
6 | #pragma once
7 |
8 | #ifdef _WIN32
9 |
10 | #define _CRT_SECURE_NO_WARNINGS
11 | #define _CRT_SECURE_NO_DEPRECATE
12 |
13 | #include "targetver.h"
14 |
15 | #include
16 | #include
17 |
18 | #endif
19 |
20 |
--------------------------------------------------------------------------------
/src/winlibs/targetver.h:
--------------------------------------------------------------------------------
1 | #pragma once
2 |
3 | // Including SDKDDKVer.h defines the highest available Windows platform.
4 |
5 | // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and
6 | // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h.
7 |
8 | #include
9 |
--------------------------------------------------------------------------------
/src/winlibs/unistd.h:
--------------------------------------------------------------------------------
1 | #ifndef _UNISTD_H
2 | #define _UNISTD_H 1
3 |
4 | /* This is intended as a drop-in replacement for unistd.h on Windows.
5 | * Please add functionality as neeeded.
6 | * https://stackoverflow.com/a/826027/1202830
7 | */
8 |
9 | #include
10 | #include
11 | //#include /* getopt at: https://gist.github.com/ashelly/7776712 */
12 | #include /* for getpid() and the exec..() family */
13 | #include /* for _getcwd() and _chdir() */
14 |
15 | #define srandom srand
16 | #define random rand
17 |
18 | /* Values for the second argument to access.
19 | These may be OR'd together. */
20 | #define R_OK 4 /* Test for read permission. */
21 | #define W_OK 2 /* Test for write permission. */
22 | //#define X_OK 1 /* execute permission - unsupported in windows*/
23 | #define F_OK 0 /* Test for existence. */
24 |
25 | #define access _access
26 | #define dup2 _dup2
27 | #define execve _execve
28 | #define ftruncate _chsize
29 | #define unlink _unlink
30 | #define fileno _fileno
31 | #define getcwd _getcwd
32 | #define chdir _chdir
33 | #define isatty _isatty
34 | #define lseek _lseek
35 | /* read, write, and close are NOT being #defined here, because while there are file handle specific versions for Windows, they probably don't work for sockets. You need to look at your app and consider whether to call e.g. closesocket(). */
36 |
37 | #ifdef _WIN64
38 | #define ssize_t __int64
39 | #else
40 | #define ssize_t long
41 | #endif
42 |
43 | #define STDIN_FILENO 0
44 | #define STDOUT_FILENO 1
45 | #define STDERR_FILENO 2
46 | /* should be in some equivalent to */
47 | //typedef __int8 int8_t;
48 | //typedef __int16 int16_t;
49 | //typedef __int32 int32_t;
50 | //typedef __int64 int64_t;
51 | //typedef unsigned __int8 uint8_t;
52 | //typedef unsigned __int16 uint16_t;
53 | //typedef unsigned __int32 uint32_t;
54 | //typedef unsigned __int64 uint64_t;
55 |
56 | #endif /* unistd.h */
--------------------------------------------------------------------------------